| | |
| | | TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("barcode", barcode)); |
| | | if (!Cools.isEmpty(taskWrk1)) { |
| | | log.info("托盘码:" + barcode + "任务档存在"); |
| | | if (taskWrk1.getIoType() == 1 && taskWrk1.getStartPoint().equals(staProtocol.getSiteId().toString())) { |
| | | if (taskWrk1.getIoType() == 1 && taskWrk1.getStatus() < 3 && taskWrk1.getStartPoint().equals(staProtocol.getSiteId().toString())) { |
| | | StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() |
| | | .eq("CRN_NO", taskWrk1.getCrnNo()).eq("TYPE_NO", 1).eq("STN_NO", staProtocol.getSiteId())); |
| | | |
| | |
| | | |
| | | if (!Cools.isEmpty(taskWrk1)) { |
| | | log.info("托盘码:" + barcode + "任务档存在"); |
| | | if (taskWrk1.getIoType() == 1 && taskWrk1.getStartPoint().equals(staProtocol.getSiteId().toString())) { |
| | | if (taskWrk1.getIoType() == 1 && taskWrk1.getStatus() < 3 && taskWrk1.getStartPoint().equals(staProtocol.getSiteId().toString())) { |
| | | StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() |
| | | .eq("CRN_NO", taskWrk1.getCrnNo()).eq("TYPE_NO", 1).eq("STN_NO", staProtocol.getSiteId())); |
| | | |
| | |
| | | crnCommand.setDestinationPosX(Utils.getRowShort(taskWrk.getTargetPoint())); // 目标库位列 |
| | | crnCommand.setDestinationPosY(Utils.getBayShort(taskWrk.getTargetPoint())); // 目标库位层 |
| | | crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint())); // 目标库位排 |
| | | crnCommand.setCommand((short) 1); |
| | | // crnCommand.setCommand((short) 1); |
| | | if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) { |
| | | log.error("堆垛机命令生成失败,堆垛机号={},任务数据={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); |
| | | throw new CoolException("堆垛机命令生成失败"); |
| | |
| | | crnCommand.setDestinationPosX(Utils.getRowShort(taskWrk.getTargetPoint())); // 目标库位排 |
| | | crnCommand.setDestinationPosY(Utils.getBayShort(taskWrk.getTargetPoint())); // 目标库位列 |
| | | crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint())); // 目标库位层 |
| | | crnCommand.setCommand((short) 1); |
| | | // crnCommand.setCommand((short) 1); |
| | | if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) { |
| | | log.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); |
| | | } else { |
| | |
| | | return false; |
| | | } |
| | | if (!rgvProtocol.getModeType().equals(RgvModeType.AUTO) || rgvProtocol.getRgvPos().equals(0L) || rgvTaskProtocol.getAvoid() == -1 |
| | | || (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) { |
| | | || ((!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) || (Math.abs(rgvProtocol.getRgvPos() - rgvProtocol.getRgvPosDestination())>100)) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) { |
| | | return false; |
| | | } |
| | | if (rgvProtocol.getLoaded()==1){ |
| | | return false; |
| | | } |
| | | RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId()); |
| | |
| | | return false; |
| | | } |
| | | if (!rgvProtocol.getModeType().equals(RgvModeType.AUTO) || rgvProtocol.getRgvPos().equals(0L) || rgvTaskProtocol.getAvoid() == -1 |
| | | || (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) { |
| | | || ((!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) || (Math.abs(rgvProtocol.getRgvPos() - rgvProtocol.getRgvPosDestination())>100)) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) { |
| | | return false; |
| | | } |
| | | |
| | |
| | | return false; |
| | | } |
| | | if (!rgvProtocol.getModeType().equals(RgvModeType.AUTO) || rgvProtocol.getRgvPos().equals(0L) || rgvTaskProtocol.getAvoid() == -1 |
| | | || (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) { |
| | | || ((!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) || (Math.abs(rgvProtocol.getRgvPos() - rgvProtocol.getRgvPosDestination())>100)) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) { |
| | | return false; |
| | | } |
| | | RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId()); |
| | |
| | | Long[][] avoidedRange = new TrackRangeUtils().avoidRangeArr(rgvSlave, trackEntireLength, trackBenchmark, avoidDistance); |
| | | List<Integer> belongToRange = RouteUtils.SortNearby(RouteUtils.belongToRange(rangeList, avoidedRange[0], basDevpPositions), rgvProtocol.RgvPos, basDevpPositions); |
| | | |
| | | for (Integer staNoNow : belongToRange) { |
| | | for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) { |
| | | if (rgvStn.getStaNo().equals(staNoNow)) { |
| | | TaskWrk taskWrk = deviceDetection(rgvStn); |
| | | if (taskWrk != null) { |
| | | BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint()))); |
| | | if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) { |
| | | sign = taskGenerate(rgvSlave, rgvStn, 0); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | if (sign) { |
| | | break; |
| | | } |
| | | } |
| | | if (!sign) { |
| | | // 筛选范围内取货任务 |
| | | for (Integer staNoNow : belongToRange) { |
| | | for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) { |
| | | if (rgvStn.getStaNo().equals(staNoNow)) { |
| | | TaskWrk taskWrk = deviceDetection(rgvStn); |
| | | if (taskWrk != null) { |
| | | Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint()); |
| | | for (RgvSlave.RgvStn rgvStnOut : rgvSlave.getRgvOutSta()) { |
| | | if (rgvStnOut.getStaNo().equals(outStaNo)) { |
| | | sign = taskGenerate(rgvSlave, rgvStn, 0); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | if (sign) { |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | if (!sign && staList.size()==1){ |
| | | if (rgvOtherIDLEOther(rgvSlave)){ |
| | | if (!rgvOtherIDLE(rgvSlave,staList.get(0))){ |
| | |
| | | } |
| | | } |
| | | |
| | | if(!sign){ |
| | | for (Integer staNoNow : belongToRange) { |
| | | for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) { |
| | | if (rgvStn.getStaNo().equals(staNoNow)) { |
| | | TaskWrk taskWrk = deviceDetection(rgvStn); |
| | | if (taskWrk != null) { |
| | | BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint()))); |
| | | if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) { |
| | | sign = taskGenerate(rgvSlave, rgvStn, 0); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | if (sign) { |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | if (!sign) { |
| | | // 筛选范围内取货任务 |
| | | for (Integer staNoNow : belongToRange) { |
| | | for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) { |
| | | if (rgvStn.getStaNo().equals(staNoNow)) { |
| | | TaskWrk taskWrk = deviceDetection(rgvStn); |
| | | if (taskWrk != null) { |
| | | Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint()); |
| | | for (RgvSlave.RgvStn rgvStnOut : rgvSlave.getRgvOutSta()) { |
| | | if (rgvStnOut.getStaNo().equals(outStaNo)) { |
| | | sign = taskGenerate(rgvSlave, rgvStn, 0); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | if (sign) { |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (!sign) { |
| | | for (Integer staNoNow : rangeList) { |
| | | for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) { |