Переглянути джерело

线上版本-优化-20201116

xiaof 4 роки тому
батько
коміт
afa08a0b64

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

@@ -56,7 +56,7 @@ public interface MarkTaskRepo extends JpaRepository<MarkTask, Long>, JpaSpecific
     @Query(value = "select count(1) from mark_task m inner join paper p on m.paper_id = p.id and p.level = ?4 and p.score_batch_no = ?5 where m.question_id = ?1 and m.marker_id = ?2 and m.stage = ?3 and m.result is not null", nativeQuery = true)
     int countScoreByQuestionIdAndMarkerIdAndStageAndResult(Long questionId, Long markerId, int stage, String result, Long batchNo);
 
-    @Query(value = "select count(1) from mark_task m inner join paper p on m.paper_id = p.id and p.level = ?4 and p.score_batch_no is not null and p.score is not null where m.question_id = ?1 and m.marker_id = ?2 and m.stage = ?3 and m.result is not null", nativeQuery = true)
+    @Query(value = "select count(1) from mark_task m inner join paper p on m.paper_id = p.id and p.level = ?4 and p.score_batch_no is not null where m.question_id = ?1 and m.marker_id = ?2 and m.stage = ?3 and m.result is not null", nativeQuery = true)
     int countScoreByQuestionIdAndMarkerIdAndStageAndResultAll(Long questionId, Long markerId, int stage, String result);
     /**
      * 查询评卷员的评卷任务
@@ -217,4 +217,13 @@ public interface MarkTaskRepo extends JpaRepository<MarkTask, Long>, JpaSpecific
     int countByWorkIdAndSubjectAndStage(Long workId, Subject subject, MarkStage stage);
 
     List<MarkTask> findByWorkIdAndStage(Long workId, MarkStage level);
+
+    @Query(value = "select count(1) from mark_task m inner join paper p on m.paper_id = p.id where m.work_id = ?1 and m.subject = ?2 and m.marker_id = ?3 and m.stage = ?4 and m.result is null and p.is_shift = true", nativeQuery = true)
+    int countByWorkIdAndSubjectAndMarkerIdAndStageAndShiftAndResult(Long workId, String subject, Long valueOf, int stage);
+
+    @Query(value = "select count(1) from mark_task m inner join paper p on m.paper_id = p.id where m.work_id = ?1 and m.subject = ?2 and m.marker_id = ?3 and m.stage = ?4 and m.result is null and p.is_shift_score = 1", nativeQuery = true)
+    int countByWorkIdAndSubjectAndMarkerIdAndStageAndShiftScoreAndResult(Long workId, String subject, Long valueOf, int stage);
+
+    @Query(value = "select count(1) from mark_task m where m.work_id = ?1 and m.subject = ?2 and m.marker_id = ?3 and m.stage = ?4 and m.is_rejected = 1", nativeQuery = true)
+    int findByWorkIdAndSubjectAndMarkerIdAndStageReject(Long workId, String subject, Long valueOf, int stage);
 }

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

@@ -102,7 +102,7 @@ public class MarkTaskApi {
         Specification<MarkTask> specification = (root, query, builder) -> {
             List<Predicate> predicates = new ArrayList<>();
             List<Predicate> onPredicates = new ArrayList<>();
-            Join<MarkTask, Paper> join = root.join("paper", JoinType.LEFT);
+            Join<MarkTask, Paper> join = root.join("paper", JoinType.INNER);
             if (Objects.nonNull(questionId)) {
                 predicates.add(builder.equal(root.get("questionId"), questionId));
             }
@@ -136,7 +136,7 @@ public class MarkTaskApi {
 //                predicates.add(builder.equal(root.get("paper").get("isShift"), false));
 //                predicates.add(builder.equal(root.get("paper").get("isShiftScore"), false));
                 onPredicates.add(builder.equal(join.get("isShift"), false));
-                onPredicates.add(builder.equal(join.get("isShiftScore"), false));
+//                onPredicates.add(builder.equal(join.get("isShiftScore"), false));
                 if(ParamCache.paramMap.get(workId).getScoreShowAllPaper() == 1){
 //                    predicates.add(builder.isNotNull(root.get("paper").get("scoreBatchNo")));
                     onPredicates.add(builder.isNotNull(join.get("scoreBatchNo")));

+ 2 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/ChangeLevelAssembler.java

@@ -75,6 +75,8 @@ public class ChangeLevelAssembler {
             changeLevelDTO.setPaperId(changeLevel.getPaperId());
             changeLevelDTO.setAuditStatus(changeLevel.getAuditStatus());
             changeLevelDTO.setExamNumber(examNumber);
+            changeLevelDTO.setShift(paper.isShift());
+            changeLevelDTO.setShiftScore(paper.isShiftScore());
         }
         return changeLevelDTO;
     }

+ 8 - 5
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/QuestionStatAssembler.java

@@ -75,12 +75,15 @@ public class QuestionStatAssembler {
 //        List<Paper> papers = paperRepo.findByWorkIdAndSubject(workId, subject);
 //        long shift = papers.stream().filter(m->m.isShift()).count();
 //        long shiftScore = papers.stream().filter(m->m.isShiftScore()).count();
-        List<MarkTask> tasks = markTaskRepo.findByWorkIdAndSubjectAndMarkerIdAndStage(workId, subject, Long.valueOf(qStats[1].toString()), MarkStage.LEVEL);
-        long shift = tasks.stream().filter(m -> m.getPaper().isShift() && Objects.isNull(m.getResult())).count();
-        List<MarkTask> tasks1 = markTaskRepo.findByWorkIdAndSubjectAndMarkerIdAndStage(workId, subject, Long.valueOf(qStats[1].toString()), MarkStage.SCORE);
-        long shiftScore = tasks1.stream().filter(m -> m.getPaper().isShiftScore() && Objects.isNull(m.getResult())).count();
+//        List<MarkTask> tasks = markTaskRepo.findByWorkIdAndSubjectAndMarkerIdAndStage(workId, subject, Long.valueOf(qStats[1].toString()), MarkStage.LEVEL);
+//        long shift = tasks.stream().filter(m -> m.getPaper().isShift() && Objects.isNull(m.getResult())).count();
+        int shift = markTaskRepo.countByWorkIdAndSubjectAndMarkerIdAndStageAndShiftAndResult(workId, subject.name(), Long.valueOf(qStats[1].toString()), MarkStage.LEVEL.ordinal());
+//        List<MarkTask> tasks1 = markTaskRepo.findByWorkIdAndSubjectAndMarkerIdAndStage(workId, subject, Long.valueOf(qStats[1].toString()), MarkStage.SCORE);
+//        long shiftScore = tasks1.stream().filter(m -> m.getPaper().isShiftScore() && Objects.isNull(m.getResult())).count();
+        int shiftScore = markTaskRepo.countByWorkIdAndSubjectAndMarkerIdAndStageAndShiftScoreAndResult(workId, subject.name(), Long.valueOf(qStats[1].toString()), MarkStage.SCORE.ordinal());
         //所有打回
-        long rejectCount = tasks.stream().filter(m->m.isRejected()).count();
+//        long rejectCount = tasks.stream().filter(m->m.isRejected()).count();
+        int rejectCount = markTaskRepo.findByWorkIdAndSubjectAndMarkerIdAndStageReject(workId, subject.name(), Long.valueOf(qStats[1].toString()), MarkStage.LEVEL.ordinal());
         MarkQuestionStatDTO qpDTO = null;
         if (qStats != null) {
             qpDTO = new MarkQuestionStatDTO();

+ 25 - 7
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/dto/ChangeLevelDTO.java

@@ -6,7 +6,7 @@ import java.util.Date;
 /**
  * Created by zhengmin on 2016/10/12.
  */
-public class ChangeLevelDTO implements Serializable{
+public class ChangeLevelDTO implements Serializable {
 
     private static final long serialVersionUID = -7780260418569729090L;
 
@@ -31,6 +31,8 @@ public class ChangeLevelDTO implements Serializable{
     private Integer randomSeq;
     private Integer auditStatus;
     private String examNumber;
+    private boolean shift;
+    private boolean shiftScore;
 
     public Integer getRandomSeq() {
         return randomSeq;
@@ -164,13 +166,13 @@ public class ChangeLevelDTO implements Serializable{
         this.originLevel = originLevel;
     }
 
-	public boolean isMarkByLeader() {
-		return markByLeader;
-	}
+    public boolean isMarkByLeader() {
+        return markByLeader;
+    }
 
-	public void setMarkByLeader(boolean markByLeader) {
-		this.markByLeader = markByLeader;
-	}
+    public void setMarkByLeader(boolean markByLeader) {
+        this.markByLeader = markByLeader;
+    }
 
     public Long getMarkerId() {
         return markerId;
@@ -203,4 +205,20 @@ public class ChangeLevelDTO implements Serializable{
     public void setExamNumber(String examNumber) {
         this.examNumber = examNumber;
     }
+
+    public boolean isShift() {
+        return shift;
+    }
+
+    public void setShift(boolean shift) {
+        this.shift = shift;
+    }
+
+    public boolean isShiftScore() {
+        return shiftScore;
+    }
+
+    public void setShiftScore(boolean shiftScore) {
+        this.shiftScore = shiftScore;
+    }
 }