|
@@ -44,7 +44,7 @@ namespace TEAMModelOS.SDK
|
|
|
await _serviceBus.GetServiceBusClient().SendMessageAsync(ActiveTask, messageChange);
|
|
|
}
|
|
|
|
|
|
- public static async Task<List<TeacherTrain> > StatisticsArea(AreaSetting setting, Area area, CosmosClient client, DingDing _dingDing)
|
|
|
+ public static async Task<List<TeacherTrain> > StatisticsArea(AreaSetting setting, Area area, CosmosClient client, DingDing _dingDing, HashSet<string> updates)
|
|
|
{
|
|
|
List<TeacherTrain> teacherTrains = new List<TeacherTrain>();
|
|
|
List<School> schools = new List<School>();
|
|
@@ -53,26 +53,33 @@ namespace TEAMModelOS.SDK
|
|
|
{
|
|
|
schools.Add(item);
|
|
|
}
|
|
|
- await foreach (var tarain in GetStatisticsSchool(schools, setting, area, client,_dingDing))
|
|
|
+ await foreach (var tarain in GetStatisticsSchool(schools, setting, area, client,_dingDing,updates))
|
|
|
{
|
|
|
teacherTrains.AddRange(tarain);
|
|
|
}
|
|
|
return teacherTrains;
|
|
|
}
|
|
|
- private static async IAsyncEnumerable<List<TeacherTrain>> GetStatisticsSchool(List<School> schools, AreaSetting setting, Area area, CosmosClient client, DingDing _dingDing)
|
|
|
+ private static async IAsyncEnumerable<List<TeacherTrain>> 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);
|
|
|
+ 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) {
|
|
|
+ public static async Task<List<TeacherTrain>> 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")
|
|
|
.GetItemQueryIterator<TeacherTrain>(queryText: $"select value(c) from c ", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"TeacherTrain-{school}") })) {
|
|
|
+
|
|
|
trains.Add(item);
|
|
|
}
|
|
|
+ if (updates != null) {
|
|
|
+ foreach (var up in updates)
|
|
|
+ {
|
|
|
+ trains.ForEach(x => x.updateProperty.Add(up));
|
|
|
+ }
|
|
|
+ }
|
|
|
var update = trains.FindAll(x => x.updateProperty.Count() > 0);
|
|
|
var noupdate = trains.FindAll(x => x.updateProperty.Count() <=0);
|
|
|
var members= yxtrain.SelectMany(x => x.members).ToList();
|
|
@@ -97,7 +104,13 @@ namespace TEAMModelOS.SDK
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
- returnTrains = await GetStatisticsTeacher(teacherTrains, setting, area, client);
|
|
|
+ List<Study> studies = new List<Study>();
|
|
|
+ await foreach (var item in client.GetContainer("TEAMModelOS", "Common")
|
|
|
+ .GetItemQueryIterator<Study>(queryText: $"select value(c) from c ", 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);
|
|
@@ -109,24 +122,24 @@ namespace TEAMModelOS.SDK
|
|
|
returnTrains.ForEach(x => x.groupName = members.Find(y => y.id.Equals(x.id))?.groupName);
|
|
|
return returnTrains;
|
|
|
}
|
|
|
- private static async Task<List<TeacherTrain>> GetStatisticsTeacher(List<TeacherTrain> trains, AreaSetting setting, Area area, CosmosClient client)
|
|
|
+ private static async Task<List<TeacherTrain>> GetStatisticsTeacher(List<TeacherTrain> trains, AreaSetting setting, Area area, CosmosClient client, List<Study> studies)
|
|
|
{
|
|
|
List<Task<TeacherTrain>> teachers = new List<Task<TeacherTrain>>();
|
|
|
foreach (var train in trains)
|
|
|
{
|
|
|
- teachers.Add(StatisticsTeacher(train, setting, area, client)); //yield return await StatisticsTeacher( train, setting, area, client);
|
|
|
+ teachers.Add(StatisticsTeacher(train, setting, area, client,studies)); //yield return await StatisticsTeacher( train, setting, area, client);
|
|
|
}
|
|
|
await Task.WhenAll(teachers);
|
|
|
return trains;
|
|
|
}
|
|
|
- public static async Task<TeacherTrain> StatisticsTeacher(TeacherTrain train, AreaSetting setting, Area area, CosmosClient client) {
|
|
|
+ public static async Task<TeacherTrain> StatisticsTeacher(TeacherTrain train, AreaSetting setting, Area area, CosmosClient client,List<Study> studies) {
|
|
|
string _school = train.school;
|
|
|
string _tmdid = train.tmdid;
|
|
|
// TeacherTrain teacher_train = null;
|
|
|
List<Task<TeacherTrain>> teachers = new List<Task<TeacherTrain>>();
|
|
|
if (train.updateProperty.Count > 0) {
|
|
|
foreach (string property in train.updateProperty) {
|
|
|
- teachers.Add(DoProperty(train.updateProperty, property, setting, area, client, train));
|
|
|
+ teachers.Add(DoProperty(train.updateProperty, property, setting, area, client, train,studies));
|
|
|
}
|
|
|
await Task.WhenAll(teachers);
|
|
|
}
|
|
@@ -136,7 +149,7 @@ namespace TEAMModelOS.SDK
|
|
|
await client.GetContainer(Constant.TEAMModelOS, "Teacher").UpsertItemAsync<TeacherTrain>(train, new PartitionKey($"TeacherTrain-{_school}"));
|
|
|
return train;
|
|
|
}
|
|
|
- private static async Task<TeacherTrain> DoProperty(HashSet<string> updateProperty,string property, AreaSetting setting, Area area, CosmosClient client, TeacherTrain train )
|
|
|
+ private static async Task<TeacherTrain> DoProperty(HashSet<string> updateProperty,string property, AreaSetting setting, Area area, CosmosClient client, TeacherTrain train ,List<Study> studies )
|
|
|
{
|
|
|
string _school = train.school;
|
|
|
string _tmdid = train.tmdid;
|
|
@@ -152,9 +165,12 @@ namespace TEAMModelOS.SDK
|
|
|
break;
|
|
|
//线下研修
|
|
|
case OfflineRecord:
|
|
|
- train = await DoOfflineRecord(train, setting, area, client, _school, _tmdid);
|
|
|
+ train = await DoOfflineRecord(train, setting, area, client, _school, _tmdid,studies);
|
|
|
train.updateProperty.Remove(OfflineRecord);
|
|
|
break;
|
|
|
+ default:
|
|
|
+ train.updateProperty.Remove(property);
|
|
|
+ break;
|
|
|
}
|
|
|
return train;
|
|
|
|
|
@@ -245,7 +261,7 @@ namespace TEAMModelOS.SDK
|
|
|
/// <param name="_school"></param>
|
|
|
/// <param name="_tmdid"></param>
|
|
|
/// <returns></returns>
|
|
|
- public static async Task<TeacherTrain> DoOfflineRecord(TeacherTrain train, AreaSetting setting, Area area, CosmosClient client, string _school, string _tmdid) {
|
|
|
+ public static async Task<TeacherTrain> DoOfflineRecord(TeacherTrain train, AreaSetting setting, Area area, CosmosClient client, string _school, string _tmdid, List<Study> studies) {
|
|
|
//owner: school area
|
|
|
//线下 学校研修活动
|
|
|
List<StuActivity> activities = new List<StuActivity>();
|
|
@@ -255,17 +271,20 @@ namespace TEAMModelOS.SDK
|
|
|
activities.Add(item);
|
|
|
}
|
|
|
string insql = "";
|
|
|
- if (activities.IsNotEmpty())
|
|
|
- {
|
|
|
- insql = $" where c.id in ({string.Join(",", activities.Select(o => $"'{o.id}'"))})";
|
|
|
+ if (studies.IsEmpty()) {
|
|
|
+ studies = new List<Study>();
|
|
|
+ if (activities.IsNotEmpty())
|
|
|
+ {
|
|
|
+ insql = $" where c.id in ({string.Join(",", activities.Select(o => $"'{o.id}'"))})";
|
|
|
|
|
|
+ }
|
|
|
+ await foreach (var item in client.GetContainer("TEAMModelOS", "Common")
|
|
|
+ .GetItemQueryIterator<Study>(queryText: $"select value(c) from c {insql} ", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Study-{_school}") }))
|
|
|
+ {
|
|
|
+ studies.Add(item);
|
|
|
+ }
|
|
|
}
|
|
|
- List<Study> studies = new List<Study>();
|
|
|
- await foreach (var item in client.GetContainer("TEAMModelOS", "Common")
|
|
|
- .GetItemQueryIterator<Study>(queryText: $"select value(c) from c {insql} ", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Study-{_school}") }))
|
|
|
- {
|
|
|
- studies.Add(item);
|
|
|
- }
|
|
|
+
|
|
|
List<StudyRecord> studyRecords = new List<StudyRecord>();
|
|
|
await foreach (var item in client.GetContainer("TEAMModelOS", "Teacher")
|
|
|
.GetItemQueryIterator<StudyRecord>(queryText: $"select value(c) from c {insql} ", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"StudyRecord-{_tmdid}") }))
|
|
@@ -278,7 +297,7 @@ namespace TEAMModelOS.SDK
|
|
|
{
|
|
|
homeworkRecords.Add(item);
|
|
|
}
|
|
|
-
|
|
|
+ List<OfflineRecord> offlines = new List<OfflineRecord>();
|
|
|
activities.ForEach(item => {
|
|
|
Study study = studies.Find(y=>y.id.Equals(item.id));
|
|
|
StudyRecord studyRecord= studyRecords.Find(y => y.id.Equals(item.id));
|
|
@@ -293,12 +312,16 @@ namespace TEAMModelOS.SDK
|
|
|
done = item.taskStatus,
|
|
|
owner = item.owner
|
|
|
};
|
|
|
+ record.sethour = study.hour;
|
|
|
+ if (record.sethour <= 0) {
|
|
|
+ Console.WriteLine(111);
|
|
|
+ }
|
|
|
if (null != studyRecord)
|
|
|
{
|
|
|
//通过获得学时
|
|
|
record.hour = studyRecord.status == 1 ? study.hour : 0;
|
|
|
train.offlineTime = record.hour;
|
|
|
- record.sethour = study.hour;
|
|
|
+
|
|
|
if (studyRecord.status == 1)
|
|
|
{
|
|
|
record.score = 1;
|
|
@@ -321,9 +344,10 @@ namespace TEAMModelOS.SDK
|
|
|
record.hash = attachment.hash;
|
|
|
record.size = attachment.size;
|
|
|
}
|
|
|
- train.offlineRecords.Add(record);
|
|
|
+ offlines.Add(record);
|
|
|
}
|
|
|
});
|
|
|
+ train.offlineRecords= offlines;
|
|
|
return train;
|
|
|
}
|
|
|
/// <summary>
|