Browse Source

[BI]取得IOT統計資料API 追加特殊参数欄位、排除無學校及所有學校資料邏輯
[IES5]統測活動老師報名班級 追加"預估學生人數"欄位

jeff 2 tháng trước cách đây
mục cha
commit
cc7ca6af85

+ 6 - 2
TEAMModelBI/Controllers/BIProductAnalysis/ProductAnalysisController.cs

@@ -77,6 +77,7 @@ namespace TEAMModelBI.Controllers.ProductAnalysis
                 string geoUnit = (jsonElement.TryGetProperty("geoUnit", out JsonElement geoUnitJobj)) ? (!string.IsNullOrWhiteSpace(Convert.ToString(geoUnitJobj))) ? Convert.ToString(geoUnitJobj).ToLower() : "city" : "city"; //地理統計單位 region:國 province:省 city:市 dist:區 預設值:市
                 Geo geo = (jsonElement.TryGetProperty("geo", out JsonElement geoJobj)) ? geoJobj.ToObject<Geo>() : null;
                 string target = (jsonElement.TryGetProperty("target", out JsonElement targetJobj)) ? (!string.IsNullOrWhiteSpace(Convert.ToString(targetJobj))) ? Convert.ToString(targetJobj).ToLower() : "school" : "school"; //統計對象 school:學校 tmid:TMID
+                string extra = (jsonElement.TryGetProperty("extra", out JsonElement extraJobj)) ? (!string.IsNullOrWhiteSpace(Convert.ToString(extraJobj))) ? Convert.ToString(extraJobj).ToLower() : string.Empty : string.Empty; //額外參數 rmvNoAll:不取 noschoolid、allschool
                 List<string> schoolIds = new List<string>();
                 if (target.Equals("school"))
                 {
@@ -330,8 +331,11 @@ namespace TEAMModelBI.Controllers.ProductAnalysis
                     Dictionary<string, ProdAnalysisApiResult> geoDic = new Dictionary<string, ProdAnalysisApiResult>(); //各地理資訊統計資料
                     Dictionary<string, List<string>> geoSchDic = new Dictionary<string, List<string>>(); //地理ID->學校ID 字典
                     string Sql = $"SELECT * FROM c WHERE c.toolType = '{prod}' AND c.dateUnit = '{dateUnit}' AND c.dateTime >= {dateTimeFromSec} AND c.dateTime <= {dateTimeToSec}";
-                    schoolIds.Add("noschoolid");
-                    schoolIds.Add("allschool");
+                    if(!extra.Equals("rmvnoall"))
+                    {
+                        schoolIds.Add("noschoolid");
+                        schoolIds.Add("allschool");
+                    }
                     schIdListStr = JsonSerializer.Serialize(schoolIds);
                     Sql += $" AND ARRAY_CONTAINS({schIdListStr}, c.schoolId, true)";
                     await foreach (var item in cosmosClient.GetContainer("TEAMModelOS", "School").GetItemQueryStreamIteratorSql(queryText: Sql, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"ProdAnalysis") }))

+ 1 - 0
TEAMModelOS.SDK/Models/Cosmos/Teacher/JointEvent.cs

@@ -94,6 +94,7 @@ namespace TEAMModelOS.SDK.Models
             public string id { get; set; }
             public string name { get; set; }
             public string no { get; set; } //系統安排的流水號 ※各組(jointGroup)的班級從1開始++ 決賽才記入
+            public int expStuNum { get; set; } //預估學生人數
             public List<JointEventGroupCourseGroupSchedule> schedule { get; set; } = new();
             public class JointEventGroupCourseGroupSchedule
             {

+ 3 - 1
TEAMModelOS/Controllers/Teacher/JointEventController.cs

@@ -702,6 +702,7 @@ namespace TEAMModelOS.Controllers.Common
                 {
                     return Ok(new { errCode = "1", err = "Invalid param." });
                 }
+                //取得活動報名資料
                 JointEventGroupDb jointCourse = new JointEventGroupDb();
                 StringBuilder stringBuilder = new($"SELECT * FROM c WHERE c.jointEventId = '{jointEventId}' AND c.jointGroupId = '{jointGroupId}' AND c.creatorId = '{creatorId}' AND ( IS_DEFINED(c.type) = false OR c.type = 'regular' ) ");
                 await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Teacher").GetItemQueryStreamIteratorSql(queryText: stringBuilder.ToString(), requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey("JointCourse") }))
@@ -1813,7 +1814,8 @@ namespace TEAMModelOS.Controllers.Common
                 public string id { get; set; }
                 public string name { get; set; }
                 public string no { get; set; } //jointGroup所屬班級流水號
-                public int stuNum { get; set; }
+                public int stuNum { get; set; } //實際學生人數
+                public int expStuNum { get; set; } //預估學生人數
                 public bool goFinal { get; set; } //是否可參加決賽
                 public List<object> schedule { get; set; } = new List<object>(); //已完成的行程
             }