using Azure.Cosmos; using System; using System.Collections.Generic; using System.Threading.Tasks; using TEAMModelOS.SDK.Models.Cosmos.BI; using TEAMModelOS.SDK.Models.Service.BI; namespace TEAMModelOS.SDK.Models.Service.BIStatsWay { public class UserStatsWay { /// /// 统计人数 /// /// /// /// /// /// public static async Task> GetYearTecherStudent(CosmosClient cosmosClient, string id, int year, int userType = 1) { List result = new(366); DateTimeOffset dateTime = DateTimeOffset.UtcNow; if (year < dateTime.Year) dateTime = new(year, 12, 31, 23, 59, 59, TimeSpan.Zero); var (yearS, yearE) = TimeHelper.GetStartOrEnd(dateTime, "year"); //计算今年开始/结束时间 string code = $"Teacher-{id}"; string container = "School"; if (userType != 1) { code = $"Base-{id}"; container = "Student"; } List artRelStats = new(); string sql = $"select c.id,c.code,c.createTime from c where c.startTime >= {yearS} and c.startTime <= {yearE}"; await foreach (var item in cosmosClient.GetContainer("TEAMModelOS", container).GetItemQueryIterator(queryText: sql, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"{code}") })) { artRelStats.Add(item); } DateTimeOffset yearDay = new(year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second, TimeSpan.Zero); List everyDay = TimeHelper.GetYearEveryDay(dateTime); for (int i = 0; i < everyDay.Count; i++) { result.Add(artRelStats.FindAll(f => (f.createTime >= everyDay[i].start && f.createTime <= everyDay[i].end)).Count); } if (result.Count < 366) result.Add(0); return result; } } }