Forráskód Böngészése

修正依据类型增/减量统计方法邏輯:本周、上周計數項目起始或終止時間因跨年無法正確取得數據而報錯的問題

jeff 5 hónapja
szülő
commit
21e40c444d

+ 31 - 2
TEAMModelOS.SDK/Models/Service/BI/BIStats.cs

@@ -170,7 +170,14 @@ namespace TEAMModelOS.SDK.Models.Service.BI
                         statsInfo.lesson.day = ((int)statsInfo.lesson.year[dateOff.DayOfYear - 1]);
 
                         int lastWeek = 0;
-                        if (lWeekDayS.Year != dateOff.Year)
+                        if(lWeekDayS.Year != dateOff.Year && lWeekDayE.Year != dateOff.Year)
+                        {
+                            if (lastLesson != null)
+                            {
+                                lastWeek += ((int)lastLesson.SubMatrix(lWeekDayS.DayOfYear - 1, lWeekDayE.DayOfYear - lWeekDayS.DayOfYear + 1, 0, lessList.ColumnCount).ColumnSums().Sum());
+                            }
+                        }
+                        else if (lWeekDayS.Year != dateOff.Year)
                         {
                             if (lastLesson != null)
                             {
@@ -183,7 +190,29 @@ namespace TEAMModelOS.SDK.Models.Service.BI
                             lastWeek = ((int)lessList.SubMatrix(lWeekDayS.DayOfYear - 1, lWeekDayE.DayOfYear - lWeekDayS.DayOfYear + 1, 0, lessList.ColumnCount).ColumnSums().Sum());
                         }
                         statsInfo.lesson.lastWeek = lastWeek;
-                        statsInfo.lesson.week = ((int)lessList.SubMatrix(weekDayS.DayOfYear - 1, (dateOff.DayOfYear - weekDayS.DayOfYear + 1), 0, lessList.ColumnCount).ColumnSums().Sum());
+
+                        int week = 0;
+                        if (weekDayS.Year != dateOff.Year && weekDayE.Year != dateOff.Year)
+                        {
+                            if (lastLesson != null)
+                            {
+                                week = ((int)lastLesson.SubMatrix(weekDayS.DayOfYear - 1, (weekDayE.DayOfYear - weekDayS.DayOfYear + 1), 0, lessList.ColumnCount).ColumnSums().Sum());
+                            }
+                        }
+                        else if(weekDayS.Year != dateOff.Year)
+                        {
+                            if (lastLesson != null)
+                            {
+                                week += ((int)lastLesson.SubMatrix(weekDayS.DayOfYear - 1, lastLesson.RowCount - weekDayS.DayOfYear + 1, 0, lessList.ColumnCount).ColumnSums().Sum());
+                            }
+                            week += ((int)lessList.SubMatrix(0, weekDayE.DayOfYear, 0, lessList.ColumnCount).ColumnSums().Sum());
+                        }
+                        else
+                        {
+                            week = ((int)lessList.SubMatrix(weekDayS.DayOfYear - 1, (dateOff.DayOfYear - weekDayS.DayOfYear + 1), 0, lessList.ColumnCount).ColumnSums().Sum());
+                        }
+                        statsInfo.lesson.week = week;
+                        //statsInfo.lesson.week = ((int)lessList.SubMatrix(weekDayS.DayOfYear - 1, (dateOff.DayOfYear - weekDayS.DayOfYear + 1), 0, lessList.ColumnCount).ColumnSums().Sum());
 
                         //var resLast = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReadItemStreamAsync($"{lTermDayS.Year}-{scId}", new PartitionKey("Statistics"));
                         //if (resLast.StatusCode == System.Net.HttpStatusCode.OK)

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

@@ -387,7 +387,7 @@ namespace TEAMModelOS.SDK.Models.Service.BI
                         tempStrart = new DateTimeOffset(year, month, 1, 0, 0, 0, TimeSpan.Zero);
                         tempEnd = new DateTimeOffset(year, month, DateTime.DaysInMonth(year, month), 23, 59, 59, TimeSpan.Zero);
                         break;
-                    //
+                    //
                     case "week":
                         DateTimeOffset weekStrart = dateTime.AddDays(-(int)(dateTime.DayOfWeek) + 1);
                         DateTimeOffset weekEnd = dateTime.AddDays(7 - (int)(dateTime.DayOfWeek));