浏览代码

任务管理-查询分页和重评打回修改

xiaof 5 年之前
父节点
当前提交
5fcb6efc0c

+ 2 - 0
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkTaskRepo.java

@@ -194,4 +194,6 @@ public interface MarkTaskRepo extends JpaRepository<MarkTask, Long>, JpaSpecific
     int countByQuestionIdAndStageAndResultAndIsMissing(Long questionId, int stage, String result, boolean isMissing, Long questionId1);
 
     MarkTask findByPaperIdAndSecretNumber(Long paperId, String secretNumber);
+
+    MarkTask findByPaperIdAndMarkerId(Long paperId, Long markId);
 }

+ 51 - 33
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/TaskApi.java

@@ -1,5 +1,6 @@
 package cn.com.qmth.stmms.ms.marking.api;
 
+import cn.com.qmth.stmms.ms.commons.utils.specification.PagingAndSortingDTO;
 import cn.com.qmth.stmms.ms.core.domain.MarkLog;
 import cn.com.qmth.stmms.ms.core.domain.MarkLogOperType;
 import cn.com.qmth.stmms.ms.core.domain.Paper;
@@ -13,6 +14,7 @@ import cn.com.qmth.stmms.ms.core.repository.WorkRepo;
 import cn.com.qmth.stmms.ms.marking.assembler.PaperAssembler;
 import cn.com.qmth.stmms.ms.marking.dto.PaperDTO;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.transaction.annotation.Transactional;
@@ -58,10 +60,13 @@ public class TaskApi {
      * @return
      */
     @RequestMapping("/search")
-    public PaperDTO searchBySecretNumber(@RequestParam("workId") Long workId,
-                                         @RequestParam("secretNumber") String secretNumber,
-                                         @RequestParam("type") String type) {
-        PaperDTO paperDTO = null;
+    public PagingAndSortingDTO searchBySecretNumber(@RequestParam("workId") Long workId,
+                                         @RequestParam(required = false) String secretNumber,
+                                         @RequestParam("type") String type,
+                                        @RequestParam(required = false) Long startNumber,
+                                        @RequestParam(required = false) Long endNumber,
+                                         @RequestParam("page") Integer page,
+                                         @RequestParam("size") Integer size) {
         if ("paper".equals(type)) {
             Specification<Paper> specification = (root, query, builder) -> {
                 List<Predicate> predicates = new ArrayList<>();
@@ -69,14 +74,20 @@ public class TaskApi {
                 if (secretNumber != null) {
                     predicates.add(builder.equal(root.get("secretNumber"), secretNumber));
                 }
-
+                if (startNumber != null && endNumber != null) {
+                    predicates.add(builder.between(root.get("examNumber"), startNumber, endNumber));
+                } else if (startNumber != null) {
+                    predicates.add(builder.equal(root.get("examNumber"), startNumber));
+                }
                 return builder.and(predicates.toArray(new Predicate[predicates.size()]));
             };
-            Optional<Paper> paperOptional = paperRepo.findAll(specification, new PageRequest(0, 1))
-                    .getContent().stream().findFirst();
-            if (paperOptional.isPresent()) {
-                paperDTO = paperAssembler.toDTO(paperOptional.get());
+            Page<Paper> paperOptional = paperRepo.findAll(specification, new PageRequest(page, size));
+            List<PaperDTO> list = new ArrayList<>();
+            for (Paper paper : paperOptional) {
+                list.add(paperAssembler.toDTO(paper));
             }
+            return new PagingAndSortingDTO(paperOptional.getNumber(), paperOptional.getSize(), paperOptional.getTotalPages(),
+                    paperOptional.getTotalElements(), list);
         } else if ("task".equals(type)) {
             Specification<MarkTask> specification = (root, query, builder) -> {
                 List<Predicate> predicates = new ArrayList<>();
@@ -86,15 +97,18 @@ public class TaskApi {
                 }
                 return builder.and(predicates.toArray(new Predicate[predicates.size()]));
             };
-            Optional<MarkTask> taskOptional = markTaskRepo.findAll(specification, new PageRequest(0, 1))
-                    .getContent().stream().findFirst();
-            if (taskOptional.isPresent()) {
-                paperDTO = paperAssembler.toDTO(taskOptional.get().getPaper());
+            Page<MarkTask> taskOptional = markTaskRepo.findAll(specification, new PageRequest(page, size));
+            List<PaperDTO> list = new ArrayList<>();
+            for (MarkTask markTask : taskOptional) {
+                PaperDTO paperDto = paperAssembler.toDTO(markTask.getPaper());
                 //设置为任务的密号
-                paperDTO.setSn(taskOptional.get().getSecretNumber());
+                paperDto.setSn(markTask.getSecretNumber());
+                list.add(paperDto);
             }
+            return new PagingAndSortingDTO(taskOptional.getNumber(), taskOptional.getSize(), taskOptional.getTotalPages(),
+                    taskOptional.getTotalElements(), list);
         }
-        return paperDTO;
+        return null;
 
     }
 
@@ -102,35 +116,39 @@ public class TaskApi {
      * 重评
      *
      * @param paperId
-     * @param secretNumber
+     * @param ranges
      * @return
      */
     @Transactional
     @RequestMapping("/reevaluation")
     public boolean reevaluation(@RequestParam("paperId") Long paperId,
-                                @RequestParam("secretNumber") String secretNumber) {
+                                @RequestParam("ranges") String ranges) {
         Paper paper = paperRepo.findOne(paperId);
         paper.reject(null);
         //重评后撤销标准卷
 //        paper.setSample(false);
-        MarkTask markTask = markTaskRepo.findByPaperIdAndSecretNumber(paperId, secretNumber);
-        if (markTask != null) {
-            markTask.setRejected(true);
-            markTask.setOriginLevel(markTask.getResult());
-            markTask.setResult(null);
-        }
-        markTaskRepo.save(markTask);
-        paperRepo.save(paper);
+        String[] range = ranges.split(",");
+        for (String markId : range) {
+            MarkTask markTask = markTaskRepo.findByPaperIdAndMarkerId(paperId, Long.valueOf(markId));
+            if (markTask != null) {
+                markTask.setRejected(true);
+                markTask.setOriginLevel(markTask.getResult());
+                markTask.setResult(null);
+            }
+            markTaskRepo.save(markTask);
+            paperRepo.save(paper);
 
-        //加入重评日志
-        String operResult = "-";
-        MarkLog markLogPrev = markLogRepo.findTopByCreateUserIdAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(markTask.getMarkerId(), MarkLogOperType.REEVALUATION_LEVEl.getId(), markTask.getSubject().toString(), paper.getExamNumber());
-        if (Objects.nonNull(markLogPrev)) {
-            operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse("-");
+            //加入重评日志
+            String operResult = "-";
+            MarkLog markLogPrev = markLogRepo.findTopByCreateUserIdAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(markTask.getMarkerId(), MarkLogOperType.REEVALUATION_LEVEl.getId(), markTask.getSubject().toString(), paper.getExamNumber());
+            if (Objects.nonNull(markLogPrev)) {
+                operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse("-");
+            }
+            Work work = workRepo.findOne(paper.getWorkId());
+            MarkLog markLog = new MarkLog(markTask.getMarkerId(), markTask.getMarkerName(), Role.MARKER, markTask.getSubject(), paper.getExamNumber(), paper.getStudentName(), MarkLogOperType.REEVALUATION_LEVEl.getId(), paper.getWorkId(), paper.getId(), markTask.getStage(), operResult, markTask.getOriginLevel(), MarkLogOperType.REEVALUATION_LEVEl.getName(), work.getName());
+            markLogRepo.save(markLog);
         }
-        Work work = workRepo.findOne(paper.getWorkId());
-        MarkLog markLog = new MarkLog(markTask.getMarkerId(), markTask.getMarkerName(), Role.MARKER, markTask.getSubject(), paper.getExamNumber(), paper.getStudentName(), MarkLogOperType.REEVALUATION_LEVEl.getId(), paper.getWorkId(), paper.getId(), markTask.getStage(), operResult, markTask.getOriginLevel(), MarkLogOperType.REEVALUATION_LEVEl.getName(), work.getName());
-        markLogRepo.save(markLog);
+
         return true;
     }