Explorar el Código

联考版-v3.1.0-测试bug修复。

xiaof hace 2 años
padre
commit
3735b34d8f

+ 1 - 0
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkTaskLevelRepo.java

@@ -189,4 +189,5 @@ public interface MarkTaskLevelRepo extends JpaRepository<MarkTaskLevel, Long>, J
 
     int countByWorkIdAndSubjectAndStageAndTest(Long workId, Subject subject, MarkStage stage, int id);
 
+    MarkTaskLevel findByPaperIdAndMarkerId(Long markerId, Long userId);
 }

+ 2 - 0
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkTaskRoughLevelRepo.java

@@ -155,4 +155,6 @@ public interface MarkTaskRoughLevelRepo extends JpaRepository<MarkTaskRoughLevel
     List<Long> findByWorkIdAndQuestionIdAndMarkerIdAndStageAndBatchNoAndPaperIsMark(Long workId, Long questionId, Long id, MarkStage stage, Long batchNo);
 
     int countByWorkIdAndSubjectAndStageAndTest(Long workId, Subject subject, MarkStage stage, int id);
+
+    MarkTaskRoughLevel findByPaperIdAndMarkerId(Long paperId, Long userId);
 }

+ 0 - 2
stmms-ms-log/src/main/java/cn/com/qmth/stmms/ms/log/aop/MarkLogAop.java

@@ -410,8 +410,6 @@ public class MarkLogAop {
         }
 
         List<Level> levels = levelRepo.findByWorkId(paper.getWorkId());
-        List<RoughLevel> roughLevels = DetermineRoughLevelService.parseRoughLevels(levels);
-
         Map<Long, String> levelsMap = markTasks.stream().collect(Collectors.toMap(MarkTaskRoughLevel::getMarkerId, o -> o.getResult().toUpperCase()));
         LOGGER.info("this:{} markLogAop异步回调进来了", this);
         arbitrateCallback.judge(levelsMap, deviation, new ArbitrateResult() {

+ 9 - 3
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/PaperApi.java

@@ -383,7 +383,13 @@ public class PaperApi {
         Pageable pageable1 = new PageRequest(pageable.getPageNumber(), pageable.getPageSize(), sort);
         Page<Paper> papers = paperRepo.findAll(specification, pageable1);
         List<PaperDTO> paperDTOs = new ArrayList<>();
-        papers.forEach(p -> paperDTOs.add(paperAssembler.toDTO(p)));
+        Long userId = ServletUtil.getUserId();
+        MarkUser markUser = markUserRepo.findOne(userId);
+        if (markUser != null && markUser.getRole().equals(Role.MARK_LEADER)) {
+            userId = null;
+        }
+        Long finalUserId = userId;
+        papers.forEach(p -> paperDTOs.add(paperAssembler.toDTO(p, finalUserId)));
         return new PageableDTO(paperDTOs, papers.getTotalElements(), papers.getTotalPages(), pageable.getPageNumber());
     }
 
@@ -542,7 +548,7 @@ public class PaperApi {
                     // 记录日志
                     Long userId = ServletUtil.getUserId();
                     MarkUser markUser = markUserRepo.findOne(userId);
-                    MarkLog markLog = new MarkLog(work.getId(), work.getName(), paper.getId(), paper.getSubject(), MarkStage.ROUGH_LEVEL, paper.getTest(), paper.getExamNumber(), paper.getStudentName(), markUser.getId(), markUser.getName(), markUser.getRole(), MarkLogOperType.CANCEL_SAMPLE.getId(),MarkLogOperType.CANCEL_SAMPLE.getName(), paper.getRoughLevel(), null, null, new Date());
+                    MarkLog markLog = new MarkLog(work.getId(), work.getName(), paper.getId(), paper.getSubject(), MarkStage.ROUGH_LEVEL, paper.getTest(), paper.getExamNumber(), paper.getStudentName(), markUser.getId(), markUser.getName(), markUser.getRole(), MarkLogOperType.CANCEL_SAMPLE.getId(), MarkLogOperType.CANCEL_SAMPLE.getName(), paper.getRoughLevel(), null, null, new Date());
                     markLogs.add(markLog);
                 }
             } else if (MarkStage.LEVEL.name().equals(stage)) {
@@ -565,7 +571,7 @@ public class PaperApi {
                     // 记录日志
                     Long userId = ServletUtil.getUserId();
                     MarkUser markUser = markUserRepo.findOne(userId);
-                    MarkLog markLog = new MarkLog(work.getId(), work.getName(), paper.getId(), paper.getSubject(), MarkStage.LEVEL, paper.getTest(), paper.getExamNumber(), paper.getStudentName(), markUser.getId(), markUser.getName(), markUser.getRole(), MarkLogOperType.CANCEL_SAMPLE.getId(),MarkLogOperType.CANCEL_SAMPLE.getName(), paper.getLevel(), null, null, new Date());
+                    MarkLog markLog = new MarkLog(work.getId(), work.getName(), paper.getId(), paper.getSubject(), MarkStage.LEVEL, paper.getTest(), paper.getExamNumber(), paper.getStudentName(), markUser.getId(), markUser.getName(), markUser.getRole(), MarkLogOperType.CANCEL_SAMPLE.getId(), MarkLogOperType.CANCEL_SAMPLE.getName(), paper.getLevel(), null, null, new Date());
                     markLogs.add(markLog);
                 }
             }

+ 2 - 5
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/MarkTaskLevelAssembler.java

@@ -5,10 +5,7 @@ import cn.com.qmth.stmms.ms.commons.config.SystemConfig;
 import cn.com.qmth.stmms.ms.commons.constant.SystemConstant;
 import cn.com.qmth.stmms.ms.commons.utils.MD5Util;
 import cn.com.qmth.stmms.ms.core.cache.ParamCache;
-import cn.com.qmth.stmms.ms.core.domain.ChangeLevel;
-import cn.com.qmth.stmms.ms.core.domain.MarkLogOperType;
-import cn.com.qmth.stmms.ms.core.domain.Paper;
-import cn.com.qmth.stmms.ms.core.domain.Student;
+import cn.com.qmth.stmms.ms.core.domain.*;
 import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskLevel;
 import cn.com.qmth.stmms.ms.core.domain.user.MarkUser;
 import cn.com.qmth.stmms.ms.core.repository.ChangeLevelRepo;
@@ -167,7 +164,7 @@ public class MarkTaskLevelAssembler {
             Paper paper = markTask.getPaper();
             if (paper.isShift()) {
                 markTaskDTO.setLevel(markTask.getResult());
-                ChangeLevel changeLevel = changeLevelRepo.findByWorkIdAndSubjectAndPaperIdAndAuditStatusAndStageAndIsCurr(markTask.getWorkId(), markTask.getSubject().name(), markTask.getStage(), paper.getId());
+                ChangeLevel changeLevel = changeLevelRepo.findByWorkIdAndSubjectAndPaperIdAndAuditStatusAndStageAndIsCurr(markTask.getWorkId(), markTask.getSubject().name(), MarkStage.SCORE, paper.getId());
                 markTaskDTO.setOriginLevel(changeLevel != null ? changeLevel.getOriginalLevel() : "");
             }
             if (paper.isShiftScore()) {

+ 2 - 5
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/MarkTaskRoughLevelAssembler.java

@@ -5,10 +5,7 @@ import cn.com.qmth.stmms.ms.commons.config.SystemConfig;
 import cn.com.qmth.stmms.ms.commons.constant.SystemConstant;
 import cn.com.qmth.stmms.ms.commons.utils.MD5Util;
 import cn.com.qmth.stmms.ms.core.cache.ParamCache;
-import cn.com.qmth.stmms.ms.core.domain.ChangeLevel;
-import cn.com.qmth.stmms.ms.core.domain.MarkLogOperType;
-import cn.com.qmth.stmms.ms.core.domain.Paper;
-import cn.com.qmth.stmms.ms.core.domain.Student;
+import cn.com.qmth.stmms.ms.core.domain.*;
 import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskLevel;
 import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskRoughLevel;
 import cn.com.qmth.stmms.ms.core.domain.user.MarkUser;
@@ -168,7 +165,7 @@ public class MarkTaskRoughLevelAssembler {
             Paper paper = markTask.getPaper();
             if (paper.isShift()) {
                 markTaskDTO.setLevel(markTask.getResult());
-                ChangeLevel changeLevel = changeLevelRepo.findByWorkIdAndSubjectAndPaperIdAndAuditStatusAndStageAndIsCurr(markTask.getWorkId(), markTask.getSubject().name(), markTask.getStage(), paper.getId());
+                ChangeLevel changeLevel = changeLevelRepo.findByWorkIdAndSubjectAndPaperIdAndAuditStatusAndStageAndIsCurr(markTask.getWorkId(), markTask.getSubject().name(), MarkStage.LEVEL, paper.getId());
                 markTaskDTO.setOriginLevel(changeLevel != null ? changeLevel.getOriginalLevel() : "");
             }
             if (paper.isShiftScore()) {

+ 1 - 1
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/MarkTaskScoreAssembler.java

@@ -164,7 +164,7 @@ public class MarkTaskScoreAssembler {
             Paper paper = markTask.getPaper();
             if (paper.isShift()) {
                 markTaskDTO.setLevel(markTask.getResult());
-                ChangeLevel changeLevel = changeLevelRepo.findByWorkIdAndSubjectAndPaperIdAndAuditStatusAndStageAndIsCurr(markTask.getWorkId(), markTask.getSubject().name(),markTask.getStage(), paper.getId());
+                ChangeLevel changeLevel = changeLevelRepo.findByWorkIdAndSubjectAndPaperIdAndAuditStatusAndStageAndIsCurr(markTask.getWorkId(), markTask.getSubject().name(), markTask.getStage(), paper.getId());
                 markTaskDTO.setOriginLevel(changeLevel != null ? changeLevel.getOriginalLevel() : "");
             }
             if (paper.isShiftScore()) {

+ 96 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/PaperAssembler.java

@@ -6,6 +6,8 @@ import cn.com.qmth.stmms.ms.commons.constant.SystemConstant;
 import cn.com.qmth.stmms.ms.commons.utils.MD5Util;
 import cn.com.qmth.stmms.ms.core.cache.ParamCache;
 import cn.com.qmth.stmms.ms.core.domain.*;
+import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskLevel;
+import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskRoughLevel;
 import cn.com.qmth.stmms.ms.core.repository.*;
 import cn.com.qmth.stmms.ms.marking.dto.PaperDTO;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,6 +22,9 @@ import java.util.Objects;
 @Component
 public class PaperAssembler {
 
+    @Resource
+    private MarkTaskRoughLevelRepo markTaskRoughLevelRepo;
+
     @Resource
     private MarkTaskLevelRepo markTaskLevelRepo;
 
@@ -117,6 +122,97 @@ public class PaperAssembler {
         return paperDTO;
     }
 
+    public PaperDTO toDTO(Paper paper, Long userId) {
+
+        String imgSrc = null;
+        String thumbSrc = null;
+        String sheetSrc = null;
+        PaperDTO paperDTO = null;
+        if (paper != null) {
+            String fileName = paper.getExamNumber();
+            Student student = studentRepo.findByWorkIdAndExamNumber(paper.getWorkId(), paper.getExamNumber());
+            //0:随机码 1:考号
+            if (ParamCache.collectConfigMap.get(String.valueOf(paper.getWorkId())).getNameRule() == 1) {
+                fileName = MD5Util.getImageRuleMd5(paper.getWorkId(), paper.getSubject().ordinal(), student.getAreaCode(), student.getExamNumber(), student.getId());
+            }
+            if (ParamCache.collectConfigMap.get(String.valueOf(paper.getWorkId())).getImageEncrypt() == 1) {
+                imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.IMAGE);
+                thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.THUMB);
+                sheetSrc = systemConfig.getSheetUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.SHEET);
+            } else {
+                imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
+                thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
+                sheetSrc = systemConfig.getSheetUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), fileName);
+            }
+            //查询阶段
+            MarkSubject markSubject = markSubjectRepo.findOne(paper.getWorkId() + "-" + paper.getSubject());
+            paperDTO = new PaperDTO();
+            if (MarkStage.ROUGH_LEVEL.equals(markSubject.getStage())) {
+                // 评卷员页岩标准卷密号与任务一致
+                if (userId == null) {
+                    paperDTO.setSn(paper.getSecretNumber());
+                } else {
+                    MarkTaskRoughLevel markTaskRoughLevel = markTaskRoughLevelRepo.findByPaperIdAndMarkerId(paper.getId(), userId);
+                    paperDTO.setSn(markTaskRoughLevel == null ? paper.getSecretNumber() : markTaskRoughLevel.getSecretNumber());
+                }
+            } else if (MarkStage.LEVEL.equals(markSubject.getStage())) {
+                if (userId == null) {
+                    paperDTO.setSn(paper.getSecretNumber());
+                } else {
+                    MarkTaskLevel markTaskLevel = markTaskLevelRepo.findByPaperIdAndMarkerId(paper.getId(), userId);
+                    paperDTO.setSn(markTaskLevel == null ? paper.getSecretNumber() : markTaskLevel.getSecretNumber());
+                }
+            }
+            paperDTO.setId(paper.getId());
+            paperDTO.setPaperId(paper.getId());
+            paperDTO.setSubjectName(paper.getSubject().getName());
+            paperDTO.setExamNumber(paper.getExamNumber());
+            paperDTO.setSecretNumber(paper.getSecretNumber());
+            paperDTO.setLevel(paper.getLevel());
+            paperDTO.setRoughLevel(paper.getRoughLevel());
+            paperDTO.setManual(paper.isManual());
+            paperDTO.setScore(Objects.isNull(paper.getScore()) ? null : paper.getScore().intValue());
+            paperDTO.setArbitrated(paper.isArbitrated());
+            paperDTO.setRejected(paper.isRejected());
+            paperDTO.setSample(paper.isSample());
+            paperDTO.setRoughSample(paper.isRoughSample());
+            paperDTO.setMarkByLeader(paper.isMarkByLeader());
+            paperDTO.setTagged(paper.isTagged());
+            paperDTO.setMarkedLogic(paper.isMarkedLogic());
+            paperDTO.setRedoLevel(paper.getRedoLevel());
+            paperDTO.setUpdatedOn(paper.getUpdatedOn());
+            paperDTO.setImgSrc(imgSrc);
+            paperDTO.setThumbSrc(thumbSrc);
+            paperDTO.setSheetSrc(sheetSrc);
+            paperDTO.setAreaCode(paper.getAreaCode());
+            paperDTO.setMissing(paper.getIsMissing());
+            if (paper.getInspectScore() != null) {
+                paperDTO.setInspectScore(paper.getInspectScore().intValue());
+            }
+            if (paper.getInspectLevel() != null) {
+                paperDTO.setInspectLevel(paper.getInspectLevel());
+            }
+            paperDTO.setStage(markSubject.getStage());
+            paperDTO.setTest(markSubject.getTest());
+            paperDTO.setPaperTest(paper.getTest());
+            paperDTO.setShift(paper.isShift());
+            paperDTO.setShiftScore(paper.isShiftScore());
+            paperDTO.setRoughOneClick(paper.isRoughOneClick());
+            paperDTO.setOneClick(paper.isOneClick());
+            paperDTO.setIsRejectedByLeader(paper.isRejectedByLeader() != null && paper.isRejectedByLeader());
+            paperDTO.setScanUserId(paper.getScanUserId());
+            paperDTO.setMark(paper.isMark());
+            paperDTO.setAdminMark(paper.isAdminMark());
+            //打回总次数
+            int rejectedCount = markLogRepo.countByWorkIdAndPaperIdAndOperType(paper.getWorkId(), paper.getId(), MarkLogOperType.CALLBACK_LEVEl.getId());
+            paperDTO.setRejectedCount(rejectedCount);
+            paperDTO.setSortSum(paper.getSortNum());
+            ChangeLevel changeLevel = changeLevelRepo.findByWorkIdAndSubjectAndPaperIdAndAuditStatusAndStageAndIsCurr(paper.getWorkId(), paper.getSubject().name(), markSubject.getStage(), paper.getId());
+            paperDTO.setOriginLevel(changeLevel != null ? changeLevel.getOriginalLevel() : "");
+        }
+        return paperDTO;
+    }
+
     public PaperDTO toDTOForPaperManager(Paper paper, Boolean isManual) {
         String imgSrc = null;
         String thumbSrc = null;

+ 20 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkingLevelService.java

@@ -19,6 +19,7 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.Resource;
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * 评卷,分档仲裁及打分服务
@@ -283,6 +284,25 @@ public class MarkingLevelService {
         }
         markTaskLevelRepo.save(markTasks);
 
+        // 校验粗分档档位是否与细分档匹配
+        Optional<Level> optional = levels.stream().filter(l -> l.getCode().equals(level)).findFirst();
+        if(optional.isPresent()){
+            Level roughLevel = optional.get();
+            if(!roughLevel.getRoughCode().equals(paper.getRoughLevel())){
+                // 更新粗分档
+                paper.setRoughLevel(roughLevel.getRoughCode());
+                // 更新任务表
+                List<MarkTaskRoughLevel> markTaskRoughLevelList = markTaskRoughLevelRepo.findByPaperId(paper.getId());
+                for (MarkTaskRoughLevel markTaskRoughLevel : markTaskRoughLevelList) {
+                    markTaskRoughLevel.setLevel(roughLevel.getRoughCode());
+                    markTaskRoughLevel.setLevelValue(Integer.valueOf(roughLevel.getRoughCode()));
+                    markTaskRoughLevel.setResult(roughLevel.getRoughCode());
+                }
+                markTaskRoughLevelRepo.save(markTaskRoughLevelList);
+            }
+        }
+
+
         paper.setSortNum(calcSortNum(paper, markTasks, levels));
         paperRepo.save(paper);
         levelsLog(markTasks, paper);