Browse Source

[BI]取得IOT統計資訊API 輸入欄追加TMID欄位

jeff 4 months ago
parent
commit
7046e46125

+ 13 - 3
TEAMModelBI/Controllers/BIProductAnalysis/ProductAnalysisController.cs

@@ -71,11 +71,16 @@ namespace TEAMModelBI.Controllers.ProductAnalysis
                 if (!jsonElement.TryGetProperty("prod", out JsonElement prodJobj)) return BadRequest();//產品 HiTeach, HiTeachCC, HiTA
                 string prod = (prodJobj.ToString().Equals("HiTeach") || prodJobj.ToString().Equals("HiTeachCC") || prodJobj.ToString().Equals("HiTA")) ? prodJobj.ToString() : string.Empty;
                 if(string.IsNullOrWhiteSpace(prod)) return BadRequest();
-                if (!jsonElement.TryGetProperty("schoolIds", out JsonElement schoolIdsJobj)) return BadRequest();//學校ID(array)
-                List<string> schoolIds = schoolIdsJobj.ToObject<List<string>>();
                 string dateUnit = (jsonElement.TryGetProperty("dateUnit", out JsonElement dateUnitJobj)) ? (!string.IsNullOrWhiteSpace(Convert.ToString(dateUnitJobj))) ? Convert.ToString(dateUnitJobj).ToLower() : "day" : "day"; //時間統計單位 ※以每年(Year)、每月(Month)、每日(Day) 為統計單位 預設值:每日
                 string geoUnit = (jsonElement.TryGetProperty("geoUnit", out JsonElement geoUnitJobj)) ? (!string.IsNullOrWhiteSpace(Convert.ToString(geoUnitJobj))) ? Convert.ToString(geoUnitJobj).ToLower() : "city" : "city"; //地理統計單位 region:國 province:省 city:市 dist:區 預設值:市
                 string target = (jsonElement.TryGetProperty("target", out JsonElement targetJobj)) ? (!string.IsNullOrWhiteSpace(Convert.ToString(targetJobj))) ? Convert.ToString(targetJobj).ToLower() : "school" : "school"; //統計對象 school:學校 tmid:TMID
+                List<string> schoolIds = new List<string>();
+                if (target.Equals("school"))
+                {
+                    if (!jsonElement.TryGetProperty("schoolIds", out JsonElement schoolIdsJobj)) return BadRequest();//學校ID(array)
+                    schoolIds = schoolIdsJobj.ToObject<List<string>>();
+                }
+                List<string> tmids = (jsonElement.TryGetProperty("tmids", out JsonElement tmidsJobj)) ? tmidsJobj.ToObject<List<string>>() : new List<string>(); //TMID(array) ※target = tmid 時縮小搜尋範圍
                 //起始終止日期換算
                 List<string> dateFromList = dateFromJobj.ToString().Split('-').ToList();
                 int dateFromYear = Convert.ToInt32(dateFromList[0], 10);
@@ -104,6 +109,11 @@ namespace TEAMModelBI.Controllers.ProductAnalysis
                 {
                     List<string> tmidList = new List<string>();
                     string Sql = $"SELECT * FROM c WHERE c.toolType = '{prod}' AND c.dateUnit = '{dateUnit}' AND c.dateTime >= {dateTimeFromSec} AND c.dateTime <= {dateTimeToSec}";
+                    if(tmids.Count > 0)
+                    {
+                        string tmidsSer = JsonSerializer.Serialize(tmids);
+                        Sql += $" AND ARRAY_CONTAINS({tmidsSer}, c.tmid) ";
+                    }
                     await foreach (var item in cosmosClient.GetContainer("TEAMModelOS", "Teacher").GetItemQueryStreamIteratorSql(queryText: Sql, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"TmidAnalysis") }))
                     {
                         var json = await JsonDocument.ParseAsync(item.Content);
@@ -376,7 +386,7 @@ namespace TEAMModelBI.Controllers.ProductAnalysis
             }
             catch (Exception ex)
             {
-                //await _dingDing.SendBotMsg($"BI,{_option.Location} /prodanalysis/get-iotstics \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location} /prodanalysis/get-iotstics \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }