Procházet zdrojové kódy

测试bug修复-0814

xiaof před 4 roky
rodič
revize
e3e6130342

+ 1 - 1
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/domain/MarkLog.java

@@ -52,7 +52,7 @@ public class MarkLog implements Serializable {
     private String operDataBefore;
 //    @ApiModelProperty(value = "操作后数据")
     private String operDataAfter;
-    @Temporal(value = TemporalType.DATE)
+//    @Temporal(value = TemporalType.DATE)
     @NotNull
 //    @ApiModelProperty(value = "操作时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

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

@@ -385,7 +385,7 @@ public class MarkLogAop {
             markUser = markUserRepo.findOne(markTask.getMarkerId());
         } else {
             String[] strs = token.split("#");
-            markUser = markUserRepo.findOne(Long.parseLong(strs[2]));
+            markUser = strs[2] == null ? null : markUserRepo.findOne(Long.parseLong(strs[2]));
         }
         LOGGER.info("markUser:{}", JSONObject.toJSONString(markUser));
 //        String[] argNames = ((MethodSignature) joinPoint.getSignature()).getParameterNames();//参数名

+ 1 - 1
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/ChangeLevelApi.java

@@ -91,7 +91,7 @@ public class ChangeLevelApi {
                 if (Objects.equals(status, "0")) {
                     predicates.add(builder.equal(root.get("auditStatus"), status));
                 } else {
-                    predicates.add(builder.notEqual(root.get("auditStatus"), status));
+                    predicates.add(builder.notEqual(root.get("auditStatus"), 0));
                 }
 
             }

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

@@ -142,21 +142,21 @@ public class MakrerApi {
             @Override
             public Map<String, Long> call() throws Exception {
                 Map<String, Long> map = new HashMap<>();
-                //当前老师当前试卷的评档次数(不分档位)
+                //当前老师当前批次试卷总数
                 long kdtotal;
                 if (ParamCache.paramMap.get(marker.getWorkId()).getLevelShowAllPaper() == 1) {
                     kdtotal = markTaskRepo.countByQuestionIdAll(questionId, marker.getId());
                 } else {
                     kdtotal = markTaskRepo.countByQuestionId(questionId, batchNo, marker.getId());
                 }
-                //当前老师所有的评档次数(不分档位)
+                //当前考区内试卷总数
                 long total = paperRepo.countByWorkIdAndQuestionId(markSubject.getWorkId(), questionId);
                 map.put("kdtotal", kdtotal);
                 map.put("total", total);
                 return map;
             }
         });
-        //统计workId下各考点的数量
+        //当前考区各档位定档数量
         paperRepo.countGroupByLevel(questionId, batchNo)
                 .forEach(o -> {
                     LevelStatDTO levelStatDTO = levelStatAssembler.toDTO(o);
@@ -173,14 +173,6 @@ public class MakrerApi {
                         int rejectCount = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndIsRejectedTrueAndIsMissing(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), false);
                         levelStatDTO.setCount(count);
                         levelStatDTO.setRejected(rejectCount);
-                    } else {
-                        int count;
-                        if (ParamCache.paramMap.get(marker.getWorkId()).getLevelShowAllPaper() == 1) {
-                            count = markTaskRepo.countByQuestionIdAndStageAndResultAndIsMissingAll(questionId, MarkStage.LEVEL.ordinal(), levelStatDTO.getId().toString(), false, marker.getId());
-                        } else {
-                            count = markTaskRepo.countByQuestionIdAndStageAndResultAndIsMissing(questionId, MarkStage.LEVEL.ordinal(), levelStatDTO.getId().toString(), false, batchNo, marker.getId());
-                        }
-                        levelStatDTO.setCount(count);
                     }
                     levelStatDTOs.add(levelStatDTO);
                 });
@@ -194,14 +186,13 @@ public class MakrerApi {
                 dto.setPercent(0.0);
 
                 //当前老师当前档位评档次数(所有考试)
-                int countNew;
-                if (ParamCache.paramMap.get(marker.getWorkId()).getLevelShowAllPaper() == 1) {
-                    countNew = markTaskRepo.countByQuestionIdAndStageAndResultAndIsMissingAll(questionId, MarkStage.LEVEL.ordinal(), level.getCode(), false, marker.getId());
-                } else {
-                    countNew = markTaskRepo.countByQuestionIdAndStageAndResultAndIsMissing(questionId, MarkStage.LEVEL.ordinal(), level.getCode(), false, batchNo, marker.getId());
-                }
-//                dto.setPercent(countNew == 0 ? 0D : dto.getPercent());
-                dto.setCount(countNew);
+//                int countNew;
+//                if (ParamCache.paramMap.get(marker.getWorkId()).getLevelShowAllPaper() == 1) {
+////                    countNew = markTaskRepo.countByQuestionIdAndStageAndResultAndIsMissingAll(questionId, MarkStage.LEVEL.ordinal(), level.getCode(), false, marker.getId());
+//                } else {
+//                    countNew = markTaskRepo.countByQuestionIdAndStageAndResultAndIsMissing(questionId, MarkStage.LEVEL.ordinal(), level.getCode(), false, batchNo, marker.getId());
+//                }
+//                dto.setCount(countNew);
                 levelStatDTOs.add(dto);
             }
         }
@@ -220,25 +211,39 @@ public class MakrerApi {
         long finalTotal = total;
         levelStatDTOs.forEach(o -> {
             if (o.getId() != null) {
+                //当前老师各档位数量
+                int countNew;
+                if (ParamCache.paramMap.get(marker.getWorkId()).getLevelShowAllPaper() == 1) {
+//                            count = markTaskRepo.countByQuestionIdAndStageAndResultAndIsMissingAll(questionId, MarkStage.LEVEL.ordinal(), levelStatDTO.getId().toString(), false, marker.getId());
+                    countNew = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndResultAll(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), String.valueOf(o.getId()));
+                } else {
+//                            count = markTaskRepo.countByQuestionIdAndStageAndResultAndIsMissing(questionId, MarkStage.LEVEL.ordinal(), levelStatDTO.getId().toString(), false, batchNo, marker.getId());
+                    countNew = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndResult(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), String.valueOf(o.getId()), batchNo);
+                }
+                o.setCount(countNew);
+                //该档位考区内已定档数量
+                long gcountNew = paperRepo.countByWorkIdAndSubjectAndQuestionIdAndLevel(marker.getWorkId(), markSubject.getSubject(), questionId, String.valueOf(o.getId()));
+                o.setGcount((int) gcountNew);
+
                 o.setPt(levelMap.get(o.getId()).getPt());
                 o.setKdpt(levelMap.get(o.getId()).getKdpt());
                 o.setCount(Objects.isNull(o.getCount()) ? 0 : o.getCount());
-                double p = finalKdtotal == 0 ? 0 : (double) o.getCount() / finalKdtotal;
+                double p = finalKdtotal == 0 ? 0 : (double) o.getCount() / finalKdtotal * 100;
                 BigDecimal bd = new BigDecimal(p).setScale(3, RoundingMode.HALF_EVEN);
                 o.setPercent(bd.doubleValue());
 
                 o.setGcount(Objects.isNull(o.getGcount()) ? 0 : o.getGcount());
-                double gp = finalTotal == 0 ? 0 : (double) o.getGcount() / finalTotal;
+                double gp = finalTotal == 0 ? 0 : (double) o.getGcount() / finalTotal * 100;
                 BigDecimal gbd = new BigDecimal(gp).setScale(3, RoundingMode.HALF_EVEN);
                 o.setGpercent(gbd.doubleValue());
-                int count;
-                if (ParamCache.paramMap.get(marker.getWorkId()).getLevelShowAllPaper() == 1) {
-                    count = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndResultAll(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), o.getId().toString());
-                } else {
-                    count = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndResult(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), o.getId().toString(), batchNo);
-                }
-                o.setPercent(count == 0 ? 0 : o.getPercent());
-                o.setCount(count);
+//                int count;
+//                if (ParamCache.paramMap.get(marker.getWorkId()).getLevelShowAllPaper() == 1) {
+//                    count = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndResultAll(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), o.getId().toString());
+//                } else {
+//                    count = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndResult(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), o.getId().toString(), batchNo);
+//                }
+//                o.setPercent(count == 0 ? 0 : o.getPercent());
+//                o.setCount(count);
             }
         });
         Collections.sort(levelStatDTOs, (o1, o2) -> {

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

@@ -144,7 +144,7 @@ public class MarkTaskApi {
 //            predicates.add(builder.equal(root.get("isActive"), false));
             return builder.and(predicates.toArray(new Predicate[predicates.size()]));
         };
-        Sort sort = new Sort("paper.level", "serialNumber", "randomSeqNew");
+        Sort sort = new Sort("paper.level", "randomSeq", "serialNumber", "randomSeqNew");
         Pageable pageable1 = new PageRequest(pageable.getPageNumber(), pageable.getPageSize(), sort);
         Page<MarkTask> markTasks = markTaskRepo.findAll(specification, pageable1);
 
@@ -342,7 +342,7 @@ public class MarkTaskApi {
                                          @RequestParam Long questionId,
                                          @RequestParam(required = false) String areaCode) {
         List<MarkTaskDTO> markTaskDTOs = new ArrayList<>();
-        Sort sort = new Sort(Sort.Direction.ASC, "updatedOn");
+        Sort sort = new Sort(Sort.Direction.DESC, "updatedOn");
         Pageable pageable = new PageRequest(0, 5, sort);
         Specification<MarkTask> specification = (root, query, builder) -> {
             List<Predicate> predicates = new ArrayList<>();
@@ -358,6 +358,8 @@ public class MarkTaskApi {
                     predicates.add(builder.equal(root.get("paper").get("batchNo"), batchNo));
                 }
                 predicates.add(builder.isNotNull(root.get("result")));
+                //分档需要过滤标准卷
+                predicates.add(builder.equal(root.get("paper").get("isSample"), false));
             } else if (stage == MarkStage.SCORE) {
                 Long socreBatchNo = paperRepo.findScoreBatchNoByQuestionId(questionId);
                 if (!Objects.isNull(socreBatchNo)) {
@@ -369,8 +371,6 @@ public class MarkTaskApi {
             if (Objects.nonNull(areaCode)) {
                 predicates.add(builder.equal(root.get("paper").get("areaCode"), areaCode));
             }
-            //过滤标准卷
-            predicates.add(builder.equal(root.get("paper").get("isSample"), false));
             return builder.and(predicates.toArray(new Predicate[predicates.size()]));
         };
 

+ 6 - 4
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/PaperAssembler.java

@@ -102,10 +102,12 @@ public class PaperAssembler {
             paperDTO.setPaperTest(paper.getTest());
             paperDTO.setShift(paper.isShift());
             paperDTO.setShiftScore(paper.isShiftScore());
-            //计算levelValue和
-            List<MarkTask> markTaskList = markTaskRepo.findByPaperIdAndStage(paper.getId(), MarkStage.LEVEL);
-            int sum = markTaskList.stream().mapToInt(MarkTask::getLevelValue).sum();
-            paperDTO.setSortSum(sum);
+            //计算levelValue和(试评阶段不用)
+            if(markSubject.getTest() == 0) {
+                List<MarkTask> markTaskList = markTaskRepo.findByPaperIdAndStage(paper.getId(), MarkStage.LEVEL);
+                int sum = markTaskList.stream().mapToInt(MarkTask::getLevelValue).sum();
+                paperDTO.setSortSum(sum);
+            }
         }
         return paperDTO;
     }

+ 26 - 4
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/StageControlService.java

@@ -83,7 +83,8 @@ public class StageControlService {
             case INIT:
                 markSubject.setStage(MarkStage.LEVEL);
                 int taskCount = (int) map.get("taskCount");
-                enterLevelStage(markSubject, taskCount);
+                Object questionId = map.get("questionId");
+                enterLevelStage(markSubject, taskCount, questionId);
                 break;
             case LEVEL:
                 markSubject.setStage(MarkStage.SCORE);
@@ -117,7 +118,7 @@ public class StageControlService {
      *
      * @param markSubject
      */
-    private void enterLevelStage(MarkSubject markSubject, int taskCount) throws Exception {
+    private void enterLevelStage(MarkSubject markSubject, int taskCount, Object questionId) throws Exception {
         Long workId = markSubject.getWorkId();
         Subject subject = markSubject.getSubject();
         List<Level> levels = levelRepo.findByWorkId(workId);
@@ -158,12 +159,27 @@ public class StageControlService {
                 throw new RuntimeException("没有分档完成");
             }
 
+            if(Objects.nonNull(questionId)){
+                Long questionId1 = Long.valueOf(questionId.toString());
+                int qcount = paperRepo.countByWorkIdAndQuestionIdAndSubjectAndLevelIsNullAndIsMissingFalseAndTest(workId, questionId1, subject, 0);
+                if(qcount == 0){
+                    statusMap.put(markSubject.getId(), false);
+                    throw new RuntimeException("没有可分档任务");
+                }
+            }
+
             //任务数量大于0,小于等于待评数量
             if (taskCount == 0) {
                 statusMap.put(markSubject.getId(), false);
                 throw new RuntimeException("请输入正确的分配任务数量");
             }
-            int waitCount = paperRepo.countByWorkIdAndSubjectAndIsMissingFalseAndActiveFalseAndBatchNoIsNullAndTest(workId, subject, 0);
+            int waitCount;
+            if(Objects.isNull(questionId)) {
+                waitCount = paperRepo.countByWorkIdAndSubjectAndIsMissingFalseAndActiveFalseAndBatchNoIsNullAndTest(workId, subject, 0);
+            } else {
+                Long questionId1 = Long.valueOf(questionId.toString());
+                waitCount = paperRepo.countByWorkIdAndQuestionIdAndSubjectAndIsMissingFalseAndActiveFalseAndBatchNoIsNullAndTest(workId, questionId1, subject, 0);
+            }
             if (taskCount - waitCount > 0) {
                 statusMap.put(markSubject.getId(), false);
                 throw new RuntimeException("分配任务数量不能大于待评数量");
@@ -174,7 +190,13 @@ public class StageControlService {
         if (markSubject.getTest() == 1) {
             papers = paperRepo.findByWorkIdAndSubjectAndIsMissingAndTest(workId, subject, false, markSubject.getTest());
         } else {
-            List<Paper> papersList = paperRepo.findByWorkIdAndSubjectAndIsMissingFalseAndActiveFalseAndTestOrderByQuestionId(workId, subject, TrialEnum.DEFAULT.getId());
+            List<Paper> papersList;
+            if(Objects.isNull(questionId)) {
+                papersList = paperRepo.findByWorkIdAndSubjectAndIsMissingFalseAndActiveFalseAndTestOrderByQuestionId(workId, subject, TrialEnum.DEFAULT.getId());
+            } else {
+                Long questionId1 = Long.valueOf(questionId.toString());
+                papersList = paperRepo.findByWorkIdAndQuestionIdAndSubjectAndIsMissingFalseAndActiveFalseAndTestOrderByQuestionId(workId, questionId1, subject, 0);
+            }
             papers = papersList.subList(0, taskCount);
         }
         assignTaskService.assignForGrouping(papers, markerGroups, markSubject, null);