瀏覽代碼

1.IOT取得資料追加「是否送出小數據或SOK服務」欄位
2.HiTeach取得學校資訊API修正:只取現有學校學段的課程

jeff 2 年之前
父節點
當前提交
db86e734da

+ 5 - 0
TEAMModelOS.SDK/Models/Cosmos/School/ProductAnalysis.cs

@@ -100,6 +100,10 @@ namespace TEAMModelOS.SDK.Models
         /// </summary>
         /// </summary>
         /// [例]ex. 5.0.21.0000 -> 500210000
         /// [例]ex. 5.0.21.0000 -> 500210000
         public string version { get; set; }
         public string version { get; set; }
+        /// <summary>
+        /// 是否送出小數據或SOK服務 0:false 1:true
+        /// </summary>
+        public string sendSok { get; set; }
     }
     }
 
 
 
 
@@ -136,6 +140,7 @@ namespace TEAMModelOS.SDK.Models
         public int missionFin { get; set; } //作品任務完成總數
         public int missionFin { get; set; } //作品任務完成總數
         public int item { get; set; } //題數
         public int item { get; set; } //題數
         public int interact { get; set; } //互動總次數
         public int interact { get; set; } //互動總次數
+        public int sendSok { get; set; } //送出小數據或SOK服務
     }
     }
     /// <summary>
     /// <summary>
     /// IES5 ProdAnalysis (Redis)
     /// IES5 ProdAnalysis (Redis)

+ 3 - 1
TEAMModelOS.SDK/Models/Service/BI/BIProdAnalysis.cs

@@ -39,7 +39,7 @@ namespace TEAMModelOS.SDK.Models.Service.BI
                 var redisClinet8 = _azureRedis.GetRedisClient(8);
                 var redisClinet8 = _azureRedis.GetRedisClient(8);
                 var datetime = DateTimeOffset.UtcNow;
                 var datetime = DateTimeOffset.UtcNow;
                 var ynow = datetime.Year;
                 var ynow = datetime.Year;
-                List<string> calPropList = new List<string>() { "lessonRecord", "useIES", "useIES5Resource", "useWebIrs", "useDeviceIrs", "useHaboard", "useHita", "lessonLengMin", "stuShow", "stuLessonLengMin", "tGreen", "lTypeCoop", "lTypeIact", "lTypeMis", "lTypeTst", "lTypeDif", "lTypeNone", "lessonCnt928", "lessonCntId", "lessonCntDevice", "lessonCntIdDevice", "mission", "missionFin", "item", "interact" }; //要計算的ProdAnalysis欄位列表
+                List<string> calPropList = new List<string>() { "lessonRecord", "useIES", "useIES5Resource", "useWebIrs", "useDeviceIrs", "useHaboard", "useHita", "lessonLengMin", "stuShow", "stuLessonLengMin", "tGreen", "lTypeCoop", "lTypeIact", "lTypeMis", "lTypeTst", "lTypeDif", "lTypeNone", "lessonCnt928", "lessonCntId", "lessonCntDevice", "lessonCntIdDevice", "mission", "missionFin", "item", "interact", "sendSok" }; //要計算的ProdAnalysis欄位列表
                 //取得CS Redis TeachingData (IOT紀錄只有三個月分)
                 //取得CS Redis TeachingData (IOT紀錄只有三個月分)
                 List<IotTeachingData> IotTeachingDataList = new List<IotTeachingData>();
                 List<IotTeachingData> IotTeachingDataList = new List<IotTeachingData>();
                 if (y.Equals(ynow.ToString()))
                 if (y.Equals(ynow.ToString()))
@@ -78,6 +78,7 @@ namespace TEAMModelOS.SDK.Models.Service.BI
                             IotTeachingData.interact = (!string.IsNullOrWhiteSpace(tdata[23])) ? Convert.ToInt32(tdata[23]) : 0;
                             IotTeachingData.interact = (!string.IsNullOrWhiteSpace(tdata[23])) ? Convert.ToInt32(tdata[23]) : 0;
                             IotTeachingData.ip = (tdata.Length > 24) ? tdata[24] : "";
                             IotTeachingData.ip = (tdata.Length > 24) ? tdata[24] : "";
                             IotTeachingData.version = (tdata.Length > 25) ? tdata[25] : "";
                             IotTeachingData.version = (tdata.Length > 25) ? tdata[25] : "";
+                            IotTeachingData.sendSok = (!string.IsNullOrWhiteSpace(tdata[26])) ? tdata[26] : "";
                             IotTeachingDataList.Add(IotTeachingData);
                             IotTeachingDataList.Add(IotTeachingData);
                         }
                         }
                     }
                     }
@@ -173,6 +174,7 @@ namespace TEAMModelOS.SDK.Models.Service.BI
                             prodAnalysisRow.missionFin += IotTeachingDatRow.missionFin;
                             prodAnalysisRow.missionFin += IotTeachingDatRow.missionFin;
                             prodAnalysisRow.item += IotTeachingDatRow.item;
                             prodAnalysisRow.item += IotTeachingDatRow.item;
                             prodAnalysisRow.interact += IotTeachingDatRow.interact;
                             prodAnalysisRow.interact += IotTeachingDatRow.interact;
+                            if (IotTeachingDatRow.sendSok.Equals("1")) prodAnalysisRow.sendSok++;
                             if (addFlg)
                             if (addFlg)
                             {
                             {
                                 ProdAnalysisList.Add(prodAnalysisRow);
                                 ProdAnalysisList.Add(prodAnalysisRow);

+ 7 - 0
TEAMModelOS/Controllers/Client/HiTeachController.cs

@@ -657,6 +657,7 @@ namespace TEAMModelOS.Controllers.Client
                 List<object> grades = new List<object>();
                 List<object> grades = new List<object>();
                 List<object> subjects = new List<object>();
                 List<object> subjects = new List<object>();
                 List<object> examTypes = new List<object>();
                 List<object> examTypes = new List<object>();
+                List<string> periodIds = new List<string>(); //學段ID 取得課程時限制用
 
 
                 string lang = "en-us";
                 string lang = "en-us";
                 School school_base = await client.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>($"{school_code}", new PartitionKey("Base"));
                 School school_base = await client.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>($"{school_code}", new PartitionKey("Base"));
@@ -676,6 +677,7 @@ namespace TEAMModelOS.Controllers.Client
                     foreach (Period periodinfo in school_base.period)
                     foreach (Period periodinfo in school_base.period)
                     {
                     {
                         periods.Add(new { id= periodinfo.id, name= periodinfo.name });
                         periods.Add(new { id= periodinfo.id, name= periodinfo.name });
+                        periodIds.Add(periodinfo.id);
                         int gradeIndex = 0;
                         int gradeIndex = 0;
                         foreach (string gradeName in periodinfo.grades)
                         foreach (string gradeName in periodinfo.grades)
                         {
                         {
@@ -706,6 +708,11 @@ namespace TEAMModelOS.Controllers.Client
 
 
                 //取得學校安排老師課程
                 //取得學校安排老師課程
                 var query = $"SELECT DISTINCT c.id, c.name, c.scope, c.subject, c.period.id AS periodId, schedule.classId AS scheduleClassId, schedule.stulist AS scheduleStulist, schedule.notice AS scheduleNotice FROM c JOIN schedule IN c.schedule WHERE schedule.teacherId = '{id}'";
                 var query = $"SELECT DISTINCT c.id, c.name, c.scope, c.subject, c.period.id AS periodId, schedule.classId AS scheduleClassId, schedule.stulist AS scheduleStulist, schedule.notice AS scheduleNotice FROM c JOIN schedule IN c.schedule WHERE schedule.teacherId = '{id}'";
+                if(periodIds.Count > 0)
+                {
+                    string periodIdsJsonStr = JsonSerializer.Serialize(periodIds);
+                    query += $" AND ARRAY_CONTAINS({periodIdsJsonStr}, c.period.id, true)";
+                }
                 //var query = $"SELECT c.id, c.name, c.teacher, cc.course, c.scope FROM c JOIN cc IN c.courses JOIN cct IN cc.teachers WHERE cct.id = '{id}'";
                 //var query = $"SELECT c.id, c.name, c.teacher, cc.course, c.scope FROM c JOIN cc IN c.courses JOIN cct IN cc.teachers WHERE cct.id = '{id}'";
                 await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryStreamIterator(queryText: query, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Course-{school_code}") }))
                 await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryStreamIterator(queryText: query, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Course-{school_code}") }))
                 {
                 {