| | |
| | | redisCommand.setAssignCommand(assignCommand);//命令 |
| | | //任务数据保存到redis |
| | | if (redisUtil.set(DeviceRedisConstant.SHUTTLE_WORK_FLAG + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand, SerializerFeature.DisableCircularReferenceDetect))) { |
| | | if (assignCommand.getTaskMode() == ShuttleTaskModeType.PAK_IN.id |
| | | || assignCommand.getTaskMode() == ShuttleTaskModeType.PAK_OUT.id |
| | | || assignCommand.getTaskMode() == ShuttleTaskModeType.MOVE_LOC_NO.id |
| | | || assignCommand.getTaskMode() == ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO.id) { |
| | | if (assignCommand.getTaskMode() == ShuttleTaskModeType.SHUTTLE_MOVE.id |
| | | || assignCommand.getTaskMode() == ShuttleTaskModeType.TRANSPORT.id |
| | | || assignCommand.getTaskMode() == ShuttleTaskModeType.MOVE_PALLET_LIFT.id |
| | | || assignCommand.getTaskMode() == ShuttleTaskModeType.MOVE_PALLET_DOWN.id) { |
| | | //下发行驶路径 |
| | | CommandResponse response = shuttleThread.movePath(assignCommand.getNodes(), assignCommand.getDeviceTaskNo()); |
| | | Boolean result = response.getResult(); |
| | |
| | | basShuttleOpt.setTaskNo(redisCommand.getTaskNo()); |
| | | basShuttleOpt.setShuttleNo(Integer.parseInt(device.getDeviceNo())); |
| | | |
| | | basShuttleOpt.setMode(ShuttleCommandModeType.get(command.getMode()).desc); |
| | | basShuttleOpt.setMode(ShuttleTaskModeType.get(assignCommand.getTaskMode()).desc); |
| | | basShuttleOpt.setSourceLocNo(assignCommand.getSourceLocNo()); |
| | | basShuttleOpt.setDistLocNo(assignCommand.getLocNo()); |
| | | basShuttleOpt.setCommand(JSON.toJSONString(command)); |
| | |
| | | return true; |
| | | } |
| | | shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread); |
| | | shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO; |
| | | shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE; |
| | | break; |
| | | case SHUTTLE_TRANSPORT://穿梭车载货行走 |
| | | // 如果已经在当前条码则过滤 |
| | |
| | | return true; |
| | | } |
| | | shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread); |
| | | shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO; |
| | | shuttleTaskModeType = ShuttleTaskModeType.TRANSPORT_TO_CONVEYOR; |
| | | break; |
| | | case SHUTTLE_MOVE_LIFT_PALLET://穿梭车顶升并移动 |
| | | shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.DFX.id, assignCommand, shuttleThread); |
| | | shuttleTaskModeType = ShuttleTaskModeType.PAK_IN; |
| | | shuttleTaskModeType = ShuttleTaskModeType.MOVE_PALLET_LIFT; |
| | | shuttleCommands.add(0, shuttleThread.getLiftCommand(motion.getTaskNo(), true)); |
| | | break; |
| | | case SHUTTLE_MOVE_DOWN_PALLET://穿梭车移动并托盘下降 |
| | | shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.DFX.id, assignCommand, shuttleThread); |
| | | shuttleTaskModeType = ShuttleTaskModeType.PAK_IN; |
| | | shuttleTaskModeType = ShuttleTaskModeType.MOVE_PALLET_DOWN; |
| | | shuttleCommands.add(shuttleCommands.size(), shuttleThread.getLiftCommand(motion.getTaskNo(), false)); |
| | | break; |
| | | case SHUTTLE_MOVE_FROM_LIFT://出提升机 |
| | |
| | | // } |
| | | |
| | | shuttleCommands = this.shuttleInOutLiftCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread); |
| | | shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO; |
| | | shuttleTaskModeType = ShuttleTaskModeType.MOVE_OUT_LIFT; |
| | | break; |
| | | case SHUTTLE_MOVE_TO_LIFT://进提升机 |
| | | // 判断提升机状态 |
| | |
| | | // } |
| | | |
| | | shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread); |
| | | shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO; |
| | | shuttleTaskModeType = ShuttleTaskModeType.MOVE_TO_LIFT; |
| | | break; |
| | | case SHUTTLE_CHARGE_ON://充电开 |
| | | shuttleTaskModeType = ShuttleTaskModeType.CHARGE; |
| | | shuttleTaskModeType = ShuttleTaskModeType.CHARGE_ON; |
| | | shuttleCommands.add(shuttleThread.getChargeCommand(motion.getTaskNo(), true)); |
| | | assignCommand.setCharge(Boolean.TRUE); |
| | | break; |
| | | case SHUTTLE_CHARGE_OFF://充电关 |
| | | shuttleTaskModeType = ShuttleTaskModeType.CHARGE; |
| | | shuttleTaskModeType = ShuttleTaskModeType.CHARGE_OFF; |
| | | shuttleCommands.add(shuttleThread.getChargeCommand(motion.getTaskNo(), false)); |
| | | assignCommand.setCharge(Boolean.TRUE); |
| | | break; |
| | |
| | | shuttleCommands.add(shuttleThread.getUpdateLocationCommand(motion.getTaskNo(), motion.getTarget())); |
| | | break; |
| | | case SHUTTLE_MOVE_STANDBY://穿梭车移动到待机位 |
| | | shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO; |
| | | shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE; |
| | | |
| | | //获取全部待机位 |
| | | List<String> standbyLocs = JSON.parseArray(motion.getTemp(), String.class); |
| | |
| | | public enum ShuttleTaskModeType { |
| | | |
| | | INIT(0, "初始"), // 初始 |
| | | PAK_IN(1, "入库"), |
| | | PAK_OUT(2, "出库"), |
| | | MOVE_PALLET_LIFT(1, "移动并托盘顶升"), |
| | | MOVE_PALLET_DOWN(2, "移动并托盘下降"), |
| | | PALLET_LIFT(3, "托盘顶升"), |
| | | PALLET_DOWN(4, "托盘下降"), |
| | | X_NEGATIVE(5, "X-方向"), |
| | |
| | | SEARCH_RIGHT(11, "负方向(左)寻库位"), |
| | | SEARCH_TOP(12, "负方向(前)寻库位"), |
| | | SEARCH_BOTTOM(13, "负方向(后)寻库位"), |
| | | MOVE_LOC_NO(14, "移动到目标库位"), |
| | | CHARGE(15, "充电"), |
| | | MOVE_LIFT(16, "移动到提升机"), |
| | | AVOID(17, "避让任务"), |
| | | TRANSPORT(18, "搬运任务"), |
| | | SHUTTLE_MOVE_LOC_NO(19, "小车移库任务"), |
| | | SHUTTLE_LOC_TO_LOC(20, "库位移转"), |
| | | SHUTTLE_CONTROL(21, "小车管制"), |
| | | SHUTTLE_CANCEL_CONTROL(22, "小车取消管制"), |
| | | MOVE_LOC_NO_WRK_MAST(23, "移动到目标库位(生成移动任务)"), |
| | | SHUTTLE_UPDATE_LOCATION(24, "小车坐标更新"), |
| | | CHARGE_ON(14, "充电开"), |
| | | CHARGE_OFF(15, "充电关"), |
| | | MOVE_TO_LIFT(16, "小车进提升机"), |
| | | MOVE_OUT_LIFT(17, "小车出提升机"), |
| | | AVOID(18, "避让任务"), |
| | | TRANSPORT(19, "小车载货移动"), |
| | | TRANSPORT_TO_CONVEYOR(20, "小车载货进输送线"), |
| | | SHUTTLE_MOVE(21, "小车移动"), |
| | | SHUTTLE_CONTROL(22, "小车管制"), |
| | | SHUTTLE_CANCEL_CONTROL(23, "小车取消管制"), |
| | | MOVE_LOC_NO_WRK_MAST(24, "移动到目标库位(生成移动任务)"), |
| | | SHUTTLE_UPDATE_LOCATION(25, "小车坐标更新"), |
| | | ; |
| | | |
| | | public Integer id; |