using Azure.Cosmos; using HTEXLib.COMM.Helpers; using Microsoft.Azure.Functions.Worker; using Microsoft.Azure.Functions.Worker.Http; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Text.Json; using System.Threading.Tasks; using TEAMModelOS.SDK; using TEAMModelOS.SDK.DI; using TEAMModelOS.SDK.Extension; using TEAMModelOS.SDK.Models; namespace TEAMModelOS.FunctionV4.HttpTrigger { public class ScsYxptApis { private readonly AzureCosmosFactory _azureCosmos; private readonly DingDing _dingDing; private readonly AzureStorageFactory _azureStorage; private readonly AzureRedisFactory _azureRedis; private readonly ThirdApisService _thirdApisService; public static string Code { get; set; } public static Dictionary parameterMap = null; public ScsYxptApis(AzureCosmosFactory azureCosmos, DingDing dingDing, AzureStorageFactory azureStorage, ThirdApisService thirdApisService , AzureRedisFactory azureRedis) { _azureCosmos = azureCosmos; _dingDing = dingDing; _azureStorage = azureStorage; _azureRedis = azureRedis; _thirdApisService = thirdApisService; } /// /// 5.3.1.1获取项目列表 /// /// /// /// [Function("GetProjectInfoByTrainComID")] public async Task GetProjectInfoByTrainComID([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestData req) { var response = req.CreateResponse(HttpStatusCode.OK); List projects = new List(); string data = await new StreamReader(req.Body).ReadToEndAsync(); JsonElement accessConfig = data.ToObject().GetProperty("accessConfig"); ScAccessConfig config = $"{accessConfig}".ToObject(); string areaId = null; if (data.ToObject().TryGetProperty("areaId", out JsonElement _areaId)) { areaId = $"{_areaId}"; } Code = "GetProjectInfoByTrainComID"; parameterMap = new Dictionary(); parameterMap.Add("TrainComID", config.trainComID); ScsResult result = new ScsResult { code = Code, title = "5.3.1.1获取项目列表" }; try { result = await _thirdApisService.Post(config.url, Code, config.passKey, config.privateKey, parameterMap); if (result.result) { projects = result.content.ToObject>(); } else { } await response.WriteAsJsonAsync(new { data = projects.ToJsonString() }); return response; } catch (Exception ex) { await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetProjectInfoByTrainComID\n{ex.Message}{ex.StackTrace}\n{result.ToJsonString()}\n{data}", GroupNames.成都开发測試群組); await response.WriteAsJsonAsync(new { data = projects.ToJsonString() }); return response; } } /// /// 5.3.1.18根据机构ID、项目ID、子项目ID返回学校列表 /// /// /// /// [Function("GetSchoolList")] public async Task GetSchoolList([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestData req) { var response = req.CreateResponse(HttpStatusCode.OK); List scSchools = new List(); string data = await new StreamReader(req.Body).ReadToEndAsync(); JsonElement accessConfig = data.ToObject().GetProperty("accessConfig"); string areaId = null; if (data.ToObject().TryGetProperty("areaId", out JsonElement _areaId)) { areaId = $"{_areaId}"; } ScAccessConfig config = $"{accessConfig}".ToObject(); Code = "GetSchoolList"; parameterMap = new Dictionary(); parameterMap.Add("TrainComID", config.trainComID); List results = new List(); try { if (config.p.IsNotEmpty()) { foreach (var ps in config.p) { parameterMap["ProjectID"] = ps.pd; parameterMap["ProjectItemID"] = ps.pid; ScsResult result = new ScsResult { code = Code, title = " 5.3.1.18根据机构ID、项目ID、子项目ID返回学校列表" }; result = await _thirdApisService.Post(config.url, Code, config.passKey, config.privateKey, parameterMap); if (result.result) { List schools = result.content.ToObject>(); if (schools.IsNotEmpty()) { schools.ForEach(x => { x.ProjectID = int.Parse(ps.pd); x.ProjectItemID = int.Parse(ps.pid); }); scSchools.AddRange(schools); } } results.Add(result); } } await response.WriteAsJsonAsync(new { data = scSchools.ToJsonString() }); return response; } catch (Exception ex) { await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetSchoolList\n{ex.Message}{ex.StackTrace}\n{results.ToJsonString()}\n{data}", GroupNames.成都开发測試群組); await response.WriteAsJsonAsync(new { data = scSchools.ToJsonString() }); return response; } } /// /// 5.3.1.2获取学员名单 /// /// /// /// [Function("GetTeachersListByProject")] public async Task GetTeachersListByProject([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestData req) { var response = req.CreateResponse(HttpStatusCode.OK); List scTeachers = new List(); string data = await new StreamReader(req.Body).ReadToEndAsync(); JsonElement accessConfig = data.ToObject().GetProperty("accessConfig"); ScAccessConfig config = $"{accessConfig}".ToObject(); string areaId = null; if (data.ToObject().TryGetProperty("areaId", out JsonElement _areaId)) { areaId = $"{_areaId}"; } Code = "GetTeachersListByProject"; parameterMap = new Dictionary(); parameterMap.Add("TrainComID", config.trainComID); List results = new List(); try { if (config.p.IsNotEmpty()) { foreach (var ps in config.p) { parameterMap["ProjectID"] = ps.pd; parameterMap["ProjectItemID"] = ps.pid; ScsResult result = new ScsResult { code = Code, title = "5.3.1.2获取学员名单" }; result = await _thirdApisService.Post(config.url, Code, config.passKey, config.privateKey, parameterMap); if (result.result) { List teachers = result.content.ToObject>(); if (teachers.IsNotEmpty()) { scTeachers.AddRange(teachers); } } results.Add(result); } } await response.WriteAsJsonAsync(new { data = scTeachers.ToJsonString() }); return response; } catch (Exception ex) { await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetTeachersListByProject\n{ex.Message}{ex.StackTrace}\n{results.ToJsonString()}\n{data}", GroupNames.成都开发測試群組); await response.WriteAsJsonAsync(new { data = scTeachers.ToJsonString() }); return response; } } /// /// 5.3.1.20获取学校设置的可选能力点 /// /// /// /// [Function("GetSchoolDiagnosis")] public async Task GetSchoolDiagnosis([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestData req) { var response = req.CreateResponse(HttpStatusCode.OK); List projects = new List(); string data = await new StreamReader(req.Body).ReadToEndAsync(); JsonElement accessConfig = data.ToObject().GetProperty("accessConfig"); JsonElement schoolCode = data.ToObject().GetProperty("schoolCode"); string areaId = null; if(data.ToObject().TryGetProperty("areaId", out JsonElement _areaId)) { areaId = $"{_areaId}"; } ScAccessConfig config = $"{accessConfig}".ToObject(); Code = "GetSchoolDiagnosis"; parameterMap = new Dictionary(); parameterMap.Add("TrainComID", config.trainComID); List results = new List(); try { if (config.p.IsNotEmpty()) { foreach (var ps in config.p) { parameterMap["ProjectID"] = ps.pd; parameterMap["ProjectItemID"] = ps.pid; parameterMap["SchoolID"] = $"{schoolCode}"; parameterMap["School"] = $"{schoolCode}"; ScsResult result = new ScsResult { code = Code, title = " 5.3.1.20获取学校设置的可选能力点" }; result = await _thirdApisService.Post(config.url, Code, config.passKey, config.privateKey, parameterMap); if (result.result) { List diagnoses = result.content.ToObject>(); if (diagnoses.IsNotEmpty()) { projects.Add(new ScsProjectDiagnosis { project = ps, diagnoses = diagnoses, }); await _azureStorage.SaveOrUpdate(new ScProjectDiagnosis {schoolCode=$"{schoolCode}",areaId= areaId, ProjectID=int.Parse(ps.pd), ProjectItemID=int.Parse(ps.pid), RowKey = $"{ps.pid}-{schoolCode}", PartitionKey = "ScSchoolDiagnosis", abilityNos = diagnoses.ToJsonString() }); } } else { List teacherDiagnoses = await _azureStorage.FindListByDict(new Dictionary { { "PartitionKey", "ScSchoolDiagnosis" }, { "RowKey", $"{ps.pid}-{schoolCode}" } }); if (teacherDiagnoses.IsNotEmpty()) { projects.Add(new ScsProjectDiagnosis { project = ps, diagnoses = teacherDiagnoses[0].abilityNos.ToObject>() }); } } results.Add(result); } } await response.WriteAsJsonAsync(new { data = projects.ToJsonString() }); return response; } catch (Exception ex) { //await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetSchoolDiagnosis\n{ex.Message}{ex.StackTrace}\n{results.ToJsonString()}\n{data}", GroupNames.成都开发測試群組); if (config.p.IsNotEmpty()) { foreach (var ps in config.p) { List teacherDiagnoses = await _azureStorage.FindListByDict(new Dictionary { { "PartitionKey", "ScSchoolDiagnosis" }, { "RowKey", $"{ps.pid}-{schoolCode}" } }); if (teacherDiagnoses.IsNotEmpty()) { projects.Add(new ScsProjectDiagnosis { project = ps, diagnoses = teacherDiagnoses[0].abilityNos.ToObject>() }); } } } await response.WriteAsJsonAsync(new { data = projects.ToJsonString() }); return response; } } /// /// 5.3.1.19获取项目设置的可选能力点 /// /// /// /// [Function("GetProjectDiagnosis")] public async Task GetProjectDiagnosis([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestData req) { var response = req.CreateResponse(HttpStatusCode.OK); List projects = new List(); string data = await new StreamReader(req.Body).ReadToEndAsync(); JsonElement accessConfig = data.ToObject().GetProperty("accessConfig"); string areaId = null; if (data.ToObject().TryGetProperty("areaId", out JsonElement _areaId)) { areaId = $"{_areaId}"; } ScAccessConfig config = $"{accessConfig}".ToObject(); Code = "GetProjectDiagnosis"; parameterMap = new Dictionary(); parameterMap.Add("TrainComID", config.trainComID); List results = new List(); try { if (config.p.IsNotEmpty()) { foreach (var ps in config.p) { parameterMap["ProjectID"] = ps.pd; parameterMap["ProjectItemID"] = ps.pid; ScsResult result = new ScsResult { code = Code, title = "5.3.1.19获取项目设置的可选能力点" }; result = await _thirdApisService.Post(config.url, Code, config.passKey, config.privateKey, parameterMap); if (result.result) { List diagnoses = result.content.ToObject>(); if (diagnoses.IsNotEmpty()) { projects.Add(new ScsProjectDiagnosis { project = ps, diagnoses = diagnoses }); await _azureStorage.SaveOrUpdate(new ScProjectDiagnosis { areaId=areaId, RowKey = $"{ps.pid}", PartitionKey = "ScProjectDiagnosis", abilityNos = diagnoses.ToJsonString() }); } } else { List teacherDiagnoses = await _azureStorage.FindListByDict(new Dictionary { { "PartitionKey", "ScProjectDiagnosis" }, { "RowKey", $"{ps.pid}" } }); if (teacherDiagnoses.IsNotEmpty()) { projects.Add(new ScsProjectDiagnosis { project = ps, diagnoses = teacherDiagnoses[0].abilityNos.ToObject>() }); } } results.Add(result); } } await response.WriteAsJsonAsync(new { data = projects.ToJsonString() }); return response; } catch (Exception ex) { if (config.p.IsNotEmpty()) { foreach (var ps in config.p) { //await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetProjectDiagnosis\n{ex.Message}{ex.StackTrace}\n{results.ToJsonString()}\n{data}", GroupNames.成都开发測試群組); List teacherDiagnoses = await _azureStorage.FindListByDict(new Dictionary { { "PartitionKey", "ScProjectDiagnosis" }, { "RowKey", $"{ps.pid}" } }); if (teacherDiagnoses.IsNotEmpty()) { projects.Add(new ScsProjectDiagnosis { project = ps, diagnoses = teacherDiagnoses[0].abilityNos.ToObject>() }); } } } await response.WriteAsJsonAsync(new { data = projects.ToJsonString() }); return response; } } /// /// 5.3.1.3通过项目编号获取学员测评能力项V2 /// /// /// /// [Function("GetDiagnosisListByProject_V2")] public async Task GetDiagnosisListByProject_V2([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestData req) { var response = req.CreateResponse(HttpStatusCode.OK); List abilityNos = new List(); string data = await new StreamReader(req.Body).ReadToEndAsync(); JsonElement accessConfig = data.ToObject().GetProperty("accessConfig"); string areaId = null; if (data.ToObject().TryGetProperty("areaId", out JsonElement _areaId)) { areaId = $"{_areaId}"; } JsonElement pxid = data.ToObject().GetProperty("pxid"); JsonElement schoolCode = data.ToObject().GetProperty("schoolCode"); ScAccessConfig config = $"{accessConfig}".ToObject(); Code = "GetDiagnosisListByProject_V2"; parameterMap = new Dictionary(); parameterMap.Add("TrainComID", config.trainComID); parameterMap.Add("PXID", pxid); ScsResult result = new ScsResult { code = Code, title = "5.3.1.3通过项目编号获取学员测评能力项V2" }; try { result = await _thirdApisService.Post(config.url, Code, config.passKey, config.privateKey, parameterMap); if (result.result) { List diagnoses = result.content.ToObject>(); if (diagnoses != null) { abilityNos = diagnoses.Select(x => x.DiagnosisDicNum).ToList(); } if (abilityNos.IsNotEmpty()) { await _azureStorage.SaveOrUpdate(new ScTeacherDiagnosis {areaId = areaId,schoolCode=$"{schoolCode}", RowKey = $"{pxid}", PartitionKey = "ScTeacherDiagnosis", abilityNos = abilityNos.ToJsonString() }); } } else { List teacherDiagnoses = await _azureStorage.FindListByDict(new Dictionary { { "PartitionKey", "ScTeacherDiagnosis" }, { "RowKey", $"{pxid}" } }); if (teacherDiagnoses.IsNotEmpty()) { abilityNos = teacherDiagnoses[0].abilityNos.ToObject>(); } } await response.WriteAsJsonAsync(new { data = abilityNos.ToJsonString() }); return response; } catch (Exception ex) { //await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:getDiagnosisListByProject_V2\n{ex.Message}{ex.StackTrace}\n{result.ToJsonString()}\n{data}", GroupNames.成都开发測試群組); List teacherDiagnoses = await _azureStorage.FindListByDict(new Dictionary { { "PartitionKey", "ScTeacherDiagnosis" }, { "RowKey", $"{pxid}" } }); if (teacherDiagnoses.IsNotEmpty()) { abilityNos = teacherDiagnoses[0].abilityNos.ToObject>(); } await response.WriteAsJsonAsync(new { data = abilityNos.ToJsonString() }); return response; } } /// /// 5.3.1.11获取跳转学员信息,用于sso单点,后端验证。 /// /// /// /// [Function("GetSingleTeacherByProject")] public async Task GetSingleTeacherByProject([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestData req) { var response = req.CreateResponse(HttpStatusCode.OK); string teacher = null; string data = await new StreamReader(req.Body).ReadToEndAsync(); JsonElement accessConfig = data.ToObject().GetProperty("accessConfig"); JsonElement pxid = data.ToObject().GetProperty("pxid"); JsonElement tid = data.ToObject().GetProperty("tid"); ScAccessConfig config = $"{accessConfig}".ToObject(); string areaId = null; if (data.ToObject().TryGetProperty("areaId", out JsonElement _areaId)) { areaId = $"{_areaId}"; } Code = "GetSingleTeacherByProject"; parameterMap = new Dictionary(); parameterMap.Add("TrainComID", config.trainComID); parameterMap.Add("Pxid", $"{pxid}"); parameterMap.Add("Tid", $"{tid}"); ScsResult result = new ScsResult { code = Code, title = "5.3.1.11获取跳转学员信息,用于sso单点,后端验证。" }; try { ///{“result”:true,”reason”:null,”content”:”{“PXID”:””,”TID”:””,”TeacherName”:””,”ProjectTitle”:””,”ProjectItemTitle”:””,”CityName”:””, ///”DisName”:””,”SchoolName”:””,”Sex”:””,”PXXK”:””,”PXXD”:””,”TeacherXK”:””,”TeacherXD”:””,”Email”:””}”,”pagecount”:1} result = await _thirdApisService.Post(config.url, Code, config.passKey, config.privateKey, parameterMap); if (result.result) { teacher = result.content; } await response.WriteAsJsonAsync(new { data = teacher }); return response; } catch (Exception ex) { //await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetSingleTeacherByProject\n{ex.Message}{ex.StackTrace}\n{result.ToJsonString()}\n{data}", GroupNames.成都开发測試群組); await response.WriteAsJsonAsync(new { data = teacher }); return response; } } /// /// 数据推送接口 /// /// /// /// [Function("SchoolDataPush")] public async Task SchoolDataPush([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestData req) { var response = req.CreateResponse(HttpStatusCode.OK); var client = _azureCosmos.GetCosmosClient(); string data = await new StreamReader(req.Body).ReadToEndAsync(); JsonElement accessConfig = data.ToObject().GetProperty("accessConfig"); ScAccessConfig config = $"{accessConfig}".ToObject(); JsonElement school = data.ToObject().GetProperty("school"); StringBuilder queryText = new StringBuilder($"SELECT distinct value(c) FROM c where c.type='yxtrain'"); List yxtrain = new List(); await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator(queryText: queryText.ToString(), requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"GroupList-{school}") })) { yxtrain.Add(item); } List trains = new List(); var members = yxtrain.SelectMany(x => x.members).ToList(); if (members.IsNotEmpty()) { queryText = new StringBuilder($"SELECT distinct value(c) FROM c where c.type='yxtrain' " + $"and c.id in ({string.Join(",", members.Select(x => $"'{x.id}'"))}) "); await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator(queryText: queryText.ToString(), requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"TeacherTrain-{school}") })) { trains.Add(item); } } string sql = $" SELECT value(c) FROM c join a in c.binds where ARRAY_LENGTH(c.binds)>0 and a.type='{config.config}' "; List teachers = new List(); await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").GetItemQueryIterator(queryText: sql, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base") })) { teachers.Add(item); } //5.3.1.12学员培训基本情况批量回写-UpdateTeacherListSituation List trains53112OK = new List(); //5.3.1.13学员能力点测评结果批量回写-UpdateTeacherListDiagnosis List trains53113OK = new List(); //5.3.1.17学员课堂实录批量回写-UploadKTSLList List trains53117OK = new List(); //5.3.1.22学员校本教研PDF(每人可以返回多条)批量回写-UploadSBTARPDFListV2 List trains53122OK = new List(); List> trainsNO = new List>(); List fails = new List(); List scTeachers = await _azureStorage.FindListByDict(new Dictionary { { "PartitionKey", "ScTeacher" } }); // List diagnoses = await _azureStorage.FindListByDict(new Dictionary { { "PartitionKey", "ScTeacherDiagnosis", }}); trains.ForEach(x => { var teacher = teachers.Find(t => t.id.Equals(x.id)); if (teacher == null) { fails.Add(new PushFail { tmdid = x.id, msgs = new List> { new KeyValuePair("tmdid-unexistent", "账号不存在!") } }); } else { List> msgs = new List>(); var binddata = teachers.Where(t => t.id.Equals(x.id)).SelectMany(z => z.binds) .Where(d => d.data.IsNotEmpty()).SelectMany(d => d.data) .Where(d => string.IsNullOrEmpty(d) && d.Contains(config.config) && d.Contains(config.path)); if (binddata != null && binddata.Count() > 0) { var bindData = binddata.First().ToObject(); if (binddata != null) { } else { //如果没有找到绑定信息,则去blob查找。 } } else { //如果没有找到绑定信息,则去blob查找。 } } }); await response.WriteAsJsonAsync(new { }); return response; } //5.3.1.22学员校本教研PDF(每人可以返回多条)批量回写-UploadSBTARPDFListV2 public (int t53122OK, List> msgs) check53122(TeacherTrain teacherTrain, List> msgs) { int t53122OK = 1; if (teacherTrain.offlineRecords.Count<= 0) { msgs.Add(new KeyValuePair("offlineRecord-count", $"文件个数为0")); } teacherTrain.offlineRecords.ForEach(x => { if (string.IsNullOrEmpty(x.url)) { msgs.Add(new KeyValuePair("offlineRecord-url", $"链接为空")); } if (x.size<=0) { msgs.Add(new KeyValuePair("offlineRecord-size", $"文件大小")); } }); return (t53122OK, msgs); } //5.3.1.17学员课堂实录批量回写-UploadKTSLList public (int t53117OK, List> msgs) check53117(TeacherTrain teacherTrain, List> msgs) { //校验 基本情况是否满足 int t53117OK = 1; if (teacherTrain.classTime <= 0) { msgs.Add(new KeyValuePair("classTime", $"未获得学时:{teacherTrain.classTime}")); t53117OK = 0; } if (teacherTrain.teacherClasses.Count() <= 0) { msgs.Add(new KeyValuePair("teacherClasses", $"未上传课堂实录:{teacherTrain.teacherClasses.Count()}个视频")); t53117OK = 0; } teacherTrain.teacherClasses.ForEach(x =>{ if (string.IsNullOrWhiteSpace(x.url)) { t53117OK = 0; msgs.Add(new KeyValuePair("teacherClasses", $"课堂实录链接无效")); } }); return (t53117OK, msgs); } //5.3.1.12学员培训基本情况批量回写-UpdateTeacherListSituation public (int t53112OK, List> msgs) check53112(TeacherTrain teacherTrain, List> msgs) { //校验 基本情况是否满足 int t53112OK = 1; if (teacherTrain.finalScore < 0) { //总体认定结果0、未认定 1、合格 2、优秀 3、不合格 4、其他 msgs.Add(new KeyValuePair("finalScore", $"最终评定结果参数:{teacherTrain.finalScore}")); t53112OK = 0; } if (string.IsNullOrEmpty(teacherTrain.summary) || teacherTrain.summary.Length > 300) { string msg = string.IsNullOrEmpty(teacherTrain.summary) ? "未填写" : teacherTrain.summary.Length > 300 ? "字数超过300." : ""; msgs.Add(new KeyValuePair("summary", $"教师培训总结:{msg}")); t53112OK = 0; } if (teacherTrain.totalTime <= 0) { msgs.Add(new KeyValuePair("totalTime", $"未获得学时:{teacherTrain.totalTime}")); t53112OK = 0; } return (t53112OK, msgs); } //5.3.1.13学员能力点测评结果批量回写-UpdateTeacherListDiagnosis public async Task<(int t53113OK, List> msgs, List abilitySubs)> check53113(TeacherTrain teacherTrain, List> msgs) { //校验 基本情况是否满足 int t53113OK = 1; List abilitySubs = new List(); if (teacherTrain.currency.videoTime < 0) { msgs.Add(new KeyValuePair("videoTime", $"视频学习时长:{teacherTrain.currency.videoTime}")); t53113OK = 0; } if (teacherTrain.currency.submitTime < 0) { msgs.Add(new KeyValuePair("submitTime", $"认证材料学习:{teacherTrain.currency.submitTime}")); t53113OK = 0; } if (teacherTrain.currency.teacherAilities.Count <= 0 || teacherTrain.currency.teacherAilities.Select(x=>x.no).Count()<=0) { msgs.Add(new KeyValuePair("teacherAilities", $"能力点不匹配:{teacherTrain.currency.submitTime}")); t53113OK = 0; } if (teacherTrain.currency.teacherAilities.Count <= 0 || teacherTrain.currency.teacherAilities.Select(x => x.no).Count() <= 0) { string insql = ""; if (teacherTrain.currency.teacherAilities.IsNotEmpty()) { insql = $" where c.id in ({string.Join(",", teacherTrain.currency.teacherAilities.Select(o => $"'{o.id}'"))})"; } //认证材料 await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer("TEAMModelOS", "Teacher") .GetItemQueryIterator(queryText: $"select value(c) from c {insql}", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"AbilitySub-{teacherTrain.school}-{teacherTrain.id}") })) { abilitySubs.Add(item); } teacherTrain.currency.teacherAilities.ForEach(x => { var abilitySub= abilitySubs.Find(z => z.id.Equals(x.id)); if (x.zpscore <= 0) { msgs.Add(new KeyValuePair("zpscore", $"认证材料学习,没有完成自评:{x.no},{x.name},{x.zpscore}")); } if (x.hpscore <= 0) { msgs.Add(new KeyValuePair("hpscore", $"认证材料学习,没有完成互评:{x.no},{x.name},{x.hpscore}")); } if (x.xzscore <= 0) { msgs.Add(new KeyValuePair("xzscore", $"认证材料学习,没有完成小组评:{x.no},{x.name},{x.xzscore}")); } }); t53113OK = 0; } return (t53113OK, msgs, abilitySubs); } } }