This commit is contained in:
Lqc 2025-09-03 16:17:06 +08:00
parent d294bfc606
commit 27dabcce7a

View File

@ -320,11 +320,10 @@ public class AiolExamController extends JeecgController<AiolExam, IAiolExamServi
updateWrapper.set(AiolExamRecord::getDeviceInfo, examRecord.getDeviceInfo());
}
// 阅卷
List<AiolExamAnswer> gradedAnswers = gradeExam(examRecord.getExamId(), examRecord.getUserId());
List<AiolExamAnswer> gradedAnswers = gradeExam(examRecord.getExamId(), examRecord.getUserId(), updateWrapper);
examAnswerService.updateBatchById(gradedAnswers);
// 更新考试状态提交时间
updateWrapper.
set(AiolExamRecord::getStatus,1).
set(AiolExamRecord::getSubmittedAt, new Date());
// 更新
return examRecordService.update(updateWrapper) ? Result.OK() : Result.error("提交考试失败");
@ -738,9 +737,10 @@ public class AiolExamController extends JeecgController<AiolExam, IAiolExamServi
* 批量阅卷
* @param examId 考试ID
* @param userId 用户ID
*
* @return 阅卷后的答题列表
*/
private List<AiolExamAnswer> gradeExam(String examId, String userId) {
private List<AiolExamAnswer> gradeExam(String examId, String userId , LambdaUpdateWrapper<AiolExamRecord> updateWrapper) {
//获取试卷信息
AiolExam exam = examService.getById(examId);
//获取组卷信息
@ -832,6 +832,7 @@ public class AiolExamController extends JeecgController<AiolExam, IAiolExamServi
));
// 遍历学生的答案进行评分
Double totalPoint = 0.0;
for (AiolExamAnswer examAnswer : examAnswerList) {
String studentAnswer = examAnswer.getAnswer();
AiolQuestion question = questionMap.get(examAnswer.getQuestionId());
@ -936,13 +937,21 @@ public class AiolExamController extends JeecgController<AiolExam, IAiolExamServi
}
break;
}
totalPoint += score;
examAnswer.setScore(score);
// 只有得了满分才算对
examAnswer.setIzCorrect(score > 0 && score == (paper.getGenerateMode() == 0 ?
questionScoreMap.get(question.getId()) :
ruleJson.getDouble("type" + question.getType() + "_score")) ? 1 : 0);
}
if(paper.getRequireReview()==1){
updateWrapper
.set(AiolExamRecord::getStatus, 1);
}else {
updateWrapper
.set(AiolExamRecord::getStatus, 2)
.set(AiolExamRecord::getTotalScore, totalPoint);
}
return examAnswerList;
}