Procházet zdrojové kódy

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

wangliang před 5 roky
rodič
revize
9938b6ddce

+ 4 - 0
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/service/DataUploadService.java

@@ -337,6 +337,10 @@ public class DataUploadService {
             public ExcelError handle(Object obj) throws Exception {
                 try {
                     StudentDTO dto = (StudentDTO) obj;
+                    //校验excel文件中数据是否完整
+                    if (!checkObjFieldIsNotNull(dto)) {
+                        throw new RuntimeException("考生信息缺失");
+                    }
                     //复制学生给试评用
                     Student studentNew = null;
                     Student student = studentRepo.findByWorkIdAndExamNumberAndTest(workId, dto.getExamNumber(), String.valueOf(TrialEnum.DEFAULT.getId()));

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

@@ -39,7 +39,7 @@ public interface PaperRepo extends JpaRepository<Paper, Long>, JpaSpecificationE
 
     Page<Paper> findByQuestionId(Long questionId, Pageable pageable);
 
-    Paper findTopByLevelAndIsSampleAndIsMissingAndSubjectAndTestAndAreaCodeAndWorkIdOrderByUpdatedOnDesc(String level, boolean isSample, boolean isMissing, Subject subject, int test, String areaCode, Long workId);
+    List<Paper> findByLevelAndIsSampleAndIsMissingAndSubjectAndTestAndAreaCodeAndWorkIdOrderByUpdatedOnDesc(String level, boolean isSample, boolean isMissing, Subject subject, int test, String areaCode, Long workId);
 
     /**
      * 统计各省各科试卷数量[areaCode,areaName,questionName,count]

+ 4 - 3
stmms-ms-log/src/main/java/cn/com/qmth/stmms/ms/log/aop/MarkLogAop.java

@@ -226,7 +226,8 @@ public class MarkLogAop {
                 List<MarkTask> markTasks = markTaskRepo.findByPaperIdAndStage(paper.getId(), markStage);
                 Map<Long, String> levelsMap = markTasks.stream().collect(Collectors.toMap(MarkTask::getMarkerId, o -> o.getResult().toUpperCase()));
                 List<ArbitrateCallback.Distance> list = ArbitrateCallback.judge(levelsMap, markingConfig.getDeviation());
-                if (Objects.nonNull(list) && list.size() > 0) {
+                //全部打回则不触发自动仲裁
+                if (Objects.nonNull(list) && list.size() > 0 && markTasks.size() != list.size()) {
                     paper.reject(null);
                     List<MarkLog> markLogList = new ArrayList<>();
                     for (ArbitrateCallback.Distance d : list) {
@@ -272,7 +273,7 @@ public class MarkLogAop {
         Subject subject = Subject.values()[subjectId - 1];
         String examNumber = JSONObject.parseObject(String.valueOf(paramValues[2]), String.class);
 
-        HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
+        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
         //取采集用户id
         Long clientUserId = Long.valueOf(request.getParameter("clientUserId"));
         //取采集用户名称
@@ -301,7 +302,7 @@ public class MarkLogAop {
         markLog.setStage(MarkStage.INIT);
         //识别方式
         String manual = request.getParameter("manual");
-        markLog.setRemark("0".equals(manual) ? "正常扫描" : "1".equals(manual) ? "手工绑定": null);
+        markLog.setRemark("0".equals(manual) ? "正常扫描" : "1".equals(manual) ? "手工绑定" : null);
         //操作时间
         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         String time = request.getParameter("time");

+ 7 - 25
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MarkTaskApi.java

@@ -101,8 +101,8 @@ public class MarkTaskApi {
             if (Objects.nonNull(isSample) && isSample) {
                 ExamQuestion examQuestion = examQuestionRepo.findOne(questionId);
                 if (examQuestion.getTest() == TrialEnum.DEFAULT.getId()) {
-                    Paper paper = paperRepo.findTopByLevelAndIsSampleAndIsMissingAndSubjectAndTestAndAreaCodeAndWorkIdOrderByUpdatedOnDesc(level, isSample, false, examQuestion.getSubject(), TrialEnum.START_FORMAL.getId(), examQuestion.getAreaCode(), examQuestion.getWorkId());
-                    if (Objects.nonNull(paper)) {
+                    List<Paper> paperList = paperRepo.findByLevelAndIsSampleAndIsMissingAndSubjectAndTestAndAreaCodeAndWorkIdOrderByUpdatedOnDesc(level, isSample, false, examQuestion.getSubject(), TrialEnum.START_FORMAL.getId(), examQuestion.getAreaCode(), examQuestion.getWorkId());
+                    if (Objects.nonNull(paperList) && paperList.size() > 0) {
                         ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
                         HttpServletRequest request = attributes.getRequest();
                         HttpSession session = request.getSession();
@@ -110,31 +110,13 @@ public class MarkTaskApi {
                         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));
+                        for (Paper p : paperList) {
+                            MarkUser markUser = (MarkUser) session.getAttribute("markUser");
+                            MarkTask markTask = new MarkTask(markUser, p, 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));
-//                    }
-//                    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 -> {

+ 1 - 38
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/PaperApi.java

@@ -1,10 +1,8 @@
 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.repository.ExamQuestionRepo;
 import cn.com.qmth.stmms.ms.core.repository.MarkTaskRepo;
@@ -19,7 +17,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
-import org.springframework.data.domain.Sort;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -200,41 +197,6 @@ public class PaperApi {
         };
 
         Page<Paper> papers = paperRepo.findAll(specification, pageable);
-//        if (Objects.isNull(papers) || papers.getContent().size() == 0) {
-//            if (Objects.nonNull(isSample) && isSample) {
-//                ExamQuestion examQuestion = examQuestionRepo.findOne(questionId);
-//                if (examQuestion.getTest() == TrialEnum.DEFAULT.getId()) {
-//                    pageable = new PageRequest(0, 1, Sort.Direction.DESC, "updatedOn");
-//                    specification = (root, query, builder) -> {
-//                        List<Predicate> predicates = new ArrayList<>();
-//                        if (Objects.isNull(level)) {
-//                            predicates.add(builder.isNull(root.get("level")));
-//                        } else {
-//                            predicates.add(builder.equal(root.get("level"), level));
-//                        }
-//                        if (arbi != null) {
-//                            predicates.add(builder.equal(root.get("isArbitrated"), arbi));
-//                        }
-//                        if (reject != null) {
-//                            predicates.add(builder.equal(root.get("isRejected"), reject));
-//                        }
-//                        if (isSample != null) {
-//                            predicates.add(builder.equal(root.get("isSample"), isSample));
-//                        }
-//                        if (markedLogic != null) {
-//                            predicates.add(builder.equal(root.get("markedLogic"), markedLogic));
-//                        }
-//                        //空白卷不展示
-//                        predicates.add(builder.equal(root.get("isMissing"), false));
-//                        predicates.add(builder.equal(root.get("subject"), examQuestion.getSubject()));
-//                        predicates.add(builder.equal(root.get("test"), TrialEnum.START_TRIAL.getId()));
-//                        predicates.add(builder.equal(root.get("areaCode"), examQuestion.getAreaCode()));
-//                        return builder.and(predicates.toArray(new Predicate[predicates.size()]));
-//                    };
-//                    papers = paperRepo.findAll(specification, pageable);
-//                }
-//            }
-//        }
         List<PaperDTO> paperDTOs = new ArrayList<>();
         papers.forEach(p -> {
             paperDTOs.add(paperAssembler.toDTO(p));
@@ -302,6 +264,7 @@ public class PaperApi {
         markTaskRepo.findByPaperIdAndStage(paperId, stage).forEach(o -> {
             markTaskDTOs.add(markTaskAssembler.toDTO(o));
         });
+        Collections.sort(markTaskDTOs, Comparator.comparing(MarkTaskDTO::getMarker));
         return markTaskDTOs;
     }