Selaa lähdekoodia

优化时间转换错误的问题。

Li 2 vuotta sitten
vanhempi
commit
dc702636b9

+ 2 - 280
TEAMModelBI/Controllers/BITest/TestController.cs

@@ -1764,287 +1764,9 @@ namespace TEAMModelBI.Controllers.BITest
         public async Task<IActionResult> SetStats(JsonElement json)
         {
             var cosmosClient = _azureCosmos.GetCosmosClient();
-            //await BIStats.SetTypeAddStats(cosmosClient, "hbcn", "Less", 0, 1, 6);//BI统计增/减量
+            await BIStats.SetTypeAddStats(cosmosClient, _dingDing, "gmjh", "Less", 1, careDate: 1672709351527);
 
-            string scId = null, type = null;
-            long careDate = 0;
-            int count = 0;
-            int interaction = 0;
-            int lessType = 0;
-
-            DateTimeOffset cuurDateOff = DateTimeOffset.UtcNow;
-            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, msg = "参数错误!" });
-            }
-            if (json.TryGetProperty("cnt", out JsonElement _cnt))
-                count = _cnt.GetInt32();
-
-            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))
-                careDate = _date.GetInt64();
-            else
-                careDate = dateOff.ToUnixTimeMilliseconds();
-
-            if (string.IsNullOrEmpty(scId))
-                return Ok(new { state = 400});
-
-            //DateTimeOffset cuurDateOff = DateTimeOffset.UtcNow;
-            //DateTimeOffset dateOff = DateTimeOffset.UtcNow;
-            if (careDate > 1000000000000)
-                dateOff = DateTimeOffset.FromUnixTimeMilliseconds(careDate);
-            else
-                dateOff = DateTimeOffset.FromUnixTimeSeconds(careDate);
-            if (careDate == 0)
-            {
-                dateOff = DateTimeOffset.UtcNow;
-                careDate = dateOff.ToUnixTimeMilliseconds();
-            }
-
-            var (lastWeekS, lastWeekE) = TimeHelper.GetStartOrEnd(dateOff, "lastweek");   //计算上周开始/结束时间
-            var (weekS, weekE) = TimeHelper.GetStartOrEnd(dateOff, "week");             //计算本周开始/结束时间
-            var (lastMonthS, lastMonthE) = TimeHelper.GetStartOrEnd(dateOff, "lastMonth");   //上月开始/结束时间
-            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 (weekDayS, weekDayE) = TimeHelper.GetLongToTime(weekS, weekE);
-            var (lWeekDayS, lWeekDayE) = TimeHelper.GetLongToTime(lastWeekS, lastWeekE);
-            var (lTermDayS, lTermDayE) = TimeHelper.GetLongToTime(lastTermS, lastTermE);
-            var (termDayS, termDayE) = TimeHelper.GetLongToTime(lastTermS, lastTermE);
-            var (lMonthS, lMonthE) = TimeHelper.GetLongToTime(lastMonthS, lastMonthE);
-            var (monthDayS, monthDayE) = TimeHelper.GetLongToTime(monthS, monthE);
-            var lastDay = dateOff.AddDays(-1);
-            int lmthDay = TimeHelper.GetDateDay(lMonthE);
-            StatsInfo statsInfo = new();
-
-            var resStsInfo = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReadItemStreamAsync($"{dateOff.Year}-{scId}", new PartitionKey("Statistics"));
-            if (resStsInfo.Status == 200)
-            {
-                using var fileJson = await JsonDocument.ParseAsync(resStsInfo.ContentStream);
-                statsInfo = fileJson.ToObject<StatsInfo>();
-            }
-            else
-            {
-                var resLastStsInfo = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReadItemStreamAsync($"{dateOff.Year - 1}-{scId}", new PartitionKey("Statistics"));
-                if (resLastStsInfo.Status == 200)
-                {
-                    using var fileJson = await JsonDocument.ParseAsync(resStsInfo.ContentStream);
-                    statsInfo = fileJson.ToObject<StatsInfo>();
-                    statsInfo.id = $"{dateOff.Year}-{scId}";
-                    statsInfo.year = dateOff.Year;
-                    statsInfo.stuYear = new double[366].ToList();
-                    statsInfo.tchYear = new double[366].ToList();
-                    statsInfo.lesson.year = new double[366].ToList();
-                    statsInfo.lesson.yearInters = new double[366].ToList();
-                    statsInfo.activity.year = new double[366].ToList();
-                }
-                else
-                {
-                    ScBase scBase = await cosmosClient.GetContainer("TEAMModelOS", "School").ReadItemAsync<ScBase>(scId, new PartitionKey("Base"));
-                    statsInfo.id = $"{dateOff.Year}-{scBase.id}";
-                    statsInfo.schoolId = 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;
-                    statsInfo.stuYear = new double[366].ToList();
-                    statsInfo.tchYear = new double[366].ToList();
-                    statsInfo.lesson.year = new double[366].ToList();
-                    statsInfo.lesson.yearInters = new double[366].ToList();
-                    statsInfo.activity.year = new double[366].ToList();
-                }
-            }
-
-            switch ($"{type}")
-            {
-                case "Exam":
-                    statsInfo.activity.exam += count;
-                    break;
-                case "Survey":
-                    statsInfo.activity.survey += count;
-                    break;
-                case "Vote":
-                    statsInfo.activity.vote += count;
-                    break;
-                case "Homework":
-                    statsInfo.activity.homework += count;
-                    break;
-                case "Less":
-                    //课例
-                    statsInfo.lesson.year[dateOff.DayOfYear] += count;
-                    statsInfo.lesson.all += count;
-
-                    if (lessType == 0)
-                        statsInfo.lesson.open += count;
-                    else
-                        statsInfo.lesson.less += count;
-
-                    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, lWeekDayE.DayOfYear - lWeekDayS.DayOfYear, 0, lessList.ColumnCount).ColumnSums().Sum());
-                    statsInfo.lesson.week = ((int)lessList.SubMatrix(weekDayS.DayOfYear, (dateOff.DayOfYear - weekDayS.DayOfYear), 0, lessList.ColumnCount).ColumnSums().Sum());
-
-                    StatsInfo lastStats = null;
-                    var resLast = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReadItemStreamAsync($"{lTermDayS.Year}-{scId}", new PartitionKey("Statistics"));
-                    if (resLast.Status == 200)
-                    {
-                        using var fileJson = await JsonDocument.ParseAsync(resLast.ContentStream);
-                        lastStats = fileJson.ToObject<StatsInfo>();
-                    }
-
-                    int lastTerm = 0;
-                    if (lTermDayS.Year < dateOff.Year)
-                    {
-                        if (lastStats != null) 
-                        {
-                            var actYer = DenseMatrix.OfColumns(new List<List<double>>() { lastStats.lesson.year });
-                            lastTerm += ((int)actYer.SubMatrix(lTermDayS.DayOfYear, lastStats.lesson.year.Count - lTermDayS.DayOfYear, 0, 1).ColumnSums().Sum());
-                        }
-                        lastTerm += ((int)lessList.SubMatrix(0, lTermDayE.DayOfYear, 0, lessList.ColumnCount).ColumnSums().Sum());
-                    }
-                    else
-                        lastTerm += ((int)lessList.SubMatrix(lTermDayS.DayOfYear, lTermDayE.DayOfYear - lTermDayS.DayOfYear, 0, lessList.ColumnCount).ColumnSums().Sum());
-                    statsInfo.lesson.lastTerm = lastTerm;
-
-                    int term = 0;
-                    if (termDayE.Year > dateOff.Year)
-                    {
-                        if (lastStats != null)
-                            term = ((int)lessList.SubMatrix(termDayS.DayOfYear, (statsInfo.lesson.year.Count - termDayS.DayOfYear), 0, lessList.ColumnCount).ColumnSums().Sum());
-                    }
-                    else
-                        term = ((int)lessList.SubMatrix(termDayS.DayOfYear, termDayE.DayOfYear - termDayS.DayOfYear, 0, lessList.ColumnCount).ColumnSums().Sum());
-                    statsInfo.lesson.term = term;
-
-                    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());
-
-                    //课例互动
-                    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]);
-
-                    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());
-
-                    int lastTermI = 0;
-                    if (lastStats != null)
-                    {
-                        var actYer = DenseMatrix.OfColumns(new List<List<double>>() { lastStats.lesson.year });
-                        lastTermI += ((int)actYer.SubMatrix(0, lastStats.lesson.year.Count, 0, actYer.ColumnCount).ColumnSums().Sum());
-                    }
-                    statsInfo.lesson.lastYearInter = lastTermI;
-
-                    statsInfo.lesson.upTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
-                    break;
-                case "Student":
-                    statsInfo.stuYear[dateOff.DayOfYear] += count;
-                    statsInfo.stu += count;
-
-                    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();
-                    break;
-                case "Teacher":
-
-                    statsInfo.tchYear[dateOff.DayOfYear] += count;
-                    statsInfo.tch += count;
-
-                    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();
-                    break;
-            }
-
-            if ($"{type}".Equals("Exam") || $"{type}".Equals("Survey") || $"{type}".Equals("Vote") || $"{type}".Equals("Homework"))
-            {
-                statsInfo.activity.all += count;
-                if (careDate >= yearS && careDate <= yearE)
-                {
-                    if (count > 0)
-                    {
-                        statsInfo.activity.year[dateOff.DayOfYear] += count;
-                        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, lWeekDayE.DayOfYear- lWeekDayS.DayOfYear, 0, matris.ColumnCount).ColumnSums().Sum());
-                        statsInfo.activity.week = ((int)matris.SubMatrix(weekDayS.DayOfYear, weekDayE.DayOfYear - weekDayS.DayOfYear, 0, matris.ColumnCount).ColumnSums().Sum());
-
-                        StatsInfo lastStats = null;
-                        var resLast = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReadItemStreamAsync($"{lTermDayS.Year}-{scId}", new PartitionKey("Statistics"));
-                        if (resLast.Status == 200)
-                        {
-                            using var fileJson = await JsonDocument.ParseAsync(resLast.ContentStream);
-                            lastStats = fileJson.ToObject<StatsInfo>();
-                        }
-
-                        int lastTerm = 0;
-                        if (lTermDayS.Year < dateOff.Year)
-                        {
-                            if (lastStats != null)
-                            {
-                                var actYer = DenseMatrix.OfColumns(new List<List<double>>() { lastStats.lesson.year });
-                                lastTerm += ((int)actYer.SubMatrix(lTermDayS.DayOfYear, lastStats.lesson.year.Count - lTermDayS.DayOfYear, 0, 1).ColumnSums().Sum());
-                            }
-                            lastTerm += ((int)matris.SubMatrix(0, lTermDayE.DayOfYear, 0, matris.ColumnCount).ColumnSums().Sum());
-                        }
-                        else
-                            lastTerm += ((int)matris.SubMatrix(lTermDayS.DayOfYear, lTermDayE.DayOfYear- lTermDayS.DayOfYear, 0, matris.ColumnCount).ColumnSums().Sum());
-                        statsInfo.activity.lastTerm = lastTerm;
-
-
-                        int term = 0;
-                        if (termDayS.Year > dateOff.Year)
-                        {
-                            if (lastStats != null)
-                            {
-                                var actYer = DenseMatrix.OfColumns(new List<List<double>>() { lastStats.lesson.year });
-                                term += ((int)actYer.SubMatrix(termDayS.DayOfYear, lastStats.lesson.year.Count - termDayS.DayOfYear, 0, 1).ColumnSums().Sum());
-                            }
-                            term += ((int)matris.SubMatrix(0, termDayE.DayOfYear, 0, matris.ColumnCount).ColumnSums().Sum());
-                        }
-                        else
-                            term += ((int)matris.SubMatrix(termDayS.DayOfYear, termDayE.DayOfYear - termDayS.DayOfYear, 0, matris.ColumnCount).ColumnSums().Sum());
-                        statsInfo.activity.term = term;
-
-                        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)
-                statsInfo = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReplaceItemAsync<StatsInfo>(statsInfo, statsInfo.id, new PartitionKey("Statistics"));
-            else
-                statsInfo = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").CreateItemAsync<StatsInfo>(statsInfo, new PartitionKey("Statistics"));
-
-            return Ok(new { state = 200, statsInfo });
+            return Ok(new { state = 200 });
         }
 
 

+ 12 - 2
TEAMModelOS.SDK/Models/Service/BI/TimeHelper.cs

@@ -357,8 +357,18 @@ namespace TEAMModelOS.SDK.Models.Service.BI
                         break;
                     //上个月
                     case "lastMonth":
-                        tempStrart = new DateTimeOffset(year, month - 1, 1, 0, 0, 0, TimeSpan.Zero);
-                        tempEnd = new DateTimeOffset(year, month - 1, DateTime.DaysInMonth(year, month - 1), 23, 59, 59, TimeSpan.Zero);
+                        if (month == 1) 
+                        {
+                            year--;
+                            month = 12;
+                        }
+                        else
+                        {
+                            month--;
+                        }
+
+                        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;
                     //本月1号至当天
                     case "monthDay":