using Azure.Cosmos; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using TEAMModelOS.SDK.DI; using TEAMModelOS.SDK.Models.Cosmos; using TEAMModelOS.SDK.Models.Cosmos.BI.BISchool; namespace TEAMModelOS.SDK.Models.Service.BI { public static class BISchoolService { /// /// 更新版本信息 /// /// /// /// /// public static async Task UpSchoolEdition(CosmosClient cosmosClient, DingDing _dingDing, List services, string id) { try { School school = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync(id, new PartitionKey("Base")); school.edition = calSchoolEdition(school, services); await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync(school, id, new PartitionKey("Base")); BIRelation biRel = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync(id, new PartitionKey("BIRel")); biRel.edition = school.edition; await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync(biRel, id, new PartitionKey("BIRel")); } catch (Exception ex) { _ = _dingDing.SendBotMsg($"BI,{Environment.GetEnvironmentVariable("Option:Location")},UpSchoolEdition() 服务列表:{services},学校id:{id}\n{ex.Message}\n{ex.StackTrace}\n", GroupNames.成都开发測試群組); } } /// /// 計算學校版本公式 /// public static Edition calSchoolEdition(School school, List services) { int edition = 0; if (school.size <= 100 && school.scale == 0) { edition = 1; } else if (school.size >= 300 && school.scale >= 500 && school.scale < 100 && services.Contains("YMPCVCIM")) { edition = 2; } else if (school.size >= 300 && school.scale >= 1000 && services.Contains("YMPCVCIM") && services.Count > 2) { edition = 3; } if (edition == 0) { edition = 1; } if (school.edition != null) { school.edition.current = edition; if (school.edition.record < edition) { school.edition.record = edition; } } else { Edition tempEdition = new() { current = edition, record = edition }; school.edition = tempEdition; } return school.edition; } } }