Browse Source

机构版-3.0.0-bug修复

xiaof 2 years ago
parent
commit
90d4fc50ac

+ 2 - 9
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/WorkApi.java

@@ -74,9 +74,6 @@ public class WorkApi {
      */
     @RequestMapping(value = "{work}", method = RequestMethod.GET)
     public Work getOne(@PathVariable Work work) {
-        if (work.isActive()) {
-            randomUtil.getRandom(work.getId(), false);
-        }
         int count = markTaskRepo.countByWorkIdAndStageAndResultNotNull(work.getId(), MarkStage.LEVEL);
         work.setModifyOtherVal(count == 0);
         return work;
@@ -92,11 +89,6 @@ public class WorkApi {
         String organizationId = request.getHeader("organizationId");
         work.setOrganizationId(Long.valueOf(organizationId));
         workService.save(work);
-
-        //生成随机数,已生成的工作,直接跳过
-        if (randomUtil.getRandomMap().get(work.getId()) == null) {
-            randomUtil.getRandom(work.getId(), false);
-        }
     }
 
     /**
@@ -208,7 +200,8 @@ public class WorkApi {
     @RequestMapping(value = "{work}/overview", method = RequestMethod.GET)
     public WorkOverview overview(@PathVariable Work work) {
         //生成随机数,已生成的工作,直接跳过
-        if (randomUtil.getRandomMap().get(work.getId()) == null) {
+        List<Long> randomList = randomUtil.getRandomMap().get(work.getId());
+        if (randomList == null || randomList.isEmpty()) {
             randomUtil.getRandom(work.getId(), false);
         }
         return workOverviewAssembler.toDTO(work);

+ 2 - 1
stmms-ms-collect/src/main/java/cn/com/qmth/stmms/ms/collect/api/CollectApi.java

@@ -158,7 +158,8 @@ public class CollectApi {
         loginDTO.setSubjects(collectSubjectDTOs);
 
         //生成随机数,已生成的工作,直接跳过
-        if (randomUtil.getRandomMap().get(activeWork.getId()) == null) {
+        List<Long> randomList = randomUtil.getRandomMap().get(activeWork.getId());
+        if (randomList == null || randomList.isEmpty()) {
             randomUtil.getRandom(activeWork.getId(), false);
         }
 

+ 2 - 2
stmms-ms-main/src/main/java/cn/com/qmth/stmms/ms/StartRunning.java

@@ -33,10 +33,10 @@ public class StartRunning implements CommandLineRunner {
     public void run(String... args) {
         LOGGER.info("服务器启动时执行 start");
         //对所有当前工作都生成随机数
-        List<Work> works = workRepo.findAll();
+        /*List<Work> works = workRepo.findAll();
         for (Work work : works) {
             randomUtil.getRandom(work.getId(), false);
-        }
+        }*/
         LOGGER.info("服务器启动时执行 end");
     }
 }

+ 2 - 2
stmms-ms-main/src/main/java/cn/com/qmth/stmms/ms/quartz/ScheduledTask.java

@@ -65,9 +65,9 @@ public class ScheduledTask implements InitializingBean {
     boolean repairPaper = false, repairTask = false, markTaskJob = false;
 
     /**
-     * 修复密号重复 30秒一次
+     * 修复密号重复 10分钟一次
      */
-    @Scheduled(cron = "0 0/5 * * * ?")
+    @Scheduled(cron = "0 0/10 * * * ?")
     public void repairRepeatSecretNumberTask() {
         if (Objects.nonNull(randomUtil.getRandomMap()) && randomUtil.getRandomMap().size() > 0) {
             List<Work> works = workRepo.findAll();

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

@@ -234,7 +234,7 @@ public class ChangeLevelApi {
             paper.setShiftScore(true);
             List<MarkTask> markTasks = markTaskRepo.findByPaperIdAndStage(paper.getId(), MarkStage.LEVEL);
             List<String> ranges = markTasks.stream().map(m->m.getMarkerId().toString()).collect(Collectors.toList());
-            markingService.reject(paper, changeLevel.getSuggestLevel(), String.join(",", ranges));
+            markingService.reject(paper, changeLevel.getSuggestLevel(), String.join(",", ranges), true);
 
             //重置已经打分的数据
             List<MarkTask> markTasksScore = markTaskRepo.findByPaperIdAndStage(paper.getId(), MarkStage.SCORE);

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

@@ -373,7 +373,9 @@ public class PaperApi {
                 paper.setRejectedByLeader(true);
                 //需要打回的评卷员
                 String ranges = body.get("range");
-                markingService.reject(paper, level, ranges);
+                String leaderConfirmStr = body.get("leaderConfirm");
+                boolean leaderConfirm = leaderConfirmStr == null || "".equals(leaderConfirmStr) || Boolean.parseBoolean(leaderConfirmStr);
+                markingService.reject(paper, level, ranges, leaderConfirm);
             }
         }
         if (tagged != null) {
@@ -416,7 +418,9 @@ public class PaperApi {
                         paper.setRejectedByLeader(true);
                         //需要打回的评卷员
                         String ranges = body.get("range");
-                        markingService.reject(paper, level, ranges);
+                        String leaderConfirmStr = body.get("leaderConfirm");
+                        boolean leaderConfirm = leaderConfirmStr == null || "".equals(leaderConfirmStr) || Boolean.parseBoolean(leaderConfirmStr);
+                        markingService.reject(paper, level, ranges, leaderConfirm);
                     }
                 }
                 if (tagged != null) {

+ 3 - 3
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/DetermineLevelService.java

@@ -46,9 +46,9 @@ public class DetermineLevelService {
     /**
      * 计算定档值(规则:1.不是过半定档,取权重,2.是过半定档,没有取优,取过半定档,3.是过半定档,是取优,取过半定档和权重最优值)
      *
-     * @param majority 是否过半定档
-     * @param taskBest 是否取优
-     * @param tasks    任务集合
+     * @param workId 工作id
+     * @param levels 档位集合
+     * @param markTasks    任务集合
      */
     public DeterResult determine(Long workId, List<Level> levels, List<MarkTask> markTasks) {
         //定档

+ 7 - 6
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkingService.java

@@ -168,7 +168,7 @@ public class MarkingService {
                 paper.setRejectedByLeader(true);
                 //需要打回的评卷员
                 String ranges = String.join(",", determine.getRejectTasks());
-                markingService.reject(paper, null, ranges);
+                markingService.reject(paper, null, ranges, true);
             }
             //改档后重新分档,状态改为false
             paper.setShift(false);
@@ -311,12 +311,13 @@ public class MarkingService {
      * 更新评卷任务状态为打回
      * 如果评卷任务的档位和建议档位一致,不打回该任务
      *
-     * @param paper
-     * @param redoLevel 建议重评档位
-     * @param ranges
+     * @param paper         打回的试卷
+     * @param redoLevel     建议重评档位
+     * @param ranges        打回的评卷员集合
+     * @param leaderConfirm 科组长打回是否确认
      */
     @Transactional
-    public Paper reject(Paper paper, String redoLevel, String ranges) {
+    public Paper reject(Paper paper, String redoLevel, String ranges, boolean leaderConfirm) {
         paper.reject(redoLevel);
         //科组长打回标记
         paper.setRejectedByLeader(true);
@@ -336,7 +337,7 @@ public class MarkingService {
                 String operResult = "-";
                 Date date = new Date();
                 for (String r : range) {
-                    if (Objects.equals(String.valueOf(markTask.getMarkerId()), r) && (StringUtils.isBlank(redoLevel) || !redoLevel.equals(markTask.getResult()))) {
+                    if (Objects.equals(String.valueOf(markTask.getMarkerId()), r) && (StringUtils.isBlank(redoLevel) || leaderConfirm || !redoLevel.equals(markTask.getResult()))) {
                         markTask.setRejected(true);
                         markTask.setOriginLevel(markTask.getResult());
                         markTask.setResult(null);

+ 2 - 2
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/arbitration/ArbitrationService.java

@@ -44,8 +44,8 @@ public class ArbitrationService {
      * @return boolean true超过
      */
     public static boolean overDeviation(int deviation, Set<Integer> sources) {
-        Optional<Integer> maxOptional = sources.stream().max(Comparator.comparing(String::valueOf));
-        Optional<Integer> minOptional = sources.stream().min(Comparator.comparing(String::valueOf));
+        Optional<Integer> maxOptional = sources.stream().max(Integer::compare);
+        Optional<Integer> minOptional = sources.stream().min(Integer::compare);
         int max = 0;
         if (maxOptional.isPresent()) {
             max = maxOptional.get();