|
@@ -88,8 +88,32 @@ namespace TEAMModelBI.Controllers.ProductAnalysis
|
|
long dateTimeToSec = dateTimeTo.ToUnixTimeSeconds();
|
|
long dateTimeToSec = dateTimeTo.ToUnixTimeSeconds();
|
|
|
|
|
|
//CosmosDB資料取得
|
|
//CosmosDB資料取得
|
|
- List<ProdAnalysisApiResult> result = new List<ProdAnalysisApiResult>();
|
|
|
|
|
|
+ ////取得學校基本資訊 => 記入Dictionary
|
|
|
|
+ Dictionary<string, Dictionary<string, string>> schDic = new();
|
|
string schIdListStr = JsonSerializer.Serialize(schoolIds);
|
|
string schIdListStr = JsonSerializer.Serialize(schoolIds);
|
|
|
|
+ string SqlSch = $"SELECT c.id, c.name, c.code, c.region, c.province, c.city, c.dist FROM c WHERE ARRAY_CONTAINS({schIdListStr}, c.id, true) AND (c.code = 'Base' OR c.code = 'VirtualBase')";
|
|
|
|
+ await foreach (var item in cosmosClient.GetContainer("TEAMModelOS", "School").GetItemQueryStreamIterator(queryText: SqlSch, requestOptions: null))
|
|
|
|
+ {
|
|
|
|
+ var json = await JsonDocument.ParseAsync(item.ContentStream);
|
|
|
|
+ foreach (var obj in json.RootElement.GetProperty("Documents").EnumerateArray())
|
|
|
|
+ {
|
|
|
|
+ string schId = obj.GetProperty("id").GetString();
|
|
|
|
+ string name = Convert.ToString(obj.GetProperty("name"));
|
|
|
|
+ string region = Convert.ToString(obj.GetProperty("region"));
|
|
|
|
+ string province = Convert.ToString(obj.GetProperty("province"));
|
|
|
|
+ string city = Convert.ToString(obj.GetProperty("city"));
|
|
|
|
+ string dist = Convert.ToString(obj.GetProperty("dist"));
|
|
|
|
+ string type = Convert.ToString(obj.GetProperty("code"));
|
|
|
|
+ if (!schDic.ContainsKey(schId))
|
|
|
|
+ {
|
|
|
|
+ Dictionary<string, string> schDicRow = new() { { "name", name }, { "region", region }, { "province", province }, { "city", city }, { "dist", dist }, { "type", type } };
|
|
|
|
+ schDic.Add(schId, schDicRow);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ ////取得產品分析資訊
|
|
|
|
+ List<ProdAnalysisApiResult> result = new List<ProdAnalysisApiResult>();
|
|
string Sql = $"SELECT * FROM c WHERE c.toolType = '{prod}' AND c.dateUnit = '{dateUnit}' AND ARRAY_CONTAINS({schIdListStr}, c.schoolId, true) AND c.dateTime >= {dateTimeFromSec} AND c.dateTime <= {dateTimeToSec}";
|
|
string Sql = $"SELECT * FROM c WHERE c.toolType = '{prod}' AND c.dateUnit = '{dateUnit}' AND ARRAY_CONTAINS({schIdListStr}, c.schoolId, true) AND c.dateTime >= {dateTimeFromSec} AND c.dateTime <= {dateTimeToSec}";
|
|
await foreach (var item in cosmosClient.GetContainer("TEAMModelOS", "School").GetItemQueryStreamIterator(queryText: Sql, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"ProdAnalysis") }))
|
|
await foreach (var item in cosmosClient.GetContainer("TEAMModelOS", "School").GetItemQueryStreamIterator(queryText: Sql, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"ProdAnalysis") }))
|
|
{
|
|
{
|
|
@@ -97,6 +121,15 @@ namespace TEAMModelBI.Controllers.ProductAnalysis
|
|
foreach (var obj in json.RootElement.GetProperty("Documents").EnumerateArray())
|
|
foreach (var obj in json.RootElement.GetProperty("Documents").EnumerateArray())
|
|
{
|
|
{
|
|
ProdAnalysisApiResult resultRow = obj.ToObject<ProdAnalysisApiResult>();
|
|
ProdAnalysisApiResult resultRow = obj.ToObject<ProdAnalysisApiResult>();
|
|
|
|
+ if (schDic.ContainsKey(resultRow.schoolId))
|
|
|
|
+ {
|
|
|
|
+ resultRow.school.name = schDic[resultRow.schoolId]["name"];
|
|
|
|
+ resultRow.school.region = schDic[resultRow.schoolId]["region"];
|
|
|
|
+ resultRow.school.province = schDic[resultRow.schoolId]["province"];
|
|
|
|
+ resultRow.school.city = schDic[resultRow.schoolId]["city"];
|
|
|
|
+ resultRow.school.dist = schDic[resultRow.schoolId]["dist"];
|
|
|
|
+ resultRow.school.type = schDic[resultRow.schoolId]["type"];
|
|
|
|
+ }
|
|
result.Add(resultRow);
|
|
result.Add(resultRow);
|
|
}
|
|
}
|
|
}
|
|
}
|