Procházet zdrojové kódy

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

wangliang před 5 roky
rodič
revize
0395d7c579

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

@@ -38,5 +38,5 @@ public interface MarkTaskJobRepo extends JpaRepository<MarkTaskJob, Long>, JpaSp
     @Modifying
     @Transactional
     @Query(value = "update mark_task_job set status = true,version = ?2 + 1 where id = ?1 and version = ?2", nativeQuery = true)
-    void updateMarkTaskJobByVersion(Long id, Integer version);
+    int updateMarkTaskJobByVersion(Long id, Integer version);
 }

+ 6 - 4
stmms-ms-log/src/main/java/cn/com/qmth/stmms/ms/log/aop/MarkLogAop.java

@@ -287,11 +287,13 @@ public class MarkLogAop {
                             }
                         }
                     }
-                    markTaskRepo.save(markTasks);
-                    paperRepo.save(paper);
-                    markLogRepo.save(markLogList);
+                    int count = markTaskJobRepo.updateMarkTaskJobByVersion(markTaskJob.getId(), markTaskJob.getVersion());
+                    if (count > 0) {
+                        markTaskRepo.save(markTasks);
+                        paperRepo.save(paper);
+                        markLogRepo.save(markLogList);
+                    }
                 }
-                markTaskJobRepo.updateMarkTaskJobByVersion(markTaskJob.getId(), markTaskJob.getVersion());
                 LOGGER.info("this:{} callback markLogAop异步回调结束了", this);
             }
         });

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

@@ -208,12 +208,12 @@ public class MarkingService {
                             JSONObject jsonObject = new JSONObject();
                             jsonObject.put("task", m.getResult());
                             jsonObject.put("paper", paper.getLevel());
-                            if (Objects.isNull(markLogPrev)) {
+                            if (Objects.isNull(markLogPrev)) {//新建日志
                                 //加入档位落差值日志
                                 Work work = workRepo.findOne(paper.getWorkId());
                                 MarkLog markLog = new MarkLog(m.getMarkerId(), m.getMarkerName(), Role.MARKER, m.getSubject(), paper.getExamNumber(), paper.getStudentName(), MarkLogOperType.LEVEl_DIFFERENCE.getId(), paper.getWorkId(), paper.getId(), m.getStage(), operResult, String.valueOf(d.getDistance()), jsonObject.toJSONString(), work.getName());
                                 markLogRepo.save(markLog);
-                            } else {
+                            } else {//更新日志
                                 operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse("-");
                                 markLogPrev.setOperDataBefore(operResult);
                                 markLogPrev.setOperDataAfter(String.valueOf(d.getDistance()));