xiaofei пре 8 месеци
родитељ
комит
a72f603eff

+ 1 - 1
stmms-ms-accesscontrol/src/main/java/cn/com/qmth/stmms/ms/accesscontrol/config/AccessConfig.java

@@ -30,7 +30,7 @@ public class AccessConfig extends WebMvcConfigurerAdapter {
     @Override
     public void addInterceptors(InterceptorRegistry registry) {
         registry.addInterceptor(loginInterceptor()).addPathPatterns("/api/**").excludePathPatterns("/api/admin/users/login", "/api/login", "/api/logout", "/api/*/password",
-                "/api/user/login", "/api/user/getClientUser", "/api/exam/students", "/api/upload/student/*", "/api/file/image/**", "/api/marklog/saveCollectLog",
+                "/api/user/login", "/api/validAdminPassword", "/api/user/getClientUser", "/api/exam/students", "/api/upload/student/*", "/api/file/image/**", "/api/marklog/saveCollectLog",
                 "/api/file/ms-slice/**", "/api/subject/collect-config", "/api/file/ms-sheet/**", "/api/oss/**", "/api/exam/listStudents/*", "/api/exam/getStudent/*", "/api/level/*",
                 "/api/file/image/getExportData", "/api/file/image/exportScorePicturesFromCollect", "/api/admin/works", "/api/score/missing/*", "/api/papers/*/*/*");
     }

+ 8 - 8
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/ParamApi.java

@@ -321,14 +321,14 @@ public class ParamApi {
         List<MarkSubject> markSubjects = markSubjectRepo.findByWorkIdAndTestAndStageIn(workId, TrialEnum.DEFAULT.ordinal(), markStageList);
 
         int countMarkTasks = markTaskScoreRepo.countByWorkId(workId);
-//        if (markSubjects != null && !markSubjects.isEmpty() && countMarkTasks > 0) {
-//            if (!Objects.equals(roundUp, oldScoreConfig.getRoundUp())) {
-//                throw new RuntimeException("评卷工作已有正评数据,不能修改【分数处理方式】参数");
-//            }
-//            if (!Objects.equals(removeHighAndLow, oldScoreConfig.getRemoveHighAndLow())) {
-//                throw new RuntimeException("评卷工作已有正评数据,不能修改【分数计算方式】参数");
-//            }
-//        }
+        if (markSubjects != null && !markSubjects.isEmpty() && countMarkTasks > 0) {
+            if (!Objects.equals(roundUp, oldScoreConfig.getRoundUp())) {
+                throw new RuntimeException("评卷工作已有正评数据,不能修改【分数处理方式】参数");
+            }
+            if (!Objects.equals(removeHighAndLow, oldScoreConfig.getRemoveHighAndLow())) {
+                throw new RuntimeException("评卷工作已有正评数据,不能修改【分数计算方式】参数");
+            }
+        }
 
         // 分数计算方式为"去高去低加权平均"时,校验各科目各分组中评卷员数量是否小于3个
         if (removeHighAndLow == 1) {

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

@@ -46,7 +46,7 @@ public class ParamSetting implements Serializable {
         // 彩信参数
         CollectConfig collectConfig = new CollectConfig();
         collectConfig.setRepeatScanSize(0); //重复扫描大小异常(KB)
-        collectConfig.setPackageScan(0); //是否整包扫描
+        collectConfig.setPackageScan(1); //是否整包扫描(默认是)
         collectConfig.setImageEncrypt(0); //图片是否加密
         collectConfig.setNameRule(0); //图片命名规则
         collectConfig.setPaperStage(0);//试卷档位

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

@@ -15,7 +15,7 @@ public interface PaperCheckStudentRepo extends JpaRepository<PaperCheckStudent,
 
     void deleteByPaperCheckId(Long paperCheckId);
 
-    @Query(value = "select pcs.subject, p.exam_number, pcs.secret_number, p.level, t.original_level, t.suggest_level from (select * from paper_check_student where paper_check_id = :paperCheckId) pcs left join (select cl.* from change_level cl where exists (select 1 from (select paper_id, max(id) id from change_level where work_id = :workId and subject = :subject and stage = :stage and role = 'MARK_LEADER' and audit_status = 1 group by paper_id) t where cl.id = t.id)) t on pcs.paper_id = t.paper_id left join paper p on pcs.paper_id = p.id", nativeQuery = true)
+    @Query(value = "select pcs.subject, p.exam_number, pcs.secret_number, p.level, t.original_level, t.suggest_level from (select * from paper_check_student where paper_check_id = :paperCheckId) pcs left join (select cl.* from change_level cl where exists (select 1 from (select paper_id, max(id) id from change_level where work_id = :workId and subject = :subject and paper_check_id = :paperCheckId and stage = :stage and role = 'INSPECTION' and audit_status = 1 group by paper_id) t where cl.id = t.id)) t on pcs.paper_id = t.paper_id left join paper p on pcs.paper_id = p.id", nativeQuery = true)
     List<Object[]> findByPaperCheckId(@Param("paperCheckId") Long paperCheckId, @Param("workId") Long workId, @Param("subject") String subject, @Param("stage") int stage);
 
     void deleteByWorkIdAndSubjectAndStage(Long workId, String subject, MarkStage stage);

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

@@ -404,4 +404,8 @@ public interface PaperRepo extends JpaRepository<Paper, Long>, JpaSpecificationE
     List<Long> findAllScoreBatchNoByWorkIdAndSubject(Long workId, Subject subject);
 
     int countByWorkIdAndSubjectAndLevelIsNotNullAndScoreIsNull(Long workId, Subject subject);
+
+    @Modifying
+    @Query("update Paper p set p.isMark = false where p.workId = ?1 and p.subject = ?2 and p.isMark = true")
+    void resetMarkFalse(Long workId, Subject subject);
 }

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

@@ -151,6 +151,8 @@ public class MarkSubjectApi {
             markSubject.setStage(MarkStage.SCORE);
             stageControlService.enterToScoreStage(markSubject);
         }
+        // 清除上一阶段科组长标记
+        paperRepo.resetMarkFalse(workId, subject);
         markSubjectRepo.save(markSubject);
 
         // 清除用户表中分组ID

+ 18 - 12
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/PaperApi.java

@@ -558,15 +558,18 @@ public class PaperApi {
                     paper.determineRoughLevel(null);
                     paper.setMarkByLeader(false);
                     paper.setRoughSample(false);
+                    paper.setRoughBatchNo(null);
                     paperRepo.save(paper);
 
                     List<MarkTaskRoughLevel> markTasks = markTaskRoughLevelRepo.findByPaperIdAndStage(paper.getId(), MarkStage.ROUGH_LEVEL);
-                    for (MarkTaskRoughLevel markTask : markTasks) {
-                        markTask.setResult(null);
-                        markTask.setLevel(null);
-                        markTask.setSample(false);
-                        markTaskRoughLevelRepo.save(markTask);
-                    }
+                    // 取消标准卷后,任务清除,重回待发任务池(update by 2024-10-23)
+                    markTaskRoughLevelRepo.deleteInBatch(markTasks);
+//                    for (MarkTaskRoughLevel markTask : markTasks) {
+//                        markTask.setResult(null);
+//                        markTask.setLevel(null);
+//                        markTask.setSample(false);
+//                        markTaskRoughLevelRepo.save(markTask);
+//                    }
 
                     // 记录日志
                     Long userId = ServletUtil.getUserId();
@@ -581,15 +584,18 @@ public class PaperApi {
                     paper.determineLevel(null);
                     paper.setMarkByLeader(false);
                     paper.setSample(false);
+                    paper.setBatchNo(null);
                     paperRepo.save(paper);
 
                     List<MarkTaskLevel> markTasks = markTaskLevelRepo.findByPaperIdAndStage(paper.getId(), MarkStage.LEVEL);
-                    for (MarkTaskLevel markTask : markTasks) {
-                        markTask.setResult(null);
-                        markTask.setLevel(null);
-                        markTask.setSample(false);
-                        markTaskLevelRepo.save(markTask);
-                    }
+                    // 取消标准卷后,任务清除,重回待发任务池(update by 2024-10-23)
+                    markTaskLevelRepo.deleteInBatch(markTasks);
+//                    for (MarkTaskLevel markTask : markTasks) {
+//                        markTask.setResult(null);
+//                        markTask.setLevel(null);
+//                        markTask.setSample(false);
+//                        markTaskLevelRepo.save(markTask);
+//                    }
 
                     // 记录日志
                     Long userId = ServletUtil.getUserId();

+ 10 - 6
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/PaperCheckApi.java

@@ -218,7 +218,7 @@ public class PaperCheckApi {
 
         Page<PaperCheckStudent> paperCheckStudents = paperCheckStudentRepo.findAll(specification, pageable1);
         List<Paper> papers = paperRepo.findAll(paperCheckStudents.getContent().stream().map(PaperCheckStudent::getPaperId).collect(Collectors.toList()));
-
+        papers.sort(Comparator.comparing(Paper::getSecretNumber));
         List<PaperDTO> paperDTOs = new ArrayList<>();
         papers.forEach(p -> paperDTOs.add(paperAssembler.toInspectionDTO(p)));
 
@@ -303,18 +303,22 @@ public class PaperCheckApi {
             paperCheckExportDTO.setExamNumber(String.valueOf(o[1]));
             paperCheckExportDTO.setSecretNumber(String.valueOf(o[2]));
 
+            // 试卷定档档位
             Object level = o[3];
+            // 改档时试卷原定档档位
             Object originLevel = o[4];
+            // 改档时试卷新定档档位
+            Object suggestLevel = o[5];
             // 没有改档记录
-            if (originLevel == null) {
-                paperCheckExportDTO.setOriginLevel(String.valueOf(level));
+            if (suggestLevel == null) {
+                paperCheckExportDTO.setOriginLevel(level != null ? String.valueOf(level) : "");
                 paperCheckExportDTO.setLevel("-");
                 paperCheckExportDTO.setUpdateLevel("否");
             } else {
                 paperCheckExportDTO.setOriginLevel(String.valueOf(originLevel));
-                paperCheckExportDTO.setLevel(String.valueOf(level));
-                // 有改档记录且更新前后档位未变动,说明有评卷员未确认,是否改档标记为否
-                paperCheckExportDTO.setUpdateLevel(originLevel.equals(level) ? "否" : "是");
+                paperCheckExportDTO.setLevel(String.valueOf(suggestLevel));
+                // 有改档记录且更新前后档位未变动,说明有评卷员未确认,是否改档标记为否(2024-10-24改为同意即为已改档)
+                paperCheckExportDTO.setUpdateLevel("是");
             }
             paperCheckExportDTOS.add(paperCheckExportDTO);
         });

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

@@ -63,6 +63,8 @@ public class MarkTaskLevelAssembler {
             markTaskDTO.setOriginLevel(markTask.getOriginLevel() == null ? "" : markTask.getOriginLevel());
             markTaskDTO.setSn(markTask.getSecretNumber());
             markTaskDTO.setRedoLevel(paper.getRedoLevel());
+            markTaskDTO.setOneClick(paper.isOneClick());
+            markTaskDTO.setRoughOneClick(paper.isRoughOneClick());
             String imgSrc = null;
             String thumbSrc = null;
             String fileName = paper.getExamNumber();

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

@@ -61,6 +61,8 @@ public class MarkTaskRoughLevelAssembler {
             markTaskDTO.setOriginLevel(markTask.getOriginLevel() == null ? "" : markTask.getOriginLevel());
             markTaskDTO.setSn(markTask.getSecretNumber());
             markTaskDTO.setRedoLevel(paper.getRedoLevel());
+            markTaskDTO.setOneClick(paper.isOneClick());
+            markTaskDTO.setRoughOneClick(paper.isRoughOneClick());
             String imgSrc = null;
             String thumbSrc = null;
             String fileName = paper.getExamNumber();

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

@@ -80,7 +80,7 @@ public class PaperAssembler {
             paperDTO.setLevel(paper.getLevel());
             paperDTO.setRoughLevel(paper.getRoughLevel());
             paperDTO.setManual(paper.isManual());
-            paperDTO.setScore(Objects.isNull(paper.getScore()) ? null : paper.getScore().intValue());
+            paperDTO.setScore(paper.getScore());
             paperDTO.setArbitrated(paper.isArbitrated());
             paperDTO.setRejected(paper.isRejected());
             paperDTO.setSample(paper.isSample());
@@ -156,7 +156,7 @@ public class PaperAssembler {
             paperDTO.setLevel(paper.getLevel());
             paperDTO.setRoughLevel(paper.getRoughLevel());
             paperDTO.setManual(paper.isManual());
-            paperDTO.setScore(Objects.isNull(paper.getScore()) ? null : paper.getScore().intValue());
+            paperDTO.setScore(paper.getScore());
             paperDTO.setArbitrated(paper.isArbitrated());
             paperDTO.setRejected(paper.isRejected());
             paperDTO.setSample(paper.isSample());
@@ -250,7 +250,7 @@ public class PaperAssembler {
             paperDTO.setLevel(paper.getLevel());
             paperDTO.setRoughLevel(paper.getRoughLevel());
             paperDTO.setManual(paper.isManual());
-            paperDTO.setScore(Objects.isNull(paper.getScore()) ? null : paper.getScore().intValue());
+            paperDTO.setScore(paper.getScore());
             paperDTO.setArbitrated(paper.isArbitrated());
             paperDTO.setRejected(paper.isRejected());
             paperDTO.setSample(paper.isSample());
@@ -328,7 +328,7 @@ public class PaperAssembler {
             paperDTO.setSn(paper.getSecretNumber());
             paperDTO.setLevel(paper.getLevel());
             paperDTO.setManual(paper.isManual());
-            paperDTO.setScore(Objects.isNull(paper.getScore()) ? null : paper.getScore().intValue());
+            paperDTO.setScore(paper.getScore());
             paperDTO.setArbitrated(paper.isArbitrated());
             paperDTO.setRejected(paper.isRejected());
             paperDTO.setSample(paper.isSample());
@@ -399,7 +399,7 @@ public class PaperAssembler {
             paperDTO.setSn(paper.getSecretNumber());
             paperDTO.setLevel(paper.getLevel());
             paperDTO.setManual(paper.isManual());
-            paperDTO.setScore(Objects.isNull(paper.getScore()) ? null : paper.getScore().intValue());
+            paperDTO.setScore(paper.getScore());
             paperDTO.setArbitrated(paper.isArbitrated());
             paperDTO.setRejected(paper.isRejected());
             paperDTO.setSample(paper.isSample());
@@ -459,7 +459,7 @@ public class PaperAssembler {
             paperDTO.setSn(paper.getSecretNumber());
             paperDTO.setLevel(paper.getLevel());
             paperDTO.setManual(paper.isManual());
-            paperDTO.setScore(Objects.isNull(paper.getScore()) ? null : paper.getScore().intValue());
+            paperDTO.setScore(paper.getScore());
             paperDTO.setArbitrated(paper.isArbitrated());
             paperDTO.setRejected(paper.isRejected());
             paperDTO.setSample(paper.isSample());

+ 19 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/dto/MarkTaskDTO.java

@@ -50,6 +50,9 @@ public class MarkTaskDTO implements Serializable{
     private String deviationDirection;
     private Boolean isMark;
     private Boolean isSelfCheck;
+    private boolean isRoughOneClick;
+
+    private boolean isOneClick;
     /**
      * 是否回评(生成自查卷使用)
      */
@@ -338,4 +341,20 @@ public class MarkTaskDTO implements Serializable{
     public void setReLevel(Boolean reLevel) {
         isReLevel = reLevel;
     }
+
+    public boolean isRoughOneClick() {
+        return isRoughOneClick;
+    }
+
+    public void setRoughOneClick(boolean roughOneClick) {
+        isRoughOneClick = roughOneClick;
+    }
+
+    public boolean isOneClick() {
+        return isOneClick;
+    }
+
+    public void setOneClick(boolean oneClick) {
+        isOneClick = oneClick;
+    }
 }

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

@@ -20,7 +20,7 @@ public class PaperDTO implements Serializable{
     private String level;
     private String roughLevel;
     private String originLevel;
-    private Integer score;
+    private Double score;
     private boolean isArbitrated;
     private boolean isRejected;
     private String redoLevel;
@@ -108,11 +108,11 @@ public class PaperDTO implements Serializable{
         this.level = level;
     }
 
-    public Integer getScore() {
+    public Double getScore() {
         return score;
     }
 
-    public void setScore(Integer score) {
+    public void setScore(Double score) {
         this.score = score;
     }
 

+ 5 - 1
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkTaskLevelService.java

@@ -133,7 +133,11 @@ public class MarkTaskLevelService {
 //            join.on(onPredicates.toArray(new Predicate[onPredicates.size()]));
             return builder.and(predicates.toArray(new Predicate[predicates.size()]));
         };
-        Sort sort = new Sort("randomSeq", "paper.roughLevel", "randomSeqNew");
+        Sort.Order order1 = new Sort.Order(Sort.Direction.DESC, "paper.isSample");
+        Sort.Order order2 = new Sort.Order(Sort.Direction.ASC, "randomSeq");
+        Sort.Order order3 = new Sort.Order(Sort.Direction.ASC, "paper.roughLevel");
+        Sort.Order order4 = new Sort.Order(Sort.Direction.ASC, "randomSeqNew");
+        Sort sort = new Sort(order1, order2, order3, order4);
         Pageable pageable1 = new PageRequest(pageable.getPageNumber(), pageable.getPageSize(), sort);
         Page<MarkTaskLevel> markTasks = markTaskLevelRepo.findAll(specification, pageable1);