|
@@ -626,6 +626,10 @@ public class MarkServiceImpl implements MarkService {
|
|
}
|
|
}
|
|
|
|
|
|
private Boolean getAiMarked(MarkQuestion markQuestion, Integer taskNumber) {
|
|
private Boolean getAiMarked(MarkQuestion markQuestion, Integer taskNumber) {
|
|
|
|
+ // 未设置AI智能评卷参数,全部为人评任务
|
|
|
|
+ if (!markAiQuestionParamService.existMarkAiQuestionPointOrLevel(markQuestion.getExamId(), markQuestion.getPaperNumber(), markQuestion.getId())) {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
if (MarkPaperAiMark.NONE.equals(markQuestion.getAiMark())) {
|
|
if (MarkPaperAiMark.NONE.equals(markQuestion.getAiMark())) {
|
|
return false;
|
|
return false;
|
|
} else if (MarkPaperAiMark.AI_ONLY.equals(markQuestion.getAiMark()) || MarkPaperAiMark.MAN_MACHINE.equals(markQuestion.getAiMark())) {
|
|
} else if (MarkPaperAiMark.AI_ONLY.equals(markQuestion.getAiMark()) || MarkPaperAiMark.MAN_MACHINE.equals(markQuestion.getAiMark())) {
|
|
@@ -1589,19 +1593,29 @@ public class MarkServiceImpl implements MarkService {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
if (markPaper.getStatus() == MarkPaperStatus.FORMAL) {
|
|
if (markPaper.getStatus() == MarkPaperStatus.FORMAL) {
|
|
- // 遍历相关评卷任务的模式
|
|
|
|
- List<MarkTaskStatus> statusList = Arrays.asList(MarkTaskStatus.WAITING);
|
|
|
|
- List<MarkTask> markTaskList = markTaskService.listByExamIdAndPaperNumberAndQuestionIdAndAiMarkedAndStatusNotIn(examId, paperNumber, questionId, true, statusList);
|
|
|
|
- for (MarkTask markTask : markTaskList) {
|
|
|
|
- Long studentId = markTask.getStudentId();
|
|
|
|
- markTaskService.resetById(markTask.getId(), null, null, null, null, MarkTaskStatus.WAITING);
|
|
|
|
- markSubjectiveScoreService.deleteByStudentIdAndQuestionId(studentId, questionId);
|
|
|
|
- markRejectHistoryService.deleteByTaskId(markTask.getId());
|
|
|
|
- markArbitrateHistoryService.deleteByExamIdAndPaperNumberAndStudentIdAndQuestionId(examId, paperNumber, studentId, questionId);
|
|
|
|
- lockService.waitlock(LockType.STUDENT, markTask.getStudentId());
|
|
|
|
- markStudentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.UNMARK);
|
|
|
|
- lockService.unlock(LockType.STUDENT, markTask.getStudentId());
|
|
|
|
|
|
+ // 未设置AI智能评卷参数,删除所有任务
|
|
|
|
+ if (!markAiQuestionParamService.existMarkAiQuestionPointOrLevel(examId, paperNumber, questionId)) {
|
|
|
|
+ markTaskService.deleteByExamIdAndPaperNumberAndQuestionId(examId, paperNumber, questionId);
|
|
|
|
+ markSubjectiveScoreService.deleteByExamIdAndPaperNumberAndQuestionId(examId, paperNumber, questionId);
|
|
|
|
+ markRejectHistoryService.deleteByExamIdAndPaperNumberAndQuestionId(examId, paperNumber, questionId);
|
|
|
|
+ markArbitrateHistoryService.deleteByExamIdAndPaperNumberAndQuestionId(examId, paperNumber, questionId);
|
|
|
|
+ this.checkStudentSubjectiveScore(examId, markPaper.getCoursePaperId());
|
|
|
|
+ } else {
|
|
|
|
+ // 遍历相关评卷任务的模式
|
|
|
|
+ List<MarkTaskStatus> statusList = Arrays.asList(MarkTaskStatus.WAITING);
|
|
|
|
+ List<MarkTask> markTaskList = markTaskService.listByExamIdAndPaperNumberAndQuestionIdAndAiMarkedAndStatusNotIn(examId, paperNumber, questionId, true, statusList);
|
|
|
|
+ for (MarkTask markTask : markTaskList) {
|
|
|
|
+ Long studentId = markTask.getStudentId();
|
|
|
|
+ markTaskService.resetById(markTask.getId(), null, null, null, null, MarkTaskStatus.WAITING);
|
|
|
|
+ markSubjectiveScoreService.deleteByStudentIdAndQuestionId(studentId, questionId);
|
|
|
|
+ markRejectHistoryService.deleteByTaskId(markTask.getId());
|
|
|
|
+ markArbitrateHistoryService.deleteByExamIdAndPaperNumberAndStudentIdAndQuestionId(examId, paperNumber, studentId, questionId);
|
|
|
|
+ lockService.waitlock(LockType.STUDENT, markTask.getStudentId());
|
|
|
|
+ markStudentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.UNMARK);
|
|
|
|
+ lockService.unlock(LockType.STUDENT, markTask.getStudentId());
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+
|
|
//清空ocr识别结果
|
|
//清空ocr识别结果
|
|
if (markQuestion.getClearOcrResult()) {
|
|
if (markQuestion.getClearOcrResult()) {
|
|
markOcrStudentQuestionService.deleteByExamIdAndPaperNumberAndQuestionId(examId, paperNumber, questionId);
|
|
markOcrStudentQuestionService.deleteByExamIdAndPaperNumberAndQuestionId(examId, paperNumber, questionId);
|