瀏覽代碼

区级统计接口

CrazyIter_Bin 3 年之前
父節點
當前提交
fb50d51630

+ 5 - 1
TEAMModelOS.SDK/Models/Cosmos/Research/TeacherTrain.cs

@@ -28,8 +28,12 @@ namespace TEAMModelOS.SDK.Models
         /// 学校编码
         /// </summary>
         public string school { get; set; }
+        /// <summary>
+        /// 学校编码
+        /// </summary>
+        public string schoolName { get; set; }
         //code:"TeacherTrain:hbcn-tmdid"
-       
+
         /// <summary>
         /// 线上观看视频的学时
         /// </summary>

+ 100 - 0
TEAMModelOS/Controllers/Research/AbilityStatisticsController.cs

@@ -43,6 +43,106 @@ namespace TEAMModelOS.Controllers
         /// <param name="request"></param>
         /// <returns></returns>
         [ProducesDefaultResponseType]
+        [HttpPost("statistics-area")]
+        [AuthToken(Roles = "teacher,admin,area")]
+        public async Task<IActionResult> StatisticsArea(JsonElement request) {
+            var (userid, _, _, _) = HttpContext.GetAuthTokenInfo();
+            request.TryGetProperty("standard", out JsonElement _standard);
+            string standard = "";
+            if (string.IsNullOrEmpty($"{_standard}"))
+            {
+                HttpContext.Items.TryGetValue("Standard", out object hstandard);
+                standard = $"{hstandard}";
+            }
+            else {
+                standard = $"{_standard}";
+            }
+            var client = _azureCosmos.GetCosmosClient();
+            Area area = null;
+            string sql = $"select value(c) from c where c.standard='{standard}'";
+            await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Normal").GetItemQueryIterator<Area>(queryText: sql,
+                  requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base-Area") }))
+            {
+                area = item;
+            }
+            AreaSetting setting = null;
+            if (area != null)
+            {
+                try
+                {
+                    setting = await client.GetContainer(Constant.TEAMModelOS, "Normal").ReadItemAsync<AreaSetting>(area.id, new PartitionKey("AreaSetting"));
+                }
+                catch (CosmosException)
+                {
+                    setting = null;
+                }
+            }
+            if (setting == null)
+            {
+                setting = new AreaSetting
+                {
+                    allTime = 50,
+                    classTime = 5,
+                    submitTime = 15,
+                    onlineTime = 20,
+                    offlineTime = 10,
+                    lessonMinutes = 45,
+                };
+            }
+
+            try
+            {
+                List<TeacherTrain> teacherTrains = new List<TeacherTrain>();
+                List<School> schools = new List<School>();
+                await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<School>(queryText: $"select value(c) from c where c.areaId='{area.id}'", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base") }))
+                {
+
+                    schools.Add(item);
+                }
+                List<Task<List<TeacherTrain>>> trains = new List<Task<List<TeacherTrain>>>();
+                int countArea = 0;
+                int appraiseArea = 0;
+                List<dynamic> schoolInfos= new List<dynamic>();
+                foreach (var school in schools) {
+                    int count = 0;
+                    int appraise = 0;
+                    await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<bool>(queryText: $"select value(ARRAY_CONTAINS( c.permissions,'train-appraise')) from c", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Teacher-{school.id}") }))
+                    {
+                        if (item)
+                        {
+                            appraise += 1;
+                            appraiseArea += 1;
+
+                        }
+                        countArea += 1;
+                        count += 1;
+                    }
+                    schoolInfos.Add(new {schoolId=school.id,schoolName =school.name, teacherCount = count, appraiseCount = appraise });
+                    //增加评审人员总人数,学习总人数。
+                    trains.Add(  StatisticsService.StatisticsSchool(school.id, setting, area, client, _dingDing, null));
+                }
+                List<TeacherTrain> [] tasks = await Task.WhenAll(trains);
+                tasks.ToList().ForEach(x => {
+                    teacherTrains.AddRange(x);
+                });
+                long   totalTime=teacherTrains.Select(x => x.totalTime).Sum();
+                int  hgcount  = teacherTrains.Where(x => x.finalScore==1||x.finalScore==2).Count();
+                var  teacherAilities = teacherTrains.SelectMany(x => x.currency.teacherAilities);
+
+                return Ok(new { teacherTrains, setting, schools= schoolInfos , totalTime, hgcount, teacherAilities, teacherCount = countArea, appraiseCount = appraiseArea });
+            }
+            catch (Exception ex)
+            {
+                return BadRequest(new { ex.Message, ex.StackTrace });
+
+            }
+        }
+        /// <summary>
+        /// 对某个订阅的能力点进行操作
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+    [ProducesDefaultResponseType]
         [HttpPost("get-school-appraise")]
         [AuthToken(Roles = "teacher,admin,area")]
         public async Task<IActionResult> GetSchoolAppraise(JsonElement request)

+ 1 - 1
TEAMModelOS/Controllers/Research/AbilitySubController.cs

@@ -337,7 +337,7 @@ namespace TEAMModelOS.Controllers
                         var reply= replies.FindAll(z =>y.list.SelectMany(a=>a.replyIds).Contains(z.id));
                         pairs.Add(y.key, reply);
                         });
-                        return Ok(new { scoreReplies ,ability = abilityA    });
+                        return Ok(new { abilitySub,scoreReplies, ability = abilityA    });
                     case "SetOnlineDone":
                         //完成线上学习
                         abilitySub.done = true;

+ 3 - 2
TEAMModelOS/Controllers/Third/ScController.cs

@@ -207,7 +207,7 @@ namespace TEAMModelOS.Controllers.Third
         [AllowAnonymous]
         public async Task<IActionResult> Sso([FromQuery] ScSSO sso,string path)
         {
-            
+           var HostName = HttpContext.GetHostName();
             if (path.Equals("sc"))
             {
                 path = $"scpjx";
@@ -215,7 +215,8 @@ namespace TEAMModelOS.Controllers.Third
             else {
                 path = $"sc{path}";
             }
-            var rurl = new StringBuilder($"https://{_option.HostName}/sso");
+            //var rurl = new StringBuilder($"https://{_option.HostName}/sso");
+            var rurl = new StringBuilder($"https://{HostName}/sso");
             string parmas = $"Pxid={sso.Pxid}&Webid={sso.Webid}&tid={sso.tid}&time={sso.time}";
             if (Md5Hash.GetMd5String(parmas).Equals($"{sso.Encrypt}"))
             {