wudingsheng 1 mese fa
parent
commit
e1bdad348c

+ 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 TOOL_CALLBACK_PARAM = "TOOL_CALLBACK_PARAM";
 
+    String CUN_XBK="1";
+
 
 
 }

+ 10 - 1
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/mq/TaskWorkNode.java

@@ -416,6 +416,9 @@ public class TaskWorkNode {
                         if (jsonObject.containsKey(taskNode.getId() + "count")) {
                             queryMap.put(taskNode.getId() + "count", jsonObject.getString(taskNode.getId() + "count"));
                         }
+                        if (jsonObject.containsKey(taskNode.getId() + YunjianConstant.CUN_XBK)) {
+                            queryMap.put(taskNode.getId() + YunjianConstant.CUN_XBK, jsonObject.getString(taskNode.getId() + YunjianConstant.CUN_XBK));
+                       }
 
                         //把产线放进去,避免多次查询节点业务参数
                         ZZoneProductionresource zoneProductionresource = zZoneProductionresourceMapper.selectOne(Wraps.<ZZoneProductionresource>lbQ().eq(ZZoneProductionresource::getResourceId, taskNode.getResourceId()));
@@ -916,6 +919,11 @@ public class TaskWorkNode {
             //设定出入库类型
             bizJsonObject.put(taskNode.getId() + "count", count);
         }
+        // 是否放到线边库
+        String cunXbk = conMap.get(taskNode.getId() + YunjianConstant.CUN_XBK) == null ? "" : conMap.get(taskNode.getId() + YunjianConstant.CUN_XBK).toString();
+        if(StringUtil.isNotEmpty(cunXbk)){
+            bizJsonObject.put(taskNode.getId() + YunjianConstant.CUN_XBK, cunXbk);
+        }
 
         //起点、终点缓存。
         Storge fstorge = conMap.get("fromStorge") == null ? null : (Storge) conMap.get("fromStorge");
@@ -1083,7 +1091,7 @@ public class TaskWorkNode {
         String bizType = dataMap.get("bizType") == null ? "" : dataMap.get("bizType").toString();
         String handMode = dataMap.get("handMode") == null ? "" : dataMap.get("handMode").toString();
         String count = dataMap.get(taskNode.getId() + "count") == null ? "0" : dataMap.get(taskNode.getId() + "count").toString();
-
+        String cunXbk = dataMap.get(taskNode.getId() + YunjianConstant.CUN_XBK) == null ? "0" : dataMap.get(taskNode.getId() + YunjianConstant.CUN_XBK).toString();
         //判断节点设备类型
         ResourceAutoCode resourceAutoCode = taskNode.getAutoNode();
         String category = resourceAutoCode.getCategory();
@@ -1099,6 +1107,7 @@ public class TaskWorkNode {
         map.put("taskNode", taskNode);
         map.put("task", task);
         map.put(taskNode.getId() + "count", count);
+        map.put(taskNode.getId() + YunjianConstant.CUN_XBK, cunXbk);
         map.put("bizType", bizType);
         map.put("handMode", handMode);
         map.put("categoryName", DictionaryKey.RESOURCE_CATEGORY.get(category));

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

@@ -1702,9 +1702,11 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
             List<AAutoNodeLog> autoNodeLogList =
                     autoNodeLogMapper.selectList(Wraps.<AAutoNodeLog>lbQ().eq(AAutoNodeLog::getTaskId, taskId).eq(AAutoNodeLog::getTaskNodeId,
                             taskNode.getId()));
-            lg = autoNodeLogList.size()>0 && autoNodeLogList.size()<4 ? autoNodeLogList.get(autoNodeLogList.size()-1):null;
-            if(null == lg){
-                return R.fail("指令和数据一致性不正确");
+            if(!autoNodeLogList.isEmpty() && autoNodeLogList.size()>0 ){
+               lg = autoNodeLogList.get(autoNodeLogList.size()-1);
+            }
+            if(null == lg || Objects.isNull(lg)){
+                return R.success("任务{}查询不到,不再循环回调", taskNodeId);
             }
             lg.setSendStatus("2");
             lg.setExeResult("1");
@@ -1729,7 +1731,7 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
             msgUtil.redis_del(repeatKey);
             lg.setExeStatus("2");
             lg.setExeResult("0");
-            lg.setFeedback("回调时出错"+ e.getMessage());
+            lg.setFeedback("回调时出错"+ e);
             autoNodeLogMapper.updateAllById(lg);
 
             taskNode.setExeStatus("2").setExeResult("0").setEndTime(new Date());
@@ -1844,12 +1846,19 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
             if (callBackJson.containsKey(YunjianConstant.YUNJIAN_XBKFLAG))  {//临时存放到了线边库,向虚拟线边库发一个MQ。
                 int count = callBackJson.getString(taskNode.getId().toString() + "count") == null ? 0 :
                         Integer.parseInt(callBackJson.getString(taskNode.getId().toString() + "count"));
+                int cunXbk = callBackJson.getString(taskNode.getId() + YunjianConstant.CUN_XBK)==null? 0:Integer.parseInt(callBackJson.getString(taskNode.getId() + YunjianConstant.CUN_XBK));
+                int cunXbkCS = 2;
                 int limit = 1;
                 if (!callBackJson.containsKey(YunjianConstant.YUNJIAN_ROBORT_CACHE_FLAG)) {
                     limit = 1;
                 }
 
-                if (count == limit) {//
+                if (count == limit && cunXbk == 0) {//
+                    taskNode.setExeStatus("3").setExeResult("1").setEndTime(new Date());
+                    if (null != callBackJson.getString("updateUser")) {
+                        taskNode.setLoadingUserId(Long.valueOf(callBackJson.getString("updateUser")));
+                    }
+                }else if (count == limit && cunXbk == cunXbkCS){
                     taskNode.setExeStatus("3").setExeResult("1").setEndTime(new Date());
                     if (null != callBackJson.getString("updateUser")) {
                         taskNode.setLoadingUserId(Long.valueOf(callBackJson.getString("updateUser")));
@@ -2009,6 +2018,16 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
             if (count < 1) {//
                 return false;
             }
+        }else if (callBackJson.containsKey("YUNJIAN_XBKFLAG") && callBackJson.containsKey("YUNJIAN_ROBORT_CACHE_FLAG")){
+            int count = callBackJson.getString(taskNode.getId().toString() + "count") == null ? 0 :
+                    Integer.parseInt(callBackJson.getString(taskNode.getId().toString() + "count"));
+            int cunXbk = callBackJson.getString(taskNode.getId() + YunjianConstant.CUN_XBK)==null? 0:Integer.parseInt(callBackJson.getString(taskNode.getId() + YunjianConstant.CUN_XBK));
+
+            if (count < 1) {
+                return false;
+            }else if (cunXbk > 0 && cunXbk<2){
+                return false;
+            }
         }
         return true;
 

+ 8 - 1
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/strategy/impl/CacheRobotStrategy.java

@@ -272,11 +272,18 @@ public class CacheRobotStrategy implements RobotStrategy {
         } else {
             //暂存位无占用直接处理(即size>1或者size=0)
             if (targetXbk.equals("0")) {
+                // 线边库标识,不使用缓存货架中转,直接一条命令下发到目的站点,所以移除,线边库出线命令分两步走的命令
+                returnMap.put( taskNode.getId() + YunjianConstant.CUN_XBK, "0");
+
                 //目标缓存
                 msgUtil.redis_set(DemoCacheKey.YUNJIAN_CAMP + "_" + DemoLineConstant.YUNJIAN_TARGET_STORE + taskNode.getId(), targetStorge, 10, TimeUnit.DAYS);
+
+
             } else {
                 //目标是线边库
                 Object xbkFlag = msgUtil.redis_get(DemoCacheKey.YUNJIAN_CAMP + "_" + DemoLineConstant.YUNJIAN_TARGET_HCW_XBK_FLAG + taskNode.getId());
+
+                returnMap.put( taskNode.getId()+ YunjianConstant.CUN_XBK, "1");
                 if(ObjectUtil.isNotEmpty(xbkFlag) && targetXbk.equals("1")){
                     returnMap.put("result", false);
                     return returnMap;
@@ -367,7 +374,7 @@ public class CacheRobotStrategy implements RobotStrategy {
         //线边库移动判断暂存位是否有空余位置
         if(targetXbk.equals("0") && robotList.size() == 1 && !startStore.getPointId().contains("MERK")){
             dataMap.put("result", false);
-            dataMap.put("resultMsg", "条件判断不通过,暂存位无空闲位置,节点名字"+ taskNode.getNodeName()+"节点id:"+taskNode.getId());
+            dataMap.put("resultMsg", "条件判断不通过,暂存位无空闲位置,节点名字"+ taskNode.getProcedureName()+"节点id:"+taskNode.getId());
             return dataMap;
         }
 

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

@@ -485,6 +485,8 @@ public class MsgUtil implements ApplicationContextAware {
 
             if(callBackJson.containsKey(YunjianConstant.YUNJIAN_XBKFLAG)){//临时存放到了线边库,向虚拟线边库发一个MQ。
                     int count =  callBackJson.getString(taskNode.getId().toString()+"count")==null? 0:Integer.parseInt(callBackJson.getString(taskNode.getId().toString()+"count"));
+                    int cunXbk = callBackJson.getString(taskNode.getId() + YunjianConstant.CUN_XBK)==null? 0:Integer.parseInt(callBackJson.getString(taskNode.getId() + YunjianConstant.CUN_XBK));
+                    int cunXbkCS = 2;
                     int limit =1;
                     if(!callBackJson.containsKey(YunjianConstant.YUNJIAN_ROBORT_CACHE_FLAG)) {
                         limit =1;
@@ -495,10 +497,20 @@ public class MsgUtil implements ApplicationContextAware {
                         //把当前节点推送到mq
                         jsonObject.put("taskNodeId",taskNode.getId().toString());
                         jsonObject.put(taskNode.getId().toString()+"count",count);
+                        jsonObject.put(taskNode.getId() + YunjianConstant.CUN_XBK,cunXbk);
                         jsonObject.put("bizType",BizConstant.MQ_TASK_NODE_TYPE_XBK);
                         dynamicRabbitMq.sendMsg(taskNode.getResourceId().toString(),jsonObject.toString());
                         return;
-                    }else{
+                    }
+                    if(cunXbk>0 && cunXbk < cunXbkCS){ // 不是缓存货架是线边库
+                    cunXbk = ++cunXbk;
+                    //把当前节点推送到mq
+                    jsonObject.put("taskNodeId",taskNode.getId().toString());
+                    jsonObject.put(taskNode.getId().toString()+"count",count);
+                    jsonObject.put(taskNode.getId() + YunjianConstant.CUN_XBK,cunXbk);
+                    jsonObject.put("bizType",BizConstant.MQ_TASK_NODE_TYPE_XBK);
+                    dynamicRabbitMq.sendMsg(taskNode.getResourceId().toString(),jsonObject.toString());
+                }else{
                         // 删除缓存位优先执行的节点标志
                         redis_del(DemoLineConstant.JQR_HCW_PART_PRIOTY_EXEC_FLAG + taskNode.getId());