123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859 |
- 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>();
- string areaId = null;
- if (data.ToObject<JsonElement>().TryGetProperty("areaId", out JsonElement _areaId))
- {
- areaId = $"{_areaId}";
- }
- 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");
- string areaId = null;
- if (data.ToObject<JsonElement>().TryGetProperty("areaId", out JsonElement _areaId))
- {
- areaId = $"{_areaId}";
- }
- 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())
- {
- 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;
- }
- }
- /// <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>();
- string areaId = null;
- if (data.ToObject<JsonElement>().TryGetProperty("areaId", out JsonElement _areaId))
- {
- areaId = $"{_areaId}";
- }
- 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");
- string areaId = null;
- if(data.ToObject<JsonElement>().TryGetProperty("areaId", out JsonElement _areaId))
- {
- areaId = $"{_areaId}";
- }
- 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 {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<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");
- string areaId = null;
- if (data.ToObject<JsonElement>().TryGetProperty("areaId", out JsonElement _areaId))
- {
- areaId = $"{_areaId}";
- }
- 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 { areaId=areaId, 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");
- string areaId = null;
- if (data.ToObject<JsonElement>().TryGetProperty("areaId", out JsonElement _areaId))
- {
- areaId = $"{_areaId}";
- }
- JsonElement pxid = data.ToObject<JsonElement>().GetProperty("pxid");
- JsonElement schoolCode = data.ToObject<JsonElement>().GetProperty("schoolCode");
- 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 {areaId = areaId,schoolCode=$"{schoolCode}", 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>();
- string areaId = null;
- if (data.ToObject<JsonElement>().TryGetProperty("areaId", out JsonElement _areaId))
- {
- areaId = $"{_areaId}";
- }
- 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 " +
- $"and c.id in ({string.Join(",", members.Select(x => $"'{x.id}'"))}) ");
- await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").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);
- //}
- List<ScTeacher> scTeachers= await _azureStorage.FindListByDict<ScTeacher>(new Dictionary<string, object> { { "PartitionKey", "ScTeacher" },{ "schoolCode",$"{school}" } });
- List<ScTeacherDiagnosis> scTeacherDiagnoses = await _azureStorage.FindListByDict<ScTeacherDiagnosis>(new Dictionary<string, object> { { "PartitionKey", "ScTeacherDiagnosis" }, { "schoolCode", $"{school}" } });
-
-
- List<KeyValuePair<TeacherTrain, string>> trainsNO = new List<KeyValuePair<TeacherTrain, string>>();
- List<PushFail> fails = new List<PushFail>();
- //5.3.1.12学员培训基本情况批量回写-UpdateTeacherListSituation
- List<TeacherTrain> trains53112OK = new List<TeacherTrain>();
- ScsResult UpdateTeacherListSituation = null;
- Dictionary<string, object> parameterContent53112 = new Dictionary<string, object>();
- List<Dictionary<string, object>> list53112 = new List<Dictionary<string, object>>();
- parameterContent53112.Add("TrainComID", config.trainComID);
- parameterContent53112.Add("List", list53112);
-
- //5.3.1.13学员能力点测评结果批量回写-UpdateTeacherListDiagnosis 300条限制
- List<TeacherTrain> trains53113OK = new List<TeacherTrain>();
- ScsResult UpdateTeacherListDiagnosis = null;
- Dictionary<string, object> parameterContent53113 = new Dictionary<string, object>();
- List<Dictionary<string, object>> list53113 = new List<Dictionary<string, object>>();
- parameterContent53113.Add("TrainComID", config.trainComID);
- parameterContent53113.Add("List", list53113);
- //5.3.1.17学员课堂实录批量回写-UploadKTSLList 300条限制
- List<TeacherTrain> trains53117OK = new List<TeacherTrain>();
- ScsResult UploadKTSLList = null;
- Dictionary<string, object> parameterContent53117 = new Dictionary<string, object>();
- List<Dictionary<string, object>> list53117 = new List<Dictionary<string, object>>();
- parameterContent53117.Add("TrainComID", config.trainComID);
- parameterContent53117.Add("List", list53117);
- //5.3.1.22学员校本教研PDF(每人可以返回多条)批量回写-UploadSBTARPDFListV2 100条限制
- List<TeacherTrain> trains53122OK = new List<TeacherTrain>();
- ScsResult UploadSBTARPDFListV2 = null;
- Dictionary<string, object> parameterContent53122 = new Dictionary<string, object>();
- List<Dictionary<string, object>> list53122 = new List<Dictionary<string, object>>();
- parameterContent53122.Add("TrainComID", config.trainComID);
- parameterContent53122.Add("List", list53122);
- foreach (var x in trains) {
- List<KeyValuePair<string, string>> msgs = new List<KeyValuePair<string, string>>();
- List<ScTeacher> teacher = scTeachers.FindAll(t => t.tmdid.Equals(x.id));
- foreach (var t in teacher) {
- ScTeacherDiagnosis diagnosis = scTeacherDiagnoses.Find(x => x.RowKey.Equals(t.PXID));
- (int t53112OK, List<KeyValuePair<string, string>> msgs53112) = check53112(x, msgs);
- (int t53113OK, List<KeyValuePair<string, string>> msgs53113, List<AbilitySub> abilitySubs) = await check53113(x, diagnosis, msgs);
- (int t53117OK, List<KeyValuePair<string, string>> msgs53117) = check53117(x, msgs);
- (int t53122OK, List<KeyValuePair<string, string>> msgs53122) = check53122(x, msgs);
- //5.3.1.12学员培训基本情况批量回写-UpdateTeacherListSituation
- if (t53112OK == 1)
- {
- Dictionary<string, object> parameterMapData = new Dictionary<string, object>();
- parameterMapData.Add("PXID", $"{t.PXID}");
- parameterMapData.Add("TID", $"{t.TID}");
- parameterMapData.Add("TeacherName", $"{t.TeacherName}");
- parameterMapData.Add("CourseHour", $"{x.totalTime}");
- parameterMapData.Add("ResearchText", $"{x.summary}");
- /// <summary>
- ///省上标准 最终结果 0未认定,1合格,2优秀,3不合格,4其他
- ///系统标准 -2 其他 -1 未认定,0不合格,1合格,2优秀
- /// </summary>
- string ComPassed = "0";
- switch (x.finalScore)
- {
- case -2:
- ComPassed = "4";
- break;
- case -1:
- ComPassed = "0";
- break;
- case 0:
- ComPassed = "3";
- break;
- case 1:
- ComPassed = "1";
- break;
- case 2:
- ComPassed = "2";
- break;
- default:
- ComPassed = "4";
- break;
- }
- parameterMapData.Add("ComPassed", ComPassed);//0、未认定 1、合格 2、优秀 3、不合格 4、其他
- list53112.Add(parameterMapData);
- }
- //5.3.1.13学员能力点测评结果批量回写-UpdateTeacherListDiagnosis
- if (t53113OK == 1)
- {
- x.currency.teacherAilities.ForEach(a => {
- Dictionary<string, object> parameterMapData = new Dictionary<string, object>();
- parameterMapData.Add("PXID", $"{t.PXID}");
- parameterMapData.Add("TID", $"{t.TID}");
- parameterMapData.Add("DiagnosisNum", $"{a.no}");
- //0"未认定", 1"合格", 2"优秀", 3"不合格"
- //系统 -1 未认定,0 不合格,1 合格,2 优秀
- string zpscore = "0";
- switch (a.zpscore)
- {
- case -1:
- zpscore = "0";
- break;
- case 0:
- zpscore = "3";
- break;
- case 1:
- zpscore = "1";
- break;
- case 2:
- zpscore = "2";
- break;
- default:
- zpscore = "0";
- break;
- }
- string hpscore = "0";
- switch (a.hpscore)
- {
- case -1:
- hpscore = "0";
- break;
- case 0:
- hpscore = "3";
- break;
- case 1:
- hpscore = "1";
- break;
- case 2:
- hpscore = "2";
- break;
- default:
- hpscore = "0";
- break;
- }
- string xzpresult = "0";
- switch (a.xzscore)
- {
- case -1:
- xzpresult = "0";
- break;
- case 0:
- xzpresult = "3";
- break;
- case 1:
- xzpresult = "1";
- break;
- case 2:
- xzpresult = "2";
- break;
- default:
- xzpresult = "0";
- break;
- }
- parameterMapData.Add("zpresult", zpscore);
- parameterMapData.Add("hpresult", hpscore);
- parameterMapData.Add("xzpresult", xzpresult);
- List<Dictionary<string, object>> pfiles = new List<Dictionary<string, object>>();
- parameterMapData.Add("pfiles", pfiles);
- AbilitySub abilitySub = abilitySubs.Find(sub => sub.id.Equals(a.id));
- if (abilitySub != null)
- {
- abilitySub.uploads.ForEach(upload => {
- upload.urls.ForEach(url => {
- Dictionary<string, object> pfileMap = new Dictionary<string, object>();
- pfileMap.Add("url", url.url);
- pfileMap.Add("fileName", url.name);
- pfileMap.Add("fileSize", url.size);
- pfileMap.Add("md5", url.hash);
- string fileext = url.url.Substring(url.url.LastIndexOf(".") > 0 ? url.url.LastIndexOf(".") + 1 : 0);
- pfileMap.Add("fileType", fileext);
- pfiles.Add(pfileMap);
- });
- });
- }
- list53113.Add(parameterMapData);
- });
- }
- //5.3.1.17学员课堂实录批量回写-UploadKTSLList
- if (t53117OK == 1)
- {
- x.teacherClasses.ForEach(clss =>
- {
- Dictionary<string, object> parameterMapData = new Dictionary<string, object>();
- parameterMapData.Add("PXID", $"{t.PXID}");
- parameterMapData.Add("TID", $"{t.TID}");
- parameterMapData.Add("url", clss.url);//添加访问授权
- parameterMapData.Add("url2", clss.url);
- parameterMapData.Add("fileName", clss.name);
- parameterMapData.Add("fileSize", clss.size);
- parameterMapData.Add("md5", clss.hash);
- string fileext = clss.url.Substring(clss.url.LastIndexOf(".") > 0 ? clss.url.LastIndexOf(".") + 1 : 0);
- parameterMapData.Add("fileType", fileext);
- list53117.Add(parameterMapData);
- });
- }
- //5.3.1.22学员校本教研PDF(每人可以返回多条)批量回写-UploadSBTARPDFListV2
- if (t53122OK == 1)
- {
- Dictionary<string, object> parameterMapData = new Dictionary<string, object>();
- parameterMapData.Add("PXID", $"{t.PXID}");
- parameterMapData.Add("TID", $"{t.TID}");
- List<Dictionary<string, object>> files = new List<Dictionary<string, object>>();
- x.offlineRecords.ForEach(record => {
- Dictionary<string, object> fileMap = new Dictionary<string, object>();
- fileMap.Add("url", record.url);
- fileMap.Add("fileName", record.name);
- fileMap.Add("fileSize", record.size);
- fileMap.Add("md5", record.hash);
- string fileext = record.url.Substring(record.url.LastIndexOf(".") > 0 ? record.url.LastIndexOf(".") + 1 : 0);
- fileMap.Add("fileType", fileext);
- files.Add(fileMap);
- });
- parameterMapData.Add("files", files);
- list53122.Add(parameterMapData);
- }
- }
- }
- await response.WriteAsJsonAsync(new { });
- return response;
- }
- //5.3.1.22学员校本教研PDF(每人可以返回多条)批量回写-UploadSBTARPDFListV2
- public (int t53122OK, List<KeyValuePair<string, string>> msgs) check53122(TeacherTrain teacherTrain, List<KeyValuePair<string, string>> msgs) {
- int t53122OK = 1;
- if (teacherTrain.offlineRecords.Count<= 0)
- {
- msgs.Add(new KeyValuePair<string, string>("offlineRecord-count", $"文件个数为0"));
- }
- teacherTrain.offlineRecords.ForEach(x => {
- if (string.IsNullOrEmpty(x.url)) {
- msgs.Add(new KeyValuePair<string, string>("offlineRecord-url", $"链接为空"));
- }
- if (x.size<=0)
- {
- msgs.Add(new KeyValuePair<string, string>("offlineRecord-size", $"文件大小"));
- }
- });
- return (t53122OK, msgs);
- }
- //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, ScTeacherDiagnosis diagnosis, 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())
- {
- IEnumerable<string> ds= diagnosis.abilityNos.ToObject<List<string>>().Except(teacherTrain.currency.teacherAilities.Select(x => x.no));
- if (ds != null && ds.Count() > 0) {
- msgs.Add(new KeyValuePair<string, string>("diagnosisNos", $"省平台勾选的能力点编号为学习完成:省平台:{diagnosis.abilityNos},已学习:{teacherTrain.currency.teacherAilities.Select(x => x.no).ToJsonString()}"));
- }
- 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 (abilitySub == null || abilitySub.uploads.IsNotEmpty()) {
- msgs.Add(new KeyValuePair<string, string>("uploads", $"未上传认证材料:{x.no},{x.name}"));
- }
- 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);
- }
- }
- }
|