Pārlūkot izejas kodu

1.车间调试虚实结合,不同产线调用不同产线plc配置在参数表动态查询。自己调试时需要将接口调试的TODO代码去掉
2.修改下料库位问题

yejian 3 gadi atpakaļ
vecāks
revīzija
3513472276

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

@@ -38,10 +38,7 @@ import com.github.zuihou.business.productionResourceCenter.service.impl.OtherNod
 import com.github.zuihou.business.productionResourceCenter.service.impl.RobotNodeServiceImpl;
 import com.github.zuihou.business.util.DynamicRabbitMq;
 import com.github.zuihou.business.util.MsgUtil;
-import com.github.zuihou.common.constant.BizConstant;
-import com.github.zuihou.common.constant.CacheKey;
-import com.github.zuihou.common.constant.DictionaryKey;
-import com.github.zuihou.common.constant.UrlConfConstant;
+import com.github.zuihou.common.constant.*;
 import com.github.zuihou.common.util.StringUtil;
 import com.github.zuihou.context.BaseContextHandler;
 import com.github.zuihou.database.mybatis.conditions.Wraps;
@@ -294,9 +291,9 @@ public class TaskWorkNode {
 
                             //动态调用接口和新增指令执行时间
                             log.setZoneId(zZone.getId()).setMethod(conMap.get("method").toString()).setExecuteTime(new Date());
-                            String instructionUrl = DictionaryKey.INSTRUCTION_URL + "/api/" + conMap.get("method").toString();
-                            System.out.println("instructionUrl=" + instructionUrl);
-                            System.out.println("jsonParam=" + jsonParam);
+                            String instructionUrl = conMap.get("instructionUrl") + "/api/" + conMap.get("method").toString();
+                            logger.info("instructionUrl=" + instructionUrl);
+                            logger.info("jsonParam=" + jsonParam);
                             returnData = restTemplate.postForObject(instructionUrl, formEntity, String.class);
 
                             logger.info("returnData=", returnData);
@@ -325,9 +322,9 @@ public class TaskWorkNode {
 
                             //动态调用接口和新增指令执行时间
                             log.setZoneId(zZone.getId()).setMethod(conMap.get("method").toString()).setExecuteTime(new Date());
-                            String instructionUrl = DictionaryKey.INSTRUCTION_URL + "/api/" + conMap.get("method").toString();
-                            System.out.println("instructionUrl=" + instructionUrl);
-                            System.out.println("jsonParam=" + jsonParam);
+                            String instructionUrl = conMap.get("instructionUrl") + "/api/" + conMap.get("method").toString();
+                            logger.info("instructionUrl=" + instructionUrl);
+                            logger.info("jsonParam=" + jsonParam);
                             returnData = restTemplate.postForObject(instructionUrl, formEntity, String.class);
                         }
                     }
@@ -683,6 +680,15 @@ public class TaskWorkNode {
      */
     public Map checkXbkCon(TaskNode taskNode, TTask task, Map<String, Object> dataMap) {
         ZZone zone = dataMap.get("zone") == null ? null : (ZZone) dataMap.get("zone");
+
+        String paramKey = zone.getNo() + "_plc";
+        String instructionUrl = (null == msgUtil.redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)msgUtil.redis_get(ParameterKey.PARAMETERS)).get(paramKey).toString());
+
+        // TODO 后续删除代码,目前条用模拟接口
+        if(!"capsule".equals(zone.getNo())){
+            instructionUrl = instructionUrl.replace("8081","8083");
+        }
+
         int count = Integer.parseInt(dataMap.get(taskNode.getId().toString() + "count") == null ? "0" : dataMap.get(taskNode.getId().toString() + "count").toString());
         BomProcedure bomProcedure = bomProcedureMapper.selectOne(Wraps.<BomProcedure>lbQ().eq(BomProcedure::getId,task.getProcedureId()));
         BBom bom = bBomMapper.selectById(task.getBomId());
@@ -910,6 +916,7 @@ public class TaskWorkNode {
                 dataMap.put("result", true);
             }
         }
+        dataMap.put("instructionUrl", instructionUrl);
         return dataMap;
     }
 

+ 10 - 1
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/service/impl/MachineNodeServiceImpl.java

@@ -30,6 +30,7 @@ import com.github.zuihou.business.productionResourceCenter.service.ZZoneProducti
 import com.github.zuihou.business.productionResourceCenter.service.ZZoneService;
 import com.github.zuihou.business.util.MsgUtil;
 import com.github.zuihou.common.constant.DictionaryKey;
+import com.github.zuihou.common.constant.ParameterKey;
 import com.github.zuihou.common.util.StringUtil;
 import com.github.zuihou.database.mybatis.conditions.Wraps;
 import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
@@ -115,6 +116,7 @@ public class MachineNodeServiceImpl implements NodeOperationService {
     private Long zone_id;
     private Map<String, String> plcInfo;
     private ZZone zZone;
+    private String instructionUrl;
 
     @Override
     public void initResource(TaskNode taskNode, TTask task, Map dataMap) {
@@ -138,6 +140,13 @@ public class MachineNodeServiceImpl implements NodeOperationService {
         zZone = zoneService.getById(zone_id);
         // 判断该节点使用那条线的plc
         plcInfo = DictionaryKey.PLC_CATEGORY.get(zZone.getNo());
+        // 判断该节点使用那条线的plc
+        plcInfo = DictionaryKey.PLC_CATEGORY.get(zZone.getNo());
+        String paramKey = zZone.getNo() + "_plc";
+        instructionUrl = (null == msgUtil.redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)msgUtil.redis_get(ParameterKey.PARAMETERS)).get(paramKey).toString());
+        // TODO 后续删除代码,目前条用模拟接口
+        instructionUrl = instructionUrl.replace("8081","8083");
+
     }
 
     @Override
@@ -328,7 +337,7 @@ public class MachineNodeServiceImpl implements NodeOperationService {
 
                 break;
         }
-
+        map.put("instructionUrl", instructionUrl);
         return map;
     }
 

+ 14 - 2
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/service/impl/RobotNodeServiceImpl.java

@@ -31,6 +31,7 @@ import com.github.zuihou.business.productionResourceCenter.service.*;
 import com.github.zuihou.business.util.MsgUtil;
 import com.github.zuihou.common.constant.BizConstant;
 import com.github.zuihou.common.constant.DictionaryKey;
+import com.github.zuihou.common.constant.ParameterKey;
 import com.github.zuihou.common.util.StringUtil;
 import com.github.zuihou.database.mybatis.conditions.Wraps;
 import com.google.common.collect.Maps;
@@ -134,6 +135,8 @@ public class RobotNodeServiceImpl implements NodeOperationService {
 
     private Map<String, String> plcInfo;
 
+    private String instructionUrl;
+
     @Override
     public void initResource(TaskNode taskNode, TTask task, Map dataMap) {
         //productionresourcePosition = getResourcePosition(taskNode);
@@ -165,7 +168,13 @@ public class RobotNodeServiceImpl implements NodeOperationService {
 
         // 判断该节点使用那条线的plc
         plcInfo = DictionaryKey.PLC_CATEGORY.get(zZone.getNo());
+        String paramKey = zZone.getNo() + "_plc";
+        instructionUrl = (null == msgUtil.redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)msgUtil.redis_get(ParameterKey.PARAMETERS)).get(paramKey).toString());
 
+        // TODO 后续删除代码,目前条用模拟接口
+        if(!"capsule".equals(zZone.getNo())){
+            instructionUrl = instructionUrl.replace("8081","8083");
+        }
     }
 
     @Override
@@ -500,6 +509,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
             }
             dataMap.put("result", true);
         }
+        dataMap.put("instructionUrl", instructionUrl);
         return dataMap;
     }
 
@@ -613,8 +623,10 @@ public class RobotNodeServiceImpl implements NodeOperationService {
 //                xbkFlag = "1";
 //            }
         }else {
-            //
-            if(bomProcedureType.equals("下料")){
+            // begin modify by yejian on 20220515 for 下料库位问题修改
+            TaskNode beforTaskNode = taskNodeService.getNextNTaskNode(taskNode,-1);
+            TaskNode baitingTaskNode = taskNodeService.getNextNTaskNode(beforTaskNode,-1);
+            if(bomProcedureType.equals("下料")  && "04".equals(baitingTaskNode.getInterfaceType())){
                 // 下料特殊处理,动态查找可用立库位子存放下料后的子盘夹具
                 Long storgeId = getLikuStockInList();
                 targetStorge = storgeService.getById(storgeId);

+ 19 - 3
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/redis/RedisInit.java

@@ -1,13 +1,20 @@
 package com.github.zuihou.business.redis;//package com.github.zuihou.job;
 
 
+import cn.hutool.core.collection.CollectionUtil;
+import com.github.zuihou.authority.entity.common.Parameter;
 import com.github.zuihou.authority.service.common.DictionaryItemService;
+import com.github.zuihou.authority.service.common.ParameterService;
+import com.github.zuihou.base.R;
 import com.github.zuihou.business.DemoLine.DemoCacheKey;
 import com.github.zuihou.business.DemoLine.DemoLineConstant;
+import com.github.zuihou.business.operationManagementCenter.entity.OrderProduct;
+import com.github.zuihou.business.productionReadyCenter.entity.BomProcedure;
 import com.github.zuihou.business.productionReadyCenter.entity.BomProcedureTest;
 import com.github.zuihou.business.productionResourceCenter.dao.ProductionresourcePositionMapper;
 import com.github.zuihou.business.productionResourceCenter.entity.ProductionresourcePosition;
 import com.github.zuihou.business.util.DynamicRabbitMq;
+import com.github.zuihou.common.constant.ParameterKey;
 import com.github.zuihou.common.util.StringUtil;
 import com.github.zuihou.context.BaseContextHandler;
 import com.github.zuihou.database.mybatis.conditions.Wraps;
@@ -16,6 +23,7 @@ import com.github.zuihou.tenant.entity.Productionresource;
 import com.github.zuihou.tenant.entity.TenantResource;
 import com.github.zuihou.tenant.service.TenantResourceService;
 import net.oschina.j2cache.CacheChannel;
+import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -57,6 +65,8 @@ public class RedisInit implements ApplicationRunner {
 
     @Autowired
     private RedisTemplate<String,Object> redisTemplate;
+    @Autowired
+    private ParameterService parameterService;
     private Logger logger = LoggerFactory.getLogger(RedisInit.class);
 
     @Override
@@ -73,11 +83,17 @@ public class RedisInit implements ApplicationRunner {
 //                redisTemplate.opsForHash().put(DemoCacheKey.DEMOLINE_JBW_POSITION_MAP,productionresourcePosition.getCode(),productionresourcePosition);
 //            }
 //        }
+        logger.info("初始化加载redis数据");
+        BaseContextHandler.setTenant("0000");
 
+        if(null==redisTemplate.opsForValue().get(ParameterKey.PARAMETERS)){
+            List<Parameter> parameters =  parameterService.list(Wraps.<Parameter>lbQ());
+            Map<String, String> parameterMap = parameters.stream().collect(Collectors.toMap(Parameter::getKey, t->t.getValue()));
 
-
-
-
+            if(CollectionUtil.isNotEmpty(parameterMap)){
+                redisTemplate.opsForValue().set(ParameterKey.PARAMETERS,parameterMap);
+            }
+        }
     }
 }
 

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

@@ -25,6 +25,7 @@ import com.github.zuihou.business.websocket.WebSocketServer;
 import com.github.zuihou.common.constant.BizConstant;
 import com.github.zuihou.common.constant.CacheKey;
 import com.github.zuihou.common.constant.DictionaryKey;
+import com.github.zuihou.common.constant.ParameterKey;
 import com.github.zuihou.database.mybatis.conditions.Wraps;
 import com.qiniu.common.Zone;
 import org.slf4j.Logger;
@@ -83,6 +84,9 @@ public class MsgUtil implements ApplicationContextAware {
     @Autowired
     private ZZoneProductionresourceMapper zZoneProductionresourceMapper;
 
+    @Autowired
+    private MsgUtil msgUtil;
+
     @Override
     public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
         MsgUtil.applicationContext = applicationContext;
@@ -167,7 +171,14 @@ public class MsgUtil implements ApplicationContextAware {
                 HttpEntity<String> formEntity = new HttpEntity<String>(jsonParam.toJSONString(), headers);
 
                 //动态调用接口和新增指令执行时间
-                String instructionUrl = DictionaryKey.INSTRUCTION_URL + "/api/GetTagValue";
+                plcInfo = DictionaryKey.PLC_CATEGORY.get(zZone.getNo());
+                String paramKey = zZone.getNo() + "_plc";
+                String plcUrl = (null == msgUtil.redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)msgUtil.redis_get(ParameterKey.PARAMETERS)).get(paramKey).toString());
+                // TODO 改成虚拟端口,后续删除
+                plcUrl = plcUrl.replace("8081","8083");
+
+
+                String instructionUrl = plcUrl + "/api/GetTagValue";
                 System.out.println("instructionUrl=" + instructionUrl);
                 System.out.println("jsonParam=" + jsonParam);
                 String returnData = restTemplate.postForObject(instructionUrl, formEntity, String.class);

+ 2 - 0
imcs-admin-boot/imcs-common/src/main/java/com/github/zuihou/common/constant/ParameterKey.java

@@ -55,6 +55,8 @@ public interface ParameterKey {
 
     // 结点任务完成回调地址
     String STATION_GA_SWITCH_FLAG = "stationGaSwitchFlag";
+    // AGV下达任务请求地址
+    String PARAMETERS = "parameters";
 
 
 }