Kaynağa Gözat

batchNo取值bug修复

xiaof 4 yıl önce
ebeveyn
işleme
d2187d3be9

+ 6 - 0
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/PaperRepo.java

@@ -364,5 +364,11 @@ public interface PaperRepo extends JpaRepository<Paper, Long>, JpaSpecificationE
 
     List<Paper> findByWorkIdAndQuestionIdAndSubjectAndLevelAndIsMissingFalseAndActiveTrueAndScoreBatchNoIsNull(Long workId, Long questionId0, Subject subject, String code, Sort sort);
 
+    @Query("select max(p.batchNo) from Paper p where p.workId = ?1 and p.subject = ?2")
+    Long findMaxBatchNoByWorkIdAndSubject(Long workId, Subject subject);
+
+    @Query("select max(p.scoreBatchNo) from Paper p where p.workId = ?1 and p.subject = ?2")
+    Long findMaxScoreBatchNoByWorkIdAndSubject(Long workId, Subject subject);
+
 //    List<Paper> findByWorkIdAndSubjectAndInspectRange(Long workId, Subject subject, Long inspectRange);
 }

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

@@ -137,7 +137,7 @@ public class MakrerApi {
         List<Level> levels = levelRepo.findByWorkId(markSubject.getWorkId());
         Map<String, Level> levelMap = levels.stream().collect(Collectors.toMap(Level::getCode, l -> l));
 //        Long batchNo = paperRepo.findByQuestionId(questionId);
-        Long batchNo = paperRepo.findMaxBatchNoByWorkId(marker.getWorkId());
+        Long batchNo = paperRepo.findMaxBatchNoByWorkIdAndSubject(marker.getWorkId(), marker.getSubject());
         Future future = myThreadPool.arbitratePoolTaskExecutor.submit(new Callable<Map<String, Long>>() {
 
             @Override
@@ -270,7 +270,7 @@ public class MakrerApi {
         List<Level> levels = levelRepo.findByWorkId(markSubject.getWorkId());
         Map<String, Level> levelMap = levels.stream().collect(Collectors.toMap(Level::getCode, l -> l));
 //        Long batchNo = paperRepo.findScoreBatchNoByQuestionId(questionId);
-        Long batchNo = paperRepo.findMaxScoreBatchNoByWorkId(marker.getWorkId());
+        Long batchNo = paperRepo.findMaxScoreBatchNoByWorkIdAndSubject(marker.getWorkId(), marker.getSubject());
         Future future = myThreadPool.arbitratePoolTaskExecutor.submit(new Callable<Map<String, Long>>() {
 
             @Override
@@ -468,10 +468,10 @@ public class MakrerApi {
         List<Object[]> qStats;
         Long batchNo;
         if (markSubject.getStage().name() == MarkStage.SCORE.name()) {
-            batchNo = paperRepo.findMaxScoreBatchNoByWorkId(workId);
+            batchNo = paperRepo.findMaxScoreBatchNoByWorkIdAndSubject(workId, markSubject.getSubject());
             qStats = markTaskRepo.listGroupByQuestionAndMarkerAndScoreBatchNo(workId, markSubject.getSubject().name(), markSubject.getStage().ordinal(), batchNo);
         } else {
-            batchNo = paperRepo.findMaxBatchNoByWorkId(workId);
+            batchNo = paperRepo.findMaxBatchNoByWorkIdAndSubject(workId, markSubject.getSubject());
             qStats = markTaskRepo.listGroupByQuestionAndMarkerAndBatchNo(workId, markSubject.getSubject().name(), markSubject.getStage().ordinal(), markSubject.getTest(), batchNo);
         }
         if (qStats != null) {

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

@@ -95,6 +95,7 @@ public class MarkTaskApi {
                             @RequestParam(required = false) String areaCode,
                             Pageable pageable) throws Exception {
         List<MarkTaskDTO> markTaskDTOs = new ArrayList<>();
+        MarkUser markUser = markUserRepo.findOne(markerId);
         Specification<MarkTask> specification = (root, query, builder) -> {
             List<Predicate> predicates = new ArrayList<>();
             if (Objects.nonNull(questionId)) {
@@ -113,14 +114,14 @@ public class MarkTaskApi {
                 predicates.add(builder.equal(root.get("result"), level));
                 if(ParamCache.paramMap.get(workId).getLevelShowAllPaper() == 0) {
 //                    Long batchNo = paperRepo.findByQuestionId(questionId);
-                    Long batchNo = paperRepo.findMaxBatchNoByWorkId(workId);
+                    Long batchNo = paperRepo.findMaxBatchNoByWorkIdAndSubject(workId, markUser.getSubject());
                     if (!Objects.isNull(batchNo)) {
                         predicates.add(builder.equal(root.get("paper").get("batchNo"), batchNo));
                     }
                 }
             } else if (stage == MarkStage.SCORE) {
 //                Long batchNo = paperRepo.findScoreBatchNoByQuestionId(questionId);
-                Long batchNo = paperRepo.findMaxScoreBatchNoByWorkId(workId);
+                Long batchNo = paperRepo.findMaxScoreBatchNoByWorkIdAndSubject(workId, markUser.getSubject());
                 predicates.add(builder.equal(root.get("paper").get("level"), level));
                 predicates.add(builder.isNotNull(root.get("result")));
                 predicates.add(builder.equal(root.get("paper").get("isShift"), false));
@@ -157,7 +158,7 @@ public class MarkTaskApi {
                 if (examQuestion.getTest() == TrialEnum.DEFAULT.getId()) {
                     List<Paper> paperList = paperRepo.findSample(level, isSample, false, examQuestion.getSubject().name(), TrialEnum.DEFAULT.getId(), TrialEnum.START_FORMAL.getId(), examQuestion.getAreaCode(), examQuestion.getWorkId());
                     if (Objects.nonNull(paperList) && paperList.size() > 0) {
-                        MarkUser markUser = markUserRepo.findOne(markerId);
+//                        MarkUser markUser = markUserRepo.findOne(markerId);
                         for (Paper p : paperList) {
                             MarkTask markTask = new MarkTask(markUser, p, stage, 1L);
                             markTaskDTOs.add(markTaskAssembler.toDTO(markTask));