Procházet zdrojové kódy

指令重复回调过滤

yejian před 3 roky
rodič
revize
9f237a843c

+ 9 - 3
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/impl/TaskNodeServiceImpl.java

@@ -1321,14 +1321,16 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
         }
 
         //验证是否重复回调
-        String cacheUid = msgUtil.redis_get(taskNodeId) == null ? "" : msgUtil.redis_get(taskNodeId).toString();
+        String repeatKey = taskNodeId + taskId;
+
+        String cacheUid = msgUtil.redis_get(repeatKey) == null ? "" : msgUtil.redis_get(repeatKey).toString();
         if (StringUtil.isNotEmpty(cacheUid)) {//排除掉重复回调
             log.info("回调重复了======================" + cacheUid);
             return R.fail("节点{}已有回调",bean.getTaskNodeId());
         }
 
         //把当前id存放入缓存
-        msgUtil.redis_set(String.valueOf(bean.getTaskNodeId()), String.valueOf(bean.getTaskNodeId()), 1, TimeUnit.HOURS);
+        msgUtil.redis_set(String.valueOf(repeatKey), String.valueOf(bean.getTaskNodeId()), 1, TimeUnit.HOURS);
 
         //取出参数
         String code = bean.getCode();
@@ -1377,6 +1379,10 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
         //当前正在执行的自动化程序
         TaskNode taskNode = taskNodeMap.get(Long.parseLong(taskNodeId));
 
+        if("3".equals(taskNode.getExeStatus())){
+            return R.success("任务{}已经完成,无需再次回调",taskNodeId);
+        }
+
         List<AAutoNodeLog> autoNodeLogList = autoNodeLogMapper.selectList(Wraps.<AAutoNodeLog>lbQ().eq(AAutoNodeLog::getTaskNodeId, taskNode.getId()));
         AAutoNodeLog lg = autoNodeLogList.get(0);
         if ("1".equals(code)) {
@@ -1389,7 +1395,7 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
             lg.setStatus("0").setExeResult("0").setManual("1").setFeedback(msg);
             autoNodeLogMapper.updateAllById(lg);
         }
-        msgUtil.redis_del(taskNodeId);
+        msgUtil.redis_del(repeatKey);
         return R.success();
     }