|
@@ -58,6 +58,7 @@ using DocumentFormat.OpenXml.Bibliography;
|
|
|
using TEAMModelOS.SDK.Models.Service.BIStatsWay;
|
|
|
using MathNet.Numerics.LinearAlgebra.Double;
|
|
|
using TEAMModelOS.SDK.Models.Cosmos.BI.BISchool;
|
|
|
+using DocumentFormat.OpenXml.Drawing;
|
|
|
|
|
|
namespace TEAMModelBI.Controllers.BITest
|
|
|
{
|
|
@@ -1625,6 +1626,14 @@ namespace TEAMModelBI.Controllers.BITest
|
|
|
//return Ok(new { state = 200, ld= artStats.LastYear.Count, d = artStats.year.Count, artStats });
|
|
|
//示例矩阵
|
|
|
|
|
|
+ DateTimeOffset dt = DateTimeOffset.UtcNow;
|
|
|
+
|
|
|
+ int dayCnt = dt.DayOfYear;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
List<List<double>> doubles = new() {
|
|
|
new List<double>() { 6, 5, 4, 3, 2, 1},
|
|
|
new List<double>() { 2, 3, 4, 5, 6, 7 },
|
|
@@ -1717,6 +1726,109 @@ namespace TEAMModelBI.Controllers.BITest
|
|
|
}
|
|
|
|
|
|
|
|
|
+ [HttpPost("set-stats")]
|
|
|
+ public async Task<IActionResult> SetStats(JsonElement json)
|
|
|
+ {
|
|
|
+ string scId = null, type = null;
|
|
|
+ var cosmosClient = _azureCosmos.GetCosmosClient();
|
|
|
+ var tableClient = _azureStorage.GetCloudTableClient();
|
|
|
+ var blobClient = _azureStorage.GetBlobContainerClient(containerName: "0-public");
|
|
|
+ long careDate = 0;
|
|
|
+ int cnt = 0;
|
|
|
+
|
|
|
+ DateTimeOffset dateOff = DateTimeOffset.UtcNow;
|
|
|
+ if (json.TryGetProperty("scId", out JsonElement _schoolId))
|
|
|
+ scId = $"{_schoolId}";
|
|
|
+ if (json.TryGetProperty("type", out JsonElement _type))
|
|
|
+ type = $"{_type}";
|
|
|
+ if (string.IsNullOrEmpty($"{_schoolId}") && string.IsNullOrEmpty($"{_type}"))
|
|
|
+ {
|
|
|
+ await _dingDing.SendBotMsg($"set-scstats-type, {json}", GroupNames.成都开发測試群組);
|
|
|
+ return Ok(new { state = RespondCode.ParamsError});
|
|
|
+ }
|
|
|
+ if (json.TryGetProperty("cnt", out JsonElement _cnt))
|
|
|
+ cnt = _cnt.GetInt32();
|
|
|
+
|
|
|
+ if (json.TryGetProperty("date", out JsonElement _date))
|
|
|
+ careDate = _date.GetInt64();
|
|
|
+ else
|
|
|
+ careDate = dateOff.ToUnixTimeMilliseconds();
|
|
|
+ var (lastDays, lastDaye) = TimeHelper.GetStartOrEnd(dateOff.AddDays(-1));//昨天开始/结束时间
|
|
|
+ var (DayS, DayE) = TimeHelper.GetStartOrEnd(dateOff); //今天开始时间结束时间
|
|
|
+ var (lastWeekS, lastWeekE) = TimeHelper.GetStartOrEnd(dateOff, "lastweek"); //计算上周开始/结束时间
|
|
|
+ var (weekS, weekE) = TimeHelper.GetStartOrEnd(dateOff, "week"); //计算本周开始/结束时间
|
|
|
+ var (lastTermS, lastTermE) = TimeHelper.GetStartOrEnd(dateOff, "lastterm"); //计算上学期开始/结束时间
|
|
|
+ var (termS, termE) = TimeHelper.GetStartOrEnd(dateOff, "term"); //计算本学期开始/结束时间
|
|
|
+ var (lastYearS, lastYearE) = TimeHelper.GetStartOrEnd(dateOff, "lastYear"); //计算去年开始/结束时间
|
|
|
+ var (yearS, yearE) = TimeHelper.GetStartOrEnd(dateOff, "year"); //计算今年开始/结束时间
|
|
|
+ StatsInfo statsInfo = new();
|
|
|
+
|
|
|
+ var resStsInfo = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync(scId, new PartitionKey("BIRel"));
|
|
|
+ if (resStsInfo.Status == 200)
|
|
|
+ {
|
|
|
+ using var fileJson = await JsonDocument.ParseAsync(resStsInfo.ContentStream);
|
|
|
+ statsInfo = fileJson.ToObject<StatsInfo>();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ScBase scBase = await cosmosClient.GetContainer("TEAMModelOS", "School").ReadItemAsync<ScBase>(scId, new PartitionKey("Base"));
|
|
|
+ statsInfo.id = scBase.id;
|
|
|
+ statsInfo.name = scBase.name;
|
|
|
+ statsInfo.picture = scBase.picture;
|
|
|
+ statsInfo.size = scBase.size;
|
|
|
+ statsInfo.scCreateTime = scBase.createTime;
|
|
|
+ statsInfo.areaId = scBase.areaId;
|
|
|
+ statsInfo.upTime = careDate;
|
|
|
+ }
|
|
|
+
|
|
|
+ switch ($"{type}")
|
|
|
+ {
|
|
|
+ case "Exam":
|
|
|
+ if ((statsInfo.upTime < DayS && statsInfo.upTime >= lastDays) || (careDate < DayS && careDate >= lastDays))
|
|
|
+ {
|
|
|
+ statsInfo.activity.lastDay = statsInfo.activity.dayCnt;
|
|
|
+ statsInfo.activity.year[dateOff.DayOfYear - 1] += statsInfo.activity.dayCnt;
|
|
|
+ }
|
|
|
+ if ((DayS <= statsInfo.upTime && statsInfo.upTime <= DayE) || (DayS <= careDate && careDate <= DayE))
|
|
|
+ {
|
|
|
+ statsInfo.activity.dayCnt += cnt;
|
|
|
+ statsInfo.activity.exam += cnt;
|
|
|
+ statsInfo.activity.year[dateOff.DayOfYear] += cnt;
|
|
|
+ }
|
|
|
+
|
|
|
+ statsInfo.activity.cnt += cnt;
|
|
|
+ break;
|
|
|
+ case "Survey":
|
|
|
+
|
|
|
+ break;
|
|
|
+ case "Vote":
|
|
|
+
|
|
|
+ break;
|
|
|
+ case "Homework":
|
|
|
+
|
|
|
+ break;
|
|
|
+ case "Less":
|
|
|
+
|
|
|
+ break;
|
|
|
+ case "stu":
|
|
|
+
|
|
|
+ break;
|
|
|
+ case "tch":
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ return Ok(new { state = 200, statsInfo });
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public static async Task SetStats ()
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
|
|
|
public class linqTest
|
|
|
{
|