Browse Source

线下版本-分档、打分优化-20201124

xiaof 4 years ago
parent
commit
9620d4a6f9

+ 22 - 28
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MarkTaskApi.java

@@ -100,6 +100,17 @@ public class MarkTaskApi {
                             Pageable pageable) throws Exception {
         List<MarkTaskDTO> markTaskDTOs = new ArrayList<>();
         MarkUser markUser = markUserRepo.findOne(markerId);
+        Long batchNo = null;
+        Long scoreBatchNo = null;
+        if (stage == MarkStage.LEVEL) {
+            batchNo = paperRepo.findMaxBatchNoByWorkIdAndSubject(workId, markUser.getSubject());
+        } else if (stage == MarkStage.SCORE) {
+            scoreBatchNo = paperRepo.findMaxScoreBatchNoByWorkIdAndSubject(workId, markUser.getSubject());
+        }
+        Long finalBatchNo = batchNo;
+        Long finalScoreBatchNo = scoreBatchNo;
+        Integer levelShowAllPaper = ParamCache.paramMap.get(workId).getLevelShowAllPaper();
+        Integer scoreShowAllPaper = ParamCache.paramMap.get(workId).getScoreShowAllPaper();
         Specification<MarkTask> specification = (root, query, builder) -> {
             List<Predicate> predicates = new ArrayList<>();
             List<Predicate> onPredicates = new ArrayList<>();
@@ -112,64 +123,45 @@ public class MarkTaskApi {
             if (level == null) {
                 predicates.add(builder.isNull(root.get("result")));
                 if (stage == MarkStage.SCORE) {
-//                    predicates.add(builder.equal(root.get("paper").get("isShift"), false));
-//                    predicates.add(builder.equal(root.get("paper").get("isShiftScore"), false));
                     onPredicates.add(builder.equal(join.get("isShift"), false));
                     onPredicates.add(builder.equal(join.get("isShiftScore"), false));
                 }
             } else if (stage == MarkStage.LEVEL) {
                 //查询
                 predicates.add(builder.equal(root.get("result"), level));
-                if (ParamCache.paramMap.get(workId).getLevelShowAllPaper() == 0) {
-//                    Long batchNo = paperRepo.findByQuestionId(questionId);
-                    Long batchNo = paperRepo.findMaxBatchNoByWorkIdAndSubject(workId, markUser.getSubject());
-                    if (!Objects.isNull(batchNo)) {
+                if (levelShowAllPaper == 0) {
+                    if (!Objects.isNull(finalBatchNo)) {
 //                        predicates.add(builder.equal(root.get("paper").get("batchNo"), batchNo));
-                        onPredicates.add(builder.equal(join.get("batchNo"), batchNo));
+                        onPredicates.add(builder.equal(join.get("batchNo"), finalBatchNo));
                     }
                 }
             } else if (stage == MarkStage.SCORE) {
-//                Long batchNo = paperRepo.findScoreBatchNoByQuestionId(questionId);
-                Long batchNo = paperRepo.findMaxScoreBatchNoByWorkIdAndSubject(workId, markUser.getSubject());
-//                predicates.add(builder.equal(root.get("paper").get("level"), level));
                 onPredicates.add(builder.equal(join.get("level"), level));
                 predicates.add(builder.isNotNull(root.get("result")));
-//                predicates.add(builder.equal(root.get("paper").get("isShift"), false));
-//                predicates.add(builder.equal(root.get("paper").get("isShiftScore"), false));
                 onPredicates.add(builder.equal(join.get("isShift"), false));
-//                onPredicates.add(builder.equal(join.get("isShiftScore"), false));
-                if (ParamCache.paramMap.get(workId).getScoreShowAllPaper() == 1) {
-//                    predicates.add(builder.isNotNull(root.get("paper").get("scoreBatchNo")));
+                if (scoreShowAllPaper == 1) {
                     onPredicates.add(builder.isNotNull(join.get("scoreBatchNo")));
                 } else {
-//                    predicates.add(builder.equal(root.get("paper").get("scoreBatchNo"), batchNo));
-                    onPredicates.add(builder.equal(join.get("scoreBatchNo"), batchNo));
+                    onPredicates.add(builder.equal(join.get("scoreBatchNo"), finalScoreBatchNo));
                 }
             }
             if (isSample != null) {
-//                predicates.add(builder.equal(root.get("paper").get("isSample"), isSample));
                 onPredicates.add(builder.equal(join.get("isSample"), isSample));
             }
             if (reject != null && reject) {
-//                predicates.add(builder.equal(root.get("paper").get("isRejected"), reject));
                 onPredicates.add(builder.equal(join.get("isRejected"), reject));
             } else {
                 predicates.add(builder.equal(root.get("isRejected"), reject));
             }
-//            predicates.add(builder.equal(root.get("paper").get("isMissing"), false));
-//            predicates.add(builder.equal(root.get("paper").get("active"), true));
-//            onPredicates.add(builder.equal(join.get("isMissing"), false));
             onPredicates.add(builder.equal(join.get("active"), true));
             //过滤考区
             if (Objects.nonNull(areaCode)) {
-//                predicates.add(builder.equal(root.get("paper").get("areaCode"), areaCode));
                 onPredicates.add(builder.equal(join.get("areaCode"), areaCode));
             }
             join.on(onPredicates.toArray(new Predicate[onPredicates.size()]));
-//            predicates.add(builder.equal(root.get("isActive"), false));
             return builder.and(predicates.toArray(new Predicate[predicates.size()]));
         };
-        Sort sort = new Sort( "randomSeq", "randomSeqNew");
+        Sort sort = new Sort("randomSeq", "randomSeqNew");
         Pageable pageable1 = new PageRequest(pageable.getPageNumber(), pageable.getPageSize(), sort);
         long t1 = System.currentTimeMillis();
         Page<MarkTask> markTasks = markTaskRepo.findAll(specification, pageable1);
@@ -191,9 +183,12 @@ public class MarkTaskApi {
                 }
             }
         }
+        long t3 = System.currentTimeMillis();
         markTasks.getContent().forEach(m -> {
             markTaskDTOs.add(markTaskAssembler.toDTO(m));
         });
+        long t4 = System.currentTimeMillis();
+        System.out.println("m2:" + (t4 - t3));
         if (stage == MarkStage.SCORE && Objects.isNull(level)) {
 //            if (Objects.nonNull(scoreConfig) && Objects.nonNull(scoreConfig.getTaskSort()) && Objects.equals("paper", scoreConfig.getTaskSort())) {
 //                Collections.sort(markTaskDTOs, Comparator.comparing(MarkTaskDTO::getPaperId));
@@ -416,11 +411,10 @@ public class MarkTaskApi {
     }
 
 
-
     @RequestMapping(value = "/kzzReviewPaper", method = RequestMethod.GET)
     public List<PaperDTO> reviewPaper(@RequestParam Long workId,
-                                         @RequestParam Subject subject,
-                                         @RequestParam Long questionId) {
+                                      @RequestParam Subject subject,
+                                      @RequestParam Long questionId) {
         Specification<Paper> specification = (root, query, builder) -> {
             List<Predicate> predicates = new ArrayList<>();
             predicates.add(builder.equal(root.get("workId"), workId));