CrazyIter_Bin пре 3 година
родитељ
комит
843d7251fa

+ 302 - 1
TEAMModelOS.FunctionV4/HttpTrigger/ScsYxptApis.cs

@@ -1,4 +1,5 @@
-using HTEXLib.COMM.Helpers;
+using Azure.Cosmos;
+using HTEXLib.COMM.Helpers;
 using Microsoft.Azure.Functions.Worker;
 using Microsoft.Azure.Functions.Worker.Http;
 using System;
@@ -34,7 +35,307 @@ namespace TEAMModelOS.FunctionV4.HttpTrigger
             _azureRedis = azureRedis;
             _thirdApisService = thirdApisService;
         }
+        /// <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;
+        }
+        /// <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>

Разлика између датотеке није приказан због своје велике величине
+ 1332 - 2
TEAMModelOS.FunctionV4/ServiceBus/ActiveTaskTopic.cs