Browse Source

更新任务机器人业务功能节点

oyq28 3 năm trước cách đây
mục cha
commit
935a7d4900

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

@@ -736,8 +736,11 @@ public class TaskWorkNode {
             map.put("result", false);
         }else{
             // 获取锁定节点设备ID
-            //Long campId = xbkStorage.getCampId();
-            Long targetId = xbkStorage.getTargetId();
+            Long campId = xbkStorage.getCampId();
+            // 获取锁定设备ID
+            TaskNode targetNode = taskNodeService.getById(campId);
+            // 锁定节点对应设备ID
+            Long targetId = targetNode.getResourceId();
             if(!taskNodeService.getRunStatus(targetId)){
                 map.put("result", false);
                 map.put("msg", DictionaryKey.NodeException.RUNNING_FALSE);

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

@@ -95,6 +95,8 @@ public class RobotNodeServiceImpl implements NodeOperationService {
 
     private List<ProductionresourcePosition> xbkList;
 
+    private List<ProductionresourcePosition> jbwList;
+
     @Override
     public void initResource(TaskNode taskNode, TTask task, Map dataMap) {
         //productionresourcePosition = getResourcePosition(taskNode);
@@ -113,6 +115,12 @@ public class RobotNodeServiceImpl implements NodeOperationService {
                     DictionaryKey.YJ_ZONE_XBK.get(dataMap.get("robotType").toString())
                 }: new String[]{DemoLineConstant.NODE_RESOURCE_ZLZX_XBK};
         xbkList = productionresourcePositionService.getFreeProductionresourcePositionByNos(xbkArr);
+        //jbwArr = modules.stream().map(Module::getNo).toArray(String[]::new);
+        List<Productionresource> dataList = productionresourceService.list(new QueryWrapper<Productionresource>().like("name", robotType));
+        if(dataList.size()>0) {
+            jbwArr = dataList.stream().map(Productionresource::getId).toArray(String[]::new);
+            jbwList = productionresourcePositionService.getFreeProductionresourcePositionByIds(jbwArr);
+        }
     }
 
     @Override
@@ -121,7 +129,7 @@ public class RobotNodeServiceImpl implements NodeOperationService {
         String carryType = dataMap.get("carryType") == null ? "" : dataMap.get("carryType").toString();
         String robotType = dataMap.get("robotType") == null ? "" : dataMap.get("robotType").toString();
 
-        Map<String, Object> map = new HashMap<>();
+        //Map<String, Object> map = new HashMap<>();
         map.put("taskNode", taskNode);
         map.put("task", task);
 
@@ -144,8 +152,12 @@ public class RobotNodeServiceImpl implements NodeOperationService {
         Storge startStore = workpieceService.getWorkPieceStock(taskNode.getId(), false);
         //目的库位
         Storge jqrStorge = storgeService.getById(deviceList.get(0).getStorgeId());
-
         //目标地址判断
+        if(map.containsKey("useXbk")){
+            //目标地址是线边库
+            map.put("result", false);
+            return map;
+        }
 
         switch(robotType){
             case "质量中心机器人":
@@ -156,13 +168,13 @@ public class RobotNodeServiceImpl implements NodeOperationService {
                 break;
             case "柔性线机器人":
                 //操作柔性线边库 具有取、移动、放三种指令
-                 //取放加工设备
+                 //取放加工设备  设备存在缓存位
                 String count = dataMap.get(taskNode.getId().toString() + "count") == null ? "0" : dataMap.get(taskNode.getId().toString() + "count").toString();
                 map = this.commandHandle(map, startStore, jqrStorge, functionName, count);
                 break;
             case "智能单元机器人":
                 //操作智能单元线边库 具有取、移动、放三种指令
-                //取放加工设备
+                //取放加工设备 无缓存位处理
                 map = this.commandHandle(map, startStore, jqrStorge, functionName);
                 break;
             case "舱体线机器人":
@@ -207,25 +219,8 @@ public class RobotNodeServiceImpl implements NodeOperationService {
     private Map<String, Object>  commandHandle(Map<String, Object> dataMap, Storge startStore, Storge jqrStorge, String... params){
         TaskNode taskNode = (TaskNode) dataMap.get("taskNode");
         TTask task = (TTask) dataMap.get("task");
-        if ("取".equals(params[0])) {
-            dataMap.put("zkIp", ZK_ip_zndy);
-            dataMap.put(DemoLineConstant.DEMOLINE_BIZ_TYPE, "fetchMaterial");
-            TaskNode nextTaskNode = taskNodeService.getNextNTaskNode(taskNode, 1);
-            //if (CollectionUtil.isNotEmpty(jqrList)) {
-            dataMap.put("fromStorge", startStore);
-            dataMap.put("Data", startStore);
-                //出入库类型
-            dataMap.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_ALL_CRK);
-                //目的地为机器人手臂
-            dataMap.put("toStorge", jqrStorge);
-                //锁定机器人
-                jqrStorge.setCompleteBatchNo(task.getCompleteBatchNo());
-                storgeService.lockStorge(jqrStorge, nextTaskNode.getId());
-            //}
-            //
-            map.put("result", true);
-        }
-        else if (params[1]!= null) {
+        //缓存位判断处理
+        if (params[1]!= null) {
             //int count = dataMap.get(taskNode.getId().toString() + "count") == null ? 0 : Integer.parseInt(dataMap.get(taskNode.getId().toString() + "count").toString());
              int count = Integer.parseInt(params[1]);
             //执行到第几步
@@ -290,12 +285,46 @@ public class RobotNodeServiceImpl implements NodeOperationService {
             }
 
         }
+        else if ("取".equals(params[0])) {
+            dataMap.put("zkIp", ZK_ip_zndy);
+            dataMap.put(DemoLineConstant.DEMOLINE_BIZ_TYPE, "fetchMaterial");
+            TaskNode nextTaskNode = taskNodeService.getNextNTaskNode(taskNode, 1);
+            //if (CollectionUtil.isNotEmpty(jqrList)) {
+            dataMap.put("fromStorge", startStore);
+            dataMap.put("Data", startStore);
+            //出入库类型
+            dataMap.put(DemoLineConstant.DEMOLINE_STOCK_TYPE, DemoLineConstant.DEMOLINE_STOCK_TYPE_ALL_CRK);
+            //目的地为机器人手臂
+            dataMap.put("toStorge", jqrStorge);
+            //锁定机器人
+            jqrStorge.setCompleteBatchNo(task.getCompleteBatchNo());
+            storgeService.lockStorge(jqrStorge, nextTaskNode.getId());
+            //}
+            //
+            map.put("result", true);
+        }
         else if ("放".equals(params[0])) {
             //判断目标位置是否空闲
-            String target[] = {taskNode.getAutoNode().getTargetId().toString()};
-            List<ProductionresourcePosition> targetList = productionresourcePositionService.getFreeProductionresourcePositionByNos(target);
-            List<ProductionresourcePosition> xbkList = new ArrayList<>();
-
+            String actionTarget = taskNode.getAutoNode().getTargetId().toString();
+            //1是本设备 2是接驳位
+            List<ProductionresourcePosition> targetList = "1".equals(actionTarget)? productionresourcePositionService.getFreeProductionresourcePositionByNos(new String[]{taskNode.getNodeNo()}) : jbwList;
+            ProductionresourcePosition productionresourcePosition = this.logical(targetList, true);
+            boolean bool =  productionresourcePosition!=null ? true : false;
+            if(!bool){
+                dataMap.put("result", false);
+                return dataMap;
+            }
+            boolean isXbk = dataMap.containsKey("useXbk");
+            Storge targetStorge = storgeService.getById(productionresourcePosition.getStorgeId());
+            targetStorge.setCompleteBatchNo(task.getCompleteBatchNo());
+            if(isXbk){
+                dataMap.put("result", false);
+            }else{
+                //锁定设备
+                storgeService.lockStorge(targetStorge, taskNode.getId());
+                dataMap.put("result", true);
+            }
+            /*
             if (CollectionUtil.isNotEmpty(targetList)) {//设备空闲
                 Storge targetStorge = storgeService.getById(targetList.get(0).getStorgeId());
                 //锁定加工设备库位
@@ -313,7 +342,9 @@ public class RobotNodeServiceImpl implements NodeOperationService {
                     storgeService.lockStorge(xbkStorge, taskNode.getId());
 //                    redisTemplate.opsForValue().set(DemoCacheKey.DEMOLINE_CAMP + "_" + DemoLineConstant.NODE_RESOURCE_ZNSCDY_XBK + nextTaskNode.getId(), xbkStorge, 1, TimeUnit.DAYS);
                 }
-            }
+            } */
+
+
 //            if(count==0){//第一步的时候锁定资源
 //                //判断机器人是否为空
 //                String jrqarr[] = {resourceAutoCode.getResourceId().toString()};