123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619 |
- 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<string, object> parameterMap = null;
- public ScsYxptApis(AzureCosmosFactory azureCosmos, DingDing dingDing, AzureStorageFactory azureStorage, ThirdApisService thirdApisService
- , AzureRedisFactory azureRedis)
- {
- _azureCosmos = azureCosmos;
- _dingDing = dingDing;
- _azureStorage = azureStorage;
- _azureRedis = azureRedis;
- _thirdApisService = thirdApisService;
- }
-
- /// <summary>
- /// 5.3.1.1获取项目列表
- /// </summary>
- /// <param name="req"></param>
- /// <param name="log"></param>
- /// <returns></returns>
- [Function("GetProjectInfoByTrainComID")]
- public async Task<HttpResponseData> GetProjectInfoByTrainComID([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestData req)
- {
- var response = req.CreateResponse(HttpStatusCode.OK);
- List<ScProject> projects = new List<ScProject>();
- string data = await new StreamReader(req.Body).ReadToEndAsync();
- JsonElement accessConfig = data.ToObject<JsonElement>().GetProperty("accessConfig");
- ScAccessConfig config = $"{accessConfig}".ToObject<ScAccessConfig>();
- Code = "GetProjectInfoByTrainComID";
- parameterMap = new Dictionary<string, object>();
- 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<List<ScProject>>();
- }
- 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;
- }
- }
- /// <summary>
- /// 5.3.1.18根据机构ID、项目ID、子项目ID返回学校列表
- /// </summary>
- /// <param name="req"></param>
- /// <param name="log"></param>
- /// <returns></returns>
- [Function("GetSchoolList")]
- public async Task<HttpResponseData> GetSchoolList([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestData req)
- {
- var response = req.CreateResponse(HttpStatusCode.OK);
- List<ScSchool> scSchools = new List<ScSchool>();
- string data = await new StreamReader(req.Body).ReadToEndAsync();
- JsonElement accessConfig = data.ToObject<JsonElement>().GetProperty("accessConfig");
- ScAccessConfig config = $"{accessConfig}".ToObject<ScAccessConfig>();
- Code = "GetSchoolList";
- parameterMap = new Dictionary<string, object>();
- parameterMap.Add("TrainComID", config.trainComID);
- List<ScsResult> results = new List<ScsResult>();
- 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<ScSchool> schools = result.content.ToObject<List<ScSchool>>();
- if (schools.IsNotEmpty())
- {
- 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;
- }
- }
- /// <summary>
- /// 5.3.1.2获取学员名单
- /// </summary>
- /// <param name="req"></param>
- /// <param name="log"></param>
- /// <returns></returns>
- [Function("GetTeachersListByProject")]
- public async Task<HttpResponseData> GetTeachersListByProject([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestData req)
- {
- var response = req.CreateResponse(HttpStatusCode.OK);
- List<ScTeacher> scTeachers = new List<ScTeacher>();
- string data = await new StreamReader(req.Body).ReadToEndAsync();
- JsonElement accessConfig = data.ToObject<JsonElement>().GetProperty("accessConfig");
- ScAccessConfig config = $"{accessConfig}".ToObject<ScAccessConfig>();
- Code = "GetTeachersListByProject";
- parameterMap = new Dictionary<string, object>();
- parameterMap.Add("TrainComID", config.trainComID);
- List<ScsResult> results = new List<ScsResult>();
- 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<ScTeacher> teachers = result.content.ToObject<List<ScTeacher>>();
- 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;
- }
- }
- /// <summary>
- /// 5.3.1.20获取学校设置的可选能力点
- /// </summary>
- /// <param name="req"></param>
- /// <param name="log"></param>
- /// <returns></returns>
- [Function("GetSchoolDiagnosis")]
- public async Task<HttpResponseData> GetSchoolDiagnosis([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestData req)
- {
- var response = req.CreateResponse(HttpStatusCode.OK);
- List<ScsProjectDiagnosis> projects = new List<ScsProjectDiagnosis>();
- string data = await new StreamReader(req.Body).ReadToEndAsync();
- JsonElement accessConfig = data.ToObject<JsonElement>().GetProperty("accessConfig");
- JsonElement schoolCode = data.ToObject<JsonElement>().GetProperty("schoolCode");
- ScAccessConfig config = $"{accessConfig}".ToObject<ScAccessConfig>();
- Code = "GetSchoolDiagnosis";
- parameterMap = new Dictionary<string, object>();
- parameterMap.Add("TrainComID", config.trainComID);
- List<ScsResult> results = new List<ScsResult>();
- 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<ScPDiagnosis> diagnoses = result.content.ToObject<List<ScPDiagnosis>>();
- if (diagnoses.IsNotEmpty())
- {
- projects.Add(new ScsProjectDiagnosis { project = ps, diagnoses = diagnoses });
- await _azureStorage.SaveOrUpdate<ScProjectDiagnosis>(new ScProjectDiagnosis { RowKey = $"{ps.pid}-{schoolCode}", PartitionKey = "ScSchoolDiagnosis", abilityNos = diagnoses.ToJsonString() });
- }
- }
- else
- {
- List<ScProjectDiagnosis> teacherDiagnoses = await _azureStorage.FindListByDict<ScProjectDiagnosis>(new Dictionary<string, object> { { "PartitionKey", "ScSchoolDiagnosis" }, { "RowKey", $"{ps.pid}-{schoolCode}" } });
- if (teacherDiagnoses.IsNotEmpty())
- {
- projects.Add(new ScsProjectDiagnosis { project = ps, diagnoses = teacherDiagnoses[0].abilityNos.ToObject<List<ScPDiagnosis>>() });
- }
- }
- 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<ScProjectDiagnosis> teacherDiagnoses = await _azureStorage.FindListByDict<ScProjectDiagnosis>(new Dictionary<string, object> { { "PartitionKey", "ScSchoolDiagnosis" }, { "RowKey", $"{ps.pid}-{schoolCode}" } });
- if (teacherDiagnoses.IsNotEmpty())
- {
- projects.Add(new ScsProjectDiagnosis { project = ps, diagnoses = teacherDiagnoses[0].abilityNos.ToObject<List<ScPDiagnosis>>() });
- }
- }
- }
- await response.WriteAsJsonAsync(new { data = projects.ToJsonString() });
- return response;
- }
- }
- /// <summary>
- /// 5.3.1.19获取项目设置的可选能力点
- /// </summary>
- /// <param name="req"></param>
- /// <param name="log"></param>
- /// <returns></returns>
- [Function("GetProjectDiagnosis")]
- public async Task<HttpResponseData> GetProjectDiagnosis([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestData req)
- {
- var response = req.CreateResponse(HttpStatusCode.OK);
- List<ScsProjectDiagnosis> projects = new List<ScsProjectDiagnosis>();
- string data = await new StreamReader(req.Body).ReadToEndAsync();
- JsonElement accessConfig = data.ToObject<JsonElement>().GetProperty("accessConfig");
- ScAccessConfig config = $"{accessConfig}".ToObject<ScAccessConfig>();
- Code = "GetProjectDiagnosis";
- parameterMap = new Dictionary<string, object>();
- parameterMap.Add("TrainComID", config.trainComID);
- List<ScsResult> results = new List<ScsResult>();
- 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<ScPDiagnosis> diagnoses = result.content.ToObject<List<ScPDiagnosis>>();
- if (diagnoses.IsNotEmpty())
- {
- projects.Add(new ScsProjectDiagnosis { project = ps, diagnoses = diagnoses });
- await _azureStorage.SaveOrUpdate<ScProjectDiagnosis>(new ScProjectDiagnosis { RowKey = $"{ps.pid}", PartitionKey = "ScProjectDiagnosis", abilityNos = diagnoses.ToJsonString() });
- }
- }
- else
- {
- List<ScProjectDiagnosis> teacherDiagnoses = await _azureStorage.FindListByDict<ScProjectDiagnosis>(new Dictionary<string, object> { { "PartitionKey", "ScProjectDiagnosis" }, { "RowKey", $"{ps.pid}" } });
- if (teacherDiagnoses.IsNotEmpty())
- {
- projects.Add(new ScsProjectDiagnosis { project = ps, diagnoses = teacherDiagnoses[0].abilityNos.ToObject<List<ScPDiagnosis>>() });
- }
- }
- 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<ScProjectDiagnosis> teacherDiagnoses = await _azureStorage.FindListByDict<ScProjectDiagnosis>(new Dictionary<string, object> { { "PartitionKey", "ScProjectDiagnosis" }, { "RowKey", $"{ps.pid}" } });
- if (teacherDiagnoses.IsNotEmpty())
- {
- projects.Add(new ScsProjectDiagnosis { project = ps, diagnoses = teacherDiagnoses[0].abilityNos.ToObject<List<ScPDiagnosis>>() });
- }
- }
- }
- await response.WriteAsJsonAsync(new { data = projects.ToJsonString() });
- return response;
- }
- }
- /// <summary>
- /// 5.3.1.3通过项目编号获取学员测评能力项V2
- /// </summary>
- /// <param name="req"></param>
- /// <param name="log"></param>
- /// <returns></returns>
- [Function("GetDiagnosisListByProject_V2")]
- public async Task<HttpResponseData> GetDiagnosisListByProject_V2([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestData req)
- {
- var response = req.CreateResponse(HttpStatusCode.OK);
- List<string> abilityNos = new List<string>();
- string data = await new StreamReader(req.Body).ReadToEndAsync();
- JsonElement accessConfig = data.ToObject<JsonElement>().GetProperty("accessConfig");
- JsonElement pxid = data.ToObject<JsonElement>().GetProperty("pxid");
- ScAccessConfig config = $"{accessConfig}".ToObject<ScAccessConfig>();
- Code = "GetDiagnosisListByProject_V2";
- parameterMap = new Dictionary<string, object>();
- 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<ScDiagnosis> diagnoses = result.content.ToObject<List<ScDiagnosis>>();
- if (diagnoses != null)
- {
- abilityNos = diagnoses.Select(x => x.DiagnosisDicNum).ToList();
- }
- if (abilityNos.IsNotEmpty())
- {
- await _azureStorage.SaveOrUpdate<ScTeacherDiagnosis>(new ScTeacherDiagnosis { RowKey = $"{pxid}", PartitionKey = "ScTeacherDiagnosis", abilityNos = abilityNos.ToJsonString() });
- }
- }
- else
- {
- List<ScTeacherDiagnosis> teacherDiagnoses = await _azureStorage.FindListByDict<ScTeacherDiagnosis>(new Dictionary<string, object> { { "PartitionKey", "ScTeacherDiagnosis" }, { "RowKey", $"{pxid}" } });
- if (teacherDiagnoses.IsNotEmpty())
- {
- abilityNos = teacherDiagnoses[0].abilityNos.ToObject<List<string>>();
- }
- }
- 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<ScTeacherDiagnosis> teacherDiagnoses = await _azureStorage.FindListByDict<ScTeacherDiagnosis>(new Dictionary<string, object> { { "PartitionKey", "ScTeacherDiagnosis" }, { "RowKey", $"{pxid}" } });
- if (teacherDiagnoses.IsNotEmpty())
- {
- abilityNos = teacherDiagnoses[0].abilityNos.ToObject<List<string>>();
- }
- await response.WriteAsJsonAsync(new { data = abilityNos.ToJsonString() });
- return response;
- }
- }
- /// <summary>
- /// 5.3.1.11获取跳转学员信息,用于sso单点,后端验证。
- /// </summary>
- /// <param name="req"></param>
- /// <param name="log"></param>
- /// <returns></returns>
- [Function("GetSingleTeacherByProject")]
- public async Task<HttpResponseData> 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<JsonElement>().GetProperty("accessConfig");
- JsonElement pxid = data.ToObject<JsonElement>().GetProperty("pxid");
- JsonElement tid = data.ToObject<JsonElement>().GetProperty("tid");
- ScAccessConfig config = $"{accessConfig}".ToObject<ScAccessConfig>();
- Code = "GetSingleTeacherByProject";
- parameterMap = new Dictionary<string, object>();
- 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;
- }
- }
- /// <summary>
- /// 数据推送接口
- /// </summary>
- /// <param name="req"></param>
- /// <param name="log"></param>
- /// <returns></returns>
- [Function("SchoolDataPush")]
- public async Task<HttpResponseData> 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<JsonElement>().GetProperty("accessConfig");
- ScAccessConfig config = $"{accessConfig}".ToObject<ScAccessConfig>();
- JsonElement school = data.ToObject<JsonElement>().GetProperty("school");
- StringBuilder queryText = new StringBuilder($"SELECT distinct value(c) FROM c where c.type='yxtrain'");
- List<GroupList> yxtrain = new List<GroupList>();
- await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<GroupList>(queryText: queryText.ToString(),
- requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"GroupList-{school}") }))
- {
- yxtrain.Add(item);
- }
- List<TeacherTrain> trains = new List<TeacherTrain>();
- 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<TeacherTrain>(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<Teacher> teachers = new List<Teacher>();
- await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").GetItemQueryIterator<Teacher>(queryText: sql,
- requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base") }))
- {
- teachers.Add(item);
- }
- //5.3.1.12学员培训基本情况批量回写-UpdateTeacherListSituation
- List<TeacherTrain> trains53112OK = new List<TeacherTrain>();
- //5.3.1.13学员能力点测评结果批量回写-UpdateTeacherListDiagnosis
- List<TeacherTrain> trains53113OK = new List<TeacherTrain>();
- //5.3.1.17学员课堂实录批量回写-UploadKTSLList
- List<TeacherTrain> trains53117OK = new List<TeacherTrain>();
- //5.3.1.22学员校本教研PDF(每人可以返回多条)批量回写-UploadSBTARPDFListV2
- List<TeacherTrain> trains53122OK = new List<TeacherTrain>();
- List<KeyValuePair<TeacherTrain, string>> trainsNO = new List<KeyValuePair<TeacherTrain, string>>();
- List<PushFail> fails = new List<PushFail>();
- 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<KeyValuePair<string, string>> { new KeyValuePair<string, string>("tmdid-unexistent", "账号不存在!") } });
- }
- else
- {
- List<KeyValuePair<string, string>> msgs = new List<KeyValuePair<string, string>>();
- 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<ScBindData>();
- if (binddata != null)
- {
- }
- else
- {
- //如果没有找到绑定信息,则去blob查找。
- }
- }
- else
- {
- //如果没有找到绑定信息,则去blob查找。
- }
- }
- });
- await response.WriteAsJsonAsync(new { });
- return response;
- }
- //5.3.1.17学员课堂实录批量回写-UploadKTSLList
- public (int t53117OK, List<KeyValuePair<string, string>> msgs) check53117(TeacherTrain teacherTrain, List<KeyValuePair<string, string>> msgs) {
- //校验 基本情况是否满足
- int t53117OK = 1;
- if (teacherTrain.classTime <= 0)
- {
- msgs.Add(new KeyValuePair<string, string>("classTime", $"未获得学时:{teacherTrain.classTime}"));
- t53117OK = 0;
- }
- if (teacherTrain.teacherClasses.Count() <= 0) {
- msgs.Add(new KeyValuePair<string, string>("teacherClasses", $"未上传课堂实录:{teacherTrain.teacherClasses.Count()}个视频"));
- t53117OK = 0;
- }
-
- teacherTrain.teacherClasses.ForEach(x =>{
- if (string.IsNullOrWhiteSpace(x.url)) {
- t53117OK = 0;
- msgs.Add(new KeyValuePair<string, string>("teacherClasses", $"课堂实录链接无效"));
- }
- });
- return (t53117OK, msgs);
- }
- //5.3.1.12学员培训基本情况批量回写-UpdateTeacherListSituation
- public (int t53112OK, List<KeyValuePair<string, string>> msgs) check53112(TeacherTrain teacherTrain, List<KeyValuePair<string, string>> msgs)
- {
- //校验 基本情况是否满足
- int t53112OK = 1;
- if (teacherTrain.finalScore < 0)
- {
- //总体认定结果0、未认定 1、合格 2、优秀 3、不合格 4、其他
- msgs.Add(new KeyValuePair<string, string>("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<string, string>("summary", $"教师培训总结:{msg}"));
- t53112OK = 0;
- }
- if (teacherTrain.totalTime <= 0)
- {
- msgs.Add(new KeyValuePair<string, string>("totalTime", $"未获得学时:{teacherTrain.totalTime}"));
- t53112OK = 0;
- }
- return (t53112OK, msgs);
- }
- //5.3.1.13学员能力点测评结果批量回写-UpdateTeacherListDiagnosis
- public async Task<(int t53113OK, List<KeyValuePair<string, string>> msgs, List<AbilitySub> abilitySubs)> check53113(TeacherTrain teacherTrain, List<KeyValuePair<string, string>> msgs)
- {
- //校验 基本情况是否满足
- int t53113OK = 1;
- List<AbilitySub> abilitySubs = new List<AbilitySub>();
- if (teacherTrain.currency.videoTime < 0)
- {
- msgs.Add(new KeyValuePair<string, string>("videoTime", $"视频学习时长:{teacherTrain.currency.videoTime}"));
- t53113OK = 0;
- }
- if (teacherTrain.currency.submitTime < 0)
- {
- msgs.Add(new KeyValuePair<string, string>("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<string, string>("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<AbilitySub>(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<string, string>("zpscore", $"认证材料学习,自评无效:{x.no},{x.name},{x.zpscore}"));
- }
- if (x.hpscore <= 0)
- {
- msgs.Add(new KeyValuePair<string, string>("hpscore", $"认证材料学习,互评无效:{x.no},{x.name},{x.hpscore}"));
- }
- if (x.xzscore <= 0)
- {
- msgs.Add(new KeyValuePair<string, string>("xzscore", $"认证材料学习,小组评无效:{x.no},{x.name},{x.xzscore}"));
- }
- });
- t53113OK = 0;
- }
- return (t53113OK, msgs, abilitySubs);
- }
- }
- }
|