ting.yin hai 1 ano
pai
achega
463442a196

+ 1 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/MarkServiceImpl.java

@@ -961,6 +961,7 @@ public class MarkServiceImpl implements MarkService {
             libraryDao.updateHeaderResult(history.getStudentId(), history.getGroupNumber(), history.getUserId(),
                     history.getTotalScore(), history.getScoreList(), history.getUpdateTime(), LibraryStatus.ARBITRATED);
             updateMarkedCount(history.getExamId(), history.getSubjectCode(), history.getGroupNumber());
+            inspectedService.cancelByStudent(history.getStudentId());
             checkStudentGroup(history.getStudentId(),
                     groupDao.findOne(history.getExamId(), history.getSubjectCode(), history.getGroupNumber()));
         }
@@ -1488,7 +1489,6 @@ public class MarkServiceImpl implements MarkService {
             updateStudentGroupStatus(studentId, group.getExamId(), group.getSubjectCode(), group.getNumber(),
                     SubjectiveStatus.UNMARK);
             studentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.UNMARK, 0, null);
-            inspectedService.cancelByStudent(studentId);
         }
     }
 

+ 10 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/SelectiveGroupController.java

@@ -35,12 +35,14 @@ import cn.com.qmth.stmms.biz.exam.model.SelectiveGroup;
 import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
 import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
 import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
+import cn.com.qmth.stmms.biz.exam.service.InspectedService;
 import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
 import cn.com.qmth.stmms.biz.exam.service.MarkerService;
 import cn.com.qmth.stmms.biz.exam.service.SelectiveGroupService;
 import cn.com.qmth.stmms.biz.lock.LockService;
 import cn.com.qmth.stmms.biz.mark.service.MarkService;
 import cn.com.qmth.stmms.common.annotation.Logging;
+import cn.com.qmth.stmms.common.enums.LockType;
 import cn.com.qmth.stmms.common.enums.LogType;
 import cn.com.qmth.stmms.common.enums.ScorePolicy;
 import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
@@ -79,6 +81,9 @@ public class SelectiveGroupController extends BaseExamController {
     @Autowired
     private MarkerService markerService;
 
+    @Autowired
+    private InspectedService inspectedService;
+
     @Logging(menu = "选做题查询", type = LogType.QUERY)
     @RequestMapping
     public String list(HttpServletRequest request, Model model, @RequestParam String subjectCode) {
@@ -244,11 +249,15 @@ public class SelectiveGroupController extends BaseExamController {
     public String edit(HttpServletRequest request, RedirectAttributes redirectAttributes,
             @RequestParam String subjectCode, @RequestParam Integer selectiveIndex, @RequestParam Integer policy) {
         int examId = getSessionExamId(request);
+        if (lockService.isLocked(LockType.SCORE_CALCULATE, examId, subjectCode)) {
+            addMessage(redirectAttributes, "正在统分中,请稍后再试");
+            return "redirect:/admin/exam/selectiveGroup?subjectCode=" + subjectCode;
+        }
         selectiveGroupService.updateScorePolicy(examId, subjectCode, selectiveIndex, ScorePolicy.findByValue(policy));
         List<Integer> studentList = studentService.findIdByExamIdAndSubjectCodeAndSubjectiveStatus(examId, subjectCode,
                 SubjectiveStatus.UNMARK, SubjectiveStatus.MARKED);
         SubjectiveCalculateThread thread = new SubjectiveCalculateThread(examId, subjectCode, studentList, markService,
-                lockService, questionService, groupService, markerService);
+                lockService, questionService, groupService, markerService, inspectedService);
         taskExecutor.submit(thread);
         return "redirect:/admin/exam/selectiveGroup?subjectCode=" + subjectCode;
     }

+ 8 - 3
stmms-web/src/main/java/cn/com/qmth/stmms/admin/thread/SubjectiveCalculateThread.java

@@ -6,6 +6,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
+import cn.com.qmth.stmms.biz.exam.service.InspectedService;
 import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
 import cn.com.qmth.stmms.biz.exam.service.MarkerService;
 import cn.com.qmth.stmms.biz.lock.LockService;
@@ -24,6 +25,8 @@ public class SubjectiveCalculateThread implements Runnable {
 
     private MarkerService markerService;
 
+    private InspectedService inspectedService;
+
     private LockService lockService;
 
     private Integer examId;
@@ -34,12 +37,13 @@ public class SubjectiveCalculateThread implements Runnable {
 
     public SubjectiveCalculateThread(Integer examId, String subjectCode, List<Integer> studentList,
             MarkService markService, LockService lockService, ExamQuestionService questionService,
-            MarkGroupService groupService, MarkerService markerService) {
+            MarkGroupService groupService, MarkerService markerService, InspectedService inspectedService) {
         this.markService = markService;
         this.lockService = lockService;
         this.questionService = questionService;
         this.groupService = groupService;
         this.markerService = markerService;
+        this.inspectedService = inspectedService;
         this.examId = examId;
         this.subjectCode = subjectCode;
         this.studentList = studentList;
@@ -50,7 +54,7 @@ public class SubjectiveCalculateThread implements Runnable {
         try {
             lockService.waitlock(LockType.SCORE_CALCULATE, examId, subjectCode);
             lockService.waitlock(LockType.EXAM_SUBJECT, examId, subjectCode);
-            log.info("delete question examId=" + examId + " subjectCode=" + subjectCode);
+            log.info("SubjectiveCalculateThread examId=" + examId + " subjectCode=" + subjectCode);
             markerService.logoutByExamIdAndSubjectCodeAndGroupNumber(examId, subjectCode, null);
             // 未分组的题目
             long unGroupQuestionCount = questionService.countByExamIdAndSubjectAndObjectiveAndGroupNumberIsNull(examId,
@@ -61,8 +65,9 @@ public class SubjectiveCalculateThread implements Runnable {
                 lockService.waitlock(LockType.STUDENT, studentId);
                 markService.checkStudentSubjective(studentId, groupCount, unGroupQuestionCount);
             }
+            inspectedService.cancelBySubject(examId, subjectCode);
         } catch (Exception e) {
-            log.error("delete group error", e);
+            log.error("SubjectiveCalculateThread error", e);
         } finally {
             for (Integer studentId : studentList) {
                 lockService.unlock(LockType.STUDENT, studentId);