|
@@ -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();
|
|
|
}
|
|
|
}
|