Browse Source

优化BI方法报错提示信息,优化学校统计接口。

Li 2 years ago
parent
commit
fe8855f55e

+ 1 - 1
TEAMModelBI/Controllers/BISchool/BatchSchoolController.cs

@@ -230,7 +230,7 @@ namespace TEAMModelBI.Controllers.BISchool
                             await BIStats.SetSchoolBIRelation(cosmosClient, blobClient, tableClient, _dingDing, upSchool);
 
                             //创建BI和统计信息
-                            await BIStats.SetScStatsInfo(cosmosClient, upSchool);
+                            await BIStats.SetScStatsInfo(cosmosClient, _dingDing,upSchool);
 
                             var content = new StringContent(bischool.admin.ToArray().ToJsonString(), Encoding.UTF8, "application/json");
                             string json = await _coreAPIHttpService.GetUserInfos(content);

+ 17 - 18
TEAMModelBI/Controllers/Census/SchoolController.cs

@@ -520,25 +520,26 @@ namespace TEAMModelBI.Controllers.Census
                 school = fileJson.ToObject<School>();
             }
             else
+            {
                 return Ok(new { state = RespondCode.NotFound, msg = $"未找到id:{scId};相关的学校,请检查" });
-            bool isExist = true;
+            }
+
             StatsInfo statsInfo = new();
+            List<LastYearLessAndAct> lastYear = new();
             var scDataStats = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReadItemStreamAsync($"{DateTimeOffset.UtcNow.Year}-{scId}", new PartitionKey("Statistics"));
             if (scDataStats.Status == 200)
             {
                 using var fileJson = await JsonDocument.ParseAsync(scDataStats.ContentStream);
                 statsInfo = fileJson.ToObject<StatsInfo>();
+                await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").GetItemQueryIterator<LastYearLessAndAct>(queryText: $"select c.activity,c.lesson from c where c.id='{DateTimeOffset.UtcNow.Year - 1}-{scId}'", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey("Statistics") }))
+                {
+                    lastYear.Add(item);
+                }
             }
             else
             {
-                scStats.id = school.id;
-                isExist = false;
-            }
-
-            List<LastYearLessAndAct> lastYear = new();
-            await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").GetItemQueryIterator<LastYearLessAndAct>(queryText: $"select c.lesson,c.activity from c where c.id='{DateTimeOffset.UtcNow.Year - 1}-{scId}'", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey("Statistics") }))
-            {
-                lastYear.Add(item);
+                statsInfo = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReadItemAsync<StatsInfo>($"{DateTimeOffset.UtcNow.Year - 1}-{scId}'", new PartitionKey("Statistics"));
+                lastYear.Add(new LastYearLessAndAct() { activity = statsInfo.activity, lesson = statsInfo.lesson });
             }
 
             DateTimeOffset dateTime = DateTimeOffset.UtcNow;
@@ -647,24 +648,22 @@ namespace TEAMModelBI.Controllers.Census
 
             try
             {
-                bool isExist = true;
                 StatsInfo statsInfo = new();
+                List<LastYearLessAndAct> lastYear = new();
                 var scDataStats = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReadItemStreamAsync($"{DateTimeOffset.UtcNow.Year}-{scId}", new PartitionKey("Statistics"));
                 if (scDataStats.Status == 200)
                 {
                     using var fileJson = await JsonDocument.ParseAsync(scDataStats.ContentStream);
                     statsInfo = fileJson.ToObject<StatsInfo>();
+                    await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").GetItemQueryIterator<LastYearLessAndAct>(queryText: $"select c.activity,c.lesson from c where c.id='{DateTimeOffset.UtcNow.Year - 1}-{scId}'", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey("Statistics") }))
+                    {
+                        lastYear.Add(item);
+                    }
                 }
                 else
                 {
-                    scStats.id = school.id;
-                    isExist = false;
-                }
-
-                List<LastYearLessAndAct> lastYear = new();
-                await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").GetItemQueryIterator<LastYearLessAndAct>(queryText: $"select c.lesson,c.activity from c where c.id='{DateTimeOffset.UtcNow.Year - 1}-{scId}'", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey("Statistics") }))
-                {
-                    lastYear.Add(item);
+                    statsInfo = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReadItemAsync<StatsInfo>($"{DateTimeOffset.UtcNow.Year - 1}-{scId}'", new PartitionKey("Statistics"));
+                    lastYear.Add(new LastYearLessAndAct() { activity = statsInfo.activity, lesson = statsInfo.lesson });
                 }
 
                 DateTimeOffset dateTime = DateTimeOffset.UtcNow;

+ 0 - 2
TEAMModelOS.SDK/Models/Service/BI/BILeesonService.cs

@@ -239,8 +239,6 @@ namespace TEAMModelOS.SDK.Models.Service.BI
             }
         }
 
-
-
         /// <summary>
         /// 通过时间戳保存开课记录和课例记录统计
         /// 统计数据存储在table表中

+ 1 - 1
TEAMModelOS.SDK/Models/Service/BI/BISchoolService.cs

@@ -67,7 +67,7 @@ namespace TEAMModelOS.SDK.Models.Service.BI
             }
             catch (Exception ex)
             {
-                _ = _dingDing.SendBotMsg($"BI, UpSchoolEdition() \n{ex.Message}\n{ex.StackTrace}\n", GroupNames.成都开发測試群組);
+                _ = _dingDing.SendBotMsg($"BI,{Environment.GetEnvironmentVariable("Option:Location")},UpSchoolEdition() 服务列表:{server},学校id:{id}\n{ex.Message}\n{ex.StackTrace}\n", GroupNames.成都开发測試群組);
             }
         }
 

+ 46 - 40
TEAMModelOS.SDK/Models/Service/BI/BIStats.cs

@@ -55,8 +55,7 @@ namespace TEAMModelOS.SDK.Models.Service.BI
                 var (monthS, monthE) = TimeHelper.GetStartOrEnd(dateOff, "month");             //本月开始/结束时间
                 var (lastTermS, lastTermE) = TimeHelper.GetStartOrEnd(dateOff, "lastterm");   //计算上学期开始/结束时间
                 var (termS, termE) = TimeHelper.GetStartOrEnd(dateOff, "term");   //计算本学期开始/结束时间
-
-                var (yearS, yearE) = TimeHelper.GetStartOrEnd(cuurDateOff, "year");   //计算本学期开始/结束时间
+                var (yearS, yearE) = TimeHelper.GetStartOrEnd(cuurDateOff, "year");   //计算今年开始/结束时间
 
                 var (lWeekDayS, lWeekDayE) = TimeHelper.GetLongToTime(lastWeekS, lastWeekE);
                 var (weekDayS, weekDayE) = TimeHelper.GetLongToTime(weekS, weekE);
@@ -443,48 +442,55 @@ namespace TEAMModelOS.SDK.Models.Service.BI
         /// <param name="cosmosClient"></param>
         /// <param name="school"></param>
         /// <returns></returns>
-        public static async Task SetScStatsInfo(CosmosClient cosmosClient, School school)
+        public static async Task SetScStatsInfo(CosmosClient cosmosClient, DingDing _dingDing,School school)
         {
-            DateTimeOffset dateOff = DateTimeOffset.UtcNow;
-            StatsInfo statsInfo = new();
-            var resStats = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReadItemStreamAsync($"{dateOff.Year}-{school.id}", new PartitionKey("Statistics"));
-            if (resStats.Status == 200)
-            {
-                using var fileJson = await JsonDocument.ParseAsync(resStats.ContentStream);
-                statsInfo = fileJson.ToObject<StatsInfo>();
-            }
-            else
+            try
             {
-                double[] tchYear = new double[366];
-                tchYear[0] = 1;
-                statsInfo.id = $"{dateOff.Year}-{school.id}";
-                statsInfo.year = dateOff.Year;
-                statsInfo.stuYear = new double[366].ToList();
-                statsInfo.tchYear = tchYear.ToList();
-                statsInfo.tch = 1;
-                statsInfo.weekTch = 1;
-                statsInfo.monthTch = 1;
-                statsInfo.tchUpTime = dateOff.ToUnixTimeMilliseconds();
-                statsInfo.lesson.year = new double[366].ToList();
-                statsInfo.lesson.yearInters = new double[366].ToList();
-                statsInfo.activity.year = new double[366].ToList();
-            }
+                DateTimeOffset dateOff = DateTimeOffset.UtcNow;
+                StatsInfo statsInfo = new();
+                var resStats = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReadItemStreamAsync($"{dateOff.Year}-{school.id}", new PartitionKey("Statistics"));
+                if (resStats.Status == 200)
+                {
+                    using var fileJson = await JsonDocument.ParseAsync(resStats.ContentStream);
+                    statsInfo = fileJson.ToObject<StatsInfo>();
+                }
+                else
+                {
+                    double[] tchYear = new double[366];
+                    tchYear[0] = 1;
+                    statsInfo.id = $"{dateOff.Year}-{school.id}";
+                    statsInfo.year = dateOff.Year;
+                    statsInfo.stuYear = new double[366].ToList();
+                    statsInfo.tchYear = tchYear.ToList();
+                    statsInfo.tch = 1;
+                    statsInfo.weekTch = 1;
+                    statsInfo.monthTch = 1;
+                    statsInfo.tchUpTime = dateOff.ToUnixTimeMilliseconds();
+                    statsInfo.lesson.year = new double[366].ToList();
+                    statsInfo.lesson.yearInters = new double[366].ToList();
+                    statsInfo.activity.year = new double[366].ToList();
+                }
 
-            statsInfo.schoolId = school.id;
-            statsInfo.name = school.name;
-            statsInfo.picture = school.picture;
-            statsInfo.size = school.size;
-            statsInfo.scCreateTime = school.createTime;
-            statsInfo.areaId = school.areaId;
-            statsInfo.upTime = dateOff.ToUnixTimeMilliseconds();
+                statsInfo.schoolId = school.id;
+                statsInfo.name = school.name;
+                statsInfo.picture = school.picture;
+                statsInfo.size = school.size;
+                statsInfo.scCreateTime = school.createTime;
+                statsInfo.areaId = school.areaId;
+                statsInfo.upTime = dateOff.ToUnixTimeMilliseconds();
 
-            if (resStats.Status == 200)
-            {
-                await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReplaceItemAsync<StatsInfo>(statsInfo, statsInfo.id, new PartitionKey("Statistics"));
+                if (resStats.Status == 200)
+                {
+                    await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReplaceItemAsync<StatsInfo>(statsInfo, statsInfo.id, new PartitionKey("Statistics"));
+                }
+                else
+                {
+                    await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").CreateItemAsync<StatsInfo>(statsInfo, new PartitionKey("Statistics"));
+                }
             }
-            else
+            catch (Exception ex)
             {
-                await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").CreateItemAsync<StatsInfo>(statsInfo, new PartitionKey("Statistics"));
+                await _dingDing.SendBotMsg($"BI,{Environment.GetEnvironmentVariable("Option:Location")},SetScStatsInfo() 学校:{school} \n{ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
             }
         }
 
@@ -549,7 +555,7 @@ namespace TEAMModelOS.SDK.Models.Service.BI
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{Environment.GetEnvironmentVariable("Option:Location")},SetSchoolBIRelation() \n  {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{Environment.GetEnvironmentVariable("Option:Location")},SetSchoolBIRelation() 学校:{school} \n{ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
             }
         }
 
@@ -589,7 +595,7 @@ namespace TEAMModelOS.SDK.Models.Service.BI
                 StringBuilder statsSql = new($"select value(c) from c where c.year={dateOff.Year}");
                 List<string> scIds = new();
 
-                await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<string>(queryText: $"select value(c.id)  from c ", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey("BIRel") }))
+                await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<string>(queryText: $"select value(c.id) from c ", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey("BIRel") }))
                 {
                     scIds.Add(item);
                 }

+ 0 - 1
TEAMModelOS.SDK/Models/Service/BI/LessonStatisWay.cs

@@ -60,7 +60,6 @@ namespace TEAMModelOS.SDK.Models.Service.BI
             return totals;
         }
 
-
         /// <summary>
         /// 依据学校Id查询学校和学校里面教师的课例统计
         /// </summary>

+ 7 - 9
TEAMModelOS/Controllers/Normal/AreaController.cs

@@ -274,24 +274,22 @@ namespace TEAMModelOS.Controllers.Research
                 else
                     return Ok(new { state = RespondCode.NotFound, msg = $"未找到id:{scId};相关的学校,请检查" });
 
-                bool isExist = true;
                 StatsInfo statsInfo = new();
+                List<LastYearLessAndAct> lastYear = new();
                 var scDataStats = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReadItemStreamAsync($"{DateTimeOffset.UtcNow.Year}-{scId}", new PartitionKey("Statistics"));
                 if (scDataStats.Status == 200)
                 {
                     using var fileJson = await JsonDocument.ParseAsync(scDataStats.ContentStream);
                     statsInfo = fileJson.ToObject<StatsInfo>();
+                    await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").GetItemQueryIterator<LastYearLessAndAct>(queryText: $"select c.activity,c.lesson from c where c.id='{DateTimeOffset.UtcNow.Year - 1}-{scId}'", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey("Statistics") }))
+                    {
+                        lastYear.Add(item);
+                    }
                 }
                 else
                 {
-                    scStats.id = school.id;
-                    isExist = false;
-                }
-
-                List<LastYearLessAndAct> lastYear = new();
-                await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").GetItemQueryIterator<LastYearLessAndAct>(queryText: $"select c.lesson,c.activity from c where c.id='{DateTimeOffset.UtcNow.Year - 1}-{scId}'", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey("Statistics") }))
-                {
-                    lastYear.Add(item);
+                    statsInfo = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReadItemAsync<StatsInfo>($"{DateTimeOffset.UtcNow.Year - 1}-{scId}'", new PartitionKey("Statistics"));
+                    lastYear.Add(new LastYearLessAndAct() { activity = statsInfo.activity, lesson = statsInfo.lesson });
                 }
 
                 DateTimeOffset dateTime = DateTimeOffset.UtcNow;