Просмотр исходного кода

美术阅卷11月新增需求-修复BUG

wangliang 5 лет назад
Родитель
Сommit
c1aa50d77b

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

@@ -29,7 +29,7 @@ public interface PaperRepo extends JpaRepository<Paper, Long>, JpaSpecificationE
     @Query(value = "select * from paper p where p.work_id = ?1 and p.subject = ?2 and p.is_missing = false and p.is_active = false limit ?3", nativeQuery = true)
     List<Paper> findByWorkIdAndSubjectAndIsMissingAndIsActive(Long workId, Subject subject, int taskCount);
 
-    List<Paper> findByWorkIdAndSubjectAndIsMissingFalseAndActiveFalse(Long workId, Subject subject);
+    List<Paper> findByWorkIdAndSubjectAndIsMissingFalseAndActiveFalseAndTest(Long workId, Subject subject, int test);
 
     List<Paper> findByWorkIdAndSubjectAndIsMissingFalseAndActiveTrueAndBatchNoNotNull(Long workId, Subject subject, Sort sort);
 

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

@@ -110,7 +110,6 @@ public class MakrerApi {
     public List<LevelStatDTO> levelStats(@PathVariable MarkUser marker, @RequestParam Long questionId) throws Exception {
         List<LevelStatDTO> levelStatDTOs = new ArrayList<>();
         MarkSubject markSubject = markSubjectRepo.findOne(marker.getWorkId() + "-" + marker.getSubject().toString());
-        System.out.println(markSubject.getTest());
         List<Level> levels = levelRepo.findByWorkId(markSubject.getWorkId());
         Map<String, Level> levelMap = levels.stream().collect(Collectors.toMap(Level::getCode, l -> l));
         //统计workId下各考点的数量

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

@@ -1,10 +1,13 @@
 package cn.com.qmth.stmms.ms.marking.api;
 
 import cn.com.qmth.stmms.ms.commons.web.PageableDTO;
+import cn.com.qmth.stmms.ms.core.domain.ExamQuestion;
 import cn.com.qmth.stmms.ms.core.domain.MarkStage;
+import cn.com.qmth.stmms.ms.core.domain.Paper;
+import cn.com.qmth.stmms.ms.core.domain.enums.TrialEnum;
 import cn.com.qmth.stmms.ms.core.domain.task.MarkTask;
+import cn.com.qmth.stmms.ms.core.domain.user.MarkUser;
 import cn.com.qmth.stmms.ms.core.repository.ExamQuestionRepo;
-import cn.com.qmth.stmms.ms.core.repository.LevelRepo;
 import cn.com.qmth.stmms.ms.core.repository.MarkTaskRepo;
 import cn.com.qmth.stmms.ms.core.repository.PaperRepo;
 import cn.com.qmth.stmms.ms.marking.assembler.MarkTaskAssembler;
@@ -17,8 +20,12 @@ import org.springframework.data.jpa.domain.Specification;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.persistence.criteria.Predicate;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
 import java.util.*;
 
 /**
@@ -35,9 +42,6 @@ public class MarkTaskApi {
     @Autowired
     private MarkingService markingService;
 
-    @Autowired
-    private LevelRepo levelRepo;
-
     @Autowired
     private MarkTaskAssembler markTaskAssembler;
 
@@ -95,42 +99,42 @@ public class MarkTaskApi {
         Page<MarkTask> markTasks = markTaskRepo.findAll(specification, pageable);
         if (Objects.isNull(markTasks) || markTasks.getContent().size() == 0) {
             if (Objects.nonNull(isSample) && isSample) {
-//                ExamQuestion examQuestion = examQuestionRepo.findOne(questionId);
-//                if (examQuestion.getTest() == TrialEnum.DEFAULT.getId()) {
-//                    Paper paper = paperRepo.findTopByLevelAndIsSampleAndIsMissingAndSubjectAndTestAndAreaCodeOrderByUpdatedOnDesc(level, isSample, false, examQuestion.getSubject(), TrialEnum.START_TRIAL.getId(), examQuestion.getAreaCode());
-//                    if (Objects.nonNull(paper)) {
-//                        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
-//                        HttpServletRequest request = attributes.getRequest();
-//                        HttpSession session = request.getSession();
-//                        String token = (String) session.getAttribute("token");
-//                        if (Objects.isNull(token)) {
-//                            throw new Exception("请先登录");
-//                        }
-//                        MarkUser markUser = (MarkUser) session.getAttribute("markUser");
-//                        MarkTask markTask = new MarkTask(markUser, paper, stage, 1L);
-//                        markTaskDTOs.add(markTaskAssembler.toDTO(markTask));
-//                    }
-//                }
-                specification = (root, query, builder) -> {
-                    List<Predicate> predicates = new ArrayList<>();
-                    predicates.add(builder.equal(root.get("questionId"), questionId));
-                    predicates.add(builder.equal(root.get("markerId"), markerId));
-                    predicates.add(builder.equal(root.get("stage"), stage));
-                    if (level == null) {
-                        predicates.add(builder.isNull(root.get("paper").get("level")));
-                    } else if (stage == MarkStage.LEVEL) {
-                        predicates.add(builder.equal(root.get("paper").get("level"), level));
-                    } else if (stage == MarkStage.SCORE) {
-                        predicates.add(builder.isNotNull(root.get("paper").get("level")));
-                    }
-                    if (isSample != null) {
-                        predicates.add(builder.equal(root.get("paper").get("isSample"), isSample));
+                ExamQuestion examQuestion = examQuestionRepo.findOne(questionId);
+                if (examQuestion.getTest() == TrialEnum.DEFAULT.getId()) {
+                    Paper paper = paperRepo.findTopByLevelAndIsSampleAndIsMissingAndSubjectAndTestAndAreaCodeOrderByUpdatedOnDesc(level, isSample, false, examQuestion.getSubject(), TrialEnum.START_FORMAL.getId(), examQuestion.getAreaCode());
+                    if (Objects.nonNull(paper)) {
+                        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+                        HttpServletRequest request = attributes.getRequest();
+                        HttpSession session = request.getSession();
+                        String token = (String) session.getAttribute("token");
+                        if (Objects.isNull(token)) {
+                            throw new Exception("请先登录");
+                        }
+                        MarkUser markUser = (MarkUser) session.getAttribute("markUser");
+                        MarkTask markTask = new MarkTask(markUser, paper, stage, 1L);
+                        markTaskDTOs.add(markTaskAssembler.toDTO(markTask));
                     }
-                    predicates.add(builder.equal(root.get("paper").get("isMissing"), false));
-                    predicates.add(builder.equal(root.get("paper").get("active"), true));
-                    return builder.and(predicates.toArray(new Predicate[predicates.size()]));
-                };
-                markTasks = markTaskRepo.findAll(specification, pageable);
+                }
+//                specification = (root, query, builder) -> {
+//                    List<Predicate> predicates = new ArrayList<>();
+//                    predicates.add(builder.equal(root.get("questionId"), questionId));
+//                    predicates.add(builder.equal(root.get("markerId"), markerId));
+//                    predicates.add(builder.equal(root.get("stage"), stage));
+//                    if (level == null) {
+//                        predicates.add(builder.isNull(root.get("paper").get("level")));
+//                    } else if (stage == MarkStage.LEVEL) {
+//                        predicates.add(builder.equal(root.get("paper").get("level"), level));
+//                    } else if (stage == MarkStage.SCORE) {
+//                        predicates.add(builder.isNotNull(root.get("paper").get("level")));
+//                    }
+//                    if (isSample != null) {
+//                        predicates.add(builder.equal(root.get("paper").get("isSample"), isSample));
+//                    }
+//                    predicates.add(builder.equal(root.get("paper").get("isMissing"), false));
+//                    predicates.add(builder.equal(root.get("paper").get("active"), true));
+//                    return builder.and(predicates.toArray(new Predicate[predicates.size()]));
+//                };
+//                markTasks = markTaskRepo.findAll(specification, pageable);
             }
         }
         markTasks.getContent().forEach(m -> {

+ 7 - 6
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/StageControlService.java

@@ -1,6 +1,7 @@
 package cn.com.qmth.stmms.ms.marking.service;
 
 import cn.com.qmth.stmms.ms.core.domain.*;
+import cn.com.qmth.stmms.ms.core.domain.enums.TrialEnum;
 import cn.com.qmth.stmms.ms.core.domain.user.MarkRight;
 import cn.com.qmth.stmms.ms.core.domain.user.MarkUser;
 import cn.com.qmth.stmms.ms.core.domain.user.MarkerGroup;
@@ -65,8 +66,8 @@ public class StageControlService {
         statusMap.put(markSubject.getId(), true);
         MarkStage markStage = markSubject.getStage();
         //是否还有未投放的试卷
-        int waitCount =paperRepo.countByWorkIdAndSubjectAndIsMissingFalseAndActiveFalseAndBatchNoIsNullAndTest(markSubject.getWorkId(), markSubject.getSubject(), 0);
-        if(waitCount > 0 && markStage.equals(MarkStage.LEVEL)){
+        int waitCount = paperRepo.countByWorkIdAndSubjectAndIsMissingFalseAndActiveFalseAndBatchNoIsNullAndTest(markSubject.getWorkId(), markSubject.getSubject(), 0);
+        if (waitCount > 0 && markStage.equals(MarkStage.LEVEL)) {
             markStage = MarkStage.INIT;
         }
         switch (markStage) {
@@ -126,7 +127,7 @@ public class StageControlService {
             throw new RuntimeException("评卷员没有进行分组");
         }
 
-        if(markSubject.getTest() != 1) {
+        if (markSubject.getTest() != 1) {
             //是否有未结束的分档任务
             int count = paperRepo.countByWorkIdAndSubjectAndLevelIsNullAndIsMissingFalseAndActiveTrueAndBatchNoNotNullAndTest(workId, subject, 0);
             if (count > 0) {
@@ -147,10 +148,10 @@ public class StageControlService {
         }
 
         List<Paper> papers = null;
-        if(markSubject.getTest() == 1) {
+        if (markSubject.getTest() == 1) {
             papers = paperRepo.findByWorkIdAndSubjectAndIsMissingAndTest(workId, subject, false, markSubject.getTest());
         } else {
-            List<Paper> papersList = paperRepo.findByWorkIdAndSubjectAndIsMissingFalseAndActiveFalse(workId, subject);
+            List<Paper> papersList = paperRepo.findByWorkIdAndSubjectAndIsMissingFalseAndActiveFalseAndTest(workId, subject, TrialEnum.DEFAULT.getId());
             papers = papersList.subList(0, taskCount);
         }
         assignTaskService.assignForGrouping(papers, markerGroups, markSubject);
@@ -266,7 +267,7 @@ public class StageControlService {
 
         BigDecimal waitTotal = BigDecimal.valueOf(totalCount).subtract(BigDecimal.valueOf(successCount));
         //进度
-        BigDecimal progress = BigDecimal.ZERO.compareTo(BigDecimal.valueOf(totalCount)) == 0 ? BigDecimal.ZERO :BigDecimal.valueOf(successCount).divide(BigDecimal.valueOf(totalCount), 4, BigDecimal.ROUND_HALF_UP);
+        BigDecimal progress = BigDecimal.ZERO.compareTo(BigDecimal.valueOf(totalCount)) == 0 ? BigDecimal.ZERO : BigDecimal.valueOf(successCount).divide(BigDecimal.valueOf(totalCount), 4, BigDecimal.ROUND_HALF_UP);
 
         LevleProgressDTO progressDTO = new LevleProgressDTO();
         progressDTO.setSuccessCount(successCount);