CrazyIter_Bin 3 năm trước cách đây
mục cha
commit
294cfd2f1a

+ 7 - 7
TEAMModelOS.SDK/Models/Service/StatisticsService.cs

@@ -44,29 +44,29 @@ namespace TEAMModelOS.SDK
             await _serviceBus.GetServiceBusClient().SendMessageAsync(ActiveTask, messageChange);
         }
 
-        public static async Task<List<TeacherTrain> > StatisticsArea(AreaSetting setting, Area area, CosmosClient client, DingDing _dingDing,  HashSet<string> updates)
+        public static async Task<List<(List<TeacherTrain> trains, List<RGroupList> yxtrain)>> StatisticsArea(AreaSetting setting, Area area, CosmosClient client, DingDing _dingDing,  HashSet<string> updates)
         {
-            List<TeacherTrain> teacherTrains = new List<TeacherTrain>();
+           List<(List<TeacherTrain> trains, List<RGroupList> yxtrain)> teacherTrains = new List<(List<TeacherTrain> trains, List<RGroupList> yxtrain)>() ;
             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);
             }
-            await foreach (var tarain in GetStatisticsSchool(schools, setting, area, client,_dingDing,updates))
+            await foreach ((List<TeacherTrain> trains, List<RGroupList> yxtrain) tarain in GetStatisticsSchool(schools, setting, area, client,_dingDing,updates))
             {
-                teacherTrains.AddRange(tarain);
+                teacherTrains.Add(tarain);
             }
             return teacherTrains;
         }
-        private static async IAsyncEnumerable<List<TeacherTrain>> GetStatisticsSchool(List<School> schools, AreaSetting setting, Area area, CosmosClient client, DingDing _dingDing,  HashSet<string> updates)
+        private static async IAsyncEnumerable<(List<TeacherTrain> trains, List<RGroupList> yxtrain)> GetStatisticsSchool(List<School> schools, AreaSetting setting, Area area, CosmosClient client, DingDing _dingDing,  HashSet<string> updates)
         {
             foreach (var school in schools)
             {
                 yield return await StatisticsSchool(school.id, setting, area, client,_dingDing,updates);
             }
         }
-        public static async Task<List<TeacherTrain>> StatisticsSchool(string school, AreaSetting setting, Area area, CosmosClient client,DingDing _dingDing,HashSet<string> updates) {
+        public static async Task<(List<TeacherTrain> trains, List<RGroupList> yxtrain)> StatisticsSchool(string school, AreaSetting setting, Area area, CosmosClient client,DingDing _dingDing,HashSet<string> updates) {
             List<RGroupList> yxtrain = await GroupListService.GetGroupListMemberByType(client, "yxtrain", new List<string> { "school" }, $"{school}", _dingDing);
             List<TeacherTrain> trains = new List<TeacherTrain>();
             await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Teacher")
@@ -120,7 +120,7 @@ namespace TEAMModelOS.SDK
                 returnTrains.AddRange(noupdate);
             }
             returnTrains.ForEach(x => x.groupName = members.Find(y => y.id.Equals(x.id))?.groupName);
-            return returnTrains; 
+            return (returnTrains, yxtrain); 
         }
         private static async Task<List<TeacherTrain>> GetStatisticsTeacher(List<TeacherTrain> trains, AreaSetting setting, Area area, CosmosClient client, List<Study> studies)
         {

+ 23 - 8
TEAMModelOS/Controllers/Research/AbilityStatisticsController.cs

@@ -127,10 +127,10 @@ namespace TEAMModelOS.Controllers
 
                     schools.Add(item);
                 }
-                List<Task<List<TeacherTrain>>> trains = new List<Task<List<TeacherTrain>>>();
+                List<Task<(List<TeacherTrain> trains, List<RGroupList> yxtrain)>> trains = new List<Task<(List<TeacherTrain> trains, List<RGroupList> yxtrain)>>();
                 int countArea = 0;
                 int appraiseArea = 0;
-                List<dynamic> schoolInfos= new List<dynamic>();
+                List<SchoolInfos> schoolInfos= new List<SchoolInfos>();
                 foreach (var school in schools) {
                     int count = 0;
                     int appraise = 0;
@@ -145,13 +145,19 @@ namespace TEAMModelOS.Controllers
                         countArea += 1;
                         count += 1;
                     }
-                    schoolInfos.Add(new {schoolId=school.id,schoolName =school.name, picture = school.picture, teacherCount = count, appraiseCount = appraise });
+                    schoolInfos.Add(new SchoolInfos { schoolId=school.id,schoolName =school.name, picture = school.picture, teacherCount = count, appraiseCount = appraise });
                     //增加评审人员总人数,学习总人数。
-                    trains.Add(  StatisticsService.StatisticsSchool(school.id, setting, area, client, _dingDing, null));
+                    trains.Add(StatisticsService.StatisticsSchool(school.id, setting, area, client, _dingDing, null));
                 }
-                List<TeacherTrain> [] tasks = await Task.WhenAll(trains);
+                (List<TeacherTrain> trains, List<RGroupList> yxtrain)[] tasks = await Task.WhenAll(trains);
                 tasks.ToList().ForEach(x => {
-                    teacherTrains.AddRange(x);
+                    teacherTrains.AddRange(x.trains);
+                    schoolInfos.ForEach(y => {
+                        var list = x.yxtrain.Find(z => z.school.Equals(y.schoolId));
+                        if (list != null) {
+                            y.trainCount = list.members.Count;
+                        }
+                    });
                 });
                 long   totalTime=teacherTrains.Select(x => x.totalTime).Sum();
                 int  hgcount  = teacherTrains.Where(x => x.finalScore==1||x.finalScore==2).Count();
@@ -165,6 +171,15 @@ namespace TEAMModelOS.Controllers
 
             }
         }
+        public class SchoolInfos {
+            public string schoolId{ get; set; }
+            public string schoolName { get; set; }
+            public string picture { get; set; }
+            public int teacherCount { get; set; }
+            public int appraiseCount { get; set; }
+            public int trainCount { get; set; }
+        }
+
         /// <summary>
         /// 对某个订阅的能力点进行操作
         /// </summary>
@@ -236,7 +251,7 @@ namespace TEAMModelOS.Controllers
                     count += 1;
                 }
                 //增加评审人员总人数,学习总人数。
-                List<TeacherTrain> teacherTrains  = await StatisticsService.StatisticsSchool(school, setting, area, client, _dingDing,update) ;
+                (List<TeacherTrain> teacherTrains, List<RGroupList> yxtrain)   = await StatisticsService.StatisticsSchool(school, setting, area, client, _dingDing,update) ;
                 //try
                 //{
                 //    teacherTrain = await client.GetContainer(Constant.TEAMModelOS, "Teacher").ReadItemAsync<TeacherTrain>(userid, new PartitionKey($"TeacherTrain-{school}"));
@@ -246,7 +261,7 @@ namespace TEAMModelOS.Controllers
                     
                 //    await client.GetContainer(Constant.TEAMModelOS, "Teacher").CreateItemAsync<TeacherTrain>(teacherTrain, new PartitionKey($"TeacherTrain-{school}"));
                 //}
-                return Ok(new { teacherTrains, setting, teacherCount=count, appraiseCount=appraise });
+                return Ok(new { teacherTrains, setting, teacherCount=count, appraiseCount=appraise, yxtrain });
             }
             catch (Exception ex)
             {

+ 1 - 1
TEAMModelOS/Controllers/XTest/FixDataController.cs

@@ -114,7 +114,7 @@ namespace TEAMModelOS.Controllers
                             }
                         }
                     }
-                   // CosmosClient.GetContainer(Constant.TEAMModelOS, "Normal").
+                   await CosmosClient.GetContainer(Constant.TEAMModelOS, "Normal").ReplaceItemAsync<AbilityTask>(item, item.id, new PartitionKey(item.code));
                 }
 
             }