|
@@ -158,28 +158,115 @@ namespace TEAMModelOS.SDK
|
|
|
school = await client.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>(schoolId, new PartitionKey("Base"));
|
|
|
}
|
|
|
}
|
|
|
- public static async Task<List<(List<TeacherTrain> trains, List<RGroupList> yxtrain)>> StatisticsArea(CoreAPIHttpService _coreAPIHttpService, AreaSetting setting, Area area, CosmosClient client, DingDing _dingDing, HashSet<string> updates)
|
|
|
+ //public static async Task<List<(List<TeacherTrain> trains, List<RGroupList> yxtrain)>> StatisticsArea(CoreAPIHttpService _coreAPIHttpService, AreaSetting setting, Area area, CosmosClient client, DingDing _dingDing, HashSet<string> updates)
|
|
|
+ //{
|
|
|
+ // 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 ((List<TeacherTrain> trains, List<RGroupList> yxtrain) tarain in GetStatisticsSchool(_coreAPIHttpService, schools, setting, area, client, _dingDing, updates))
|
|
|
+ // {
|
|
|
+ // teacherTrains.Add(tarain);
|
|
|
+ // }
|
|
|
+ // return teacherTrains;
|
|
|
+ //}
|
|
|
+ //private static async IAsyncEnumerable<(List<TeacherTrain> trains, List<RGroupList> yxtrain)> GetStatisticsSchool(CoreAPIHttpService _coreAPIHttpService,List<School> schools, AreaSetting setting, Area area, CosmosClient client, DingDing _dingDing, HashSet<string> updates)
|
|
|
+ //{
|
|
|
+ // foreach (var school in schools)
|
|
|
+ // {
|
|
|
+ // yield return await StatisticsSchool( _coreAPIHttpService,school.id, setting, area, client, _dingDing, updates);
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+
|
|
|
+ public static async Task<(List<TeacherTrain> trains, List<RGroupList> yxtrain)> StatisticsSchoolQuik(CoreAPIHttpService _coreAPIHttpService, string school, AreaSetting setting, Area area, CosmosClient client, DingDing _dingDing, HashSet<string> updates)
|
|
|
{
|
|
|
- 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") }))
|
|
|
+ _coreAPIHttpService.check = false;
|
|
|
+
|
|
|
+ List<RGroupList> yxtrain = await GroupListService.GetGroupListMemberByType(_coreAPIHttpService, client, "yxtrain", new List<string> { "school" }, $"{school}", _dingDing);
|
|
|
+ List<TeacherTrain> trains = new List<TeacherTrain>();
|
|
|
+ var members = yxtrain.SelectMany(x => x.members).ToList();
|
|
|
+ if (members.Count <= 0)
|
|
|
{
|
|
|
- schools.Add(item);
|
|
|
+ return (trains, yxtrain);
|
|
|
}
|
|
|
- await foreach ((List<TeacherTrain> trains, List<RGroupList> yxtrain) tarain in GetStatisticsSchool(_coreAPIHttpService, schools, setting, area, client, _dingDing, updates))
|
|
|
+
|
|
|
+ await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Teacher")
|
|
|
+ .GetItemQueryIterator<TeacherTrain>(queryText: $"select value(c) from c ", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"TeacherTrain-{school}") }))
|
|
|
{
|
|
|
- teacherTrains.Add(tarain);
|
|
|
+
|
|
|
+ trains.Add(item);
|
|
|
}
|
|
|
- return teacherTrains;
|
|
|
- }
|
|
|
- private static async IAsyncEnumerable<(List<TeacherTrain> trains, List<RGroupList> yxtrain)> GetStatisticsSchool(CoreAPIHttpService _coreAPIHttpService,List<School> schools, AreaSetting setting, Area area, CosmosClient client, DingDing _dingDing, HashSet<string> updates)
|
|
|
- {
|
|
|
- foreach (var school in schools)
|
|
|
+ if (updates != null)
|
|
|
+ {
|
|
|
+ foreach (var up in updates)
|
|
|
+ {
|
|
|
+ trains.ForEach(x => x.update.Add(up));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ var update = trains.FindAll(x => x.update.Count() > 0);
|
|
|
+ var noupdate = trains.FindAll(x => x.update.Count() <= 0);
|
|
|
+
|
|
|
+ var unStatistics = members.Select(x => x.id).Except(trains.Select(x => x.id));
|
|
|
+ List<TeacherTrain> teacherTrains = new List<TeacherTrain>();
|
|
|
+ List<TeacherTrain> returnTrains = new List<TeacherTrain>();
|
|
|
+ if (update.IsNotEmpty())
|
|
|
{
|
|
|
- yield return await StatisticsSchool( _coreAPIHttpService,school.id, setting, area, client, _dingDing, updates);
|
|
|
+ teacherTrains.AddRange(update);
|
|
|
}
|
|
|
+ if (unStatistics != null)
|
|
|
+ {
|
|
|
+ foreach (string x in unStatistics)
|
|
|
+ {
|
|
|
+ var member = members.Find(y => y.id.Equals(x));
|
|
|
+ teacherTrains.Add(new TeacherTrain
|
|
|
+ {
|
|
|
+ pk = "TeacherTrain",
|
|
|
+ id = x,
|
|
|
+ code = $"TeacherTrain-{school}",
|
|
|
+ tmdid = x,
|
|
|
+ nickname = member.nickname,
|
|
|
+ name = member.name,
|
|
|
+ picture = member.picture,
|
|
|
+ school = school,
|
|
|
+ update = new HashSet<string> { TeacherAbility, TeacherClass, OfflineRecord }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<Study> studies = new List<Study>();
|
|
|
+ await foreach (var item in client.GetContainer("TEAMModelOS", "Common")
|
|
|
+ .GetItemQueryIterator<Study>(queryText: $"select value(c) from c where c.owner<>'area' ", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Study-{school}") }))
|
|
|
+ {
|
|
|
+ studies.Add(item);
|
|
|
+ }
|
|
|
+ returnTrains = await GetStatisticsTeacher(teacherTrains, setting, area, client, studies);
|
|
|
+ //await foreach (var tarain in GetStatisticsTeacher(teacherTrains, setting, area, client))
|
|
|
+ //{
|
|
|
+ // returnTrains.Add(tarain);
|
|
|
+ //}
|
|
|
+ if (noupdate.IsNotEmpty())
|
|
|
+ {
|
|
|
+ returnTrains.AddRange(noupdate);
|
|
|
+ }
|
|
|
+ //移除不在研修名单的人员
|
|
|
+ returnTrains.RemoveAll(x => !members.Select(y => y.id).Contains(x.id));
|
|
|
+ returnTrains.ForEach(x => {
|
|
|
+ var mbm = members.Find(y => y.id.Equals(x.id));
|
|
|
+ if (mbm != null)
|
|
|
+ {
|
|
|
+ x.groupName = mbm?.groupName;
|
|
|
+ x.name = !string.IsNullOrWhiteSpace(x.name) ? x.name : mbm?.name;
|
|
|
+ x.nickname = mbm?.nickname;
|
|
|
+ x.picture = mbm?.picture;
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ return (returnTrains, yxtrain);
|
|
|
}
|
|
|
+
|
|
|
public static async Task<(List<TeacherTrain> trains, List<RGroupList> yxtrain)> StatisticsSchool(CoreAPIHttpService _coreAPIHttpService,string school, AreaSetting setting, Area area, CosmosClient client, DingDing _dingDing, HashSet<string> updates)
|
|
|
{
|
|
|
_coreAPIHttpService.check = false;
|