xiaofei 1 жил өмнө
parent
commit
d6232254ab

+ 6 - 8
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MarkTaskApi.java

@@ -138,10 +138,10 @@ public class MarkTaskApi {
         boolean markingSelfTask = false;
         if (stage.equals(MarkStage.ROUGH_LEVEL)) {
             markTaskDTO = markTaskRoughLevelService.markingLevel(markTask, body);
-            markingSelfTask = markTaskSelfCheckService.updateMarkingCount(markTaskDTO.getWorkId(), markTaskDTO.getSubject(), stage, markTaskDTO.getMarkerId(), markTask);
+            markingSelfTask = markTaskSelfCheckService.updateMarkingCount(markTaskDTO, stage, markTask, true);
         } else if (stage.equals(MarkStage.LEVEL)) {
             markTaskDTO = markTaskLevelService.markingLevel(markTask, body);
-            markingSelfTask = markTaskSelfCheckService.updateMarkingCount(markTaskDTO.getWorkId(), markTaskDTO.getSubject(), stage, markTaskDTO.getMarkerId(), markTask);
+            markingSelfTask = markTaskSelfCheckService.updateMarkingCount(markTaskDTO, stage, markTask, true);
         } else if (stage.equals(MarkStage.SCORE)) {
             markTaskDTO = markTaskScoreService.markingScore(markTask, body);
         }
@@ -173,14 +173,10 @@ public class MarkTaskApi {
             MarkTaskDTO markTaskDTO = null;
             if (stage.equals(MarkStage.ROUGH_LEVEL)) {
                 markTaskDTO = markTaskRoughLevelService.markingLevel(Long.valueOf(id), body);
-                if (i == ids.length) {
-                    markingSelfTask = markTaskSelfCheckService.updateMarkingCount(markTaskDTO.getWorkId(), markTaskDTO.getSubject(), stage, markTaskDTO.getMarkerId(), Long.valueOf(id));
-                }
+                markingSelfTask = markTaskSelfCheckService.updateMarkingCount(markTaskDTO, stage, Long.valueOf(id), i == ids.length);
             } else if (stage.equals(MarkStage.LEVEL)) {
                 markTaskDTO = markTaskLevelService.markingLevel(Long.valueOf(id), body);
-                if (i == ids.length) {
-                    markingSelfTask = markTaskSelfCheckService.updateMarkingCount(markTaskDTO.getWorkId(), markTaskDTO.getSubject(), stage, markTaskDTO.getMarkerId(), Long.valueOf(id));
-                }
+                markingSelfTask = markTaskSelfCheckService.updateMarkingCount(markTaskDTO, stage, Long.valueOf(id), i == ids.length);
             } else if (stage.equals(MarkStage.SCORE)) {
                 markTaskDTO = markTaskScoreService.markingScore(Long.valueOf(id), body);
             }
@@ -516,6 +512,7 @@ public class MarkTaskApi {
 
     /**
      * 获取自查卷任务
+     *
      * @param workId
      * @param markerId
      * @param subject
@@ -532,6 +529,7 @@ public class MarkTaskApi {
 
     /**
      * 自查卷档位提交
+     *
      * @param id
      * @param level
      * @return

+ 12 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/dto/MarkTaskDTO.java

@@ -50,6 +50,10 @@ public class MarkTaskDTO implements Serializable{
     private String deviationDirection;
     private Boolean isMark;
     private Boolean isSelfCheck;
+    /**
+     * 是否回评(生成自查卷使用)
+     */
+    private Boolean isReLevel;
 
     public Long getWorkId() {
         return workId;
@@ -326,4 +330,12 @@ public class MarkTaskDTO implements Serializable{
     public void setSelfCheck(Boolean selfCheck) {
         isSelfCheck = selfCheck;
     }
+
+    public Boolean getReLevel() {
+        return isReLevel;
+    }
+
+    public void setReLevel(Boolean reLevel) {
+        isReLevel = reLevel;
+    }
 }

+ 6 - 2
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkTaskLevelService.java

@@ -21,6 +21,7 @@ import cn.com.qmth.stmms.ms.marking.assembler.MarkTaskRoughLevelAssembler;
 import cn.com.qmth.stmms.ms.marking.assembler.PaperAssembler;
 import cn.com.qmth.stmms.ms.marking.dto.MarkTaskDTO;
 import cn.com.qmth.stmms.ms.marking.dto.PaperDTO;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
@@ -133,7 +134,7 @@ public class MarkTaskLevelService {
 //            join.on(onPredicates.toArray(new Predicate[onPredicates.size()]));
             return builder.and(predicates.toArray(new Predicate[predicates.size()]));
         };
-        Sort sort = new Sort("randomSeq","paper.roughLevel", "randomSeqNew");
+        Sort sort = new Sort("randomSeq", "paper.roughLevel", "randomSeqNew");
         Pageable pageable1 = new PageRequest(pageable.getPageNumber(), pageable.getPageSize(), sort);
         Page<MarkTaskLevel> markTasks = markTaskLevelRepo.findAll(specification, pageable1);
 
@@ -184,6 +185,7 @@ public class MarkTaskLevelService {
         if (result == null) {
             return null;
         }
+        boolean isReLevel = StringUtils.isNotBlank(markTask.getResult());
         try {
             lockService.waitlock(LockType.LEVEL, markTask.getPaper().getId());
             markingLevelService.levelMark(markTask, result);
@@ -192,7 +194,9 @@ public class MarkTaskLevelService {
         } finally {
             lockService.unlock(LockType.LEVEL, markTask.getPaper().getId());
         }
-        return markTaskLevelAssembler.toDTO(markTask, oldRejected, oldShift, oldShiftScore);
+        MarkTaskDTO markTaskDTO = markTaskLevelAssembler.toDTO(markTask, oldRejected, oldShift, oldShiftScore);
+        markTaskDTO.setReLevel(isReLevel);
+        return markTaskDTO;
     }
 
     public ResponseEntity skipLevel(Long markTaskId) {

+ 5 - 1
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkTaskRoughLevelService.java

@@ -20,6 +20,7 @@ import cn.com.qmth.stmms.ms.marking.assembler.MarkTaskRoughLevelAssembler;
 import cn.com.qmth.stmms.ms.marking.assembler.PaperAssembler;
 import cn.com.qmth.stmms.ms.marking.dto.MarkTaskDTO;
 import cn.com.qmth.stmms.ms.marking.dto.PaperDTO;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
@@ -168,6 +169,7 @@ public class MarkTaskRoughLevelService {
         if (result == null) {
             return null;
         }
+        boolean isReLevel = StringUtils.isNotBlank(markTask.getResult());
         try {
             lockService.waitlock(LockType.ROUGH_LEVEL, markTask.getPaper().getId());
             markingRoughLevelService.levelMark(markTask, result);
@@ -176,7 +178,9 @@ public class MarkTaskRoughLevelService {
         } finally {
             lockService.unlock(LockType.ROUGH_LEVEL, markTask.getPaper().getId());
         }
-        return markTaskRoughLevelAssembler.toDTO(markTask, oldRejected, oldShift, oldShiftScore);
+        MarkTaskDTO markTaskDTO = markTaskRoughLevelAssembler.toDTO(markTask, oldRejected, oldShift, oldShiftScore);
+        markTaskDTO.setReLevel(isReLevel);
+        return markTaskDTO;
     }
 
     public ResponseEntity skipLevel(Long markTaskId) {

+ 18 - 10
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkTaskSelfCheckService.java

@@ -59,16 +59,24 @@ public class MarkTaskSelfCheckService {
     private LevelRepo levelRepo;
 
     /**
-     * @param workId   工作ID
-     * @param subject  科目
-     * @param stage    阶段
-     * @param markerId 评卷员ID
-     * @param taskId   正评任务ID
+     * @param markTaskDTO   任务对象
+     * @param stage         阶段
+     * @param taskId        任务ID
+     * @param canCreateSelf 是否可以生成自查卷(批量操作使用)
      * @return 是否有自查卷
      */
     @Transactional
-    public boolean updateMarkingCount(Long workId, Subject subject, MarkStage stage, Long markerId, Long taskId) {
+    public boolean updateMarkingCount(MarkTaskDTO markTaskDTO, MarkStage stage, Long taskId, boolean canCreateSelf) {
+        Long workId = markTaskDTO.getWorkId();
+        Subject subject = markTaskDTO.getSubject();
+        Long markerId = markTaskDTO.getMarkerId();
+
+        // 回评卷,不参与自查逻辑
+        if (markTaskDTO.getReLevel()) {
+            return false;
+        }
         MarkSubject markSubject = markSubjectRepo.findOne(workId + "-" + subject.name());
+        // 试评阶段,不参与自查逻辑
         if (markSubject.getTest() != TrialEnum.DEFAULT.getId()) {
             return false;
         }
@@ -89,11 +97,11 @@ public class MarkTaskSelfCheckService {
 
         int count = markTaskMarkerPaperRepo.countByWorkIdAndSubjectAndStageAndMarkerId(workId, subject, stage, markerId);
         // 更新分组中评卷老师评卷数量
-        updateMarkingCount(workId, subject, stage, markerId, count);
+        updateMarkerGroupLeaderCount(workId, subject, stage, markerId, count);
 
         boolean isReturnSelf = false;
         // 评卷数量等于频率值时
-        if (count >= selfCheckFrequency) {
+        if (canCreateSelf && count >= selfCheckFrequency) {
             // 生成自查卷评卷任务(当时批次中随机抽取一张)
             isReturnSelf = saveSelfCheckTask(workId, subject, stage, markerId);
         }
@@ -164,7 +172,7 @@ public class MarkTaskSelfCheckService {
         markTaskSelfCheckRepo.updateMarkingById(id, level, levelValue, StringUtils.isNotBlank(level), new Date());
 
         // 更新分组中评卷老师评卷数量(清0)
-        updateMarkingCount(workId, subject, stage, markerId, 0);
+        updateMarkerGroupLeaderCount(workId, subject, stage, markerId, 0);
         // 清空评卷明细数据(mark_task_marker_paper表)
         deleteMarkerPaper(workId, subject, stage, markerId);
         return true;
@@ -179,7 +187,7 @@ public class MarkTaskSelfCheckService {
         return true;
     }
 
-    public boolean updateMarkingCount(Long workId, Subject subject, MarkStage stage, Long markerId, int markingCount) {
+    public boolean updateMarkerGroupLeaderCount(Long workId, Subject subject, MarkStage stage, Long markerId, int markingCount) {
         markerGroupLeaderRepo.updateMarkingCountByWorkIdAndSubjectAndStageAndMarkerId(workId, subject, stage, markerId, markingCount);
         return true;
     }