Ver código fonte

机构版-3.0.0-bug修复-科组长查询标记

xiaof 2 anos atrás
pai
commit
aea536ea62

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

@@ -10,6 +10,7 @@ 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.task.MarkTask;
 import cn.com.qmth.stmms.ms.core.domain.user.MarkUser;
+import cn.com.qmth.stmms.ms.core.domain.user.Role;
 import cn.com.qmth.stmms.ms.core.repository.*;
 import cn.com.qmth.stmms.ms.core.vo.Subject;
 import cn.com.qmth.stmms.ms.marking.assembler.MarkTaskAssembler;
@@ -648,25 +649,44 @@ public class MarkTaskApi {
      * @param stage    阶段
      * @param markerId 评卷员ID
      */
-    @RequestMapping(value = "/list_mark_task", method = RequestMethod.GET)
+    @GetMapping("/list_mark_task")
     public PageableDTO listMarkTask(@RequestParam Long workId,
                                     @RequestParam Subject subject,
                                     @RequestParam MarkStage stage,
                                     @RequestParam Long markerId,
                                     Pageable pageable) {
-        List<MarkTaskDTO> markTaskDTOs = new ArrayList<>();
-        Specification<MarkTask> 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));
-            predicates.add(builder.equal(root.get("stage"), stage));
-            predicates.add(builder.equal(root.get("markerId"), markerId));
-            predicates.add(builder.equal(root.get("isMark"), true));
-            return builder.and(predicates.toArray(new Predicate[0]));
-        };
-        Page<MarkTask> markTasks = markTaskRepo.findAll(specification, pageable);
+        MarkUser markUser = markUserRepo.findOne(markerId);
+        if(Role.MARKER.equals(markUser.getRole())) {
+            List<PaperDTO> paperDTOS = new ArrayList<>();
+            Specification<MarkTask> 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));
+                predicates.add(builder.equal(root.get("stage"), stage));
+                predicates.add(builder.equal(root.get("markerId"), markerId));
+                predicates.add(builder.equal(root.get("isMark"), true));
+                return builder.and(predicates.toArray(new Predicate[0]));
+            };
+            Page<MarkTask> markTasks = markTaskRepo.findAll(specification, pageable);
+
+            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())){
+            List<PaperDTO> paperDTOS = new ArrayList<>();
+            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));
+                predicates.add(builder.equal(root.get("isMark"), true));
+                return builder.and(predicates.toArray(new Predicate[0]));
+            };
+            Page<Paper> papers = paperRepo.findAll(specification, pageable);
+
+            papers.getContent().forEach(m -> paperDTOS.add(paperAssembler.toDTO(m)));
+            return new PageableDTO(paperDTOS, papers.getTotalElements(), papers.getTotalPages(), pageable.getPageNumber());
+        } else {
+            throw new RuntimeException("当前角色无法查询标记试卷");
+        }
 
-        markTasks.getContent().forEach(m -> markTaskDTOs.add(markTaskAssembler.toDTO(m)));
-        return new PageableDTO(markTaskDTOs, markTasks.getTotalElements(), markTasks.getTotalPages(), pageable.getPageNumber());
     }
 }