| | |
| | | //未找到路径,等待下一次 |
| | | continue; |
| | | } |
| | | //所使用的路径进行临时解锁,用于后续计算 |
| | | NavigateMapData navigateMapData = new NavigateMapData(currentLev); |
| | | navigateMapData.writeNavigateNodeToRedisMap(assignCommand.getNodes(), false);//所使用的路径进行临时解锁 |
| | | |
| | | //任务执行完后,小车进入移开提升机口站点位置,以免坠落 |
| | | //搜索一条没有小车的空巷道,并调度小车 |
| | | int distLev = Utils.getLev(liftSiteLocNo);//避让楼层 |
| | | String startLocNo = "180020" + Utils.getLev(liftSiteLocNo); |
| | | ShuttleAssignCommand moveAssignCommand = Utils.searchEmptyGroupToMoveShuttle(distLev, shuttleThread.getSlave().getId(), shuttleThread, startLocNo); |
| | | if (moveAssignCommand == null) {//调度小车命令为空 |
| | | continue; |
| | | } |
| | | //所使用的路径进行临时解锁,用于后续计算 |
| | | navigateMapData.writeNavigateNodeToRedisMap(moveAssignCommand.getNodes(), false);//所使用的路径进行临时解锁 |
| | | commands.addAll(moveAssignCommand.getCommands());//将避让小车的命令添加 |
| | | List<NavigateNode> nodes = assignCommand.getNodes();//将避让路径添加进节点路径中 |
| | | nodes.addAll(moveAssignCommand.getNodes());//将避让路径添加进节点路径中 |
| | | assignCommand.setNodes(nodes); |
| | | navigateMapData.writeNavigateNodeToRedisMap(nodes, true);//所使用的路径进行锁定 |
| | | |
| | | |
| | | //分配目标库位 |
| | | shuttleProtocol.setLocNo(wrkMast.getSourceLocNo()); |
| | |
| | | if (commands == null) { |
| | | continue;//未找到路径 |
| | | } |
| | | //所使用的路径进行临时解锁,用于后续计算 |
| | | NavigateMapData navigateMapData = new NavigateMapData(Utils.getLev(liftSiteLocNo)); |
| | | navigateMapData.writeNavigateNodeToRedisMap(assignCommand.getNodes(), false);//所使用的路径进行临时解锁 |
| | | |
| | | //任务执行完后,小车进入移开提升机口站点位置,以免坠落 |
| | | //搜索一条没有小车的空巷道,并调度小车 |
| | | int distLev = Utils.getLev(liftSiteLocNo);//避让楼层 |
| | | String startLocNo = "180020" + Utils.getLev(liftSiteLocNo); |
| | | ShuttleAssignCommand moveAssignCommand = Utils.searchEmptyGroupToMoveShuttle(distLev, shuttleThread.getSlave().getId(), shuttleThread, startLocNo); |
| | | if (moveAssignCommand == null) {//调度小车命令为空 |
| | | continue; |
| | | } |
| | | //所使用的路径进行临时解锁,用于后续计算 |
| | | navigateMapData.writeNavigateNodeToRedisMap(moveAssignCommand.getNodes(), false);//所使用的路径进行临时解锁 |
| | | commands.addAll(moveAssignCommand.getCommands());//将避让小车的命令添加 |
| | | List<NavigateNode> nodes = assignCommand.getNodes();//将避让路径添加进节点路径中 |
| | | nodes.addAll(moveAssignCommand.getNodes());//将避让路径添加进节点路径中 |
| | | assignCommand.setNodes(nodes); |
| | | navigateMapData.writeNavigateNodeToRedisMap(nodes, true);//所使用的路径进行锁定 |
| | | |
| | | |
| | | //此时车在提升机内部,需要多下达一步指令让车移动到提升机口 |
| | | short startCode = liftProtocol.getBarcode();//提升机内部二维码 |
| | |
| | | |
| | | //将任务档标记为完成 |
| | | WrkMast wrkMast = wrkMastMapper.selectByWorkNo(shuttleProtocol.getTaskNo().intValue()); |
| | | ShuttleAssignCommand moveAssignCommand = null;//避让命令 |
| | | if (wrkMast != null) { |
| | | switch (wrkMast.getWrkSts().intValue()) { |
| | | case 9://9.小车入库搬运中 ==> 14.入库完成 |
| | |
| | | wrkMast.setWrkSts(23L); |
| | | break; |
| | | case 26://26.小车出库搬运中 ==> 27.小车出库搬运完成 |
| | | //任务执行完后,小车进入移开提升机口站点位置,以免坠落 |
| | | //搜索一条没有小车的空巷道,并调度小车 |
| | | int distLev = Utils.getLev(wrkMast.getSourceLocNo());//避让楼层 |
| | | String startLocNo = "180020" + distLev; |
| | | moveAssignCommand = Utils.searchEmptyGroupToMoveShuttle(distLev, shuttleThread.getSlave().getId(), shuttleThread, startLocNo); |
| | | if (moveAssignCommand == null) {//调度小车命令为空 |
| | | continue; |
| | | } |
| | | |
| | | wrkMast.setWrkSts(27L); |
| | | break; |
| | | default: |
| | |
| | | //任务指令清零 |
| | | shuttleProtocol.setAssignCommand(null); |
| | | News.info("四向穿梭车已确认且任务完成状态,复位。四向穿梭车号={}", shuttleProtocol.getShuttleNo()); |
| | | |
| | | if (wrkMast.getWrkSts() == 27) { |
| | | if (moveAssignCommand != null) { |
| | | //下发任务 |
| | | shuttleProtocol.setPakMk(true); |
| | | MessageQueue.offer(SlaveType.Shuttle, shuttleThread.getSlave().getId(), new Task(3, moveAssignCommand)); |
| | | } |
| | | } |
| | | |
| | | } else { |
| | | News.error("四向穿梭车已确认且任务完成状态,复位失败,但未找到工作档。四向穿梭车号={},工作号={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo()); |
| | | } |