Prechádzať zdrojové kódy

學校管理 學校一覽 虛擬學校追加學區名稱

jeff 2 rokov pred
rodič
commit
2e31905a1a

+ 26 - 0
TEAMModelBI/Controllers/Census/SchoolController.cs

@@ -1386,6 +1386,7 @@ namespace TEAMModelBI.Controllers.Census
             jsonElement.TryGetProperty("tmdId", out JsonElement tmdId);
             jsonElement.TryGetProperty("areaId", out JsonElement areaId);
 
+            //IES5實體學校
             StringBuilder sql = new($"select value(c) from c");
 
             if (!string.IsNullOrEmpty($"{role}") && !string.IsNullOrEmpty($"{tmdId}") && string.IsNullOrEmpty($"{areaId}"))
@@ -1415,6 +1416,27 @@ namespace TEAMModelBI.Controllers.Census
             }
 
             //虛擬學校
+            ////取得虛擬學校學區名稱
+            List<string> vrAreaIdList = new List<string>();
+            StringBuilder sqlVrArea = new($"SELECT DISTINCT VALUE c.areaId FROM c WHERE IS_DEFINED(c.areaId) AND NOT IS_NULL(c.areaId) AND c.areaId != ''");
+            await foreach (string item in cosmosClient.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<string>(queryText: sqlVrArea.ToString(), requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey("VirtualBase") }))
+            {
+                vrAreaIdList.Add(item);
+            }
+            Dictionary<string, string> areaDic = new Dictionary<string, string>();
+            string vrAreaListStr = JsonSerializer.Serialize(vrAreaIdList);
+            StringBuilder sqlArea = new($"SELECT c.id, c.name FROM c WHERE ARRAY_CONTAINS({vrAreaListStr}, c.id, true)");
+            await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "Normal").GetItemQueryStreamIterator(queryText: sqlArea.ToString(), requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey("Base-Area") }))
+            {
+                var json = await JsonDocument.ParseAsync(item.ContentStream);
+                foreach (var obj in json.RootElement.GetProperty("Documents").EnumerateArray())
+                {
+                    string arId = obj.GetProperty("id").GetString();
+                    string arName = obj.GetProperty("name").GetString();
+                    areaDic.Add(arId, arName);
+                }
+            }
+            //取得虛擬學校資料
             StringBuilder sqlV = new($"select value(c) from c");
             if (!string.IsNullOrEmpty($"{areaId}") && !string.IsNullOrEmpty($"{role}"))
             {
@@ -1422,6 +1444,10 @@ namespace TEAMModelBI.Controllers.Census
             }
             await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<BIRelation>(queryText: sqlV.ToString(), requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey("VirtualBase") }))
             {
+                if(!string.IsNullOrWhiteSpace(item.areaId) && areaDic.ContainsKey(item.areaId))
+                {
+                    item.areaName = areaDic[item.areaId];
+                }
                 scInfos.Add(item);
             }