|
@@ -1735,10 +1735,10 @@ namespace TEAMModelBI.Controllers.BITest
|
|
{
|
|
{
|
|
string scId = null, type = null;
|
|
string scId = null, type = null;
|
|
var cosmosClient = _azureCosmos.GetCosmosClient();
|
|
var cosmosClient = _azureCosmos.GetCosmosClient();
|
|
- var tableClient = _azureStorage.GetCloudTableClient();
|
|
|
|
- var blobClient = _azureStorage.GetBlobContainerClient(containerName: "0-public");
|
|
|
|
long careDate = 0;
|
|
long careDate = 0;
|
|
int all = 0;
|
|
int all = 0;
|
|
|
|
+ int interaction = 0;
|
|
|
|
+ int lessType = 0;
|
|
|
|
|
|
DateTimeOffset dateOff = DateTimeOffset.UtcNow;
|
|
DateTimeOffset dateOff = DateTimeOffset.UtcNow;
|
|
if (json.TryGetProperty("scId", out JsonElement _schoolId))
|
|
if (json.TryGetProperty("scId", out JsonElement _schoolId))
|
|
@@ -1753,13 +1753,15 @@ namespace TEAMModelBI.Controllers.BITest
|
|
if (json.TryGetProperty("cnt", out JsonElement _cnt))
|
|
if (json.TryGetProperty("cnt", out JsonElement _cnt))
|
|
all = _cnt.GetInt32();
|
|
all = _cnt.GetInt32();
|
|
|
|
|
|
- json.TryGetProperty("interaction", out JsonElement interaction);
|
|
|
|
|
|
+ if(json.TryGetProperty("interaction", out JsonElement _interaction))
|
|
|
|
+ interaction = _interaction.GetInt32();
|
|
|
|
+ if (json.TryGetProperty("lessType", out JsonElement _lessType))
|
|
|
|
+ lessType = _lessType.GetInt32();
|
|
|
|
|
|
if (json.TryGetProperty("date", out JsonElement _date))
|
|
if (json.TryGetProperty("date", out JsonElement _date))
|
|
careDate = _date.GetInt64();
|
|
careDate = _date.GetInt64();
|
|
else
|
|
else
|
|
careDate = dateOff.ToUnixTimeMilliseconds();
|
|
careDate = dateOff.ToUnixTimeMilliseconds();
|
|
- var (lastDayS, lastDayE) = TimeHelper.GetStartOrEnd(dateOff.AddDays(-1));//昨天开始/结束时间
|
|
|
|
var (DayS, DayE) = TimeHelper.GetStartOrEnd(dateOff); //今天开始时间结束时间
|
|
var (DayS, DayE) = TimeHelper.GetStartOrEnd(dateOff); //今天开始时间结束时间
|
|
var (lastWeekS, lastWeekE) = TimeHelper.GetStartOrEnd(dateOff, "lastweek"); //计算上周开始/结束时间
|
|
var (lastWeekS, lastWeekE) = TimeHelper.GetStartOrEnd(dateOff, "lastweek"); //计算上周开始/结束时间
|
|
var (weekS, weekE) = TimeHelper.GetStartOrEnd(dateOff, "week"); //计算本周开始/结束时间
|
|
var (weekS, weekE) = TimeHelper.GetStartOrEnd(dateOff, "week"); //计算本周开始/结束时间
|
|
@@ -1767,17 +1769,17 @@ namespace TEAMModelBI.Controllers.BITest
|
|
var (monthS, monthE) = TimeHelper.GetStartOrEnd(dateOff, "month"); //本月开始/结束时间
|
|
var (monthS, monthE) = TimeHelper.GetStartOrEnd(dateOff, "month"); //本月开始/结束时间
|
|
var (lastTermS, lastTermE) = TimeHelper.GetStartOrEnd(dateOff, "lastterm"); //计算上学期开始/结束时间
|
|
var (lastTermS, lastTermE) = TimeHelper.GetStartOrEnd(dateOff, "lastterm"); //计算上学期开始/结束时间
|
|
var (termS, termE) = TimeHelper.GetStartOrEnd(dateOff, "term"); //计算本学期开始/结束时间
|
|
var (termS, termE) = TimeHelper.GetStartOrEnd(dateOff, "term"); //计算本学期开始/结束时间
|
|
- var (lastYearS, lastYearE) = TimeHelper.GetStartOrEnd(dateOff, "lastYear"); //计算去年开始/结束时间
|
|
|
|
- var (yearS, yearE) = TimeHelper.GetStartOrEnd(dateOff, "year"); //计算今年开始/结束时间
|
|
|
|
|
|
|
|
- var (weekDayS, weekDayE) = TimeHelper.GetLongToTime(lastWeekS, lastWeekE);
|
|
|
|
|
|
+ var (weekDayS, weekDayE) = TimeHelper.GetLongToTime(weekS, weekE);
|
|
|
|
+ var (lWeekDayS, lWeekDayE) = TimeHelper.GetLongToTime(lastWeekS, lastWeekE);
|
|
var (lTermDayS, lTermDayE) = TimeHelper.GetLongToTime(lastTermS, lastTermE);
|
|
var (lTermDayS, lTermDayE) = TimeHelper.GetLongToTime(lastTermS, lastTermE);
|
|
var (termDayS, termDayE) = TimeHelper.GetLongToTime(lastTermS, lastTermE);
|
|
var (termDayS, termDayE) = TimeHelper.GetLongToTime(lastTermS, lastTermE);
|
|
var (lMonthS, lMonthE) = TimeHelper.GetLongToTime(lastMonthS, lastMonthE);
|
|
var (lMonthS, lMonthE) = TimeHelper.GetLongToTime(lastMonthS, lastMonthE);
|
|
|
|
+ var (monthDayS, monthDayE) = TimeHelper.GetLongToTime(monthS, monthE);
|
|
var lastDay = dateOff.AddDays(-1);
|
|
var lastDay = dateOff.AddDays(-1);
|
|
- var lastMonth = dateOff.AddMonths(-1);
|
|
|
|
-
|
|
|
|
|
|
+ int lmthDay = TimeHelper.GetDateDay(lMonthE);
|
|
StatsInfo statsInfo = new();
|
|
StatsInfo statsInfo = new();
|
|
|
|
+
|
|
var resStsInfo = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync($"{dateOff.Year}-{scId}", new PartitionKey("Statistics"));
|
|
var resStsInfo = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync($"{dateOff.Year}-{scId}", new PartitionKey("Statistics"));
|
|
if (resStsInfo.Status == 200)
|
|
if (resStsInfo.Status == 200)
|
|
{
|
|
{
|
|
@@ -1806,207 +1808,54 @@ namespace TEAMModelBI.Controllers.BITest
|
|
statsInfo.upTime = careDate;
|
|
statsInfo.upTime = careDate;
|
|
//}
|
|
//}
|
|
}
|
|
}
|
|
- DenseMatrix matris = null;
|
|
|
|
|
|
+
|
|
switch ($"{type}")
|
|
switch ($"{type}")
|
|
{
|
|
{
|
|
case "Exam":
|
|
case "Exam":
|
|
- statsInfo.activity.year[dateOff.DayOfYear] += all;
|
|
|
|
statsInfo.activity.exam += all;
|
|
statsInfo.activity.exam += all;
|
|
- statsInfo.activity.month += all;
|
|
|
|
- statsInfo.activity.lastDay = ((int)statsInfo.activity.year[lastDay.DayOfYear]);
|
|
|
|
- statsInfo.activity.dayCnt = ((int)statsInfo.activity.year[dateOff.DayOfYear]);
|
|
|
|
-
|
|
|
|
- matris = DenseMatrix.OfColumns(new List<List<double>>() { statsInfo.activity.year });
|
|
|
|
- if (lastWeekS <= statsInfo.activity.upTime && statsInfo.activity.upTime <= lastWeekE)
|
|
|
|
- {
|
|
|
|
- statsInfo.activity.lastWeek = ((int)matris.SubMatrix(weekDayS.DayOfYear, 7, 0, matris.ColumnCount).ColumnSums().Sum());
|
|
|
|
- //statsInfo.activity.lastWeek = ((int)statsInfo.activity.year.GetRange(weekDayS.DayOfYear, 7).Sum());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (weekS <= statsInfo.activity.upTime && statsInfo.activity.upTime <= weekE)
|
|
|
|
- statsInfo.activity.week += all;
|
|
|
|
-
|
|
|
|
- if (lastTermS <= statsInfo.activity.upTime && statsInfo.activity.upTime <= lastTermE)
|
|
|
|
- {
|
|
|
|
- if (lTermDayS.Year < dateOff.Year)
|
|
|
|
- {
|
|
|
|
- var lastSts = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync($"{lTermDayS.Year}-{scId}", new PartitionKey("Statistics"));
|
|
|
|
- if (lastSts.Status == 200)
|
|
|
|
- {
|
|
|
|
- using var fileJson = await JsonDocument.ParseAsync(lastSts.ContentStream);
|
|
|
|
- var tempSts = fileJson.ToObject<StatsInfo>();
|
|
|
|
- var actYer = DenseMatrix.OfColumns(new List<List<double>>() { tempSts.activity.year, statsInfo.activity.year });
|
|
|
|
- statsInfo.activity.lastTerm = ((int)actYer.SubMatrix(lTermDayS.DayOfYear, lTermDayE.DayOfYear, 0, 1).ColumnSums().Sum());
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- statsInfo.activity.lastTerm = 0;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (termS <= statsInfo.activity.upTime && statsInfo.activity.upTime <= termE)
|
|
|
|
- {
|
|
|
|
- if (termDayS.Year < dateOff.Year)
|
|
|
|
- {
|
|
|
|
- var lastSts = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync($"{termDayS.Year}-{scId}", new PartitionKey("Statistics"));
|
|
|
|
- if (lastSts.Status == 200)
|
|
|
|
- {
|
|
|
|
- using var fileJson = await JsonDocument.ParseAsync(lastSts.ContentStream);
|
|
|
|
- var tempSts = fileJson.ToObject<StatsInfo>();
|
|
|
|
- var actYer = DenseMatrix.OfColumns(new List<List<double>>() { tempSts.activity.year, statsInfo.activity.year });
|
|
|
|
- statsInfo.activity.term = ((int)actYer.SubMatrix(termDayS.DayOfYear, termDayE.DayOfYear, 0, 1).ColumnSums().Sum());
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- statsInfo.activity.term += all;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- statsInfo.activity.lastWeek = ((int)matris.SubMatrix(lMonthS.DayOfYear, 20, 0, matris.ColumnCount).ColumnSums().Sum());
|
|
|
|
-
|
|
|
|
- statsInfo.activity.upTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
|
|
|
- statsInfo.activity.all += all;
|
|
|
|
break;
|
|
break;
|
|
case "Survey":
|
|
case "Survey":
|
|
- statsInfo.activity.year[dateOff.DayOfYear] += all;
|
|
|
|
statsInfo.activity.survey += all;
|
|
statsInfo.activity.survey += all;
|
|
- statsInfo.activity.month += all;
|
|
|
|
- statsInfo.activity.lastDay = ((int)statsInfo.activity.year[lastDay.DayOfYear]);
|
|
|
|
- statsInfo.activity.dayCnt = ((int)statsInfo.activity.year[dateOff.DayOfYear]);
|
|
|
|
-
|
|
|
|
- if (lastWeekS <= statsInfo.activity.upTime && statsInfo.activity.upTime <= lastWeekE)
|
|
|
|
- {
|
|
|
|
- var artWeek = DenseMatrix.OfColumns(new List<List<double>>() { statsInfo.activity.year });
|
|
|
|
- statsInfo.activity.lastWeek = ((int)artWeek.SubMatrix(weekDayS.DayOfYear, 7, 0, artWeek.ColumnCount).ColumnSums().Sum());
|
|
|
|
- //statsInfo.activity.lastWeek = ((int)statsInfo.activity.year.GetRange(weekDayS.DayOfYear, 7).Sum());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (weekS <= statsInfo.activity.upTime && statsInfo.activity.upTime <= weekE)
|
|
|
|
- statsInfo.activity.week += all;
|
|
|
|
-
|
|
|
|
- if (lastTermS <= statsInfo.activity.upTime && statsInfo.activity.upTime <= lastTermE)
|
|
|
|
- {
|
|
|
|
- if (lTermDayS.Year < dateOff.Year)
|
|
|
|
- {
|
|
|
|
- var lastSts = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync($"{lTermDayS.Year}-{scId}", new PartitionKey("Statistics"));
|
|
|
|
- if (lastSts.Status == 200)
|
|
|
|
- {
|
|
|
|
- using var fileJson = await JsonDocument.ParseAsync(lastSts.ContentStream);
|
|
|
|
- var tempSts = fileJson.ToObject<StatsInfo>();
|
|
|
|
- var actYer = DenseMatrix.OfColumns(new List<List<double>>() { tempSts.activity.year, statsInfo.activity.year });
|
|
|
|
- statsInfo.activity.lastTerm = ((int)actYer.SubMatrix(lTermDayS.DayOfYear, lTermDayE.DayOfYear, 0, 1).ColumnSums().Sum());
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- statsInfo.activity.lastTerm = 0;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (termS <= statsInfo.activity.upTime && statsInfo.activity.upTime <= termE)
|
|
|
|
- {
|
|
|
|
- if (termDayS.Year < dateOff.Year)
|
|
|
|
- {
|
|
|
|
- var lastSts = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync($"{termDayS.Year}-{scId}", new PartitionKey("Statistics"));
|
|
|
|
- if (lastSts.Status == 200)
|
|
|
|
- {
|
|
|
|
- using var fileJson = await JsonDocument.ParseAsync(lastSts.ContentStream);
|
|
|
|
- var tempSts = fileJson.ToObject<StatsInfo>();
|
|
|
|
- var actYer = DenseMatrix.OfColumns(new List<List<double>>() { tempSts.activity.year, statsInfo.activity.year });
|
|
|
|
- statsInfo.activity.term = ((int)actYer.SubMatrix(termDayS.DayOfYear, termDayE.DayOfYear, 0, 1).ColumnSums().Sum());
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- statsInfo.activity.term += all;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- statsInfo.activity.upTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
|
|
|
- statsInfo.activity.all += all;
|
|
|
|
break;
|
|
break;
|
|
case "Vote":
|
|
case "Vote":
|
|
- statsInfo.activity.year[dateOff.DayOfYear] += all;
|
|
|
|
statsInfo.activity.vote += all;
|
|
statsInfo.activity.vote += all;
|
|
- statsInfo.activity.month += all;
|
|
|
|
- statsInfo.activity.lastDay = ((int)statsInfo.activity.year[lastDay.DayOfYear]);
|
|
|
|
- statsInfo.activity.dayCnt = ((int)statsInfo.activity.year[dateOff.DayOfYear]);
|
|
|
|
-
|
|
|
|
- if (lastWeekS <= statsInfo.activity.upTime && statsInfo.activity.upTime <= lastWeekE)
|
|
|
|
- {
|
|
|
|
- var artWeek = DenseMatrix.OfColumns(new List<List<double>>() { statsInfo.activity.year });
|
|
|
|
- statsInfo.activity.lastWeek = ((int)artWeek.SubMatrix(weekDayS.DayOfYear, 7, 0, artWeek.ColumnCount).ColumnSums().Sum());
|
|
|
|
- //statsInfo.activity.lastWeek = ((int)statsInfo.activity.year.GetRange(weekDayS.DayOfYear, 7).Sum());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (weekS <= statsInfo.activity.upTime && statsInfo.activity.upTime <= weekE)
|
|
|
|
- statsInfo.activity.week += all;
|
|
|
|
-
|
|
|
|
- if (lastTermS <= statsInfo.activity.upTime && statsInfo.activity.upTime <= lastTermE)
|
|
|
|
- {
|
|
|
|
- if (lTermDayS.Year < dateOff.Year)
|
|
|
|
- {
|
|
|
|
- var lastSts = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync($"{lTermDayS.Year}-{scId}", new PartitionKey("Statistics"));
|
|
|
|
- if (lastSts.Status == 200)
|
|
|
|
- {
|
|
|
|
- using var fileJson = await JsonDocument.ParseAsync(lastSts.ContentStream);
|
|
|
|
- var tempSts = fileJson.ToObject<StatsInfo>();
|
|
|
|
- var actYer = DenseMatrix.OfColumns(new List<List<double>>() { tempSts.activity.year, statsInfo.activity.year });
|
|
|
|
- statsInfo.activity.lastTerm = ((int)actYer.SubMatrix(lTermDayS.DayOfYear, lTermDayE.DayOfYear, 0, 1).ColumnSums().Sum());
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- statsInfo.activity.lastTerm = 0;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (termS <= statsInfo.activity.upTime && statsInfo.activity.upTime <= termE)
|
|
|
|
- {
|
|
|
|
- if (termDayS.Year < dateOff.Year)
|
|
|
|
- {
|
|
|
|
- var lastSts = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync($"{termDayS.Year}-{scId}", new PartitionKey("Statistics"));
|
|
|
|
- if (lastSts.Status == 200)
|
|
|
|
- {
|
|
|
|
- using var fileJson = await JsonDocument.ParseAsync(lastSts.ContentStream);
|
|
|
|
- var tempSts = fileJson.ToObject<StatsInfo>();
|
|
|
|
- var actYer = DenseMatrix.OfColumns(new List<List<double>>() { tempSts.activity.year, statsInfo.activity.year });
|
|
|
|
- statsInfo.activity.term = ((int)actYer.SubMatrix(termDayS.DayOfYear, termDayE.DayOfYear, 0, 1).ColumnSums().Sum());
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- statsInfo.activity.term += all;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- statsInfo.activity.upTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
|
|
|
- statsInfo.activity.all += all;
|
|
|
|
break;
|
|
break;
|
|
case "Homework":
|
|
case "Homework":
|
|
- statsInfo.activity.year[dateOff.DayOfYear] += all;
|
|
|
|
statsInfo.activity.homework += all;
|
|
statsInfo.activity.homework += all;
|
|
- statsInfo.activity.month += all;
|
|
|
|
- statsInfo.activity.lastDay = ((int)statsInfo.activity.year[lastDay.DayOfYear]);
|
|
|
|
- statsInfo.activity.dayCnt = ((int)statsInfo.activity.year[dateOff.DayOfYear]);
|
|
|
|
|
|
+ break;
|
|
|
|
+ case "Less":
|
|
|
|
+ //课例
|
|
|
|
+ statsInfo.lesson.year[dateOff.DayOfYear] += all;
|
|
|
|
+ statsInfo.lesson.all += all;
|
|
|
|
|
|
- if (lastWeekS <= statsInfo.activity.upTime && statsInfo.activity.upTime <= lastWeekE)
|
|
|
|
- {
|
|
|
|
- var artWeek = DenseMatrix.OfColumns(new List<List<double>>() { statsInfo.activity.year });
|
|
|
|
- statsInfo.activity.lastWeek = ((int)artWeek.SubMatrix(weekDayS.DayOfYear, 7, 0, artWeek.ColumnCount).ColumnSums().Sum());
|
|
|
|
- //statsInfo.activity.lastWeek = ((int)statsInfo.activity.year.GetRange(weekDayS.DayOfYear, 7).Sum());
|
|
|
|
- }
|
|
|
|
|
|
+ if (lessType == 0)
|
|
|
|
+ statsInfo.lesson.open += all;
|
|
|
|
+ else
|
|
|
|
+ statsInfo.lesson.less += all;
|
|
|
|
|
|
- if (weekS <= statsInfo.activity.upTime && statsInfo.activity.upTime <= weekE)
|
|
|
|
- statsInfo.activity.week += all;
|
|
|
|
|
|
+ statsInfo.lesson.lastDay = ((int)statsInfo.lesson.year[lastDay.DayOfYear]);
|
|
|
|
+ statsInfo.lesson.day = ((int)statsInfo.lesson.year[dateOff.DayOfYear]);
|
|
|
|
+
|
|
|
|
+ var lessList = DenseMatrix.OfColumns(new List<List<double>>() { statsInfo.lesson.year });
|
|
|
|
+ statsInfo.lesson.lastWeek = ((int)lessList.SubMatrix(lWeekDayS.DayOfYear, 7, 0, lessList.ColumnCount).ColumnSums().Sum());
|
|
|
|
+ statsInfo.lesson.week = ((int)lessList.SubMatrix(weekDayS.DayOfYear, (dateOff.DayOfYear - weekDayS.DayOfYear), 0, lessList.ColumnCount).ColumnSums().Sum());
|
|
|
|
|
|
- if (lastTermS <= statsInfo.activity.upTime && statsInfo.activity.upTime <= lastTermE)
|
|
|
|
|
|
+ if (lastTermS <= statsInfo.lesson.upTime && statsInfo.lesson.upTime <= lastTermE)
|
|
{
|
|
{
|
|
if (lTermDayS.Year < dateOff.Year)
|
|
if (lTermDayS.Year < dateOff.Year)
|
|
{
|
|
{
|
|
- var lastSts = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync($"{lTermDayS.Year}-{scId}", new PartitionKey("Statistics"));
|
|
|
|
- if (lastSts.Status == 200)
|
|
|
|
|
|
+ var lastLessSts = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync($"{lTermDayS.Year}-{scId}", new PartitionKey("Statistics"));
|
|
|
|
+ if (lastLessSts.Status == 200)
|
|
{
|
|
{
|
|
- using var fileJson = await JsonDocument.ParseAsync(lastSts.ContentStream);
|
|
|
|
|
|
+ using var fileJson = await JsonDocument.ParseAsync(lastLessSts.ContentStream);
|
|
var tempSts = fileJson.ToObject<StatsInfo>();
|
|
var tempSts = fileJson.ToObject<StatsInfo>();
|
|
- var actYer = DenseMatrix.OfColumns(new List<List<double>>() { tempSts.activity.year, statsInfo.activity.year });
|
|
|
|
- statsInfo.activity.lastTerm = ((int)actYer.SubMatrix(lTermDayS.DayOfYear, lTermDayE.DayOfYear, 0, 1).ColumnSums().Sum());
|
|
|
|
|
|
+ var actYer = DenseMatrix.OfColumns(new List<List<double>>() { tempSts.lesson.year, statsInfo.lesson.year });
|
|
|
|
+ statsInfo.lesson.lastTerm = ((int)actYer.SubMatrix(lTermDayS.DayOfYear, lTermDayE.DayOfYear, 0, 1).ColumnSums().Sum());
|
|
}
|
|
}
|
|
- else
|
|
|
|
- statsInfo.activity.lastTerm = 0;
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- if (termS <= statsInfo.activity.upTime && statsInfo.activity.upTime <= termE)
|
|
|
|
|
|
+ if (termS <= statsInfo.lesson.upTime && statsInfo.lesson.upTime <= termE)
|
|
{
|
|
{
|
|
if (termDayS.Year < dateOff.Year)
|
|
if (termDayS.Year < dateOff.Year)
|
|
{
|
|
{
|
|
@@ -2015,42 +1864,26 @@ namespace TEAMModelBI.Controllers.BITest
|
|
{
|
|
{
|
|
using var fileJson = await JsonDocument.ParseAsync(lastSts.ContentStream);
|
|
using var fileJson = await JsonDocument.ParseAsync(lastSts.ContentStream);
|
|
var tempSts = fileJson.ToObject<StatsInfo>();
|
|
var tempSts = fileJson.ToObject<StatsInfo>();
|
|
- var actYer = DenseMatrix.OfColumns(new List<List<double>>() { tempSts.activity.year, statsInfo.activity.year });
|
|
|
|
- statsInfo.activity.term = ((int)actYer.SubMatrix(termDayS.DayOfYear, termDayE.DayOfYear, 0, 1).ColumnSums().Sum());
|
|
|
|
|
|
+ var actYer = DenseMatrix.OfColumns(new List<List<double>>() { tempSts.lesson.year, statsInfo.lesson.year });
|
|
|
|
+ statsInfo.lesson.term = ((int)actYer.SubMatrix(termDayS.DayOfYear, termDayE.DayOfYear, 0, 1).ColumnSums().Sum());
|
|
}
|
|
}
|
|
else
|
|
else
|
|
- statsInfo.activity.term += all;
|
|
|
|
|
|
+ statsInfo.lesson.term += all;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- statsInfo.activity.upTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
|
|
|
- statsInfo.activity.all += all;
|
|
|
|
- break;
|
|
|
|
- case "Less":
|
|
|
|
- statsInfo.lesson.year[dateOff.DayOfYear] += all;
|
|
|
|
- statsInfo.lesson.lastDay = ((int)statsInfo.lesson.year[lastDay.DayOfYear]);
|
|
|
|
- statsInfo.lesson.day = ((int)statsInfo.lesson.year[dateOff.DayOfYear]);
|
|
|
|
- var artList = DenseMatrix.OfColumns(new List<List<double>>() { statsInfo.lesson.year });
|
|
|
|
- statsInfo.lesson.lastMonthInter = (int)artList.SubMatrix(lMonthS.DayOfYear, lMonthE.DayOfYear, 0, artList.ColumnCount).ColumnSums().Sum();
|
|
|
|
|
|
+ statsInfo.lesson.lastMonth = ((int)lessList.SubMatrix(lMonthS.DayOfYear, lmthDay, 0, lessList.ColumnCount).ColumnSums().Sum());
|
|
|
|
+ statsInfo.lesson.month += ((int)lessList.SubMatrix(monthDayS.DayOfYear, (dateOff.DayOfYear - monthDayS.DayOfYear), 0, lessList.ColumnCount).ColumnSums().Sum());
|
|
|
|
|
|
- if (DayS <= statsInfo.lesson.upTime && statsInfo.lesson.upTime <= DayE)
|
|
|
|
- statsInfo.lesson.dayInter += interaction.GetInt32();
|
|
|
|
- else
|
|
|
|
- statsInfo.lesson.dayInter = 0;
|
|
|
|
|
|
+ //课例互动
|
|
|
|
+ statsInfo.lesson.yearInters[dateOff.DayOfYear] += interaction;
|
|
|
|
+ statsInfo.lesson.allInter += interaction;
|
|
|
|
+ statsInfo.lesson.lastDayInter = ((int)statsInfo.lesson.yearInters[lastDay.DayOfYear]);
|
|
|
|
+ statsInfo.lesson.dayInter = ((int)statsInfo.lesson.yearInters[dateOff.DayOfYear]);
|
|
|
|
|
|
- if (monthS <= statsInfo.lesson.upTime && statsInfo.lesson.upTime <= monthE)
|
|
|
|
- statsInfo.lesson.monthInter += interaction.GetInt32();
|
|
|
|
- else
|
|
|
|
- statsInfo.lesson.monthInter = 0;
|
|
|
|
-
|
|
|
|
- if (lastWeekS <= statsInfo.activity.upTime && statsInfo.activity.upTime <= lastWeekE)
|
|
|
|
- {
|
|
|
|
- statsInfo.lesson.lastWeek = ((int)artList.SubMatrix(weekDayS.DayOfYear, 7, 0, artList.ColumnCount).ColumnSums().Sum());
|
|
|
|
- //statsInfo.activity.lastWeek = ((int)statsInfo.activity.year.GetRange(weekDayS.DayOfYear, 7).Sum());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (weekS <= statsInfo.lesson.upTime && statsInfo.lesson.upTime <= weekE)
|
|
|
|
- statsInfo.activity.week += all;
|
|
|
|
|
|
+ var interList = DenseMatrix.OfColumns(new List<List<double>>() { statsInfo.lesson.yearInters });
|
|
|
|
+ statsInfo.lesson.lastMonthInter = ((int)interList.SubMatrix(lMonthS.DayOfYear, lmthDay, 0, interList.ColumnCount).ColumnSums().Sum());
|
|
|
|
+ statsInfo.lesson.monthInter += ((int)interList.SubMatrix(monthDayS.DayOfYear, (dateOff.DayOfYear - monthDayS.DayOfYear), 0, interList.ColumnCount).ColumnSums().Sum());
|
|
|
|
|
|
if (lastTermS <= statsInfo.lesson.upTime && statsInfo.lesson.upTime <= lastTermE)
|
|
if (lastTermS <= statsInfo.lesson.upTime && statsInfo.lesson.upTime <= lastTermE)
|
|
{
|
|
{
|
|
@@ -2061,77 +1894,92 @@ namespace TEAMModelBI.Controllers.BITest
|
|
{
|
|
{
|
|
using var fileJson = await JsonDocument.ParseAsync(lastSts.ContentStream);
|
|
using var fileJson = await JsonDocument.ParseAsync(lastSts.ContentStream);
|
|
var tempSts = fileJson.ToObject<StatsInfo>();
|
|
var tempSts = fileJson.ToObject<StatsInfo>();
|
|
- var actYer = DenseMatrix.OfColumns(new List<List<double>>() { tempSts.lesson.year, statsInfo.lesson.year });
|
|
|
|
- statsInfo.lesson.lastTerm = ((int)actYer.SubMatrix(lTermDayS.DayOfYear, lTermDayE.DayOfYear, 0, 1).ColumnSums().Sum());
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- statsInfo.lesson.lastTerm = 0;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (termS <= statsInfo.lesson.upTime && statsInfo.lesson.upTime <= termE)
|
|
|
|
- {
|
|
|
|
- if (termDayS.Year < dateOff.Year)
|
|
|
|
- {
|
|
|
|
- var lastSts = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync($"{termDayS.Year}-{scId}", new PartitionKey("Statistics"));
|
|
|
|
- if (lastSts.Status == 200)
|
|
|
|
- {
|
|
|
|
- using var fileJson = await JsonDocument.ParseAsync(lastSts.ContentStream);
|
|
|
|
- var tempSts = fileJson.ToObject<StatsInfo>();
|
|
|
|
- var actYer = DenseMatrix.OfColumns(new List<List<double>>() { tempSts.lesson.year, statsInfo.lesson.year });
|
|
|
|
- statsInfo.lesson.term = ((int)actYer.SubMatrix(termDayS.DayOfYear, termDayE.DayOfYear, 0, 1).ColumnSums().Sum());
|
|
|
|
|
|
+ statsInfo.lesson.lastYearInter = ((int)tempSts.lesson.yearInters.Sum());
|
|
}
|
|
}
|
|
else
|
|
else
|
|
- statsInfo.lesson.term += all;
|
|
|
|
|
|
+ statsInfo.lesson.lastYearInter = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
statsInfo.lesson.upTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
|
statsInfo.lesson.upTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
|
- statsInfo.lesson.all += all;
|
|
|
|
break;
|
|
break;
|
|
case "stu":
|
|
case "stu":
|
|
- if (DayS <= statsInfo.stuUpTime && statsInfo.stuUpTime < DayE)
|
|
|
|
- statsInfo.dayStu += 1;
|
|
|
|
- else
|
|
|
|
- statsInfo.dayStu = 0;
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- if (weekS <= statsInfo.stuUpTime && statsInfo.stuUpTime < weekE)
|
|
|
|
- statsInfo.weekStu += 1;
|
|
|
|
- else
|
|
|
|
- statsInfo.weekStu = 0;
|
|
|
|
|
|
+ statsInfo.stuYear[dateOff.DayOfYear] += all;
|
|
|
|
+ statsInfo.stu += all;
|
|
|
|
|
|
- if (monthS <= statsInfo.stuUpTime && statsInfo.stuUpTime < monthE)
|
|
|
|
- statsInfo.monthStu += 1;
|
|
|
|
- else
|
|
|
|
- statsInfo.monthStu = 0;
|
|
|
|
|
|
+ statsInfo.dayStu = ((int)statsInfo.stuYear[dateOff.DayOfYear]);
|
|
|
|
+ var stuList = DenseMatrix.OfColumns(new List<List<double>>() { statsInfo.stuYear });
|
|
|
|
+ statsInfo.weekStu = ((int)stuList.SubMatrix(weekDayS.DayOfYear, (dateOff.DayOfYear - weekDayS.DayOfYear), 0, stuList.ColumnCount).ColumnSums().Sum());
|
|
|
|
+ statsInfo.monthStu = ((int)stuList.SubMatrix(monthDayS.DayOfYear, (dateOff.DayOfYear - monthDayS.DayOfYear), 0, stuList.ColumnCount).ColumnSums().Sum());
|
|
|
|
|
|
statsInfo.stuUpTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
|
statsInfo.stuUpTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
|
- statsInfo.stu += all;
|
|
|
|
break;
|
|
break;
|
|
case "tch":
|
|
case "tch":
|
|
- if (DayS <= statsInfo.tchUpTime && statsInfo.tchUpTime < DayE)
|
|
|
|
- statsInfo.dayTch += 1;
|
|
|
|
- else
|
|
|
|
- statsInfo.dayTch = 0;
|
|
|
|
|
|
|
|
- if (weekS <= statsInfo.tchUpTime && statsInfo.tchUpTime < weekE)
|
|
|
|
- statsInfo.weekTch += 1;
|
|
|
|
- else
|
|
|
|
- statsInfo.weekTch = 0;
|
|
|
|
|
|
+ statsInfo.tchYear[dateOff.DayOfYear] += all;
|
|
|
|
+ statsInfo.tch += all;
|
|
|
|
|
|
- if (monthS <= statsInfo.tchUpTime && statsInfo.tchUpTime < monthE)
|
|
|
|
- statsInfo.monthTch += 1;
|
|
|
|
- else
|
|
|
|
- statsInfo.monthTch = 0;
|
|
|
|
|
|
+ statsInfo.dayTch = ((int)statsInfo.tchYear[dateOff.DayOfYear]);
|
|
|
|
+ var tchList = DenseMatrix.OfColumns(new List<List<double>>() { statsInfo.tchYear });
|
|
|
|
+ statsInfo.weekTch = ((int)tchList.SubMatrix(weekDayS.DayOfYear, (dateOff.DayOfYear - weekDayS.DayOfYear), 0, tchList.ColumnCount).ColumnSums().Sum());
|
|
|
|
+ statsInfo.monthTch = ((int)tchList.SubMatrix(monthDayS.DayOfYear, (dateOff.DayOfYear - monthDayS.DayOfYear), 0, tchList.ColumnCount).ColumnSums().Sum());
|
|
|
|
|
|
statsInfo.tchUpTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
|
statsInfo.tchUpTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
|
- statsInfo.stu += all;
|
|
|
|
-
|
|
|
|
- statsInfo.tch += all;
|
|
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if ($"{type}".Equals("Exam") || $"{type}".Equals("Survey") || $"{type}".Equals("Vote") || $"{type}".Equals("Homework"))
|
|
|
|
+ {
|
|
|
|
+ statsInfo.activity.all += all;
|
|
|
|
+ statsInfo.activity.year[dateOff.DayOfYear] += all;
|
|
|
|
+ DenseMatrix matris = DenseMatrix.OfColumns(new List<List<double>>() { statsInfo.activity.year });
|
|
|
|
+ statsInfo.activity.lastDay = ((int)statsInfo.activity.year[lastDay.DayOfYear]);
|
|
|
|
+ statsInfo.activity.dayCnt = ((int)statsInfo.activity.year[dateOff.DayOfYear]);
|
|
|
|
+ statsInfo.activity.lastWeek = ((int)matris.SubMatrix(lWeekDayS.DayOfYear, 7, 0, matris.ColumnCount).ColumnSums().Sum());
|
|
|
|
+ statsInfo.activity.week = ((int)matris.SubMatrix(weekDayS.DayOfYear, weekDayE.DayOfYear - weekDayS.DayOfYear, 0, matris.ColumnCount).ColumnSums().Sum());
|
|
|
|
+ if (lastTermS <= statsInfo.activity.upTime && statsInfo.activity.upTime <= lastTermE)
|
|
|
|
+ {
|
|
|
|
+ if (lTermDayS.Year < dateOff.Year)
|
|
|
|
+ {
|
|
|
|
+ var lastSts = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync($"{lTermDayS.Year}-{scId}", new PartitionKey("Statistics"));
|
|
|
|
+ if (lastSts.Status == 200)
|
|
|
|
+ {
|
|
|
|
+ using var fileJson = await JsonDocument.ParseAsync(lastSts.ContentStream);
|
|
|
|
+ var tempSts = fileJson.ToObject<StatsInfo>();
|
|
|
|
+ var actYer = DenseMatrix.OfColumns(new List<List<double>>() { tempSts.activity.year, statsInfo.activity.year });
|
|
|
|
+ statsInfo.activity.lastTerm = ((int)actYer.SubMatrix(lTermDayS.DayOfYear, lTermDayE.DayOfYear, 0, 1).ColumnSums().Sum());
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ statsInfo.activity.lastTerm = 0;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (termS <= statsInfo.activity.upTime && statsInfo.activity.upTime <= termE)
|
|
|
|
+ {
|
|
|
|
+ if (termDayS.Year < dateOff.Year)
|
|
|
|
+ {
|
|
|
|
+ var lastSts = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync($"{termDayS.Year}-{scId}", new PartitionKey("Statistics"));
|
|
|
|
+ if (lastSts.Status == 200)
|
|
|
|
+ {
|
|
|
|
+ using var fileJson = await JsonDocument.ParseAsync(lastSts.ContentStream);
|
|
|
|
+ var tempSts = fileJson.ToObject<StatsInfo>();
|
|
|
|
+ var actYer = DenseMatrix.OfColumns(new List<List<double>>() { tempSts.activity.year, statsInfo.activity.year });
|
|
|
|
+ statsInfo.activity.term = ((int)actYer.SubMatrix(termDayS.DayOfYear, termDayE.DayOfYear, 0, 1).ColumnSums().Sum());
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ statsInfo.activity.term += all;
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ var actYer = DenseMatrix.OfColumns(new List<List<double>>() { statsInfo.activity.year });
|
|
|
|
+ statsInfo.activity.term = ((int)actYer.SubMatrix(termDayS.DayOfYear, termDayE.DayOfYear, 0, 1).ColumnSums().Sum());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ statsInfo.activity.lastMonth = ((int)matris.SubMatrix(lMonthS.DayOfYear, lmthDay, 0, matris.ColumnCount).ColumnSums().Sum());
|
|
|
|
+ statsInfo.activity.month += ((int)matris.SubMatrix(monthDayS.DayOfYear, (dateOff.DayOfYear - monthDayS.DayOfYear), 0, matris.ColumnCount).ColumnSums().Sum());
|
|
|
|
+ statsInfo.activity.upTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
|
|
|
+ }
|
|
|
|
|
|
if (resStsInfo.Status == 200)
|
|
if (resStsInfo.Status == 200)
|
|
statsInfo = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync<StatsInfo>(statsInfo, scId, new PartitionKey("Stats"));
|
|
statsInfo = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync<StatsInfo>(statsInfo, scId, new PartitionKey("Stats"));
|