Li 2 年之前
父節點
當前提交
750a91ca83

+ 7 - 4
TEAMModelOS.SDK/Models/Service/BIStatsWay/ActivityStatsWay.cs

@@ -17,11 +17,15 @@ namespace TEAMModelOS.SDK.Models.Service.BIStatsWay
         /// <param name="cosmosClient"></param>
         /// <param name="scId"></param>
         /// <returns></returns>
-        public static async Task<ActivityStats> GetSchoolAll(CosmosClient cosmosClient, string scId)
+        public static async Task<ActivityStats> GetSchoolAll(CosmosClient cosmosClient, string scId,int year = 0)
         {
             ActivityStats actStats = new();
 
             DateTimeOffset dateTime = DateTimeOffset.UtcNow;
+            if (year == 0)
+                year = dateTime.Year;
+            else
+                dateTime = new(year, 12, 31, 23, 59, 59, TimeSpan.Zero);
 
             var (lastDayS, lastdayE) = TimeHelper.GetStartOrEnd(dateTime.AddDays(-1));   //昨天开始时间
             var (dayS, dayE) = TimeHelper.GetStartOrEnd(dateTime);  //今天开始时间   
@@ -49,9 +53,8 @@ namespace TEAMModelOS.SDK.Models.Service.BIStatsWay
             int lastTerm = 0;
             int term = 0;
 
-            DateTimeOffset lyearDay = new(DateTimeOffset.UtcNow.Year - 1, DateTimeOffset.UtcNow.Month, DateTimeOffset.UtcNow.Day, DateTimeOffset.UtcNow.Hour, DateTimeOffset.UtcNow.Minute, DateTimeOffset.UtcNow.Second, TimeSpan.Zero);
-            List<StartEndTime> leveryDay = TimeHelper.GetYearEveryDay(lyearDay);
-            List<StartEndTime> everyDay = TimeHelper.GetYearEveryDay(DateTimeOffset.UtcNow);
+            DateTimeOffset lyearDay = new(year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second, TimeSpan.Zero);
+            List<StartEndTime> everyDay = TimeHelper.GetYearEveryDay(lyearDay);
             List<ArtRelStats> examSts = new();
             List<ArtRelStats> surveySts = new();
             List<ArtRelStats> voteSts = new();

+ 8 - 10
TEAMModelOS.SDK/Models/Service/BIStatsWay/LessonRecordStatsWay.cs

@@ -19,11 +19,15 @@ namespace TEAMModelOS.SDK.Models.Service.BIStatsWay
         /// <param name="cosmosClient"></param>
         /// <param name="id"></param>
         /// <returns></returns>
-        public static async Task<LessonStats> GetSchoolAll(CosmosClient cosmosClient, string id)
+        public static async Task<LessonStats> GetSchoolAll(CosmosClient cosmosClient, string id,int year = 0)
         {
             LessonStats lessStats = new();
 
             DateTimeOffset dateTime = DateTimeOffset.UtcNow;
+            if (year == 0)
+                year = dateTime.Year;
+            else
+                dateTime = new(year, 12, 31, 23, 59, 59, TimeSpan.Zero);
 
             var (lastDayS, lastdayE) = TimeHelper.GetStartOrEnd(dateTime.AddDays(-1));   //昨天开始时间
             var (dayS, dayE) = TimeHelper.GetStartOrEnd(dateTime);  //今天开始时间   
@@ -64,17 +68,12 @@ namespace TEAMModelOS.SDK.Models.Service.BIStatsWay
             //lessStats.lastMonthInter = lessRelStats.FindAll(f => f.startTime >= lastMthS && f.startTime <= LastmthE).ToList().Select(s => s.clientInteractionCount).Sum();
             //lessStats.monthInter = lessRelStats.FindAll(f => f.startTime >= mthS && f.startTime <= mthE).ToList().Select(s => s.clientInteractionCount).Sum();
             //lessStats.lastYearInter = lessRelStats.FindAll(f => f.startTime >= lastYearS && f.startTime <= lastYearE).ToList().Select(s => s.clientInteractionCount).Sum();
-            lessStats.allInter = await JointlySingleQuery.GetValueInt(cosmosClient, "School", $"select value(sum(c.clientInteractionCount)) from c ", $"LessonRecord-{id}");
+            lessStats.allInter = await JointlySingleQuery.GetValueInt(cosmosClient, "School", $"select value(sum(c.clientInteractionCount)) from c where c.startTime <= {yearE}", $"LessonRecord-{id}");
             lessStats.lastYearInter = await JointlySingleQuery.GetValueInt(cosmosClient, "School", $"select value(sum(c.clientInteractionCount)) from c where c.startTime >= {lastYearS} and c.startTime <= {lastYearE}", $"LessonRecord-{id}");
             //lessStats.yearInter = lessRelStats.FindAll(f => f.startTime >= yearS && f.startTime <= yearE).ToList().Select(s => s.clientInteractionCount).Sum();
 
-            DateTimeOffset lyearDay = new(DateTimeOffset.UtcNow.Year - 1, DateTimeOffset.UtcNow.Month, DateTimeOffset.UtcNow.Day, DateTimeOffset.UtcNow.Hour, DateTimeOffset.UtcNow.Minute, DateTimeOffset.UtcNow.Second, TimeSpan.Zero);
-            List<StartEndTime> leveryDay = TimeHelper.GetYearEveryDay(lyearDay);
-            List<StartEndTime> everyDay = TimeHelper.GetYearEveryDay(DateTimeOffset.UtcNow);
-
-            List<double> doubles = new();
-            List<object> list = new();
-            List<object> list1 = new();
+            DateTimeOffset lyearDay = new(year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second, TimeSpan.Zero);
+            List<StartEndTime> everyDay = TimeHelper.GetYearEveryDay(lyearDay);
 
             for (int i = 0; i < everyDay.Count; i++)
             {
@@ -82,7 +81,6 @@ namespace TEAMModelOS.SDK.Models.Service.BIStatsWay
                     lessStats.yearInters[i] = (double)lessRelStats.FindAll(f => (f.startTime >= everyDay[i].start && f.startTime <= everyDay[i].end)).Select(s => s.clientInteractionCount).Sum();
                 else
                     lessStats.yearInters.Add((double)lessRelStats.FindAll(f => (f.startTime >= everyDay[i].start && f.startTime <= everyDay[i].end)).Select(s => s.clientInteractionCount).Sum());
-                
             }
 
             for (int i = 0; i < everyDay.Count; i++)

+ 5 - 2
TEAMModelOS.SDK/Models/Service/BIStatsWay/SchoolStatsWay.cs

@@ -31,6 +31,9 @@ namespace TEAMModelOS.SDK.Models.Service.BIStatsWay
             DateTimeOffset dateTime = DateTimeOffset.UtcNow;
             if (year == 0)
                 year = dateTime.Year;
+            else
+                dateTime = new(year, 12, 31, 23, 59, 59, TimeSpan.Zero);
+
             StatsInfo statsInfo = new() { id = $"{year}-{scId}" };
             var (dayS, dayE) = TimeHelper.GetStartOrEnd(dateTime);  //今天开始时间    13位
             var (lastWeekS, lastWeekE) = TimeHelper.GetStartOrEnd(dateTime, "lastweek");   //计算上周开始/结束时间
@@ -78,8 +81,8 @@ namespace TEAMModelOS.SDK.Models.Service.BIStatsWay
             //statsInfo.lesson = 
 
             statsInfo.upTime = dateTime.ToUnixTimeMilliseconds();
-            statsInfo.lesson = await LessonRecordStatsWay.GetSchoolAll(cosmosClient, statsInfo.schoolId);
-            statsInfo.activity = await ActivityStatsWay.GetSchoolAll(cosmosClient, statsInfo.schoolId);
+            statsInfo.lesson = await LessonRecordStatsWay.GetSchoolAll(cosmosClient, statsInfo.schoolId, year);
+            statsInfo.activity = await ActivityStatsWay.GetSchoolAll(cosmosClient, statsInfo.schoolId, year);
             statsInfo.study = await StudyStatsWay.GetSchoolAll(cosmosClient, statsInfo.schoolId);
 
             return statsInfo;