BIProductUseRecordController.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. using Microsoft.AspNetCore.Hosting;
  2. using Microsoft.AspNetCore.Http;
  3. using Microsoft.AspNetCore.Mvc;
  4. using Microsoft.Extensions.Configuration;
  5. using System.Net.Http;
  6. using TEAMModelOS.SDK.DI;
  7. using TEAMModelOS.SDK;
  8. using TEAMModelOS.Models;
  9. using Microsoft.Extensions.Options;
  10. using System.Text.Json;
  11. using TEAMModelOS.SDK.Context.Constant;
  12. using System.Threading.Tasks;
  13. using System;
  14. using TEAMModelOS.SDK.Models.Cosmos.BI.BICommon;
  15. using Microsoft.Azure.Cosmos;
  16. using TEAMModelOS.SDK.Extension;
  17. using System.Collections.Generic;
  18. using TEAMModelOS.SDK.Models.Cosmos.BI;
  19. using TEAMModelOS.SDK.Models.Service.BI;
  20. using System.Linq;
  21. namespace TEAMModelBI.Controllers.BICommon
  22. {
  23. [Route("poduct")]
  24. [ApiController]
  25. public class BIProductUseRecordController : ControllerBase
  26. {
  27. private readonly AzureCosmosFactory _azureCosmos;
  28. private readonly DingDing _dingDing;
  29. private readonly Option _option;
  30. private readonly AzureStorageFactory _azureStorage;
  31. private readonly IConfiguration _configuration;
  32. private readonly AzureServiceBusFactory _serviceBus;
  33. private readonly IHttpClientFactory _http;
  34. private readonly CoreAPIHttpService _coreAPIHttpService;
  35. private readonly IWebHostEnvironment _environment; //读取文件
  36. private readonly HttpClient _httpClient;
  37. public BIProductUseRecordController(AzureCosmosFactory azureCosmos, DingDing dingDing, AzureStorageFactory azureStorage, IOptionsSnapshot<Option> option, IConfiguration configuration, AzureServiceBusFactory serviceBus, IHttpClientFactory http, CoreAPIHttpService coreAPIHttpService, IWebHostEnvironment hostingEnvironment, HttpClient httpClient)
  38. {
  39. _azureCosmos = azureCosmos;
  40. _dingDing = dingDing;
  41. _azureStorage = azureStorage;
  42. _option = option?.Value;
  43. _configuration = configuration;
  44. _serviceBus = serviceBus;
  45. _http = http;
  46. _coreAPIHttpService = coreAPIHttpService;
  47. _environment = hostingEnvironment;
  48. _httpClient = httpClient;
  49. }
  50. /// <summary>
  51. /// 查询使用情况
  52. /// </summary>
  53. /// <param name="jsonElement"></param>
  54. /// <returns></returns>
  55. [ProducesDefaultResponseType]
  56. [HttpPost("get-userecord")]
  57. public async Task<IActionResult> GetUseRecord(JsonElement jsonElement)
  58. {
  59. jsonElement.TryGetProperty("year", out JsonElement _year);
  60. int year = DateTimeOffset.UtcNow.Year;
  61. if (!string.IsNullOrEmpty($"{_year}"))
  62. {
  63. year = _year.GetInt32();
  64. }
  65. var cosmosClient = _azureCosmos.GetCosmosClient();
  66. ProductUseRecord productUseRecord = null;
  67. UseRecord useRecord = new();
  68. var resUseRecord = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReadItemStreamAsync($"{year}", new PartitionKey("ProductUseRecord"));
  69. if (resUseRecord.StatusCode == System.Net.HttpStatusCode.OK)
  70. {
  71. using var fileJson = await JsonDocument.ParseAsync(resUseRecord.Content);
  72. productUseRecord = fileJson.ToObject<ProductUseRecord>();
  73. }
  74. if (productUseRecord != null)
  75. {
  76. useRecord.hiTaHour = productUseRecord.hiTaHour;
  77. useRecord.hiTeachHour = productUseRecord.hiTeachHour;
  78. useRecord.hiTeachccHour = productUseRecord.hiTeachccHour;
  79. useRecord.hiTaDay = BICommonWay.ManyDoubleMerge(new List<List<double>>() { productUseRecord.hiTaDay });
  80. useRecord.hiTeachDay = BICommonWay.ManyDoubleMerge(new List<List<double>>() { productUseRecord.hiTeachccHour });
  81. useRecord.hiTeachccDay = BICommonWay.ManyDoubleMerge(new List<List<double>>() { productUseRecord.hiTeachccDay });
  82. }
  83. return Ok(new { state = RespondCode.Ok, useRecord });
  84. }
  85. /// <summary>
  86. /// 使用信息
  87. /// </summary>
  88. public record UseRecord
  89. {
  90. public List<double> hiTaHour { get; set; }
  91. public List<double> hiTeachHour { get; set; }
  92. public List<double> hiTeachccHour { get; set; }
  93. public List<double> hiTaDay { get; set; }
  94. public List<double> hiTeachDay { get; set; }
  95. public List<double> hiTeachccDay { get; set; }
  96. }
  97. }
  98. }