Forráskód Böngészése

节点测试问题修改

yejian 3 éve
szülő
commit
6c586f3c53

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

@@ -184,13 +184,20 @@ public class RobotNodeServiceImpl implements NodeOperationService {
         // 查找工件所属产线
         // 根据工序判断需要做什么任务
         Storge currStore = null;
+        BBom bom = bBomMapper.selectOne(Wraps.<BBom>lbQ().eq(BBom::getId,task.getBomId()));
         BomProcedure bomProcedure = bomProcedureMapper.selectOne(Wraps.<BomProcedure>lbQ().eq(BomProcedure::getId,task.getProcedureId()));
         // 人工序只有上下料
         if("上料".equals(bomProcedure.getType())){
             // 判断当前任务所属产品,找出相应的子盘夹具
-            BomProcedureTray bomProcedureTray = bomProcedureTrayMapper.selectOne(Wraps.<BomProcedureTray>lbQ().eq(BomProcedureTray::getProcedureId,task.getProcedureId()));
+            BomProcedureTray bomProcedureTray = bomProcedureTrayMapper.selectOne(Wraps.<BomProcedureTray>lbQ().eq(BomProcedureTray::getProcedureId,task.getProcedureId()).eq(BomProcedureTray::getBizType,"1"));
+
+            List<Productionresource> productionresources = productionresourceBizMapper.selectList(Wraps.<Productionresource>lbQ().like(Productionresource::getName,"立库"));
+            List<Long> productionresourceIds = productionresources.stream().map(t->t.getId()).collect(Collectors.toList());
+            List<ProductionresourcePosition> startProductionresourcePositions = productionresourcePositionMapper.selectList(Wraps.<ProductionresourcePosition>lbQ().in(ProductionresourcePosition::getResourceId, productionresourceIds));
+            List<Long> startProductionresourcePositionIds = startProductionresourcePositions.stream().map(t->t.getStorgeId()).collect(Collectors.toList());
+
             // 判断夹具是否有可用的,查询330个库位信息中是否还有夹具
-            List<StockInfo> stockInfos = stockInfoMapper.selectList(Wraps.<StockInfo>lbQ().eq(StockInfo::getGoodsId,bomProcedureTray.getTrayId()).orderByAsc(StockInfo::getStorgeId));
+            List<StockInfo> stockInfos = stockInfoMapper.selectList(Wraps.<StockInfo>lbQ().eq(StockInfo::getGoodsId,bom.getTrayId()).in(StockInfo::getStorgeId,startProductionresourcePositionIds).orderByAsc(StockInfo::getStorgeId));
             if(stockInfos.size() <= 0){
                 map.put("result", false);
                 map.put("msg", DictionaryKey.NodeException.RUNNING_FALSE);
@@ -199,81 +206,78 @@ public class RobotNodeServiceImpl implements NodeOperationService {
             // 按照顺序将托盘移动到上下料站
             // 获取抓取托盘起点及放设备重点
             StockInfo metetailStockInfo = stockInfos.get(0);
-            ProductionresourcePosition startProductionresourcePosition = productionresourcePositionMapper.selectOne(Wraps.<ProductionresourcePosition>lbQ().eq(ProductionresourcePosition::getStorgeId, metetailStockInfo.getStorgeId()));
-            currStore = storgeMapper.selectById(startProductionresourcePosition.getStorgeId());
+            currStore = storgeMapper.selectById(metetailStockInfo.getStorgeId());
         }else{
             currStore = workpieceService.getWorkPieceStock(taskNode.getId(), false);
-        }
-
-        // 先判断上一指令是否为是否为设备指令,在判断工序最后一个指令是agv动作时锁定锁定agv接驳位
-        TaskNode beforTaskNode = taskNodeService.getNextNTaskNode(taskNode,-1);
-        TaskNode nextTaskNode = taskNodeService.getNextNTaskNode(taskNode,1);
-        TaskNode lastOperationTaskNode = taskNodeService.getOne(Wraps.<TaskNode>lbQ().eq(TaskNode::getTaskId,taskNode.getTaskId()).orderByDesc(TaskNode::getCompleteBatchSort).last("limit 1"));
-
-        Productionresource productionresource =  productionresourceBizMapper.selectById(beforTaskNode.getResourceId());
-        beforTaskNode.setAutoNode(resourceAutoCodeMapper.selectById(beforTaskNode.getAutoNode().getId()));
-        //前序是设备序并且最后一个节点是agv搬运,锁定agv相关库位信息
-        if(beforTaskNode.getTaskId().equals(taskNode.getTaskId()) && "1".equals(beforTaskNode.getAutoNode().getCategory()) && null == lastOperationTaskNode.getResourceId()){
-            ProductionresourcePosition startProductionresourcePosition = null;
-            ProductionresourcePosition endProductionresourcePosition = null;
-            Storge agvStartStationStorge = null;
-            Storge agvEndStationStorge = null;
-            // 判断agv接驳位是可用
-            ZZoneProductionresource zZoneProductionresource = zZoneProductionresourceMapper.selectOne(Wraps.<ZZoneProductionresource>lbQ().eq(ZZoneProductionresource::getResourceId,taskNode.getResourceId()));
-            Map queryParams = new HashMap();
-            queryParams.put("zoneId",zZoneProductionresource.getZoneId());
-            queryParams.put("resourceName","接驳");
-            List<Productionresource> agvStartStationsResources = productionresourceBizMapper.selectResouces(queryParams);
-            Productionresource startAgvStation = null;
-            Productionresource endAgvStation = null;
-            // 遍历开始接驳位判断是否有可用的接驳位
-            for(Productionresource agvStation : agvStartStationsResources){
-                startProductionresourcePosition = productionresourcePositionMapper.selectOne(Wraps.<ProductionresourcePosition>lbQ().eq(ProductionresourcePosition::getResourceId, agvStation.getId()));
-                List<StockInfo> agvStationMeterails = stockInfoMapper.selectList(Wraps.<StockInfo>lbQ().eq(StockInfo::getStorgeId,endProductionresourcePosition.getStorgeId()));
-                List<String> meterails = agvStationMeterails.stream().map(p -> p.getGoodsType()).collect(Collectors.toList());
-                agvStartStationStorge = storgeService.getById(startProductionresourcePosition.getStorgeId());
-                // 有托板但是没有托盘认为可放
-                if(meterails.contains("5") &&  !meterails.contains("2") && agvStartStationStorge.getStatus().equals("1")){
-                    startAgvStation = agvStation;
-                    break;
+            // 先判断上一指令是否为是否为设备指令,在判断工序最后一个指令是agv动作时锁定锁定agv接驳位
+            TaskNode beforTaskNode = taskNodeService.getNextNTaskNode(taskNode,-1);
+            TaskNode nextTaskNode = taskNodeService.getNextNTaskNode(taskNode,1);
+            TaskNode lastOperationTaskNode = taskNodeService.getOne(Wraps.<TaskNode>lbQ().eq(TaskNode::getTaskId,taskNode.getTaskId()).orderByDesc(TaskNode::getCompleteBatchSort).last("limit 1"));
+
+            beforTaskNode.setAutoNode(resourceAutoCodeMapper.selectById(beforTaskNode.getAutoNode().getId()));
+            //前序是设备序并且最后一个节点是agv搬运,锁定agv相关库位信息
+            if(beforTaskNode.getTaskId().equals(taskNode.getTaskId()) && "1".equals(beforTaskNode.getAutoNode().getCategory()) && null == lastOperationTaskNode.getResourceId()){
+                ProductionresourcePosition startProductionresourcePosition = null;
+                ProductionresourcePosition endProductionresourcePosition = null;
+                Storge agvStartStationStorge = null;
+                Storge agvEndStationStorge = null;
+                // 判断agv接驳位是可用
+                ZZoneProductionresource zZoneProductionresource = zZoneProductionresourceMapper.selectOne(Wraps.<ZZoneProductionresource>lbQ().eq(ZZoneProductionresource::getResourceId,taskNode.getResourceId()));
+                Map queryParams = new HashMap();
+                queryParams.put("zoneId",zZoneProductionresource.getZoneId());
+                queryParams.put("resourceName","接驳");
+                List<Productionresource> agvStartStationsResources = productionresourceBizMapper.selectResouces(queryParams);
+                Productionresource startAgvStation = null;
+                Productionresource endAgvStation = null;
+                // 遍历开始接驳位判断是否有可用的接驳位
+                for(Productionresource agvStation : agvStartStationsResources){
+                    startProductionresourcePosition = productionresourcePositionMapper.selectOne(Wraps.<ProductionresourcePosition>lbQ().eq(ProductionresourcePosition::getResourceId, agvStation.getId()));
+                    List<StockInfo> agvStationMeterails = stockInfoMapper.selectList(Wraps.<StockInfo>lbQ().eq(StockInfo::getStorgeId,endProductionresourcePosition.getStorgeId()));
+                    List<String> meterails = agvStationMeterails.stream().map(p -> p.getGoodsType()).collect(Collectors.toList());
+                    agvStartStationStorge = storgeService.getById(startProductionresourcePosition.getStorgeId());
+                    // 有托板但是没有托盘认为可放
+                    if(meterails.contains("5") &&  !meterails.contains("2") && agvStartStationStorge.getStatus().equals("1")){
+                        startAgvStation = agvStation;
+                        break;
+                    }
                 }
-            }
-            queryParams.clear();
-            queryParams.put("zoneId",bomZzoneId);
-            queryParams.put("resourceName","接驳");
-            List<Productionresource> agvEndStationsResources = productionresourceBizMapper.selectResouces(queryParams);
-
-            // 遍历开始接驳位判断是否有可用的接驳位
-            for(Productionresource agvStation : agvEndStationsResources){
-                endProductionresourcePosition = productionresourcePositionMapper.selectOne(Wraps.<ProductionresourcePosition>lbQ().eq(ProductionresourcePosition::getResourceId, agvStation.getId()));
-                List<StockInfo> agvStationMeterails = stockInfoMapper.selectList(Wraps.<StockInfo>lbQ().eq(StockInfo::getStorgeId,endProductionresourcePosition.getStorgeId()));
-                List<String> meterails = agvStationMeterails.stream().map(p -> p.getGoodsType()).collect(Collectors.toList());
-                agvEndStationStorge = storgeService.getById(endProductionresourcePosition.getStorgeId());
-                // 有托板但是没有托盘认为可放
-                if(meterails.contains("5") && !meterails.contains("2") && agvEndStationStorge.getStatus().equals("1")){
-                    endAgvStation = agvStation;
-                    break;
+                queryParams.clear();
+                queryParams.put("zoneId",bomZzoneId);
+                queryParams.put("resourceName","接驳");
+                List<Productionresource> agvEndStationsResources = productionresourceBizMapper.selectResouces(queryParams);
+
+                // 遍历开始接驳位判断是否有可用的接驳位
+                for(Productionresource agvStation : agvEndStationsResources){
+                    endProductionresourcePosition = productionresourcePositionMapper.selectOne(Wraps.<ProductionresourcePosition>lbQ().eq(ProductionresourcePosition::getResourceId, agvStation.getId()));
+                    List<StockInfo> agvStationMeterails = stockInfoMapper.selectList(Wraps.<StockInfo>lbQ().eq(StockInfo::getStorgeId,endProductionresourcePosition.getStorgeId()));
+                    List<String> meterails = agvStationMeterails.stream().map(p -> p.getGoodsType()).collect(Collectors.toList());
+                    agvEndStationStorge = storgeService.getById(endProductionresourcePosition.getStorgeId());
+                    // 有托板但是没有托盘认为可放
+                    if(meterails.contains("5") && !meterails.contains("2") && agvEndStationStorge.getStatus().equals("1")){
+                        endAgvStation = agvStation;
+                        break;
+                    }
                 }
-            }
 
-            if (null != agvStartStationStorge && null != agvEndStationStorge){
-                storgeService.lockStorge(agvStartStationStorge, nextTaskNode.getId());
-                storgeService.lockStorge(agvEndStationStorge, lastOperationTaskNode.getId());
-                // 将agv相关的节点的目标节点地址更新进tasknode表
-                nextTaskNode.setTargetResourceId(startAgvStation.getId());
-                lastOperationTaskNode.setTargetResourceId(endAgvStation.getId());
-                taskNodeService.updateById(nextTaskNode);
-                taskNodeService.updateById(lastOperationTaskNode);
-                map.put("bizType","agv");
-            }else{
-                // 获取机器人操作线边库
-                xbkArr = new String[]{DictionaryKey.YJ_ZONE_XBK.get(zoneName)};
-                xbkList = productionresourcePositionService.getFreeProductionresourcePositionByNos(xbkArr);
-                if(CollectionUtil.isNotEmpty(xbkList)){
-                    ProductionresourcePosition position = xbkList.get(0);
-                    // TODO 应该需要合并到getTargetStorge 方法中
+                if (null != agvStartStationStorge && null != agvEndStationStorge){
+                    storgeService.lockStorge(agvStartStationStorge, nextTaskNode.getId());
+                    storgeService.lockStorge(agvEndStationStorge, lastOperationTaskNode.getId());
+                    // 将agv相关的节点的目标节点地址更新进tasknode表
+                    nextTaskNode.setTargetResourceId(startAgvStation.getId());
+                    lastOperationTaskNode.setTargetResourceId(endAgvStation.getId());
+                    taskNodeService.updateById(nextTaskNode);
+                    taskNodeService.updateById(lastOperationTaskNode);
+                    map.put("bizType","agv");
+                }else{
+                    // 获取机器人操作线边库
+                    xbkArr = new String[]{DictionaryKey.YJ_ZONE_XBK.get(zoneName)};
+                    xbkList = productionresourcePositionService.getFreeProductionresourcePositionByNos(xbkArr);
+                    if(CollectionUtil.isNotEmpty(xbkList)){
+                        ProductionresourcePosition position = xbkList.get(0);
+                        // TODO 应该需要合并到getTargetStorge 方法中
 //                    targetStorge = storgeService.getById(position.getStorgeId());
-                    map.put("bizType","xbk");
+                        map.put("bizType","xbk");
+                    }
                 }
             }
         }