소스 검색

updae学校移除教师,研修名单人员也要调整。

CrazyIter_Bin 3 년 전
부모
커밋
0bea8c6157

+ 30 - 26
TEAMModelOS.SDK/Models/Service/GroupListService.cs

@@ -519,7 +519,7 @@ namespace TEAMModelOS.SDK
                     var list = item.Value.GroupBy(x => x.type).Select(y => new { key = y.Key, list = y.ToList() });
                     foreach (var group in list)
                     {
-                        (List<RGroupList> rgroups, List<RMember> rmembers)  =await GetGroupListMemberInfo(client, group.key, group.list, item.Key,_dingDing);
+                        (List<RGroupList> rgroups, List<RMember> rmembers)  =await GetGroupListMemberInfo(client, group.key, group.list, item.Key,_dingDing,school);
                         members.AddRange(rmembers);
                     }
                 }
@@ -626,13 +626,13 @@ namespace TEAMModelOS.SDK
                 var list = item.Value.GroupBy(x => x.type).Select(y => new { key = y.Key, list = y.ToList() });
                 foreach (var group in list)
                 {
-                    (List<RGroupList> rgroups, List<RMember> rmembers) = await GetGroupListMemberInfo(client, group.key, group.list, item.Key, _dingDing);
+                    (List<RGroupList> rgroups, List<RMember> rmembers) = await GetGroupListMemberInfo(client, group.key, group.list, item.Key, _dingDing,school);
                 }
             }
             var  lists= groups.SelectMany(x => x.Value).ToList() ;
             return lists;
         }
-        public static async Task<(List<RGroupList> groups, List<RMember> members)> GetGroupListMemberInfo(CosmosClient client, string type, List<RGroupList> groups, string groupTbname, DingDing _dingDing)
+        public static async Task<(List<RGroupList> groups, List<RMember> members)> GetGroupListMemberInfo(CosmosClient client, string type, List<RGroupList> groups, string groupTbname, DingDing _dingDing, string school)
         {
 
             try {
@@ -665,47 +665,50 @@ namespace TEAMModelOS.SDK
                 if (tmdids.IsNotEmpty())
                 {
                     string memberTbname = "";
-                    //可能会出现在两种表中
-                    //if ($"{type}".Equals("teach") || $"{type}".Equals("research") || $"{type}".Equals("group")
-                    //    || $"{type}".Equals("friend") || $"{type}".Equals("manage") || $"{type}".Equals("subject") || $"{type}".Equals("yxtrain")||  $"{type}".Equals("activity"))
-                    //{
-                        
-                    //}
-
+                    //处理 学校教研组,学校管理人员,学校任课教师,学校研修名单。
+                    if (!string.IsNullOrEmpty(school) && ($"{type}".Equals("research") || $"{type}".Equals("manage") || $"{type}".Equals("subject") || $"{type}".Equals("yxtrain")))
                     {
                         StringBuilder tmdidSql = new StringBuilder($"SELECT distinct c.name,c.id,c.picture FROM c ");
                         string insql = string.Join(",", tmdids.Select(x => $"'{x.id}'"));
                         tmdidSql.Append($" where  c.id in ({insql})");
-                        memberTbname = "Teacher";
-                        await foreach (var tmd in client.GetContainer(Constant.TEAMModelOS, memberTbname).GetItemQueryIterator<TmdUser>(queryText: tmdidSql.ToString(),
-                                requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base") }))
+                        await foreach (var tmd in client.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<TmdUser>(queryText: tmdidSql.ToString(),
+                                   requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Teacher-{school}") }))
                         {
                             tmdsData.Add(tmd);
                         }
                     }
-
+                    else 
                     {
-                        //取差集,减少二次搜寻
-                        var tmdidexp = tmdids.Select(x => x.id).Except(tmdsData.Select(y => y.id)).ToList();
-                        if (tmdidexp.IsNotEmpty())
                         {
                             StringBuilder tmdidSql = new StringBuilder($"SELECT distinct c.name,c.id,c.picture FROM c ");
-                            string insql = string.Join(",", tmdidexp.Select(x => $"'{x}'"));
+                            string insql = string.Join(",", tmdids.Select(x => $"'{x.id}'"));
                             tmdidSql.Append($" where  c.id in ({insql})");
-
-                            memberTbname = "Student";
+                            memberTbname = "Teacher";
                             await foreach (var tmd in client.GetContainer(Constant.TEAMModelOS, memberTbname).GetItemQueryIterator<TmdUser>(queryText: tmdidSql.ToString(),
                                     requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base") }))
                             {
                                 tmdsData.Add(tmd);
                             }
                         }
+
+                        {
+                            //取差集,减少二次搜寻
+                            var tmdidexp = tmdids.Select(x => x.id).Except(tmdsData.Select(y => y.id)).ToList();
+                            if (tmdidexp.IsNotEmpty())
+                            {
+                                StringBuilder tmdidSql = new StringBuilder($"SELECT distinct c.name,c.id,c.picture FROM c ");
+                                string insql = string.Join(",", tmdidexp.Select(x => $"'{x}'"));
+                                tmdidSql.Append($" where  c.id in ({insql})");
+
+                                memberTbname = "Student";
+                                await foreach (var tmd in client.GetContainer(Constant.TEAMModelOS, memberTbname).GetItemQueryIterator<TmdUser>(queryText: tmdidSql.ToString(),
+                                        requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base") }))
+                                {
+                                    tmdsData.Add(tmd);
+                                }
+                            }
+                        }
                     }
-                    //if ($"{type}".Equals("teach") || $"{type}".Equals("friend") || $"{type}".Equals("group"))
-                    //{
-                        
-                    //}
-                    //去重
                     tmdsData = tmdsData.Where((x, i) => tmdsData.FindIndex(n => n.id.Equals(x.id)) == i).ToList();
                 }
                 HashSet<RGroupList> changes = new HashSet<RGroupList>();
@@ -766,8 +769,9 @@ namespace TEAMModelOS.SDK
                         y.classId = student?.classId;
                     }
                 }));
-                HashSet<string > schoolCodes= groups.SelectMany(x=>x.members).Where(y=>!string.IsNullOrEmpty(y.code)).Select(z=>z.code).ToHashSet();
+                //处理研修名单,如果是学校老师的,则需要检查SchoolTeacher
                 
+                HashSet<string > schoolCodes= groups.SelectMany(x=>x.members).Where(y=>!string.IsNullOrEmpty(y.code)).Select(z=>z.code).ToHashSet();
                 if (schoolCodes != null && schoolCodes.Count > 0) {
                     List<School> schools= new List<School>();
                     string insql = $"select c.name,c.id from c where c.id in ({string.Join(",",schoolCodes.Select(x=>$"'{x}'"))})";

+ 1 - 4
TEAMModelOS.SDK/Models/Service/StatisticsService.cs

@@ -501,9 +501,6 @@ namespace TEAMModelOS.SDK
             
             List<OfflineRecord> offlines = new List<OfflineRecord>();
             activities.ForEach(item => {
-                if (item.id.Equals("c974b96d-cdf6-48d5-9074-8c1a02d2cac5")) {
-                    Console.WriteLine(item.id);
-                }
                 Study study = studies.Find(y => y.id.Equals(item.id));
                 if (study != null) {
                     StudyRecord studyRecord = studyRecords.Find(y => y.id.Equals(item.id));
@@ -575,7 +572,7 @@ namespace TEAMModelOS.SDK
             int sum = 0;
             if (haswork) 
             {
-               var workd= homeworkRecords.Where(z=>z.content.IsNotEmpty()).SelectMany(x => x.content).Where(y => y.prime);
+                var workd= homeworkRecords.Where(z=>z.content.IsNotEmpty()).SelectMany(x => x.content).Where(y => y.prime);
                 if (workd != null && workd.Count() > 0) {
                     sum = offlines.Select(x => x.hour).Sum();
                 }

+ 2 - 2
TEAMModelOS/Controllers/School/GroupListController.cs

@@ -478,7 +478,7 @@ namespace TEAMModelOS.Controllers
                 {
                     groups.Add(item);
                 }
-                (List<RGroupList> groupsData, List<RMember> members) = await GroupListService.GetGroupListMemberInfo(client, $"{type}", groups, tbname,_dingDing);
+                (List<RGroupList> groupsData, List<RMember> members) = await GroupListService.GetGroupListMemberInfo(client, $"{type}", groups, tbname,_dingDing,$"{_schoolId}");
                 return Ok(new { groups = groupsData, members });
             }
             catch (CosmosException ex)
@@ -642,7 +642,7 @@ namespace TEAMModelOS.Controllers
                         return Ok(new { groupList });
                     }
                 }
-                (List<RGroupList> groupsData, List<RMember> members) = await GroupListService.GetGroupListMemberInfo(client, $"{groupList.type}", new List<RGroupList> { groupList }, tbname,_dingDing);
+                (List<RGroupList> groupsData, List<RMember> members) = await GroupListService.GetGroupListMemberInfo(client, $"{groupList.type}", new List<RGroupList> { groupList }, tbname,_dingDing, $"{_code}");
                 groupList = groupsData.FirstOrDefault();
             }
             catch (CosmosException ex)