فهرست منبع

机构版-迭代

xiaof 4 سال پیش
والد
کامیت
477acfa476

+ 0 - 7
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/StudentApi.java

@@ -205,7 +205,6 @@ public class StudentApi {
      * @throws Exception
      */
     @RequestMapping(value = "/missing", method = RequestMethod.POST)
-    @Transactional
     public ResponseEntity addPaper(@RequestParam Long studentId,
                                    @RequestParam Subject subject,
                                    @RequestParam boolean isManual) {
@@ -223,12 +222,6 @@ public class StudentApi {
             throw new RuntimeException("科目有误");
         }
         studentRepo.save(student);
-        // 同步更新paper表缺考
-        Paper paper = paperRepo.findByWorkIdAndSubjectAndExamNumberAndTest(student.getWorkId(), subject, student.getExamNumber(), TrialEnum.DEFAULT.getId());
-        if(paper != null){
-            paper.setIsMissing(isManual);
-            paperRepo.save(paper);
-        }
         return new ResponseEntity(true, HttpStatus.OK);
     }
 

+ 15 - 14
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/exporter/UserExporter.java

@@ -20,10 +20,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Stream;
 
 /**
@@ -92,18 +89,22 @@ public class UserExporter {
             }
             if(!CollectionUtils.isEmpty(studentList)){
                 studentList.forEach(s -> {
-                    StudentDTO studentDTO = new StudentDTO();
-                    studentDTO.setExamNumber(s.getExamNumber());
-                    studentDTO.setName(s.getName());
-                    studentDTO.setAreaName(s.getAreaName());
-                    studentDTO.setAreaCode(s.getAreaCode());
-                    studentDTO.setExamRoom(s.getExamRoom());
-                    studentDTO.setSourceName(s.getSourceName());
-                    studentDTO.setSchool(s.getSchool());
-                    list.add(studentDTO);
+                    // 去掉重复数据
+                    long count = list.stream().filter(m-> Objects.equals(m.getExamNumber(), s.getExamNumber())).count();
+                    if(count == 0) {
+                        StudentDTO studentDTO = new StudentDTO();
+                        studentDTO.setExamNumber(s.getExamNumber());
+                        studentDTO.setName(s.getName());
+                        studentDTO.setAreaName(s.getAreaName());
+                        studentDTO.setAreaCode(s.getAreaCode());
+                        studentDTO.setExamRoom(s.getExamRoom());
+                        studentDTO.setSourceName(s.getSourceName());
+                        studentDTO.setSchool(s.getSchool());
+                        list.add(studentDTO);
+                    }
                 });
             }
-            String fileName = null;
+            String fileName;
             if (!imageConfig.isCustomSubject()) {
                 fileName = subject.toString() + "缺考名单";
             } else {

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

@@ -256,7 +256,11 @@ public interface MarkTaskRepo extends JpaRepository<MarkTask, Long>, JpaSpecific
     void updateLevelByPaperId(String level, Long id);
 
     @Query(value = "select count(1) from mark_task m inner join paper p on m.paper_id = p.id and p.score_batch_no = ?4 where m.question_id = ?1 and m.marker_id = ?2 and m.stage = ?3 and m.manual_score = 1", nativeQuery = true)
-    int countByQuestionIdAndMarkerIdAndStageAndManualScore(Long questionId, Long markerId, int stage, Long batchNo);
+    int countByQuestionIdAndMarkerIdAndStageAndManualScoreAndBatchNo(Long questionId, Long markerId, int stage, Long batchNo);
+
+    @Query(value = "select count(1) from mark_task m inner join paper p on m.paper_id = p.id where m.question_id = ?1 and m.marker_id = ?2 and m.stage = ?3 and m.manual_score = 1", nativeQuery = true)
+    int countByQuestionIdAndMarkerIdAndStageAndManualScore(Long questionId, Long markerId, int stage);
+
 
     List<MarkTask> findByWorkIdAndQuestionIdAndStageAndManualScore(Long workId, Long questionId, MarkStage score, int i);
 }

+ 19 - 5
stmms-ms-log/src/main/java/cn/com/qmth/stmms/ms/log/aop/MarkLogAop.java

@@ -194,11 +194,13 @@ public class MarkLogAop {
         JSONArray jsonArgsArray = (JSONArray) map.get(PARAM_ARGS);
         MarkUser markUser = (MarkUser) map.get(MARK_USER);
         JSONObject aopResult = JSONObject.parseObject(JSONObject.toJSONString(result));
-        boolean isRejected = false, oldRejected = false;
+        boolean isRejected = false, oldRejected = false, oldShift = false, oldShiftScore = false;
         if (Objects.nonNull(aopResult)) {
             MarkTaskDTO resultBody = JSONObject.parseObject(((JSONObject) aopResult.get(BODY)).toJSONString(), MarkTaskDTO.class);
             isRejected = resultBody.isRejected();//新的是否撤档
             oldRejected = resultBody.isOldRejected();//旧的是否撤档
+            oldShift = resultBody.isShift();//旧的改档
+            oldShiftScore = resultBody.isShiftScore();//旧的改档打分
         }
         JSONObject jsonObject = (JSONObject) jsonArgsArray.get(0);
         Paper paper = JSONObject.parseObject(((JSONObject) jsonObject.get(PAPER)).toJSONString(), Paper.class);
@@ -210,9 +212,17 @@ public class MarkLogAop {
         if (markStage.ordinal() == 1 && paper.isMarkByLeader()) {//分档,如果已经有科组长定档,则不允许评卷员再分档
             return;
         } else if (markStage.ordinal() == 1 && oldRejected && !isRejected) {//档位打回回评
-            operType = MarkLogOperType.CALLBACK_ONCE_LEVEL.getId();
+            if(oldShift){
+                operType = MarkLogOperType.CHANGE_LEVEL.getId();
+            } else {
+                operType = MarkLogOperType.CALLBACK_ONCE_LEVEL.getId();
+            }
         } else if (markStage.ordinal() == 2) {//打分
-            operType = MarkLogOperType.SCORE.getId();
+            if(oldShiftScore){
+                operType = MarkLogOperType.CHANGE_SCORE.getId();
+            } else {
+                operType = MarkLogOperType.SCORE.getId();
+            }
         }
         //先查是否有档位或分数打回
         String operResult = DEFAULT_RESULT;
@@ -221,7 +231,11 @@ public class MarkLogAop {
             MarkLog markLogPrev = markLogRepo.findTopByCreateUserIdAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(markUser.getId(), MarkLogOperType.CALLBACK_ONCE_LEVEL.getId(), markUser.getSubject().toString(), paper.getExamNumber());
             if (Objects.isNull(markLogPrev)) {//如果为null,则再查分档和回评档位
                 if (oldRejected && !isRejected) {//档位打回
-                    operType = MarkLogOperType.CALLBACK_ONCE_LEVEL.getId();
+                    if(oldShift){
+                        operType = MarkLogOperType.CHANGE_LEVEL.getId();
+                    } else {
+                        operType = MarkLogOperType.CALLBACK_ONCE_LEVEL.getId();
+                    }
                 } else {
                     operType = selectOperType(markUser.getId(), MarkLogOperType.LEVEL.getId(), MarkLogOperType.ONCE_LEVEl.getId(), markUser.getSubject().toString(), paper.getExamNumber());
                     markLogPrev = markLogRepo.findTopByCreateUserIdAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(markUser.getId(), operType, markUser.getSubject().toString(), paper.getExamNumber());
@@ -238,7 +252,7 @@ public class MarkLogAop {
                 operType = MarkLogOperType.CALLBACK_ONCE_LEVEL.getId();//档位打回
                 operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse(DEFAULT_RESULT);
             }
-        } else if (markStage.ordinal() == 2) {//打分
+        } else if (markStage.ordinal() == 2 && !oldShiftScore) {//打分
             operType = selectOperType(markUser.getId(), MarkLogOperType.SCORE.getId(), MarkLogOperType.ONCE_SCORE.getId(), markUser.getSubject().toString(), paper.getExamNumber());
             MarkLog markLogPrev = markLogRepo.findTopByCreateUserIdAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(markUser.getId(), operType, markUser.getSubject().toString(), paper.getExamNumber());
             if (Objects.nonNull(markLogPrev)) {

+ 6 - 5
stmms-ms-log/src/main/java/cn/com/qmth/stmms/ms/log/controller/MarkLogController.java

@@ -262,11 +262,12 @@ public class MarkLogController {
             for (MarkLog markLog : list) {
                 Map map = new HashMap();
                 map.put("createUserName", markLog.getCreateUserName());
-                Paper paper = paperRepo.findOne(markLog.getPaperId());
-//                PaperDTO paperDTO = paperAssembler.toDTO(paper);
-                PaperDTO paperDTO = paperAssembler.toDTOForEquipmentMonitor(paper, true);
-                map.put("imgSrc", paperDTO.getImgSrc());
-                map.put("thumbSrc", paperDTO.getThumbSrc());
+                if(Objects.nonNull(markLog.getPaperId())) {
+                    Paper paper = paperRepo.findOne(markLog.getPaperId());
+                    PaperDTO paperDTO = paperAssembler.toDTOForEquipmentMonitor(paper, true);
+                    map.put("imgSrc", paperDTO.getImgSrc());
+                    map.put("thumbSrc", paperDTO.getThumbSrc());
+                }
                 arrayList.add(map);
             }
 

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

@@ -559,7 +559,12 @@ public class MakrerApi {
         // 输分试卷
         LevelStatDTO manualScoreDTO = new LevelStatDTO();
         manualScoreDTO.setId("manualScore");
-        int manualCount = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndManualScore(questionId, marker.getId(), MarkStage.SCORE.ordinal(), batchNo);
+        int manualCount;
+        if (ParamCache.paramMap.get(marker.getWorkId()).getScoreShowAllPaper() == 1) {
+            manualCount = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndManualScore(questionId, marker.getId(), MarkStage.SCORE.ordinal());
+        } else {
+            manualCount = markTaskRepo.countByQuestionIdAndMarkerIdAndStageAndManualScoreAndBatchNo(questionId, marker.getId(), MarkStage.SCORE.ordinal(), batchNo);
+        }
         manualScoreDTO.setCount(manualCount);
         levelStatDTOs.add(manualScoreDTO);
         return levelStatDTOs;

+ 13 - 2
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MarkTaskApi.java

@@ -263,11 +263,18 @@ public class MarkTaskApi {
     @RequestMapping(value = "/manualScore", method = RequestMethod.GET)
     public PageableDTO listManualScore(@RequestParam Long markerId,
                             @RequestParam(required = false) Long workId,
+                            @RequestParam Subject subject,
                             @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) {
+                Long batchNo = paperRepo.findMaxScoreBatchNoByWorkIdAndSubject(workId, subject);
+                predicates.add(builder.equal(root.get("paper").get("scoreBatchNo"), batchNo));
+            }
+
             predicates.add(builder.equal(root.get("workId"), workId));
             predicates.add(builder.equal(root.get("questionId"), questionId));
             predicates.add(builder.equal(root.get("markerId"), markerId));
@@ -313,6 +320,8 @@ public class MarkTaskApi {
         MarkStage stage = MarkStage.valueOf(body.get("stage"));
         String result = body.get("result");
         boolean oldRejected = markTask.isRejected();
+        boolean oldShift = markTask.getPaper().isShift();
+        boolean oldShiftScore = markTask.getPaper().isShiftScore();
         if (stage == null || result == null) {
             return new ResponseEntity(HttpStatus.BAD_REQUEST);
         }
@@ -332,7 +341,7 @@ public class MarkTaskApi {
                 }
                 break;
         }
-        return new ResponseEntity(markTaskAssembler.toDTO(markTask, oldRejected), HttpStatus.OK);
+        return new ResponseEntity(markTaskAssembler.toDTO(markTask, oldRejected, oldShift, oldShiftScore), HttpStatus.OK);
     }
 
     /**
@@ -354,6 +363,8 @@ public class MarkTaskApi {
         for (String id : ids) {
             MarkTask markTask = markTaskRepo.findOne(Long.valueOf(id));
             boolean oldRejected = markTask.isRejected();
+            boolean oldShift = markTask.getPaper().isShift();
+            boolean oldShiftScore = markTask.getPaper().isShiftScore();
             if (stage == null || result == null) {
                 return new ResponseEntity(HttpStatus.BAD_REQUEST);
             }
@@ -370,7 +381,7 @@ public class MarkTaskApi {
                     }
                     break;
             }
-            MarkTaskDTO markTaskDTO = markTaskAssembler.toDTO(markTask, oldRejected);
+            MarkTaskDTO markTaskDTO = markTaskAssembler.toDTO(markTask, oldRejected, oldShift, oldShiftScore);
             list.add(markTaskDTO);
         }
 

+ 6 - 3
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/PaperApi.java

@@ -257,13 +257,16 @@ public class PaperApi {
             return builder.and(predicates.toArray(new Predicate[predicates.size()]));
         };
 
-        Page<Paper> papers = paperRepo.findAll(specification, pageable);
+        Sort sort = new Sort(Sort.Direction.DESC, "isSample");
+        Pageable pageable1 = new PageRequest(pageable.getPageNumber(), pageable.getPageSize(), sort);
+        Page<Paper> papers = paperRepo.findAll(specification, pageable1);
         List<PaperDTO> paperDTOs = new ArrayList<>();
         papers.forEach(p -> {
             paperDTOs.add(paperAssembler.toDTO(p));
         });
-        paperDTOs.sort((o1, o2) -> o2.getSortSum() -o1.getSortSum());
-        return new PageableDTO(paperDTOs, papers.getTotalElements(), papers.getTotalPages(), pageable.getPageNumber());
+        // 先按标准卷排序,再按典型值排序
+        List<PaperDTO> list = paperDTOs.stream().sorted(Comparator.comparing(PaperDTO::isSample).reversed().thenComparing((o1, o2) -> o2.getSortSum() -o1.getSortSum())).collect(Collectors.toList());
+        return new PageableDTO(list, papers.getTotalElements(), papers.getTotalPages(), pageable.getPageNumber());
     }
 
     /**

+ 3 - 1
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/MarkTaskAssembler.java

@@ -106,7 +106,7 @@ public class MarkTaskAssembler {
         return markTaskDTO;
     }
 
-    public MarkTaskDTO toDTO(MarkTask markTask, boolean oldRejected) {
+    public MarkTaskDTO toDTO(MarkTask markTask, boolean oldRejected, boolean oldShift, boolean oldShiftScore) {
         MarkTaskDTO markTaskDTO = null;
         if (markTask != null) {
             markTaskDTO = new MarkTaskDTO();
@@ -150,6 +150,8 @@ public class MarkTaskAssembler {
             markTaskDTO.setRandomSeqNew(markTask.getRandomSeqNew());
             markTaskDTO.setRandomSeq(markTask.getRandomSeq());
             markTaskDTO.setPaperId(paper.getId());
+            markTaskDTO.setShift(oldShift);
+            markTaskDTO.setShiftScore(oldShiftScore);
         }
         return markTaskDTO;
     }