Procházet zdrojové kódy

线上版本-改档bug-20201105

xiaof před 4 roky
rodič
revize
2314975df6

+ 11 - 1
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/domain/ChangeLevel.java

@@ -33,6 +33,8 @@ public class ChangeLevel {
 
     private Date auditDate;
 
+    private Integer isCurr;
+
 //    @OneToOne
 //    @JoinColumn(name = "paperId")
 //    private Paper paper;
@@ -125,7 +127,15 @@ public class ChangeLevel {
         this.auditDate = auditDate;
     }
 
-//    public Paper getPaper() {
+    public Integer getIsCurr() {
+        return isCurr;
+    }
+
+    public void setIsCurr(Integer isCurr) {
+        this.isCurr = isCurr;
+    }
+
+    //    public Paper getPaper() {
 //        return paper;
 //    }
 //

+ 6 - 0
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/ChangeLevelRepo.java

@@ -18,4 +18,10 @@ public interface ChangeLevelRepo extends JpaRepository<ChangeLevel, Long>, JpaSp
 
     @Query("select s from ChangeLevel s where s.workId = ?1 and s.subject = ?2 and s.auditStatus = 1")
     List<ChangeLevel> findByWorkIdAndSubjectAndAuditStatus(Long workId, String name);
+
+    @Query("select s from ChangeLevel s where s.workId = ?1 and s.subject = ?2 and s.paperId = ?3")
+    List<ChangeLevel> findAllByWorkIdAndSubjectAndPaperId(Long workId, String name, Long paperId);
+
+    @Query("select s from ChangeLevel s where s.workId = ?1 and s.subject = ?2 and s.paperId = ?3 and s.auditStatus = 1 and s.isCurr = 1")
+    ChangeLevel findByWorkIdAndSubjectAndPaperIdAndAuditStatusAndIsCurr(Long workId, String name, Long paperId);
 }

+ 1 - 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 where m.question_id = ?1 and m.marker_id = ?2 and m.stage = ?3 and p.level = ?4 and p.score_batch_no = ?5 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 where m.question_id = ?1 and m.marker_id = ?2 and m.stage = ?3 and p.level = ?4 and p.score_batch_no is not null 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 where m.question_id = ?1 and m.marker_id = ?2 and m.stage = ?3 and p.level = ?4 and p.score_batch_no is not null and m.result is not null and p.score is not null", nativeQuery = true)
     int countScoreByQuestionIdAndMarkerIdAndStageAndResultAll(Long questionId, Long markerId, int stage, String result);
     /**
      * 查询评卷员的评卷任务

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

@@ -340,7 +340,7 @@ public interface PaperRepo extends JpaRepository<Paper, Long>, JpaSpecificationE
     @Query("select p from Paper p where p.workId = ?1 and p.subject = ?2 and p.questionId = ?3 and p.isMissing = ?4 and (p.test = ?5 or p.test = ?6)")
     List<Paper> findByworkIdAndSubjectAndQuestionIdAndIsMissingAndTestOrTest(Long workId, Subject subject, Long questionId, boolean b, int id, int id1);
 
-    @Query(value = "SELECT p.`score`,COUNT(*)," +
+    @Query(value = "SELECT p.`score`,SUM(IF(p.`is_shift` = 0, 1, 0))," +
             "SUM(IF(p.`is_rejected` = 1, 1, 0))," +
             "SUM(IF(p.`is_arbitrated` = 1, 1, 0))," +
             "SUM(IF(p.`is_shift` = 1, 1, 0))," +

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

@@ -123,10 +123,11 @@ public class ChangeLevelApi {
                     if (Objects.equals(status, "0")) {
                         predicates.add(builder.equal(root.get("auditStatus"), status));
                     } else {
-                        predicates.add(builder.equal(root.get("auditStatus"), "1"));
+                        predicates.add(builder.notEqual(root.get("auditStatus"), "2"));
                     }
 
                 }
+                predicates.add(builder.equal(root.get("isCurr"), "1"));
             }
             return builder.and(predicates.toArray(new Predicate[predicates.size()]));
         };
@@ -161,7 +162,23 @@ public class ChangeLevelApi {
         Paper paper = paperRepo.findOne(paperId);
         MarkUser markUser = markUserRepo.findOne(userId);
 
-        //
+        ChangeLevel changeLevelCurr = changeLevelRepo.findByWorkIdAndSubjectAndPaperIdAndAuditStatusAndIsCurr(markSubject.getWorkId(), markSubject.getSubject().name(), paperId);
+        if(changeLevelCurr != null){
+            if(Objects.isNull(paper.getLevel())){
+                throw new RuntimeException("纪检员已同意,请评卷员先完成改档");
+            }
+            if(Objects.isNull(paper.getScore())){
+                throw new RuntimeException("改档已完成,请评卷员完成改档打分");
+            }
+        }
+
+        List<ChangeLevel> list = changeLevelRepo.findAllByWorkIdAndSubjectAndPaperId(markSubject.getWorkId(), markSubject.getSubject().name(), paperId);
+        list.stream().map(m->{
+            m.setIsCurr(0);
+            return m;
+        }).collect(Collectors.toList());
+        changeLevelRepo.save(list);
+
         ChangeLevel changeLevel = changeLevelRepo.findByWorkIdAndSubjectAndPaperId(markSubject.getWorkId(), markSubject.getSubject().name(), paperId);
         if (changeLevel == null) {
             changeLevel = new ChangeLevel();
@@ -173,11 +190,13 @@ public class ChangeLevelApi {
             changeLevel.setAuditStatus(0);
             changeLevel.setCreateId(markUser.getId());
             changeLevel.setCreateDate(new Date());
+            changeLevel.setIsCurr(1);
         } else {
             changeLevel.setOriginalLevel(paper.getLevel());
             changeLevel.setSuggestLevel(level);
             changeLevel.setCreateId(markUser.getId());
             changeLevel.setCreateDate(new Date());
+            changeLevel.setIsCurr(1);
         }
         changeLevelRepo.save(changeLevel);
 

+ 10 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MarkSubjectApi.java

@@ -1,5 +1,6 @@
 package cn.com.qmth.stmms.ms.marking.api;
 
+import cn.com.qmth.stmms.ms.core.cache.ParamCache;
 import cn.com.qmth.stmms.ms.core.domain.*;
 import cn.com.qmth.stmms.ms.core.domain.user.MarkRight;
 import cn.com.qmth.stmms.ms.core.domain.user.MarkUser;
@@ -239,6 +240,10 @@ public class MarkSubjectApi {
      */
     @RequestMapping(value = "{markSubject}/markergroups", method = RequestMethod.POST)
     public MarkerGroup createMarkerGroup(@PathVariable MarkSubject markSubject, @RequestBody MarkerGroup markerGroup) {
+        if(MarkStage.SCORE == markSubject.getStage() && ParamCache.paramMap.get(markSubject.getWorkId()).getIsLevelToScore() == 1){
+            throw new RuntimeException("当前为谁分档谁打分,不能编辑分组");
+        }
+
         if (markerGroup.getMarkers().size() == 0) {
             throw new RuntimeException("不可创建空分组");
         }
@@ -275,6 +280,11 @@ public class MarkSubjectApi {
      */
     @RequestMapping(value = "{markSubject}/markergroups/{domain}", method = RequestMethod.DELETE)
     public void removeMarkerGroup(@PathVariable MarkSubject markSubject, @PathVariable MarkerGroup domain) {
+
+        if(MarkStage.SCORE == markSubject.getStage() && ParamCache.paramMap.get(markSubject.getWorkId()).getIsLevelToScore() == 1){
+            throw new RuntimeException("当前为谁分档谁打分,不能删除分组");
+        }
+
         if (MarkStage.LEVEL == markSubject.getStage() || MarkStage.SCORE == markSubject.getStage()) {
             int count = markTaskRepo.countByWorkIdAndSubjectAndStage(markSubject.getWorkId(), markSubject.getSubject(), markSubject.getStage());
             if(count > 0){

+ 1 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/PaperAssembler.java

@@ -82,6 +82,7 @@ public class PaperAssembler {
         if (paper != null) {
             paperDTO = new PaperDTO();
             paperDTO.setId(paper.getId());
+            paperDTO.setPaperId(paper.getId());
             paperDTO.setSubjectName(paper.getSubject().getName());
             paperDTO.setExamNumber(paper.getExamNumber());
             paperDTO.setSn(paper.getSecretNumber());

+ 9 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/dto/PaperDTO.java

@@ -43,6 +43,7 @@ public class PaperDTO implements Serializable{
     private int paperTest;
     private boolean shift;
     private boolean shiftScore;
+    private Long paperId;
 
     //是否科组长打回
     private Boolean isRejectedByLeader;
@@ -321,4 +322,12 @@ public class PaperDTO implements Serializable{
     public void setStudentName(String studentName) {
         this.studentName = studentName;
     }
+
+    public Long getPaperId() {
+        return paperId;
+    }
+
+    public void setPaperId(Long paperId) {
+        this.paperId = paperId;
+    }
 }