|
@@ -301,14 +301,33 @@ public class MarkGroupController extends BaseExamController {
|
|
try {
|
|
try {
|
|
lockService.waitlock(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
lockService.waitlock(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
if (groupService.updateStatus(group.getExamId(), group.getSubjectCode(), group.getNumber(), status,
|
|
if (groupService.updateStatus(group.getExamId(), group.getSubjectCode(), group.getNumber(), status,
|
|
- group.getStatus()) && status == MarkStatus.FORMAL) {
|
|
|
|
- // 切换到正评成功后刷新任务数量
|
|
|
|
- group.setStatus(status);
|
|
|
|
- markService.updateLibraryCount(group);
|
|
|
|
- markService.updateMarkedCount(group);
|
|
|
|
- markerService.logoutByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
|
|
|
|
- group.getNumber());
|
|
|
|
|
|
+ group.getStatus())) {
|
|
|
|
+ if(status == MarkStatus.FORMAL){
|
|
|
|
+ // 切换到正评成功后刷新任务数量
|
|
|
|
+ group.setStatus(status);
|
|
|
|
+ markService.updateLibraryCount(group);
|
|
|
|
+ markService.updateMarkedCount(group);
|
|
|
|
+ markerService.logoutByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
|
|
|
|
+ group.getNumber());
|
|
|
|
+ } else if (status == MarkStatus.FINISH) {
|
|
|
|
+ //结束时判断是否全部完成统分
|
|
|
|
+ long unGroupQuestionCount = questionService.countByExamIdAndSubjectAndObjectiveAndGroupNumberIsNull(group.getExamId(), group.getSubjectCode(), false);
|
|
|
|
+ // 考生整体状态与总分更新
|
|
|
|
+ long groupCount = groupService.countByExamAndSubjectAndStatus(group.getExamId(), group.getSubjectCode(),MarkStatus.TRIAL,MarkStatus.FORMAL);
|
|
|
|
+ if(unGroupQuestionCount>0 ||groupCount>0){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ groupCount = groupService.countByExamAndSubject(group.getExamId(), group.getSubjectCode());
|
|
|
|
+ List<Integer> studentList = studentService.findIdByExamIdAndSubjectCodeAndSubjectiveStatus(group.getExamId(), group.getSubjectCode(),
|
|
|
|
+ SubjectiveStatus.UNMARK);
|
|
|
|
+ for (Integer studentId : studentList) {
|
|
|
|
+ lockService.waitlock(LockType.STUDENT, studentId);
|
|
|
|
+ markService.checkStudentSubjective(studentId, groupCount, unGroupQuestionCount);
|
|
|
|
+ lockService.unlock(LockType.STUDENT, studentId);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+
|
|
} finally {
|
|
} finally {
|
|
lockService.unlock(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
lockService.unlock(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
}
|
|
}
|