| | |
| | | //四向穿梭车空闲、有任务、标记为true、存在任务指令,需要执行任务的下一条指令 |
| | | if (shuttleProtocol.getFree() == ShuttleStatusType.IDLE.id |
| | | && shuttleProtocol.getTaskNo() != 0 |
| | | && shuttleProtocol.getPakMk()) { |
| | | && !shuttleProtocol.getPakMk()) { |
| | | //执行下一步指令 |
| | | executeWork(shuttleProtocol.getTaskNo().shortValue()); |
| | | } |
| | |
| | | //非自动状态时间计时 |
| | | shuttleProtocol.setErrTime(jsonObject.getInteger("errTime")); |
| | | |
| | | //小车处于运行中,将标记置为true |
| | | //小车处于运行中,将标记置为false |
| | | if (shuttleProtocol.getFree() == 0) { |
| | | shuttleProtocol.setPakMk(true); |
| | | shuttleProtocol.setPakMk(false); |
| | | } |
| | | |
| | | //将四向穿梭车状态保存至数据库 |
| | |
| | | } |
| | | |
| | | NavigateMapData navigateMapData = new NavigateMapData(Utils.getLev(shuttleProtocol.getCurrentLocNo())); |
| | | |
| | | //取出命令 |
| | | NyShuttleHttpCommand command = commands.get(commandStep);//当前命令 |
| | | NyShuttleHttpCommand command = null; |
| | | if (commandStep < commands.size()) { |
| | | command = commands.get(commandStep);//当前命令 |
| | | } |
| | | if (commandStep != 0) { |
| | | //判断上一条指令是否完成 |
| | | NyShuttleHttpCommand lastCommand = commands.get(commandStep - 1); |
| | |
| | | lastCommand.setComplete(true); |
| | | //解锁锁定路径,上一条路径和当前路径 |
| | | List<NavigateNode> nodes = lastCommand.getNodes(); |
| | | nodes.addAll(command.getNodes()); |
| | | if (command != null) { |
| | | nodes.addAll(command.getNodes()); |
| | | } |
| | | navigateMapData.writeNavigateNodeToRedisMap(nodes, false);//解锁路径 |
| | | } |
| | | }else { |
| | |
| | | }else { |
| | | shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING); |
| | | } |
| | | News.info("四向穿梭车任务执行下发完成等待执行结束,穿梭车号={},任务数据={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); |
| | | News.info("四向穿梭车任务执行下发完成等待执行结束,穿梭车号={},任务数据={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(commands)); |
| | | |
| | | return false;//禁止再下发命令 |
| | | } |
| | |
| | | |
| | | News.info("四向穿梭车命令下发成功,穿梭车号={},任务数据={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); |
| | | //将标记置为false(防止重发) |
| | | shuttleProtocol.setPakMk(false); |
| | | shuttleProtocol.setPakMk(true); |
| | | |
| | | //保存数据到数据库做流水 |
| | | BasShuttleOptService shuttleOptService = SpringUtils.getBean(BasShuttleOptService.class); |
| | |
| | | shuttleOptService.insert(opt); |
| | | } |
| | | |
| | | //判断数据是否执行完成 |
| | | if (commandStep < commands.size() - 1) { |
| | | //更新redis数据 |
| | | //步序增加 |
| | | commandStep++; |
| | | redisCommand.setCommandStep(commandStep); |
| | | //任务数据保存到redis |
| | | redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); |
| | | }else { |
| | | //已执行完成 |
| | | commandStep++; |
| | | //更新redis数据 |
| | | redisCommand.setCommandStep(commandStep); |
| | | //任务数据保存到redis |
| | | redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); |
| | | |
| | | commandStep++; |
| | | // //最后一段命令为移动命令,则暂缓删除redis等待清除路径时一次性删除 |
| | | // //最后一段命令为不是移动命令,则删除redis |
| | | // if (!command.getRequest().getBody().get("requestType").equals("move")) { |
| | | // //删除redis |
| | | // redisUtil.del("shuttle_wrk_no_" + redisCommand.getWrkNo()); |
| | | // } |
| | | // //判断数据是否执行完成 |
| | | // if (commandStep < commands.size() - 1) { |
| | | // commandStep++; |
| | | // //更新redis数据 |
| | | // redisCommand.setCommandStep(commandStep); |
| | | // //任务数据保存到redis |
| | | // redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); |
| | | // }else { |
| | | // //已执行完成 |
| | | // |
| | | // if (!assignCommand.getCharge()) { |
| | | // //对主线程抛出等待确认状态waiting |
| | | // shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING); |
| | | // }else { |
| | | // shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING); |
| | | // } |
| | | // News.info("四向穿梭车任务执行下发完成等待执行结束,穿梭车号={},任务数据={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); |
| | | } |
| | | // commandStep = commands.size(); |
| | | // //更新redis数据 |
| | | // redisCommand.setCommandStep(commandStep); |
| | | // //任务数据保存到redis |
| | | // redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); |
| | | //// //最后一段命令为移动命令,则暂缓删除redis等待清除路径时一次性删除 |
| | | //// //最后一段命令为不是移动命令,则删除redis |
| | | //// if (!command.getRequest().getBody().get("requestType").equals("move")) { |
| | | //// //删除redis |
| | | //// redisUtil.del("shuttle_wrk_no_" + redisCommand.getWrkNo()); |
| | | //// } |
| | | //// |
| | | //// if (!assignCommand.getCharge()) { |
| | | //// //对主线程抛出等待确认状态waiting |
| | | //// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING); |
| | | //// }else { |
| | | //// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING); |
| | | //// } |
| | | //// News.info("四向穿梭车任务执行下发完成等待执行结束,穿梭车号={},任务数据={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); |
| | | // } |
| | | |
| | | return true; |
| | | } |