LessonController.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using Azure.Cosmos;
  2. using Microsoft.AspNetCore.Http;
  3. using Microsoft.AspNetCore.Mvc;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text.Json;
  7. using System.Threading.Tasks;
  8. using TEAMModelBI.Tool;
  9. using TEAMModelBI.Tool.Context;
  10. using TEAMModelOS.SDK.DI;
  11. using TEAMModelOS.SDK.Models;
  12. namespace TEAMModelBI.Controllers.BISchool
  13. {
  14. [Route("Lesson")]
  15. [ApiController]
  16. public class LessonController : ControllerBase
  17. {
  18. private readonly AzureCosmosFactory _azureCosmos;
  19. private readonly AzureStorageFactory _azureStorage;
  20. private readonly AzureRedisFactory _azureRedis;
  21. public LessonController(AzureCosmosFactory azureCosmos, AzureStorageFactory azureStorage, AzureRedisFactory azureRedis)
  22. {
  23. _azureCosmos = azureCosmos;
  24. _azureStorage = azureStorage;
  25. _azureRedis = azureRedis;
  26. }
  27. /// <summary>
  28. /// 历史记录读取
  29. /// </summary>
  30. /// <param name="jsonElement"></param>
  31. /// <returns></returns>
  32. [HttpPost("get-alllesson")]
  33. public async Task<IActionResult> GetAllLessonRecords(JsonElement jsonElement)
  34. {
  35. jsonElement.TryGetProperty("site", out JsonElement site);
  36. var cosmosClient = _azureCosmos.GetCosmosClient();
  37. if ($"{site}".Equals(BIConst.GlobalSite))
  38. cosmosClient = _azureCosmos.GetCosmosClient(name: BIConst.GlobalSite);
  39. List<LessonRecord> scLesson = new();
  40. List<LessonRecord> tchLesson = new();
  41. await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS,"School").GetItemQueryIterator<LessonRecord>(queryText: $"select value(c) from c where c.pk='LessonRecord'",requestOptions:new QueryRequestOptions() { }))
  42. {
  43. scLesson.Add(item);
  44. }
  45. await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "Teacher").GetItemQueryIterator<LessonRecord>(queryText: $"select value(c) from c where c.pk='LessonRecord'", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey("LessonRecord") }))
  46. {
  47. tchLesson.Add(item);
  48. }
  49. //scLesson.ForEach(item => { TimeHelper.GetDateTime(item.startTime).Hour })
  50. List<LessCnt> lessCnts = scLesson.Select(item => new LessCnt { hour = TimeHelper.GetDateTime(item.startTime).ToString("yyyyMMddHH"), cat = item.id, upload = item.upload, schoolId = item.school }).ToList();
  51. List<LessCnt> openCnt = lessCnts.FindAll(s => s.upload == 0).ToList();
  52. List<LessCnt> lessCnt = lessCnts.FindAll(s => s.upload == 1).ToList();
  53. var openL = openCnt.GroupBy(g => g.hour).Select(s => new { key = s.Key, cnt = s.Count() }).ToList();
  54. var lessL = lessCnt.GroupBy(g => g.hour).Select(s => new { key = s.Key, cnt = s.Count() }).ToList();
  55. //openL.ForEach(f=> { })
  56. return Ok(new { state = 200, openL, lessL, openCnt, lessCnt, lessCnts });
  57. }
  58. public record LessCnt
  59. {
  60. public string hour { get; set; }
  61. public string schoolId { get; set; }
  62. public string cat { get; set; }
  63. public int upload { get; set; }
  64. }
  65. }
  66. }