Browse Source

Merge branch 'develop5.0-tmd' of http://52.130.252.100:10000/TEAMMODEL/TEAMModelOS into develop5.0-tmd

XW 3 years ago
parent
commit
5c386c2c07

+ 183 - 6
TEAMModelFunction/ScsApisHttpTrigger.cs

@@ -20,6 +20,7 @@ using TEAMModelOS.Services.Common;
 using TEAMModelOS.SDK.Models.Service;
 using TEAMModelOS.SDK.Models.Service;
 using HTEXLib.COMM.Helpers;
 using HTEXLib.COMM.Helpers;
 using System.Text;
 using System.Text;
+using static TEAMModelOS.SDK.Models.Teacher;
 
 
 namespace TEAMModelFunction
 namespace TEAMModelFunction
 {
 {
@@ -65,14 +66,14 @@ namespace TEAMModelFunction
             var members = yxtrain.SelectMany(x => x.members).ToList();
             var members = yxtrain.SelectMany(x => x.members).ToList();
             if (members.IsNotEmpty()) {
             if (members.IsNotEmpty()) {
                 queryText = new StringBuilder($"SELECT distinct value(c) FROM c where c.type='yxtrain' " +
                 queryText = new StringBuilder($"SELECT distinct value(c) FROM c where c.type='yxtrain' " +
-                    $"and  c.id in ({string.Join(",",members.Select(x=>$"'{x.id}'"))}) ");
+                    $"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(),
                 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}") }))
                 requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"TeacherTrain-{school}") }))
                 {
                 {
                     trains.Add(item);
                     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}' ";
             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>();
             List<Teacher> teachers = new List<Teacher>();
             await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").GetItemQueryIterator<Teacher>(queryText: sql,
             await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").GetItemQueryIterator<Teacher>(queryText: sql,
@@ -80,13 +81,116 @@ namespace TEAMModelFunction
             {
             {
                 teachers.Add(item);
                 teachers.Add(item);
             }
             }
-
             //5.3.1.12学员培训基本情况批量回写-UpdateTeacherListSituation
             //5.3.1.12学员培训基本情况批量回写-UpdateTeacherListSituation
+            List<TeacherTrain> trains53112OK = new List<TeacherTrain>();
+
             //5.3.1.13学员能力点测评结果批量回写-UpdateTeacherListDiagnosis
             //5.3.1.13学员能力点测评结果批量回写-UpdateTeacherListDiagnosis
+            List<TeacherTrain> trains53113OK = new List<TeacherTrain>();
+
             //5.3.1.17学员课堂实录批量回写-UploadKTSLList
             //5.3.1.17学员课堂实录批量回写-UploadKTSLList
+            List<TeacherTrain> trains53117OK = new List<TeacherTrain>();
+
             //5.3.1.22学员校本教研PDF(每人可以返回多条)批量回写-UploadSBTARPDFListV2
             //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查找。
+                    }
+                }
+            });
             return new OkObjectResult(new { });
             return new OkObjectResult(new { });
         }
         }
+
+        public (int t53112OK, List<KeyValuePair<string, string>> msgs) check53112(TeacherTrain teacherTrain, List<KeyValuePair<string, string>> msgs)
+        {
+            //校验 基本情况是否满足
+            int t53112OK = 1;
+            if (teacherTrain.finalScore < 0)
+            {
+                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);
+        }
+
+        public (int t53112OK, List<KeyValuePair<string, string>> msgs) check53113(TeacherTrain teacherTrain, List<KeyValuePair<string, string>> msgs)
+        {
+            //校验 基本情况是否满足
+            int t53112OK =1;
+            if (teacherTrain.finalScore < 0)
+            {
+                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);
+        }
+
+        public class PushFail {
+            public string tmdid { get; set; }
+            public string name { get; set; }
+            public string picture { get; set; }
+            public List<KeyValuePair<string,string>> msgs { get; set; }
+        }
+        public class ScPush{
+            public string tmdid { get; set; }
+            public string userid { get; set; }
+            public string pxid { get; set; }
+            public int tbase { get; set; } = -1;//基本信息推送状态 -1 未推送,0 推送失败,1推送成功
+            public int tability { get; set; } = -1;//能力点推送状态 -1 未推送,0 推送失败,1推送成功
+            public int tktsl { get; set; } = -1;//课堂实录推送状态 -1 未推送,0 推送失败,1推送成功
+            public int txbyx { get; set; } = -1;//校本研修推送状态 -1 未推送,0 推送失败,1推送成功
+            public string rbase { get; set; }//基本信息推送失败原因
+            public string rability { get; set; }//能力点推送失败原因
+            public string rktsl { get; set; }//课堂实录推送失败原因
+            public string rxbyx { get; set; } //校本研修推送失败原因
+        }
         public class ScTchTmd{
         public class ScTchTmd{
             public string tmdid { get; set; }
             public string tmdid { get; set; }
             public string name { get; set; }    
             public string name { get; set; }    
@@ -97,10 +201,85 @@ namespace TEAMModelFunction
             public string pid { get; set; }
             public string pid { get; set; }
         }
         }
 
 
+        /// <summary>
+        /// 5.3.1.1获取项目列表
+        /// </summary>
+        /// <param name="req"></param>
+        /// <param name="log"></param>
+        /// <returns></returns>
+        [FunctionName("GetProjectInfoByTrainComID")]
+        public async Task<IActionResult> GetProjectInfoByTrainComID([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req, ILogger log)
+        {
+            List<ScProject> projects = null;
+            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>>();
+                }
+                return new OkObjectResult(new { data = projects.ToJsonString() });
+            }
+            catch (Exception ex)
+            {
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetProjectInfoByTrainComID\n{ex.Message}{ex.StackTrace}\n{result.ToJsonString()}", GroupNames.成都开发測試群組);
+                return new OkObjectResult(projects);
+            }
+        }
 
 
+        /// <summary>
+        /// 5.3.1.19获取项目设置的可选能力点
+        /// </summary>
+        /// <param name="req"></param>
+        /// <param name="log"></param>
+        /// <returns></returns>
+        [FunctionName("GetProjectDiagnosis")]
+        public async Task<IActionResult> GetProjectDiagnosis([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req, ILogger log)
+        {
+            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 = "GetProjectInfoByTrainComID";
+            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)
+                    {  
+                        List<ScPDiagnosis> diagnoses= new List<ScPDiagnosis> ();
+                        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)
+                        {
+                            diagnoses = result.content.ToObject<List<ScPDiagnosis>>();
+                            if (diagnoses.IsNotEmpty()) {
+                                projects.Add(new ScsProjectDiagnosis { project = ps, diagnoses = diagnoses });
+                            }
+                        }
+                        results.Add(result);
+                    }
+                }
+                return new OkObjectResult(new { data = projects.ToJsonString() });
+            }
+            catch (Exception ex)
+            {
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetProjectInfoByTrainComID\n{ex.Message}{ex.StackTrace}\n{results.ToJsonString()}", GroupNames.成都开发測試群組);
+                return new OkObjectResult(projects);
+            }
+        }
 
 
         /// <summary>
         /// <summary>
-        /// 
+        /// 5.3.1.3通过项目编号获取学员测评能力项V2
         /// </summary>
         /// </summary>
         /// <param name="req"></param>
         /// <param name="req"></param>
         /// <param name="log"></param>
         /// <param name="log"></param>
@@ -115,8 +294,6 @@ namespace TEAMModelFunction
             Code = "GetDiagnosisListByProject_V2";
             Code = "GetDiagnosisListByProject_V2";
             parameterMap = new Dictionary<string, object>();
             parameterMap = new Dictionary<string, object>();
             parameterMap.Add("TrainComID", config.trainComID);
             parameterMap.Add("TrainComID", config.trainComID);
-            //parameterMap.Add("ProjectID", "22");
-            //parameterMap.Add("ProjectItemID", "22");
             parameterMap.Add("PXID", pxid);
             parameterMap.Add("PXID", pxid);
             ScsResult result = new ScsResult { code = Code, title = "5.3.1.3通过项目编号获取学员测评能力项V2" };
             ScsResult result = new ScsResult { code = Code, title = "5.3.1.3通过项目编号获取学员测评能力项V2" };
             try
             try

+ 3 - 1
TEAMModelOS.SDK/Models/Cosmos/Research/TeacherTrain.cs

@@ -9,7 +9,7 @@ namespace TEAMModelOS.SDK.Models
 
 
         /// <summary>
         /// <summary>
         ///省上标准  最终结果 0未认定,1合格,2优秀,3不合格,4其他
         ///省上标准  最终结果 0未认定,1合格,2优秀,3不合格,4其他
-        ///系统标准-2 其他 -1 未认定,0不合格,1合格,2优秀
+        ///系统标准 -2 其他 -1 未认定,0不合格,1合格,2优秀
         /// </summary>
         /// </summary>
         public int finalScore { get; set; } =-1;
         public int finalScore { get; set; } =-1;
         /// <summary>
         /// <summary>
@@ -122,6 +122,8 @@ namespace TEAMModelOS.SDK.Models
         /// 待更新的属性
         /// 待更新的属性
         /// </summary>
         /// </summary>
         public HashSet<string> update { get; set; } = new HashSet<string>();
         public HashSet<string> update { get; set; } = new HashSet<string>();
+        public string push { get; set; } 
+       
     }
     }
     public class TeacherTrainChange {
     public class TeacherTrainChange {
         /// <summary>
         /// <summary>

+ 2 - 1
TEAMModelOS.SDK/Models/Cosmos/Teacher/Teacher.cs

@@ -40,7 +40,7 @@ namespace TEAMModelOS.SDK.Models
             /// <summary>
             /// <summary>
             /// 用户来源
             /// 用户来源
             /// </summary>
             /// </summary>
-            //public string source { get; set; }
+            //public string path { get; set; }
 
 
             public string userid { get; set; }
             public string userid { get; set; }
             public string username { get; set; }
             public string username { get; set; }
@@ -75,6 +75,7 @@ namespace TEAMModelOS.SDK.Models
             public string userid { get; set; }
             public string userid { get; set; }
             public string username { get; set; }
             public string username { get; set; }
             public string account { get; set; }
             public string account { get; set; }
+            public string path { get; set; }
         }
         }
 
 
 
 

+ 46 - 1
TEAMModelOS.SDK/Models/Service/Third/ScApisService.cs

@@ -53,6 +53,19 @@ namespace TEAMModelOS.SDK
         public string DiagnosisDicNum { get; set; }
         public string DiagnosisDicNum { get; set; }
         public int ID { get; set; }
         public int ID { get; set; }
     }
     }
+    public class ScProject
+    {
+        public int ProjectID { get; set; }
+        public string ProjectTitle { get; set; }
+        public int ProjectItemID { get; set; }
+        public string ProjectItemTitle { get; set; }
+        public int TCount { get; set; }
+        public int IsQuota { get; set; }
+        public int IsDiagnosis { get; set; }
+        public int SchoolDiagnosisMinDimension { get; set; }
+        public int SchoolDiagnosisMinCount { get; set; }
+        public int TeacherDiagnosisMinDimension { get; set; }
+    }
     public class ScTeacher
     public class ScTeacher
     {
     {
         public int PXID { get; set; }
         public int PXID { get; set; }
@@ -76,8 +89,40 @@ namespace TEAMModelOS.SDK
         public string trainComID { get; set; }
         public string trainComID { get; set; }
         public string privateKey { get; set; }
         public string privateKey { get; set; }
         public string url { get; set; }
         public string url { get; set; }
+        public List<ScsProject> p { get; set; }= new List<ScsProject>();
+    }
+
+    public class ScsProjectDiagnosis
+    {
+        public ScsProject project { get; set; }
+        public List<ScPDiagnosis> diagnoses { get; set; }
+    }
+    public class ScPDiagnosis
+    {
+        public string DiagnosisName { get; set; }
+        public string DiagnosisNum { get; set; }
+        public int DiagnosisID { get; set; }
+    }
+
+    public class ScsProject
+    {
+        /// <summary>
+        /// 项目id
+        /// </summary>
+        public string pd { get; set; }
+        /// <summary>
+        /// 子项目id
+        /// </summary>
+        public string pid { get; set; }
+        /// <summary>
+        /// 项目名称
+        /// </summary>
+        public string pt { get; set; }
+        /// <summary>
+        /// 子项目名称
+        /// </summary>
+        public string pit { get; set; }
     }
     }
-   
     public class ScsResult
     public class ScsResult
     {
     {
         public bool result { get; set; }
         public bool result { get; set; }

+ 7 - 0
TEAMModelOS/ClientApp/src/view/abilityMgmt/Index.less

@@ -164,6 +164,13 @@
 						margin-left: 5px;
 						margin-left: 5px;
 						border: 1px solid #00A4E8;
 						border: 1px solid #00A4E8;
 					}
 					}
+					
+					.status-province{
+						background-color: transparent;
+						color: #e8980d;
+						margin-left: 5px;
+						border: 1px solid #e8980d;
+					}
 
 
 					.status-coedit {
 					.status-coedit {
 						background-color: #006f3c;
 						background-color: #006f3c;

+ 5 - 0
TEAMModelOS/ClientApp/src/view/abilityMgmt/Index.vue

@@ -21,6 +21,7 @@
 							{{ $t('ability.mgmt.ability') }} ({{ volumeList.length }})
 							{{ $t('ability.mgmt.ability') }} ({{ volumeList.length }})
 						</span>
 						</span>
 						<span class="syllabus-content-header-tools">
 						<span class="syllabus-content-header-tools">
+							<Tag v-if="hasProvinceAccess" color="gold" style="margin-right: 15px;margin-bottom: 5px;">已对接省平台</Tag>
 							<Icon type="md-search" :title="$t('syllabus.search')" @click="doSearchVolume"
 							<Icon type="md-search" :title="$t('syllabus.search')" @click="doSearchVolume"
 								v-if="volumeList.length" />
 								v-if="volumeList.length" />
 							<Icon type="md-settings" title="设置选修/必修/通识" @click="doSetCompulsory"
 							<Icon type="md-settings" title="设置选修/必修/通识" @click="doSetCompulsory"
@@ -53,6 +54,7 @@
 									{{ volume.name }}
 									{{ volume.name }}
 									<span class="status-idDel status-compulsory" v-if="volume.currency === 1">{{ $t('ability.mgmt.compulsory') }}</span>
 									<span class="status-idDel status-compulsory" v-if="volume.currency === 1">{{ $t('ability.mgmt.compulsory') }}</span>
 									<span class="status-idDel status-elective" v-if="volume.currency === 3">{{ '选修' }}</span>
 									<span class="status-idDel status-elective" v-if="volume.currency === 3">{{ '选修' }}</span>
+									<span class="status-idDel status-province" v-if="volume.currency === 4">{{ '省平台' }}</span>
 								</span>
 								</span>
 								<span style="float: right;font-size: 12px;color: #858585;"></span>
 								<span style="float: right;font-size: 12px;color: #858585;"></span>
 							</p>
 							</p>
@@ -2049,6 +2051,9 @@
 			hasAbilityAuth(){
 			hasAbilityAuth(){
 				let isAccess = sessionStorage.getItem('areaAccess') && sessionStorage.getItem('areaAccess') == 1
 				let isAccess = sessionStorage.getItem('areaAccess') && sessionStorage.getItem('areaAccess') == 1
 				return this.$route.name === 'areaAbilityMgmt' && !isAccess
 				return this.$route.name === 'areaAbilityMgmt' && !isAccess
+			},
+			hasProvinceAccess(){
+				return  sessionStorage.getItem('areaAccess') && sessionStorage.getItem('areaAccess') == 1
 			}
 			}
 		},
 		},
 		watch: {
 		watch: {

+ 4 - 3
TEAMModelOS/Controllers/Third/ScController.cs

@@ -565,9 +565,10 @@ namespace TEAMModelOS.Controllers.Third
                     pd = ProjectID,
                     pd = ProjectID,
                     pid = ProjectItemID,
                     pid = ProjectItemID,
                     pxid = scsso.Pxid,
                     pxid = scsso.Pxid,
-                    userid=scsso.tid,
-                    username=TeacherName,
-                    account = Account
+                    userid = scsso.tid,
+                    username = TeacherName,
+                    account = Account,
+                    path = path,
 
 
             };
             };
                 var data = bindData.ToJsonString();
                 var data = bindData.ToJsonString();

+ 3 - 3
TEAMModelOS/TEAMModelOS.csproj

@@ -40,9 +40,9 @@
     <SpaRoot>ClientApp\</SpaRoot>
     <SpaRoot>ClientApp\</SpaRoot>
     <DefaultItemExcludes>$(DefaultItemExcludes);$(SpaRoot)node_modules\**</DefaultItemExcludes>
     <DefaultItemExcludes>$(DefaultItemExcludes);$(SpaRoot)node_modules\**</DefaultItemExcludes>
     <UserSecretsId>078b5d89-7d90-4f6a-88fc-7d96025990a8</UserSecretsId>
     <UserSecretsId>078b5d89-7d90-4f6a-88fc-7d96025990a8</UserSecretsId>
-    <Version>5.2112.14</Version>
-    <AssemblyVersion>5.2112.14.1</AssemblyVersion>
-    <FileVersion>5.2112.14.1</FileVersion>
+    <Version>5.2112.17</Version>
+    <AssemblyVersion>5.2112.17.1</AssemblyVersion>
+    <FileVersion>5.2112.17.1</FileVersion>
     <Description>TEAMModelOS(IES5)版本更新。</Description>
     <Description>TEAMModelOS(IES5)版本更新。</Description>
     <PackageReleaseNotes>版本说明</PackageReleaseNotes>
     <PackageReleaseNotes>版本说明</PackageReleaseNotes>
   </PropertyGroup>
   </PropertyGroup>