| | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.Optional; |
| | | |
| | | @Component |
| | | public class ShuttleAction { |
| | |
| | | ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand(); |
| | | int commandStep = redisCommand.getCommandStep(); |
| | | |
| | | Integer mode = -1; |
| | | if(commandStep < commands.size()) { |
| | | //取出命令 |
| | | ShuttleCommand currentCommand = commands.get(commandStep); |
| | | mode = currentCommand.getMode(); |
| | | } |
| | | |
| | | //判断设备是否空闲 |
| | | Integer finalMode = mode; |
| | | if (!shuttleThread.isDeviceIdle(new ExecuteSupport() { |
| | | @Override |
| | | public Boolean judgement() { |
| | | if (ShuttleCommandModeType.CHARGE_CLOSE.id.equals(finalMode)) {//关闭充电motion |
| | | return false;//不需要判断状态 |
| | | } |
| | | return true;//需要判断状态 |
| | | } |
| | | })) { |
| | | return false; |
| | | } |
| | | |
| | | // 完结上一条命令 |
| | | boolean updateCommand = false; |
| | | if (commandStep != 0) { |
| | | ShuttleCommand command = commands.get(commandStep - 1); |
| | | if (command.getMode() == ShuttleCommandModeType.MOVE.id) { |
| | | // 正常移动 |
| | | if (command.getTargetLocNo().equals(shuttleProtocol.getCurrentLocNo())) { |
| | | command.setComplete(true); |
| | | updateCommand = true; |
| | | //解锁锁定路径,上一条路径 |
| | | List<NavigateNode> nodes = null; |
| | | try { |
| | |
| | | //判断是否顶升到位 |
| | | if (shuttleProtocol.getHasLift()) { |
| | | command.setComplete(true); |
| | | updateCommand = true; |
| | | // //判断是否有物 |
| | | // if (shuttleProtocol.getHasPallet()) { |
| | | // command.setComplete(true); |
| | |
| | | // 判断是否下降到位 |
| | | if (!shuttleProtocol.getHasLift()) { |
| | | command.setComplete(true); |
| | | updateCommand = true; |
| | | } |
| | | } else if (command.getMode() == ShuttleCommandModeType.CHARGE_OPEN.id) { |
| | | // 充电开 |
| | | //判断小车充电状态 |
| | | if (shuttleProtocol.getHasCharge()) { |
| | | command.setComplete(true); |
| | | updateCommand = true; |
| | | } |
| | | }else { |
| | | command.setComplete(true);//其他命令默认认为完成 |
| | | updateCommand = true; |
| | | } |
| | | |
| | | // 更新redis数据 |
| | | redisUtil.set(DeviceRedisConstant.SHUTTLE_WORK_FLAG + redisCommand.getTaskNo(), JSON.toJSONString(redisCommand, SerializerFeature.DisableCircularReferenceDetect)); |
| | | if(updateCommand) { |
| | | // 更新redis数据 |
| | | redisUtil.set(DeviceRedisConstant.SHUTTLE_WORK_FLAG + redisCommand.getTaskNo(), JSON.toJSONString(redisCommand, SerializerFeature.DisableCircularReferenceDetect)); |
| | | } |
| | | |
| | | if (!command.getComplete()) { |
| | | return false; |
| | |
| | | |
| | | //取出命令 |
| | | ShuttleCommand command = commands.get(commandStep); |
| | | |
| | | Integer mode = command.getMode(); |
| | | //判断设备是否空闲 |
| | | if (!shuttleThread.isDeviceIdle(new ExecuteSupport() { |
| | | @Override |
| | | public Boolean judgement() { |
| | | if (ShuttleCommandModeType.CHARGE_CLOSE.id.equals(mode)) {//关闭充电motion |
| | | return false;//不需要判断状态 |
| | | } |
| | | return true;//需要判断状态 |
| | | } |
| | | })) { |
| | | return false; |
| | | } |
| | | |
| | | // 下发命令 |
| | | if (!write(command, device)) { |