|
@@ -519,7 +519,7 @@ namespace TEAMModelOS.SDK
|
|
var list = item.Value.GroupBy(x => x.type).Select(y => new { key = y.Key, list = y.ToList() });
|
|
var list = item.Value.GroupBy(x => x.type).Select(y => new { key = y.Key, list = y.ToList() });
|
|
foreach (var group in list)
|
|
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);
|
|
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() });
|
|
var list = item.Value.GroupBy(x => x.type).Select(y => new { key = y.Key, list = y.ToList() });
|
|
foreach (var group in list)
|
|
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() ;
|
|
var lists= groups.SelectMany(x => x.Value).ToList() ;
|
|
return lists;
|
|
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 {
|
|
try {
|
|
@@ -665,47 +665,50 @@ namespace TEAMModelOS.SDK
|
|
if (tmdids.IsNotEmpty())
|
|
if (tmdids.IsNotEmpty())
|
|
{
|
|
{
|
|
string memberTbname = "";
|
|
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 ");
|
|
StringBuilder tmdidSql = new StringBuilder($"SELECT distinct c.name,c.id,c.picture FROM c ");
|
|
string insql = string.Join(",", tmdids.Select(x => $"'{x.id}'"));
|
|
string insql = string.Join(",", tmdids.Select(x => $"'{x.id}'"));
|
|
tmdidSql.Append($" where c.id in ({insql})");
|
|
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);
|
|
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 ");
|
|
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})");
|
|
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(),
|
|
await foreach (var tmd in client.GetContainer(Constant.TEAMModelOS, memberTbname).GetItemQueryIterator<TmdUser>(queryText: tmdidSql.ToString(),
|
|
requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base") }))
|
|
requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base") }))
|
|
{
|
|
{
|
|
tmdsData.Add(tmd);
|
|
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();
|
|
tmdsData = tmdsData.Where((x, i) => tmdsData.FindIndex(n => n.id.Equals(x.id)) == i).ToList();
|
|
}
|
|
}
|
|
HashSet<RGroupList> changes = new HashSet<RGroupList>();
|
|
HashSet<RGroupList> changes = new HashSet<RGroupList>();
|
|
@@ -766,8 +769,9 @@ namespace TEAMModelOS.SDK
|
|
y.classId = student?.classId;
|
|
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) {
|
|
if (schoolCodes != null && schoolCodes.Count > 0) {
|
|
List<School> schools= new List<School>();
|
|
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}'"))})";
|
|
string insql = $"select c.name,c.id from c where c.id in ({string.Join(",",schoolCodes.Select(x=>$"'{x}'"))})";
|