Bladeren bron

关闭分组新增补偿考生未统分

yin 10 maanden geleden
bovenliggende
commit
c0471ebafe

+ 26 - 7
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkGroupController.java

@@ -301,14 +301,33 @@ public class MarkGroupController extends BaseExamController {
         try {
             lockService.waitlock(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());
             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 {
             lockService.unlock(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());
         }

+ 7 - 2
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkerController.java

@@ -560,18 +560,23 @@ public class MarkerController extends BaseExamController {
         }
         long count = libraryService.countByMarker(markerId);
         long trialCount = trialService.countByMarkerIdAndMarkerScoreIsNotNull(markerId);
+        int examId = marker.getExamId();
         String subjectCode = marker.getSubjectCode();
         Integer groupNumber = marker.getGroupNumber();
         if (count > 0 || trialCount > 0) {
             addMessage(redirectAttributes, "删除评卷员失败,该评卷员已开始评卷");
         } else {
             try {
-                lockService.waitlock(LockType.MARKER, marker.getId());
+                lockService.watch(LockType.EXAM_SUBJECT, examId, subjectCode);
+                lockService.watch(LockType.GROUP,examId, subjectCode,groupNumber);
+                lockService.waitlock(LockType.MARKER, markerId);
                 markService.deleteMarker(marker);
             } catch (Exception e) {
                 log.error("release marker error", e);
             } finally {
-                lockService.unlock(LockType.MARKER, marker.getId());
+                lockService.unlock(LockType.MARKER, markerId);
+                lockService.unwatch(LockType.GROUP, examId, subjectCode, groupNumber);
+                lockService.unwatch(LockType.EXAM_SUBJECT, examId, subjectCode);
             }
         }
         return "redirect:/admin/exam/marker?subjectCode=" + subjectCode + "&groupNumber=" + groupNumber;

+ 2 - 3
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/ScanController.java

@@ -66,8 +66,7 @@ public class ScanController extends BaseApiController {
     private static final String PAPER_TYPES_REGEX = "[a-zA-Z#]";
 
     /**
-     * 上传考生识别结果
-     *
+     * 上传考生客观题卡张数
      * @param request
      * @param examId
      * @param scStudentParameter
@@ -77,7 +76,7 @@ public class ScanController extends BaseApiController {
     @RoleRequire({ Role.SCHOOL_ADMIN, Role.SCANNER, Role.SCAN_ADMIN })
     @RequestMapping(value = "/student/objective/page/count/{examId}", method = RequestMethod.POST)
     @ResponseBody
-    public JSONArray saveStudentstudentObjectivePageCount(HttpServletRequest request, @PathVariable Integer examId,
+    public JSONArray saveStudentObjectivePageCount(HttpServletRequest request, @PathVariable Integer examId,
             @RequestBody ScanStudentObjectivePageCountParameter[] scStudentParameter) {
         ApiUser user = RequestUtils.getApiUser(request);
         Exam exam = examService.findById(examId);