ソースを参照

fix: 重复开课的情况下,异常数据上报

zhanghaijun 2 年 前
親
コミット
77863a20ef
共有2 個のファイルを変更した、6 個の追加 と 7 個の削除を含む
  1. 3 4
      src/main/java/com/cec/plugins/controller/TaskController.java
  2. 3 3
      src/main/java/com/cec/plugins/service/TaskService.java

+ 3 - 4
src/main/java/com/cec/plugins/controller/TaskController.java

@@ -40,16 +40,15 @@ public class TaskController {
     @PostMapping("/taskStatus")
     public ResultData taskStatus(@RequestBody @Validated DtoTaskStatus dto) {
         log.info("controller,任务状态下发,请求参数:{}", JSONUtil.toJsonStr(dto));
-        if (!taskService.isTaskEnd()) {
-            taskService.resourceOccupied(dto);
-            return ResultData.fail("任已开始,请勿重复提交");
-        }
         boolean result = taskService.saveTaskToRedis(dto.getRedisMapping());
         if (!result) {
             return ResultData.fail("任务状态保存失败");
         }
         if (dto.getStatus() == 1) {
             taskCollectService.stopReported();
+        } else if (taskService.isTaskRunning()) {
+            taskService.resourceOccupied(dto);
+            return ResultData.fail("任务已开始,请勿重复提交");
         }
         // 异步处理开始上报状态数据( 1、查询 2、上报 )
         taskService.reported(TaskEnum.TaskInstanceId, ReportedTypeFactory.ReportedStatus.class, dto);

+ 3 - 3
src/main/java/com/cec/plugins/service/TaskService.java

@@ -40,9 +40,9 @@ public class TaskService {
     }
 
     /** 当前是否是结课状态 */
-    public boolean isTaskEnd() {
-        String status = redisClientSource.getCacheStr(TaskEnum.TaskStatusOrder.getKey());
-        return StrUtil.equals(StrUtil.trim(status), "2");
+    public boolean isTaskRunning() {
+        String status = redisClientSource.getCacheStr(TaskEnum.ExceTaskStatusOrder.getKey());
+        return StrUtil.isNotBlank(status) && !StrUtil.equals(StrUtil.trim(status), "2");
     }
 
     public ResultData checkTaskStatus(BaseData dto) {