|
@@ -168,10 +168,248 @@ namespace TEAMModelOS.Controllers
|
|
_configuration = configuration;
|
|
_configuration = configuration;
|
|
_thirdApisService = thirdApisService;
|
|
_thirdApisService = thirdApisService;
|
|
}
|
|
}
|
|
-
|
|
|
|
[ProducesDefaultResponseType]
|
|
[ProducesDefaultResponseType]
|
|
- [HttpPost("check")]
|
|
|
|
|
|
+ [HttpPost("push-leave")]
|
|
|
|
+ public async Task<IActionResult> PushLeave(JsonElement json) {
|
|
|
|
+ var client = _azureCosmos.GetCosmosClient();
|
|
|
|
+ JsonElement areaIdJson = json.GetProperty("areaId");
|
|
|
|
+ // JsonElement school = json.GetProperty("school");
|
|
|
|
+ Dictionary<string, Dictionary<string, object>> pushDatas = new Dictionary<string, Dictionary<string, object>>();
|
|
|
|
+ List<string> pushTeachers = json.GetProperty("leaveTeacher").ToObject<List<string>>();
|
|
|
|
+ List<string> pushPxids = json.GetProperty("pushPxids").ToObject<List<string>>();
|
|
|
|
+ AreaSetting areaSetting = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Normal).ReadItemAsync<AreaSetting>($"{areaIdJson}", new PartitionKey("AreaSetting"));
|
|
|
|
+ ScAccessConfig config = areaSetting.accessConfig.ToObject<ScAccessConfig>();
|
|
|
|
+ Dictionary<string, dynamic> checkDatas = new Dictionary<string, dynamic>();
|
|
|
|
+ var table = _azureStorage.GetCloudTableClient().GetTableReference("ScYxpt");
|
|
|
|
+ List<ScTeacher> scTeachers = new List<ScTeacher>();
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ List<string> Codes = new List<string>();
|
|
|
|
+ if (pushTeachers.IsNotEmpty())
|
|
|
|
+ {
|
|
|
|
+ pushTeachers.ForEach(tch => {
|
|
|
|
+ Codes.Add($" tmdid {QueryComparisons.Equal} '{tch}' ");
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ if (pushPxids.IsNotEmpty())
|
|
|
|
+ {
|
|
|
|
+ pushPxids.ForEach(pxid => {
|
|
|
|
+ Codes.Add($"RowKey {QueryComparisons.Equal} '{pxid}' ");
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ string tbqurey = $"PartitionKey {QueryComparisons.Equal} 'ScTeacher' and areaId {QueryComparisons.Equal} '{areaIdJson}' and ( {string.Join(" or ", Codes)} ) ";
|
|
|
|
+ var result = await table.ExecuteQuerySegmentedAsync(new TableQuery<ScTeacher>().Where(tbqurey), null);
|
|
|
|
+ scTeachers = result.Results;
|
|
|
|
+
|
|
|
|
+ HashSet<TeacherTrain> updatePush = new HashSet<TeacherTrain>();
|
|
|
|
+ //5.3.1.12学员培训基本情况批量回写-UpdateTeacherListSituation
|
|
|
|
+ List<TeacherTrain> trains53112OK = new List<TeacherTrain>();
|
|
|
|
+ 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);
|
|
|
|
+ foreach (var t in scTeachers) {
|
|
|
|
+ Dictionary<string, object> pushData = new Dictionary<string, object>();
|
|
|
|
+ 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", $"0");
|
|
|
|
+ parameterMapData.Add("ResearchText","");
|
|
|
|
+ /// <summary>
|
|
|
|
+ ///省上标准 最终结果 0未认定,1合格,2优秀,3不合格,4其他
|
|
|
|
+ ///系统标准 -2 其他 -1 未认定,0不合格,1合格,2优秀
|
|
|
|
+ /// </summary>
|
|
|
|
+ string ComPassed = "3";
|
|
|
|
+ parameterMapData.Add("ComPassed", ComPassed);//0、未认定 1、合格 2、优秀 3、不合格 4、其他
|
|
|
|
+ pushData.Add("success-UpdateTeacherListSituation", parameterMapData);
|
|
|
|
+ list53112.Add(parameterMapData);
|
|
|
|
+ if (!string.IsNullOrWhiteSpace(t.tmdid)) {
|
|
|
|
+ TeacherTrain teacherTrain= await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS,Constant.Teacher).ReadItemAsync<TeacherTrain>(t.tmdid,new PartitionKey($"TeacherTrain-{t.schoolCode}"));
|
|
|
|
+ teacherTrain.pushes.Add("53112");
|
|
|
|
+ teacherTrain.pushes.Add("53113");
|
|
|
|
+ teacherTrain.pushes.Add("53117");
|
|
|
|
+ teacherTrain.pushes.Add("53122");
|
|
|
|
+ trains53112OK.Add(teacherTrain);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ ScsResult UpdateTeacherListSituation = null;
|
|
|
|
+ if (list53112.IsNotEmpty())
|
|
|
|
+ {
|
|
|
|
+ UpdateTeacherListSituation = await _thirdApisService.Post(config.url, "UpdateTeacherListSituation", config.passKey, config.privateKey, parameterContent53112);
|
|
|
|
+ UpdateTeacherListSituation.bizcode = "UpdateTeacherListSituation";
|
|
|
|
+ UpdateTeacherListSituation.title = "5.3.1.12学员培训基本情况批量回写";
|
|
|
|
+ if (UpdateTeacherListSituation.result) {
|
|
|
|
+ foreach (var teacherTrain in trains53112OK)
|
|
|
|
+ {
|
|
|
|
+ await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).ReplaceItemAsync(teacherTrain, teacherTrain.id, new PartitionKey(teacherTrain.code));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ return Ok(UpdateTeacherListSituation);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ [ProducesDefaultResponseType]
|
|
|
|
+ [HttpPost("push-check")]
|
|
public async Task<IActionResult> PushCheck(JsonElement json) {
|
|
public async Task<IActionResult> PushCheck(JsonElement json) {
|
|
|
|
+ var client = _azureCosmos.GetCosmosClient();
|
|
|
|
+ JsonElement areaIdJson = json.GetProperty("areaId");
|
|
|
|
+ // JsonElement school = json.GetProperty("school");
|
|
|
|
+ JsonElement schoolsJson = json.GetProperty("schools");
|
|
|
|
+ Dictionary<string, Dictionary<string, object>> pushDatas = new Dictionary<string, Dictionary<string, object>>();
|
|
|
|
+ List<string> pushTeachers = json.GetProperty("pushTeachers").ToObject<List<string>>();
|
|
|
|
+
|
|
|
|
+ AreaSetting areaSetting = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Normal).ReadItemAsync<AreaSetting>($"{areaIdJson}", new PartitionKey("AreaSetting"));
|
|
|
|
+ ScAccessConfig config = areaSetting.accessConfig.ToObject<ScAccessConfig>();
|
|
|
|
+ Dictionary<string, dynamic> checkDatas = new Dictionary<string, dynamic>();
|
|
|
|
+ var table = _azureStorage.GetCloudTableClient().GetTableReference("ScYxpt");
|
|
|
|
+ List<ScTeacher> scTeachers = new List<ScTeacher>();
|
|
|
|
+ List<ScTeacherDiagnosis> scTeacherDiagnoses = new List<ScTeacherDiagnosis>();
|
|
|
|
+ if (pushTeachers.IsNotEmpty())
|
|
|
|
+ {
|
|
|
|
+ List<string> Codes = new List<string>();
|
|
|
|
+ pushTeachers.ForEach(tch => {
|
|
|
|
+ Codes.Add($" tmdid {QueryComparisons.Equal} '{tch}' ");
|
|
|
|
+ });
|
|
|
|
+ string tbqurey = $"PartitionKey {QueryComparisons.Equal} 'ScTeacher' and areaId {QueryComparisons.Equal} '{areaIdJson}' and ( {string.Join(" or ", Codes)} ) ";
|
|
|
|
+ var result = await table.ExecuteQuerySegmentedAsync(new TableQuery<ScTeacher>().Where(tbqurey), null);
|
|
|
|
+ scTeachers = result.Results;
|
|
|
|
+
|
|
|
|
+ List<string> Pxids = new List<string>();
|
|
|
|
+ scTeachers.ForEach(tch => {
|
|
|
|
+ Pxids.Add($" RowKey {QueryComparisons.Equal} '{tch.PXID}' ");
|
|
|
|
+ });
|
|
|
|
+ string ditbqurey = $"PartitionKey {QueryComparisons.Equal} 'ScTeacherDiagnosis' and areaId {QueryComparisons.Equal} '{areaIdJson}' and ( {string.Join(" or ", Pxids)} ) ";
|
|
|
|
+ var diresult = await table.ExecuteQuerySegmentedAsync(new TableQuery<ScTeacherDiagnosis>().Where(ditbqurey), null);
|
|
|
|
+ scTeacherDiagnoses = diresult.Results;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ scTeachers = await table.FindListByDict<ScTeacher>(new Dictionary<string, object> { { "PartitionKey", "ScTeacher" }, { "areaId", $"{areaIdJson}" } });
|
|
|
|
+ scTeacherDiagnoses = await table.FindListByDict<ScTeacherDiagnosis>(new Dictionary<string, object> { { "PartitionKey", "ScTeacherDiagnosis" }, { "areaId", $"{areaIdJson}" } });
|
|
|
|
+ }
|
|
|
|
+ var teammodelossas = _azureStorage.GetBlobContainerSAS99Year("teammodelos", Azure.Storage.Sas.BlobContainerSasPermissions.Read);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ List<PushFail> failse = new List<PushFail>();
|
|
|
|
+ List<string> schools = schoolsJson.ToObject<List<string>>();
|
|
|
|
+ foreach (var school in schools)
|
|
|
|
+ {
|
|
|
|
+ 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 (pushTeachers.IsNotEmpty())
|
|
|
|
+ {
|
|
|
|
+ members = members.FindAll(x => pushTeachers.Contains(x.id));
|
|
|
|
+ }
|
|
|
|
+ if (members.IsNotEmpty())
|
|
|
|
+ {
|
|
|
|
+ queryText = new StringBuilder($"SELECT distinct value(c) FROM c where 1=1 " +
|
|
|
|
+ $"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);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ int pages = (trains.Count + 99) / 100; //pages = (total + max -1) / max;
|
|
|
|
+ var schoolsas = _azureStorage.GetBlobContainerSAS99Year($"{school}", Azure.Storage.Sas.BlobContainerSasPermissions.Read);
|
|
|
|
+ HashSet<TeacherTrain> updatePush = new HashSet<TeacherTrain>();
|
|
|
|
+ for (int i = 0; i < pages; i++)
|
|
|
|
+ {
|
|
|
|
+ List<TeacherTrain> lists = trains.Skip((i) * 50).Take(50).ToList();
|
|
|
|
+ //5.3.1.12学员培训基本情况批量回写-UpdateTeacherListSituation
|
|
|
|
+ List<TeacherTrain> trains53112OK = new List<TeacherTrain>();
|
|
|
|
+ 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>();
|
|
|
|
+ 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>();
|
|
|
|
+ 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>();
|
|
|
|
+ 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);
|
|
|
|
+ //装载数据
|
|
|
|
+ List<Task> tasks = new List<Task>();
|
|
|
|
+ lists.ForEach(x =>
|
|
|
|
+ {
|
|
|
|
+ tasks.Add(CheckTeacher(x, scTeachers, scTeacherDiagnoses, $"{school}", schoolsas, list53112, list53113, list53117, list53122, teammodelossas, pushDatas, failse, updatePush));
|
|
|
|
+ });
|
|
|
|
+ await Task.WhenAll(tasks);
|
|
|
|
+ //推送数据
|
|
|
|
+ }
|
|
|
|
+ pushDatas.Keys.ToList().ForEach(x => {
|
|
|
|
+ if (pushDatas[x].Keys.Any())
|
|
|
|
+ {
|
|
|
|
+ Dictionary<string, dynamic> dict = new Dictionary<string, dynamic>();
|
|
|
|
+ dict.Add($"tmdid", x);
|
|
|
|
+
|
|
|
|
+ List<string> types = new List<string>();
|
|
|
|
+ pushDatas[x].Keys.ToList().ForEach(y => {
|
|
|
|
+ if (y.Contains("fail-"))
|
|
|
|
+ {
|
|
|
|
+ types.Add(y);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ dict.Add($"msg", pushDatas[x][pushDatas[x].Keys.First()]);
|
|
|
|
+ dict.Add($"types", types);
|
|
|
|
+ if (types.Any())
|
|
|
|
+ {
|
|
|
|
+ checkDatas[x] = dict;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ List<PushFail> fails = new List<PushFail>();
|
|
|
|
+ failse.ForEach(x =>
|
|
|
|
+ {
|
|
|
|
+ var f = fails.FindAll(y => y.tmdid.Equals(x.tmdid));
|
|
|
|
+ if (f.IsNotEmpty())
|
|
|
|
+ {
|
|
|
|
+ f.ForEach(ff => {
|
|
|
|
+ ff.type = $"{ff.type},{x.type}";
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ x.msgs.ForEach(msg =>
|
|
|
|
+ {
|
|
|
|
+ fails.Add(new PushFail { tmdid = x.tmdid, name = x.name, school = x.school, schoolname = x.schoolname, code = msg.code, msg = msg.value, type = x.type });
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ return Ok(new { data = new { fails } });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ [ProducesDefaultResponseType]
|
|
|
|
+ [HttpPost("push")]
|
|
|
|
+ public async Task<IActionResult> Push(JsonElement json) {
|
|
|
|
|
|
var client = _azureCosmos.GetCosmosClient();
|
|
var client = _azureCosmos.GetCosmosClient();
|
|
JsonElement areaIdJson = json.GetProperty("areaId");
|
|
JsonElement areaIdJson = json.GetProperty("areaId");
|
|
@@ -752,7 +990,7 @@ namespace TEAMModelOS.Controllers
|
|
|
|
|
|
[ProducesDefaultResponseType]
|
|
[ProducesDefaultResponseType]
|
|
[HttpPost("sc-check")]
|
|
[HttpPost("sc-check")]
|
|
- public async Task<IActionResult> css(JsonElement json)
|
|
|
|
|
|
+ public async Task<IActionResult> ScCheck(JsonElement json)
|
|
{
|
|
{
|
|
var client = _azureCosmos.GetCosmosClient();
|
|
var client = _azureCosmos.GetCosmosClient();
|
|
JsonElement areaIdJson = json.GetProperty("areaId");
|
|
JsonElement areaIdJson = json.GetProperty("areaId");
|
|
@@ -792,12 +1030,10 @@ namespace TEAMModelOS.Controllers
|
|
else {
|
|
else {
|
|
scTeachers = await table.FindListByDict<ScTeacher>(new Dictionary<string, object> { { "PartitionKey", "ScTeacher" }, { "areaId", $"{areaIdJson}" } });
|
|
scTeachers = await table.FindListByDict<ScTeacher>(new Dictionary<string, object> { { "PartitionKey", "ScTeacher" }, { "areaId", $"{areaIdJson}" } });
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
List<PushData> ycData= new List<PushData>();
|
|
List<PushData> ycData= new List<PushData>();
|
|
List<PushData> datas = new List<PushData>();
|
|
List<PushData> datas = new List<PushData>();
|
|
List<Task> tasks = new List<Task>();
|
|
List<Task> tasks = new List<Task>();
|
|
-
|
|
|
|
scTeachers.ForEach(sc =>
|
|
scTeachers.ForEach(sc =>
|
|
{
|
|
{
|
|
tasks.Add(GetYxData(config, sc, datas));
|
|
tasks.Add(GetYxData(config, sc, datas));
|
|
@@ -805,6 +1041,7 @@ namespace TEAMModelOS.Controllers
|
|
await tasks.TaskPage(100);
|
|
await tasks.TaskPage(100);
|
|
List<KeyValuePair<string, string>> htmls = new List<KeyValuePair<string, string>>();
|
|
List<KeyValuePair<string, string>> htmls = new List<KeyValuePair<string, string>>();
|
|
var group= datas.GroupBy(x => x.teacherInfo.SchoolName);
|
|
var group= datas.GroupBy(x => x.teacherInfo.SchoolName);
|
|
|
|
+ List<dynamic> okd = new List<dynamic>();
|
|
foreach (var groupData in group) {
|
|
foreach (var groupData in group) {
|
|
int joinCount = groupData.ToList().Count();
|
|
int joinCount = groupData.ToList().Count();
|
|
//0、未认定 1、合格 2、优秀 3、不合格 4、其他
|
|
//0、未认定 1、合格 2、优秀 3、不合格 4、其他
|
|
@@ -812,14 +1049,7 @@ namespace TEAMModelOS.Controllers
|
|
int hgCount = groupData.ToList().Where(x => x.teacherInfo.ComPassed == 1).Count();
|
|
int hgCount = groupData.ToList().Where(x => x.teacherInfo.ComPassed == 1).Count();
|
|
var yc = groupData.ToList().Where(x => x.teacherInfo.ComPassed != 2 && x.teacherInfo.ComPassed != 1);
|
|
var yc = groupData.ToList().Where(x => x.teacherInfo.ComPassed != 2 && x.teacherInfo.ComPassed != 1);
|
|
int ycCount = yc.Count();
|
|
int ycCount = yc.Count();
|
|
- string shtml = html;
|
|
|
|
- shtml= shtml.Replace("{{projectItemTitle}}", config.p.First().pit)
|
|
|
|
- .Replace("{{schoolName}}",groupData.Key)
|
|
|
|
- .Replace("{{joinCount}}",$"{joinCount}")
|
|
|
|
- .Replace("{{yxCount}}", $"{yxCount}")
|
|
|
|
- .Replace("{{hgCount}}", $"{hgCount}")
|
|
|
|
- .Replace("{{ycCount}}", $"{ycCount}");
|
|
|
|
- StringBuilder eachData = new StringBuilder();
|
|
|
|
|
|
+ okd.Add(new { schoolName = groupData.Key, joinCount, yxCount, hgCount, ycCount });
|
|
if (yc.Any()) {
|
|
if (yc.Any()) {
|
|
foreach (var bu in yc)
|
|
foreach (var bu in yc)
|
|
{
|
|
{
|
|
@@ -851,9 +1081,9 @@ namespace TEAMModelOS.Controllers
|
|
ycData.AddRange(yc);
|
|
ycData.AddRange(yc);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- List<dynamic> dynamics = new List<dynamic>();
|
|
|
|
|
|
+ List<dynamic> ycd = new List<dynamic>();
|
|
ycData.ForEach(data => {
|
|
ycData.ForEach(data => {
|
|
- dynamics.Add(new {
|
|
|
|
|
|
+ ycd.Add(new {
|
|
data.teacherInfo.TeacherName,
|
|
data.teacherInfo.TeacherName,
|
|
data.teacherInfo.tmdid,
|
|
data.teacherInfo.tmdid,
|
|
data.teacherInfo.SchoolName,
|
|
data.teacherInfo.SchoolName,
|
|
@@ -863,9 +1093,8 @@ namespace TEAMModelOS.Controllers
|
|
data.teacherInfo.ComPassedTime
|
|
data.teacherInfo.ComPassedTime
|
|
});
|
|
});
|
|
});
|
|
});
|
|
- return Ok(dynamics);
|
|
|
|
|
|
+ return Ok(new { ycData= ycd, okData = okd });
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
public class DiagnosisInfoItem
|
|
public class DiagnosisInfoItem
|