Эх сурвалжийг харах

修复密号重复以及异步任务可能数据遗漏BUG-优化

wangliang 5 жил өмнө
parent
commit
d361c781e0

+ 7 - 0
stmms-ms-log/src/main/java/cn/com/qmth/stmms/ms/log/aop/MarkLogAop.java

@@ -235,6 +235,7 @@ public class MarkLogAop {
                 JSONObject js = new JSONObject();
                 js.put("paperId", paper.getId());
                 js.put("type", "autoCallback");
+                js.put("deviation", markingConfig.getDeviation());
                 MarkTaskJob markTaskJob = new MarkTaskJob(js.toJSONString(), false, paper.getWorkId());
                 autoCallback(markTasks, markingConfig.getDeviation(), paper, markTaskJob, work.getName());
                 markTaskJobRepo.save(markTaskJob);
@@ -253,6 +254,12 @@ public class MarkLogAop {
      * @param workName
      */
     public void autoCallback(List<MarkTask> markTasks, int deviation, Paper paper, MarkTaskJob markTaskJob, String workName) {
+        List<MarkTask> result = markTasks.stream().filter(x -> Objects.isNull(x.getResult())).collect(Collectors.toList());
+        if (Objects.nonNull(result) && result.size() > 0) {
+            LOGGER.info("数据有误,未完成评卷任务");
+            markTaskJobRepo.updateMarkTaskJobByVersion(markTaskJob.getId(), markTaskJob.getVersion());
+            return;
+        }
         Map<Long, String> levelsMap = markTasks.stream().collect(Collectors.toMap(MarkTask::getMarkerId, o -> o.getResult().toUpperCase()));
         LOGGER.info("this:{} markLogAop异步回调进来了", this);
         arbitrateCallback.judge(levelsMap, deviation, new ArbitrateResult() {

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

@@ -125,7 +125,8 @@ public class ScheduledTask {
                             if (Objects.equals("levelsLog", type)) {
                                 markingService.levelsLog(markTaskList, paper, m);//档位差日志记录
                             } else if (Objects.equals("autoCallback", type)) {
-                                markLogAop.autoCallback(markTaskList, markingConfig.getDeviation(), paper, m, work.getName());//自动打回记录
+                                Integer deviation = jsonObject.get("deviation") == null ? markingConfig.getDeviation() : Integer.parseInt(String.valueOf(jsonObject.get("deviation")));
+                                markLogAop.autoCallback(markTaskList, deviation, paper, m, work.getName());//自动打回记录
                             }
                         }
                     }

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

@@ -189,6 +189,12 @@ public class MarkingService {
      * @param markTaskJob
      */
     public void levelsLog(List<MarkTask> markTasks, Paper paper, MarkTaskJob markTaskJob) {
+        List<MarkTask> result = markTasks.stream().filter(x -> Objects.isNull(x.getResult())).collect(Collectors.toList());
+        if (Objects.nonNull(result) && result.size() > 0) {
+            LOG.info("数据有误,未完成评卷任务");
+            markTaskJobRepo.updateMarkTaskJobByVersion(markTaskJob.getId(), markTaskJob.getVersion());
+            return;
+        }
         Map<Long, String> levelsMap = markTasks.stream().collect(Collectors.toMap(MarkTask::getMarkerId, o -> o.getResult().toUpperCase()));
         arbitrateCallback.judge(levelsMap, paper.getLevel(), new ArbitrateResult() {
             @Override