Bläddra i källkod

订单排产回调防重处理

oyq28 5 dagar sedan
förälder
incheckning
76e3d7c1e7

+ 2 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/DemoLine/YunjianConstant.java

@@ -283,6 +283,8 @@ public interface YunjianConstant {
     String YUNJIAN_FANMIAN = "YUNJIAN_FANMIAN";
 
     String YUNJIAN_XBK_SCHEDULE = "YUNJIAN_XBK_SCHEDULE";
+    String YUNJIAN_SCHEDULE_LIST =  "YUNJIAN_SCHEDULE_LIST";
+
 
 
 

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

@@ -2,6 +2,7 @@ package com.github.zuihou.business.operationManagementCenter.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -1580,6 +1581,16 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
             String repeatVal = mulCache? taskNodeId +"_0" : taskNodeId;
             msgUtil.redis_set(String.valueOf(repeatKey), String.valueOf(repeatVal), 2, TimeUnit.DAYS);
         }
+        //排产过程处理重复提交
+        if(StringUtil.isNotEmpty(cacheUid)) {
+            List object = msgUtil.redis_get_list(YunjianConstant.YUNJIAN_SCHEDULE_LIST);
+            List scheduleList = (object!=null)?msgUtil.redis_get_list(YunjianConstant.YUNJIAN_SCHEDULE_LIST): Lists.newArrayList();
+            if(!scheduleList.contains(cacheUid)){
+                msgUtil.redis_set_list(YunjianConstant.YUNJIAN_SCHEDULE_LIST, cacheUid);
+            }else{
+                return R.fail(-5,"回调"+cacheUid+"已有重复");
+            }
+        }
 
         // begin add by yejian on 20220503 for yj on 如果排产中先等待排产完成后继续执行(防止重复发送回调)
         while (null != msgUtil.redis_get(YunjianConstant.YUNJIAN_SHEDULE_FLAG)) {

+ 1 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/util/MsgUtil.java

@@ -633,6 +633,7 @@ public class MsgUtil implements ApplicationContextAware {
         String cacheUid = msgUtil.redis_get(repeatKey) == null ? "" : msgUtil.redis_get(repeatKey).toString();
         if (StringUtil.isNotEmpty(cacheUid)){
             msgUtil.redis_del(repeatKey);
+            msgUtil.redis_fuzzy_del(YunjianConstant.YUNJIAN_SCHEDULE_LIST, taskNodeId);
         }
         if(StringUtil.isNotEmpty(taskNodeId) && null!=zZone){
             String symbol="";