|
@@ -3870,7 +3870,7 @@ namespace TEAMModelOS.Controllers.Analysis
|
|
{
|
|
{
|
|
sc.ForEach(s =>
|
|
sc.ForEach(s =>
|
|
{
|
|
{
|
|
- scores.Add(double.Parse(s));
|
|
|
|
|
|
+ scores.Add(s);
|
|
});
|
|
});
|
|
}
|
|
}
|
|
newScores.Add(scores);
|
|
newScores.Add(scores);
|
|
@@ -4181,6 +4181,104 @@ namespace TEAMModelOS.Controllers.Analysis
|
|
return BadRequest();
|
|
return BadRequest();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ [HttpPost("import-exam")]
|
|
|
|
+ public async Task<IActionResult> importExam(JsonElement request)
|
|
|
|
+ {
|
|
|
|
+ //获取评测的ID
|
|
|
|
+ if (!request.TryGetProperty("exam", out JsonElement exam)) return BadRequest();
|
|
|
|
+ if (!request.TryGetProperty("code", out JsonElement code)) return BadRequest();
|
|
|
|
+ try
|
|
|
|
+ {
|
|
|
|
+ var client = _azureCosmos.GetCosmosClient();
|
|
|
|
+ ExamInfo info = exam.ToObject<ExamInfo>();
|
|
|
|
+ info.progress = "going";
|
|
|
|
+ await client.GetContainer("TEAMModelOS", "Common").UpsertItemAsync(info, new PartitionKey($"Exam-{code}"));
|
|
|
|
+ return Ok(new { info });
|
|
|
|
+ }
|
|
|
|
+ catch (Exception e)
|
|
|
|
+ {
|
|
|
|
+ await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/import-exam()\n{e.Message}", GroupNames.醍摩豆服務運維群組);
|
|
|
|
+ return BadRequest();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ [HttpPost("import-result")]
|
|
|
|
+ public async Task<IActionResult> importResult(JsonElement request)
|
|
|
|
+ {
|
|
|
|
+ //获取评测的ID
|
|
|
|
+ if (!request.TryGetProperty("classResult", out JsonElement classResult)) return BadRequest();
|
|
|
|
+ if (!request.TryGetProperty("id", out JsonElement id)) return BadRequest();
|
|
|
|
+ if (!request.TryGetProperty("code", out JsonElement code)) return BadRequest();
|
|
|
|
+ try
|
|
|
|
+ {
|
|
|
|
+ var client = _azureCosmos.GetCosmosClient();
|
|
|
|
+ List<ExamClassResultDto> examClassResultDto = new();
|
|
|
|
+ examClassResultDto = classResult.ToObject<List<ExamClassResultDto>>();
|
|
|
|
+ //获取本次评测所有班级作答结果
|
|
|
|
+ List<ExamClassResult> examClassResults = new();
|
|
|
|
+ var queryClass = $"select value(c) from c where c.examId = '{id}'";
|
|
|
|
+ await foreach (var item in client.GetContainer("TEAMModelOS", "Common").GetItemQueryIterator<ExamClassResult>(queryText: queryClass, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"ExamClassResult-{code}") }))
|
|
|
|
+ {
|
|
|
|
+ examClassResults.Add(item);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ ExamInfo info = await client.GetContainer("TEAMModelOS", "Common").ReadItemAsync<ExamInfo>(id.ToString(), new PartitionKey($"Exam-{code}"));
|
|
|
|
+ List<Task<ItemResponse<ExamClassResult>>> tasks = new();
|
|
|
|
+ if (info == null)
|
|
|
|
+ {
|
|
|
|
+ return Ok(new { code = 404, msg = "请先录入评测数据" });
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ foreach (ExamClassResultDto e in examClassResultDto)
|
|
|
|
+ {
|
|
|
|
+ int no = 0;
|
|
|
|
+ foreach (ExamSubject sub in info.subjects)
|
|
|
|
+ {
|
|
|
|
+ if (!sub.id.Equals(e.subject))
|
|
|
|
+ {
|
|
|
|
+ no++;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //获取标准答案
|
|
|
|
+ List<List<string>> standard = new();
|
|
|
|
+ standard = info.papers[no].answers;
|
|
|
|
+
|
|
|
|
+ foreach (ExamClassResult ex in examClassResults)
|
|
|
|
+ {
|
|
|
|
+ if (e.subject.Equals(ex.subjectId))
|
|
|
|
+ {
|
|
|
|
+ foreach (ClassResults examClass in e.examClassResult)
|
|
|
|
+ {
|
|
|
|
+ if (examClass.classInfo.id.Equals(ex.info.id))
|
|
|
|
+ {
|
|
|
|
+ ex.studentIds = examClass.studentIds;
|
|
|
|
+ ex.studentScores = examClass.studentScores;
|
|
|
|
+ //ex.studentAnswers = examClass.studentAnswers;
|
|
|
|
+ ex.ans = examClass.ans;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ foreach (ExamClassResult result in examClassResults)
|
|
|
|
+ {
|
|
|
|
+ result.progress = true;
|
|
|
|
+ tasks.Add(client.GetContainer("TEAMModelOS", "Common").ReplaceItemAsync(result, result.id, new PartitionKey($"{result.code}")));
|
|
|
|
+ }
|
|
|
|
+ await Task.WhenAll(tasks);
|
|
|
|
+ return Ok(new { examClassResults });
|
|
|
|
+ }
|
|
|
|
+ catch (Exception e)
|
|
|
|
+ {
|
|
|
|
+ await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/import-result()\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
|
|
|
|
+ return BadRequest();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//private List<Dictionary<string, dynamic>> getKnowledgePoint(List<ExamResult> examResults, ExamInfo info)
|
|
//private List<Dictionary<string, dynamic>> getKnowledgePoint(List<ExamResult> examResults, ExamInfo info)
|