Browse Source

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

xiaof 2 năm trước cách đây
mục cha
commit
5c8f3be4a7

+ 10 - 0
stmms-ms-main/src/test/java/BatchCreateDataTest.java

@@ -6,6 +6,8 @@ import cn.com.qmth.stmms.ms.core.domain.user.MarkUser;
 import cn.com.qmth.stmms.ms.core.domain.user.Role;
 import cn.com.qmth.stmms.ms.core.repository.*;
 import cn.com.qmth.stmms.ms.core.vo.Subject;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import net.coobird.thumbnailator.Thumbnails;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -64,6 +66,8 @@ public class BatchCreateDataTest {
     private static int MARKER_LEADER_COUNT = 4;
     // 工作id
     private static Long WORK_ID = 1L;
+    // 是否开启粗分档
+    private static Boolean isOpenRoughLevel = true;
     // 生成科目
     private List<Subject> subjects = Arrays.asList(Subject.SX, Subject.SC, Subject.SM);
     // 是否复制图片
@@ -167,6 +171,12 @@ public class BatchCreateDataTest {
 
         //新增工作的同时,初始化该工作的全局参数
         ParamSetting paramSetting = ParamSetting.init(WORK_ID);
+        if (isOpenRoughLevel) {
+            String levelConfig = paramSetting.getLevelConfig();
+            JSONObject jsonObject = JSON.parseObject(levelConfig, JSONObject.class);
+            jsonObject.put("roughLevelEnable", 1);
+            paramSetting.setLevelConfig(JSON.toJSONString(jsonObject));
+        }
         paramSetting.setWorkId(WORK_ID);
         paramSettingRepo.save(paramSetting);
 

+ 126 - 0
stmms-ms-main/src/test/java/BatchRoughLevelTest.java

@@ -0,0 +1,126 @@
+import cn.com.qmth.stmms.ms.Application;
+import cn.com.qmth.stmms.ms.commons.utils.RandomUtil;
+import cn.com.qmth.stmms.ms.core.domain.Level;
+import cn.com.qmth.stmms.ms.core.domain.MarkSubject;
+import cn.com.qmth.stmms.ms.core.domain.Paper;
+import cn.com.qmth.stmms.ms.core.domain.RoughLevel;
+import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskRoughLevel;
+import cn.com.qmth.stmms.ms.core.repository.LevelRepo;
+import cn.com.qmth.stmms.ms.core.repository.MarkSubjectRepo;
+import cn.com.qmth.stmms.ms.core.repository.MarkTaskRoughLevelRepo;
+import cn.com.qmth.stmms.ms.core.repository.PaperRepo;
+import cn.com.qmth.stmms.ms.core.vo.Subject;
+import cn.com.qmth.stmms.ms.marking.service.DetermineRoughLevelService;
+import org.junit.runner.RunWith;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = {Application.class})
+// 指定启动类
+public class BatchRoughLevelTest {
+
+    private static final Logger logger = LoggerFactory.getLogger(BatchRoughLevelTest.class);
+
+    @Autowired
+    private PaperRepo paperRepo;
+
+    @Autowired
+    private MarkSubjectRepo markSubjectRepo;
+
+    @Autowired
+    private MarkTaskRoughLevelRepo markTaskRoughLevelRepo;
+
+    @Autowired
+    private LevelRepo levelRepo;
+
+    @Autowired
+    RandomUtil randomUtil;
+
+    // 工作id
+    private static Long WORK_ID = 1L;
+    // 生成科目
+    private List<Subject> subjects = Arrays.asList(Subject.SC);
+
+    /**
+     * 批量分档
+     *
+     * @throws Exception
+     */
+//    @Test
+    public void level() {
+        List<Level> levels = levelRepo.findByWorkIdOrderByCode(WORK_ID);
+        List<RoughLevel> roughLevels = DetermineRoughLevelService.parseRoughLevels(levels);
+        doRoughLevel(roughLevels);
+    }
+
+    private void doRoughLevel(List<RoughLevel> roughLevels) {
+        if (CollectionUtils.isEmpty(roughLevels)) {
+            throw new RuntimeException("档位值不存在");
+        }
+
+        for (Subject subject : subjects) {
+            List<Paper> list = new ArrayList<>();
+            List<MarkTaskRoughLevel> listTask = new ArrayList<>();
+
+            MarkSubject markSubject = markSubjectRepo.findOne(WORK_ID + "-" + subject.name());
+
+            List<Paper> papers = paperRepo.findByWorkIdAndSubject(WORK_ID, subject);
+            papers = papers.stream().filter(m -> Objects.nonNull(m.getBatchNo()) && StringUtils.isEmpty(m.getRoughLevel())).collect(Collectors.toList());
+            for (Paper paper : papers) {
+                String level = roughLevels.get(getRandom(roughLevels.size())).getRoughCode();
+                paper.setRoughLevel(level);
+                list.add(paper);
+
+                List<MarkTaskRoughLevel> markTasks = markTaskRoughLevelRepo.findByPaperIdAndStage(paper.getId(), markSubject.getStage());
+                for (MarkTaskRoughLevel markTask : markTasks) {
+                    markTask.setResult(level);
+                    markTask.setLevel(level);
+                    listTask.add(markTask);
+                }
+            }
+            List<Paper> data1 = new ArrayList<>();
+            for (Paper p : list) {
+                if (data1.size() == 2000) {
+                    paperRepo.save(data1);
+                    data1.clear();
+                }
+                data1.add(p);
+            }
+            //将剩下的数据也导入
+            if (!data1.isEmpty()) {
+                paperRepo.save(data1);
+            }
+
+            List<MarkTaskRoughLevel> data2 = new ArrayList<>();
+            for (MarkTaskRoughLevel p : listTask) {
+                if (data2.size() == 2000) {
+                    markTaskRoughLevelRepo.save(data2);
+                    data2.clear();
+                }
+                data2.add(p);
+            }
+            //将剩下的数据也导入
+            if (!data2.isEmpty()) {
+                markTaskRoughLevelRepo.save(data2);
+            }
+        }
+
+    }
+
+    private int getRandom(int size) {
+        return (int) (Math.random() * size);
+    }
+
+}

+ 2 - 2
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MakrerApi.java

@@ -291,8 +291,8 @@ public class MakrerApi {
         List<LevelStatDTO> levelStatDTOs = new ArrayList<>();
         MarkSubject markSubject = markSubjectRepo.findOne(marker.getWorkId() + "-" + marker.getSubject().toString());
         List<Level> levels = levelRepo.findByWorkId(markSubject.getWorkId());
-        Integer levelShowAllPaper = ParamCache.levelConfigMap.get(String.valueOf(marker.getWorkId())).getLevelShowAllPaper();
-        Integer propDenominator = ParamCache.levelConfigMap.get(String.valueOf(marker.getWorkId())).getPropDenominator();
+        Integer levelShowAllPaper = ParamCache.roughLevelConfigMap.get(String.valueOf(marker.getWorkId())).getLevelShowAllPaper();
+        Integer propDenominator = ParamCache.roughLevelConfigMap.get(String.valueOf(marker.getWorkId())).getPropDenominator();
         Long batchNo = null;
         if (levelShowAllPaper == 0) {
             batchNo = paperRepo.findMaxRoughBatchNoByWorkIdAndSubject(marker.getWorkId(), marker.getSubject());

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

@@ -162,6 +162,8 @@ public class PaperAssembler {
                     MarkTaskLevel markTaskLevel = markTaskLevelRepo.findByPaperIdAndMarkerId(paper.getId(), userId);
                     paperDTO.setSn(markTaskLevel == null ? paper.getSecretNumber() : markTaskLevel.getSecretNumber());
                 }
+            } else {
+                paperDTO.setSn(paper.getSecretNumber());
             }
             paperDTO.setId(paper.getId());
             paperDTO.setPaperId(paper.getId());

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

@@ -73,12 +73,12 @@ public class QuestionStatAssembler {
             shift = markTaskRoughLevelRepo.countByWorkIdAndSubjectAndMarkerIdAndStageAndShiftAndResult(workId, subject.name(), Long.valueOf(qStats[1].toString()), MarkStage.ROUGH_LEVEL.ordinal());
             shiftScore = markTaskLevelRepo.countByWorkIdAndSubjectAndMarkerIdAndStageAndShiftScoreAndResult(workId, subject.name(), Long.valueOf(qStats[1].toString()), MarkStage.LEVEL.ordinal());
             //所有打回
-            rejectCount = markTaskRoughLevelRepo.findByWorkIdAndSubjectAndMarkerIdAndStageReject(workId, subject.name(), Long.valueOf(qStats[1].toString()), MarkStage.ROUGH_LEVEL.ordinal());
+//            rejectCount = markTaskRoughLevelRepo.findByWorkIdAndSubjectAndMarkerIdAndStageReject(workId, subject.name(), Long.valueOf(qStats[1].toString()), MarkStage.ROUGH_LEVEL.ordinal());
         } else if (MarkStage.SCORE.equals(stage)) {
             shift = markTaskLevelRepo.countByWorkIdAndSubjectAndMarkerIdAndStageAndShiftAndResult(workId, subject.name(), Long.valueOf(qStats[1].toString()), MarkStage.LEVEL.ordinal());
             shiftScore = markTaskScoreRepo.countByWorkIdAndSubjectAndMarkerIdAndStageAndShiftScoreAndResult(workId, subject.name(), Long.valueOf(qStats[1].toString()), MarkStage.SCORE.ordinal());
             //所有打回
-            rejectCount = markTaskLevelRepo.findByWorkIdAndSubjectAndMarkerIdAndStageReject(workId, subject.name(), Long.valueOf(qStats[1].toString()), MarkStage.LEVEL.ordinal());
+//            rejectCount = markTaskLevelRepo.findByWorkIdAndSubjectAndMarkerIdAndStageReject(workId, subject.name(), Long.valueOf(qStats[1].toString()), MarkStage.LEVEL.ordinal());
         }
 
         MarkQuestionStatDTO qpDTO = null;

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

@@ -81,7 +81,7 @@ public class MarkTaskRoughLevelService {
         }
 
         Long finalBatchNo = batchNo;
-        Integer levelShowAllPaper = ParamCache.levelConfigMap.get(String.valueOf(workId)).getLevelShowAllPaper();
+        Integer levelShowAllPaper = ParamCache.roughLevelConfigMap.get(String.valueOf(workId)).getLevelShowAllPaper();
         Specification<MarkTaskRoughLevel> specification = (root, query, builder) -> {
             List<Predicate> predicates = new ArrayList<>();
             List<Predicate> onPredicates = new ArrayList<>();