using Azure.Cosmos; using System; using System.Linq; using System.Text.Json; using System.Threading.Tasks; using TEAMModelOS.SDK.DI; using TEAMModelOS.SDK.Extension; using TEAMModelOS.SDK.Models.Cosmos.BI.BICommon; namespace TEAMModelOS.SDK.Models.Service.BI { public static class ProductUseRecordService { /// /// 产品使用量增加 /// /// /// /// /// public static async Task SetProductUseRecord(CosmosClient cosmosClient, DingDing _dingDing,string type) { DateTimeOffset dateOff = DateTimeOffset.UtcNow; try { ProductUseRecord productUseRecord = new(); var resUseRecord = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReadItemStreamAsync($"{dateOff.Year}", new PartitionKey("ProductUseRecord")); if (resUseRecord.Status == 200) { using var fileJson = await JsonDocument.ParseAsync(resUseRecord.ContentStream); productUseRecord = fileJson.ToObject(); } else { productUseRecord.time = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); productUseRecord.hiTaHour = new double[24].ToList(); productUseRecord.hiTeachHour = new double[24].ToList(); productUseRecord.hiTeachccHour = new double[24].ToList(); productUseRecord.hiTaDay = new double[366].ToList(); productUseRecord.hiTeachDay = new double[366].ToList(); productUseRecord.hiTeachccDay = new double[366].ToList(); } DateTimeOffset upTime = DateTimeOffset.UtcNow; double[] doub = new double[24]; if (dateOff.DayOfYear > upTime.DayOfYear) { doub[dateOff.Hour] = 1; } if (productUseRecord.time > 1000000000000) upTime = DateTimeOffset.FromUnixTimeMilliseconds(productUseRecord.time); else upTime = DateTimeOffset.FromUnixTimeSeconds(productUseRecord.time); switch ($"{type}") { case "hita": if (dateOff.DayOfYear == upTime.DayOfYear) { productUseRecord.hiTaHour[dateOff.Hour] += 1; } else { productUseRecord.hiTaHour = doub.ToList(); } productUseRecord.hiTaDay[dateOff.DayOfYear - 1] += 1; break; case "hiTeach": if (dateOff.DayOfYear == upTime.DayOfYear) { productUseRecord.hiTeachHour[dateOff.Hour] += 1; } else { productUseRecord.hiTeachHour = doub.ToList(); } productUseRecord.hiTeachDay[dateOff.DayOfYear - 1] += 1; break; case "hiTeachcc": if (dateOff.DayOfYear == upTime.DayOfYear) { productUseRecord.hiTeachccHour[dateOff.Hour] += 1; } else { productUseRecord.hiTeachccHour = doub.ToList(); } productUseRecord.hiTeachccDay[dateOff.DayOfYear - 1] += 1; break; } if (resUseRecord.Status == 200) { productUseRecord = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").ReplaceItemAsync(productUseRecord, productUseRecord.id, new PartitionKey("ProductUseRecord")); } else { productUseRecord = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Common").CreateItemAsync(productUseRecord, new PartitionKey("ProductUseRecord")); } } catch (Exception ex) { await _dingDing.SendBotMsg($"BI,SetProductUseRecord(),参数:统计类型:{type},时间:{dateOff}\n {ex.Message}\n {ex.StackTrace}", GroupNames.成都开发測試群組); } } } }