浏览代码

3.0.2 更新

xiaofei 8 月之前
父节点
当前提交
5d482556ff

+ 1 - 1
stmms-ms-main/install/config.ini

@@ -1,5 +1,5 @@
 [app]
-version=3.0.0
+version=3.0.2
 name=ÃÀÊõÔľí»ú¹¹°æ
 portal=http://localhost:8400/
 module=api

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

@@ -33,11 +33,13 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
+import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.Join;
 import javax.persistence.criteria.JoinType;
 import javax.persistence.criteria.Predicate;
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 评卷任务数据api
@@ -294,25 +296,26 @@ public class MarkTaskApi {
 
     /**
      * 评卷员的标记试卷查询
-     * @param markerId 评卷员ID
-     * @param workId 工作ID
-     * @param subject 科目
+     *
+     * @param markerId   评卷员ID
+     * @param workId     工作ID
+     * @param subject    科目
      * @param questionId 考区ID
-     * @param pageable 分页
+     * @param pageable   分页
      */
     @GetMapping("/markedPapers")
     public PageableDTO listMarkedPapers(@RequestParam(required = false) Long workId,
                                         @RequestParam Long markerId,
-                                       @RequestParam Subject subject,
-                                       @RequestParam MarkStage stage,
-                                       @RequestParam Long questionId,
-                                       Pageable pageable) {
+                                        @RequestParam Subject subject,
+                                        @RequestParam MarkStage stage,
+                                        @RequestParam Long questionId,
+                                        Pageable pageable) {
         List<MarkTaskDTO> markTaskDTOs = new ArrayList<>();
         Specification<MarkTask> specification = (root, query, builder) -> {
             List<Predicate> predicates = new ArrayList<>();
 
             if (ParamCache.paramMap.get(workId).getScoreShowAllPaper() == 0) {
-                if(MarkStage.LEVEL.equals(stage)){
+                if (MarkStage.LEVEL.equals(stage)) {
                     Long batchNo = paperRepo.findMaxBatchNoByWorkIdAndSubject(workId, subject);
                     predicates.add(builder.equal(root.get("paper").get("batchNo"), batchNo));
                 } else {
@@ -539,22 +542,54 @@ public class MarkTaskApi {
     public List<PaperDTO> reviewPaper(@RequestParam Long workId,
                                       @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));
-            predicates.add(builder.equal(root.get("subject"), subject));
-            if (Objects.nonNull(questionId)) {
-                predicates.add(builder.equal(root.get("questionId"), questionId));
+        MarkSubject markSubject = markSubjectRepo.findOne(workId + "-" + subject);
+        Specification<Paper> specification;
+        if (MarkStage.LEVEL.equals(markSubject.getStage())) {
+            specification = (root, query, builder) -> {
+                List<Predicate> predicates = new ArrayList<>();
+                predicates.add(builder.equal(root.get("workId"), workId));
+                predicates.add(builder.equal(root.get("subject"), subject));
+                if (Objects.nonNull(questionId)) {
+                    predicates.add(builder.equal(root.get("questionId"), questionId));
+                }
+                predicates.add(builder.equal(root.get("markByLeader"), true));
+                List<Predicate> list = new ArrayList<>();
+                list.add(builder.equal(root.get("isSample"), true));
+                list.add(builder.equal(root.get("isOneClick"), true));
+                list.add(builder.equal(root.get("isRejectedByLeader"), true));
+                Predicate Pre_And = builder.and(predicates.toArray(new Predicate[predicates.size()]));
+                Predicate Pre_Or = builder.or(list.toArray(new Predicate[list.size()]));
+                return query.where(Pre_And, Pre_Or).getRestriction();
+            };
+        } else {
+            List<MarkTask> markTasks = markTaskRepo.findByWorkIdAndQuestionIdAndStageAndManualScore(workId, questionId, MarkStage.SCORE, 1);
+            List<Long> paperIds = markTasks.stream().map(m -> m.getPaper().getId()).distinct().collect(Collectors.toList());
+            List<MarkTask> markTaskList = markTaskRepo.findByPaperIdInAndStage(paperIds, MarkStage.SCORE);
+            Map<Long, List<MarkTask>> markTaskMap = markTaskList.stream().collect(Collectors.groupingBy(m -> m.getPaper().getId()));
+            Set<Long> paperIdSet = new HashSet();
+            for (Map.Entry<Long, List<MarkTask>> entry : markTaskMap.entrySet()) {
+                long count = entry.getValue().stream().filter(m -> Objects.isNull(m.getResult())).count();
+                if (count == 0) {
+                    paperIdSet.add(entry.getKey());
+                }
+
             }
-            predicates.add(builder.equal(root.get("markByLeader"), true));
-            List<Predicate> list = new ArrayList<>();
-            list.add(builder.equal(root.get("isSample"), true));
-            list.add(builder.equal(root.get("isOneClick"), true));
-            list.add(builder.equal(root.get("isRejectedByLeader"), true));
-            Predicate Pre_And = builder.and(predicates.toArray(new Predicate[predicates.size()]));
-            Predicate Pre_Or = builder.or(list.toArray(new Predicate[list.size()]));
-            return query.where(Pre_And, Pre_Or).getRestriction();
-        };
+            specification = (root, query, builder) -> {
+                List<Predicate> predicates = new ArrayList<>();
+                predicates.add(builder.isNotNull(root.get("score")));
+                if (paperIdSet != null && paperIdSet.size() > 0) {
+                    CriteriaBuilder.In<Object> in = builder.in(root.get("id"));
+                    for (Long paperId : paperIdSet) {
+                        in.value(paperId);
+                    }
+                    predicates.add(builder.and(builder.and(in)));
+                } else {
+                    // 必查空
+                    predicates.add(builder.isNull(root.get("id")));
+                }
+                return builder.and(predicates.toArray(new Predicate[predicates.size()]));
+            };
+        }
 
         Sort sort = new Sort(Sort.Direction.DESC, "updatedOn");
         Pageable pageable = new PageRequest(0, 5, sort);
@@ -656,7 +691,7 @@ public class MarkTaskApi {
                                     @RequestParam Long markerId,
                                     Pageable pageable) {
         MarkUser markUser = markUserRepo.findOne(markerId);
-        if(Role.MARKER.equals(markUser.getRole())) {
+        if (Role.MARKER.equals(markUser.getRole())) {
             List<PaperDTO> paperDTOS = new ArrayList<>();
             Specification<MarkTask> specification = (root, query, builder) -> {
                 List<Predicate> predicates = new ArrayList<>();
@@ -671,7 +706,7 @@ public class MarkTaskApi {
 
             markTasks.getContent().forEach(m -> paperDTOS.add(paperAssembler.toDTO(m.getPaper())));
             return new PageableDTO(paperDTOS, markTasks.getTotalElements(), markTasks.getTotalPages(), pageable.getPageNumber());
-        } else if(Role.MARK_LEADER.equals(markUser.getRole())){
+        } else if (Role.MARK_LEADER.equals(markUser.getRole())) {
             List<PaperDTO> paperDTOS = new ArrayList<>();
             Specification<Paper> specification = (root, query, builder) -> {
                 List<Predicate> predicates = new ArrayList<>();

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

@@ -556,7 +556,7 @@ public class MarkingService {
         markTaskRepo.save(scoreMarkTasks);
 
         // 分档任务
-        List<MarkTask> levelMarkTasks = markTaskRepo.findByPaperIdAndStage(paperId, MarkStage.SCORE);
+        List<MarkTask> levelMarkTasks = markTaskRepo.findByPaperIdAndStage(paperId, MarkStage.LEVEL);
         levelMarkTasks.forEach(m -> {
             m.setResult(level.getCode());
             m.setLevel(level.getCode());
@@ -569,6 +569,7 @@ public class MarkingService {
         paper.setLevel(level.getCode());
         paper.setScore(Double.valueOf(score));
         paper.setSortNum(level.getWeight() * levelMarkTasks.size());
+        paper.setUpdatedOn(new Date());
         paperRepo.save(paper);
 
         // 操作日志