|
@@ -3825,123 +3825,154 @@ namespace TEAMModelOS.Controllers.Analysis
|
|
|
examClassResults.Add(item);
|
|
|
|
|
|
}
|
|
|
- foreach (ExamClassResultDto e in examClassResultDto)
|
|
|
+ ExamInfo info = await client.GetContainer("TEAMModelOS", "Common").ReadItemAsync<ExamInfo>(id.ToString(), new PartitionKey($"Exam-{code}"));
|
|
|
+ if (info == null)
|
|
|
{
|
|
|
- foreach (ExamClassResult ex in examClassResults)
|
|
|
+ return Ok(new { code = 404, msg = "请先录入评测数据" });
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ foreach (ExamClassResultDto e in examClassResultDto)
|
|
|
{
|
|
|
- if (e.subject.Equals(ex.subjectId))
|
|
|
+ int no = 0;
|
|
|
+ foreach (ExamSubject sub in info.subjects)
|
|
|
{
|
|
|
- foreach (ClassResults examClass in e.examClassResult)
|
|
|
+ if (!sub.id.Equals(e.subject))
|
|
|
{
|
|
|
- if (examClass.classInfo.id.Equals(ex.info.id))
|
|
|
+ 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)
|
|
|
{
|
|
|
- ex.studentIds = examClass.studentIds;
|
|
|
- List<List<double>> newScores = new List<List<double>>();
|
|
|
- examClass.studentScores.ForEach(sc =>
|
|
|
+ if (examClass.classInfo.id.Equals(ex.info.id))
|
|
|
{
|
|
|
- List<double> scores = new List<double>();
|
|
|
- if (sc.Count == 0)
|
|
|
+ ex.studentIds = examClass.studentIds;
|
|
|
+ List<List<double>> newScores = new List<List<double>>();
|
|
|
+ examClass.studentScores.ForEach(sc =>
|
|
|
{
|
|
|
- for (int i = 0; i < ex.studentScores[0].Count; i++)
|
|
|
+ List<double> scores = new List<double>();
|
|
|
+ if (sc.Count == 0)
|
|
|
{
|
|
|
- scores.Add(0);
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- sc.ForEach(s =>
|
|
|
- {
|
|
|
- scores.Add(double.Parse(s));
|
|
|
- });
|
|
|
- }
|
|
|
- newScores.Add(scores);
|
|
|
- });
|
|
|
- ex.studentScores = newScores;
|
|
|
- int index = 0;
|
|
|
- List<Task<string>> tasks = new List<Task<string>>();
|
|
|
- foreach (List<string> an in examClass.studentAnswers)
|
|
|
- {
|
|
|
- List<List<string>> answers = new List<List<string>>();
|
|
|
- //List<List<string>> stuAns = new List<List<string>>();
|
|
|
- an.ForEach(aa =>
|
|
|
- {
|
|
|
- List<string> ans = new List<string>();
|
|
|
- if (aa.Length > 1)
|
|
|
- {
|
|
|
- char[] str = aa.ToCharArray();
|
|
|
- foreach (char a in aa)
|
|
|
+ for (int i = 0; i < ex.studentScores[0].Count; i++)
|
|
|
{
|
|
|
- switch (a)
|
|
|
- {
|
|
|
- case '1':
|
|
|
- ans.Add("A");
|
|
|
- break;
|
|
|
- case '2':
|
|
|
- ans.Add("B");
|
|
|
- break;
|
|
|
- case '3':
|
|
|
- ans.Add("C");
|
|
|
- break;
|
|
|
- case '4':
|
|
|
- ans.Add("D");
|
|
|
- break;
|
|
|
- case '5':
|
|
|
- ans.Add("E");
|
|
|
- break;
|
|
|
- case '6':
|
|
|
- ans.Add("F");
|
|
|
- break;
|
|
|
- default:
|
|
|
- ans.Add("");
|
|
|
- break;
|
|
|
- }
|
|
|
+ scores.Add(0);
|
|
|
}
|
|
|
- answers.Add(ans);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- switch (aa)
|
|
|
+ sc.ForEach(s =>
|
|
|
{
|
|
|
- case "1":
|
|
|
- ans.Add("A");
|
|
|
- break;
|
|
|
- case "2":
|
|
|
- ans.Add("B");
|
|
|
- break;
|
|
|
- case "3":
|
|
|
- ans.Add("C");
|
|
|
- break;
|
|
|
- case "4":
|
|
|
- ans.Add("D");
|
|
|
- break;
|
|
|
- case "5":
|
|
|
- ans.Add("E");
|
|
|
- break;
|
|
|
- case "6":
|
|
|
- ans.Add("F");
|
|
|
- break;
|
|
|
- default:
|
|
|
- ans.Add("");
|
|
|
- break;
|
|
|
- }
|
|
|
- answers.Add(ans);
|
|
|
+ scores.Add(double.Parse(s));
|
|
|
+ });
|
|
|
}
|
|
|
- //answers.Add(stuAns);
|
|
|
+ newScores.Add(scores);
|
|
|
});
|
|
|
- ex.ans[index] = answers;
|
|
|
- string FileName = ex.examId + "/" + ex.subjectId + "/" + examClass.studentIds[index];
|
|
|
- string blob = FileName + "/" + "ans.json";
|
|
|
- tasks.Add(_azureStorage.UploadFileByContainer(ex.school.ToString(), answers.ToJsonString(), "exam", FileName + "/" + "ans.json"));
|
|
|
- ex.studentAnswers[index].Clear();
|
|
|
- ex.studentAnswers[index].Add(blob);
|
|
|
- index++;
|
|
|
+ ex.studentScores = newScores;
|
|
|
+ int index = 0;
|
|
|
+ List<Task<string>> tasks = new List<Task<string>>();
|
|
|
+ foreach (List<string> an in examClass.studentAnswers)
|
|
|
+ {
|
|
|
+
|
|
|
+ List<List<string>> answers = new List<List<string>>();
|
|
|
+ //存放客观题答案
|
|
|
+ List<List<string>> objective = new List<List<string>>();
|
|
|
+ //判断此题是否为主观题作答
|
|
|
+ if (standard[index].Count == 0)
|
|
|
+ {
|
|
|
+ answers.Add(an);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ an.ForEach(aa =>
|
|
|
+ {
|
|
|
+ List<string> ans = new List<string>();
|
|
|
+ if (aa.Length > 1)
|
|
|
+ {
|
|
|
+ char[] str = aa.ToCharArray();
|
|
|
+ foreach (char a in aa)
|
|
|
+ {
|
|
|
+ switch (a)
|
|
|
+ {
|
|
|
+ case '1':
|
|
|
+ ans.Add("A");
|
|
|
+ break;
|
|
|
+ case '2':
|
|
|
+ ans.Add("B");
|
|
|
+ break;
|
|
|
+ case '3':
|
|
|
+ ans.Add("C");
|
|
|
+ break;
|
|
|
+ case '4':
|
|
|
+ ans.Add("D");
|
|
|
+ break;
|
|
|
+ case '5':
|
|
|
+ ans.Add("E");
|
|
|
+ break;
|
|
|
+ case '6':
|
|
|
+ ans.Add("F");
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ ans.Add("");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ objective.Add(ans);
|
|
|
+ answers.Add(ans);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ switch (aa)
|
|
|
+ {
|
|
|
+ case "1":
|
|
|
+ ans.Add("A");
|
|
|
+ break;
|
|
|
+ case "2":
|
|
|
+ ans.Add("B");
|
|
|
+ break;
|
|
|
+ case "3":
|
|
|
+ ans.Add("C");
|
|
|
+ break;
|
|
|
+ case "4":
|
|
|
+ ans.Add("D");
|
|
|
+ break;
|
|
|
+ case "5":
|
|
|
+ ans.Add("E");
|
|
|
+ break;
|
|
|
+ case "6":
|
|
|
+ ans.Add("F");
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ ans.Add("");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ objective.Add(ans);
|
|
|
+ answers.Add(ans);
|
|
|
+ }
|
|
|
+ //answers.Add(stuAns);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ ex.ans[index] = objective;
|
|
|
+ string FileName = ex.examId + "/" + ex.subjectId + "/" + examClass.studentIds[index];
|
|
|
+ string blob = FileName + "/" + "ans.json";
|
|
|
+ tasks.Add(_azureStorage.UploadFileByContainer(ex.school.ToString(), answers.ToJsonString(), "exam", FileName + "/" + "ans.json"));
|
|
|
+ ex.studentAnswers[index].Clear();
|
|
|
+ ex.studentAnswers[index].Add(blob);
|
|
|
+ index++;
|
|
|
+ }
|
|
|
+ await Task.WhenAll(tasks);
|
|
|
}
|
|
|
- await Task.WhenAll(tasks);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
foreach (ExamClassResult result in examClassResults)
|
|
|
{
|
|
|
result.progress = true;
|