123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- using Microsoft.Azure.Cosmos;
- using System;
- using System.Collections.Generic;
- using System.Threading.Tasks;
- using TEAMModelOS.SDK.Models.Cosmos.BI;
- using TEAMModelOS.SDK.Models.Service.BI;
- using TEAMModelOS.SDK.DI;
- namespace TEAMModelOS.SDK.Models.Service.BIStatsWay
- {
- public class UserStatsWay
- {
- /// <summary>
- /// 统计人数
- /// </summary>
- /// <param name="cosmosClient"></param>
- /// <param name="id"></param>
- /// <param name="year"></param>
- /// <param name="userType"></param>
- /// <returns></returns>
- public static async Task<List<double>> GetYearTecherStudent(CosmosClient cosmosClient, string id, int year, int userType = 1)
- {
- List<double> 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> 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).GetItemQueryIteratorSql<ArtRelStats>(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<StartEndTime> 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;
- }
- }
- }
|