#
gtsxc
2025-05-19 89a94a91bd97e1e47fba93c762b4e53a5830b760
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
@@ -1,14 +1,11 @@
package com.zy.asrs.wcs.core.kernel;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.asrs.wcs.core.domain.dto.MotionDto;
import com.zy.asrs.wcs.core.entity.*;
import com.zy.asrs.wcs.core.model.NavigateNode;
import com.zy.asrs.wcs.core.model.enums.*;
import com.zy.asrs.wcs.core.service.*;
import com.zy.asrs.wcs.core.utils.*;
import com.zy.asrs.wcs.rcs.News;
import com.zy.asrs.wcs.rcs.cache.SlaveConnection;
import com.zy.asrs.wcs.rcs.entity.Device;
import com.zy.asrs.wcs.rcs.model.enums.SlaveType;
@@ -146,8 +143,10 @@
            //穿梭车出提升机库位号
            String liftLocNoFrom = shuttleStandbyFrom.getDeviceLoc();
            //穿梭车进提升机待机位库位号
            //穿梭车进提升机待机位库位号  输送线位置
            String standbyLocNoTo = shuttleStandbyTo.getDeviceStandbyLoc();
            //穿梭车换层时待机位置 使用表列 memo数据
            String standbyLocNoMemo = shuttleStandbyTo.getMemo();
            //穿梭车出提升机待机位库位号
            String standbyLocNoFrom = shuttleStandbyFrom.getDeviceStandbyLoc();
@@ -253,19 +252,19 @@
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setShuttleDevice(shuttleDevice);
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                            dto.setLocNo(standbyLocNoTo);
                            dto.setLocNo(standbyLocNoMemo);
                        })),
                        MotionCtgType.SHUTTLE_MOVE
                ));
                // 锁定换层路径
                motionList.addAll(kernelService.mapLockPath(
                        null,
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setLocNo(JSON.toJSONString(lockPath));
                        }))
                ));
//                // 锁定换层路径
//                motionList.addAll(kernelService.mapLockPath(
//                        null,
//                        MotionDto.build((dto -> {
//                            dto.setShuttleNo(shuttleDevice.getId().intValue());
//                            dto.setLocNo(JSON.toJSONString(lockPath));
//                        }))
//                ));
                // 提升机空载移动到穿梭车层
                motionList.addAll(kernelService.liftMove(
@@ -288,7 +287,7 @@
                motionList.addAll(kernelService.shuttleMove(
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setLocNo(standbyLocNoTo);
                            dto.setLocNo(standbyLocNoMemo);
                        })),
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
@@ -360,14 +359,14 @@
                        }))
                ));
                // 解锁换层路径
                motionList.addAll(kernelService.mapUnlockPath(
                        null,
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setLocNo(JSON.toJSONString(lockPath));
                        }))
                ));
//                // 解锁换层路径
//                motionList.addAll(kernelService.mapUnlockPath(
//                        null,
//                        MotionDto.build((dto -> {
//                            dto.setShuttleNo(shuttleDevice.getId().intValue());
//                            dto.setLocNo(JSON.toJSONString(lockPath));
//                        }))
//                ));
                // 穿梭车入库顶升
                motionList.addAll(kernelService.shuttleAction(
@@ -478,8 +477,11 @@
            //穿梭车出提升机库位号
            String liftLocNoFrom = shuttleStandbyFrom.getDeviceLoc();
            //穿梭车进提升机待机位库位号
            //穿梭车进提升机待机位库位号 输送线位置
            String standbyLocNoTo = shuttleStandbyTo.getDeviceStandbyLoc();
            //穿梭车换层时待机位置 使用表列 memo数据
            String standbyLocNoMemo = shuttleStandbyTo.getMemo();
            //穿梭车出提升机待机位库位号
            String standbyLocNoFrom = shuttleStandbyFrom.getDeviceStandbyLoc();
@@ -506,11 +508,11 @@
                return motionList;
            }
            //分析出库路径待机库位
            String lastPathStartLoc = shuttleDispatcher.analyzeOutPathWaitLoc(originLoc, standbyLocNoTo, shuttleDevice);
            if (lastPathStartLoc == null) {
                return motionList;//未分析成功
            }
//            //分析出库路径待机库位
//            String lastPathStartLoc = shuttleDispatcher.analyzeOutPathWaitLoc(originLoc, standbyLocNoTo, shuttleDevice);
//            if (lastPathStartLoc == null) {
//                return motionList;//未分析成功
//            }
            /**
             * 出库
@@ -543,27 +545,43 @@
                        MotionCtgType.SHUTTLE_PALLET_LIFT
                ));
                if (!originLoc.equals(lastPathStartLoc)) {
                    // 穿梭车载货出库至最后一段路径等待
                    motionList.addAll(kernelService.shuttleMove(
                            MotionDto.build((dto -> {
                                dto.setShuttleNo(shuttleDevice.getId().intValue());
                                dto.setLocNo(originLoc);
                            })),
                            MotionDto.build((dto -> {
                                dto.setShuttleNo(shuttleDevice.getId().intValue());
                                dto.setShuttleDevice(shuttleDevice);
                                dto.setLocNo(lastPathStartLoc);
                            })),
                            MotionCtgType.SHUTTLE_TRANSPORT
                    ));
                }
//                if (!originLoc.equals(lastPathStartLoc)) {
//                    // 穿梭车载货出库至最后一段路径等待
//                    motionList.addAll(kernelService.shuttleMove(
//                            MotionDto.build((dto -> {
//                                dto.setShuttleNo(shuttleDevice.getId().intValue());
//                                dto.setLocNo(originLoc);
//                            })),
//                            MotionDto.build((dto -> {
//                                dto.setShuttleNo(shuttleDevice.getId().intValue());
//                                dto.setShuttleDevice(shuttleDevice);
//                                dto.setLocNo(lastPathStartLoc);
//                            })),
//                            MotionCtgType.SHUTTLE_TRANSPORT
//                    ));
//                }
//
//                // 穿梭车载货至提升机待机位
//                motionList.addAll(kernelService.shuttleMove(
//                        MotionDto.build((dto -> {
//                            dto.setShuttleNo(shuttleDevice.getId().intValue());
//                            dto.setLocNo(lastPathStartLoc);
//                        })),
//                        MotionDto.build((dto -> {
//                            dto.setShuttleNo(shuttleDevice.getId().intValue());
//                            dto.setShuttleDevice(shuttleDevice);
//                            dto.setLiftNo(transferLiftDevice.getId().intValue());
//                            dto.setLocNo(standbyLocNoTo);
//                            dto.setStaNo(getStaByLev(Utils.getLev(task.getOriginLoc())));//输送站
//                        })),
//                        MotionCtgType.SHUTTLE_TRANSPORT_TO_CONVEYOR
//                ));
                // 穿梭车载货至提升机待机位
                motionList.addAll(kernelService.shuttleMove(
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setLocNo(lastPathStartLoc);
                            dto.setLocNo(originLoc);
                        })),
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
@@ -644,19 +662,19 @@
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setShuttleDevice(shuttleDevice);
                            dto.setLiftNo(transferLiftDevice.getId().intValue());
                            dto.setLocNo(standbyLocNoTo);
                            dto.setLocNo(standbyLocNoMemo);
                        })),
                        MotionCtgType.SHUTTLE_MOVE
                ));
                // 锁定换层路径
                motionList.addAll(kernelService.mapLockPath(
                        null,
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setLocNo(JSON.toJSONString(lockPath));
                        }))
                ));
//                // 锁定换层路径
//                motionList.addAll(kernelService.mapLockPath(
//                        null,
//                        MotionDto.build((dto -> {
//                            dto.setShuttleNo(shuttleDevice.getId().intValue());
//                            dto.setLocNo(JSON.toJSONString(lockPath));
//                        }))
//                ));
                // 提升机空载移动到穿梭车层
                motionList.addAll(kernelService.liftMove(
@@ -679,7 +697,7 @@
                motionList.addAll(kernelService.shuttleMove(
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setLocNo(standbyLocNoTo);
                            dto.setLocNo(standbyLocNoMemo);
                        })),
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
@@ -751,14 +769,14 @@
                        }))
                ));
                // 解锁换层路径
                motionList.addAll(kernelService.mapUnlockPath(
                        null,
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setLocNo(JSON.toJSONString(lockPath));
                        }))
                ));
//                // 解锁换层路径
//                motionList.addAll(kernelService.mapUnlockPath(
//                        null,
//                        MotionDto.build((dto -> {
//                            dto.setShuttleNo(shuttleDevice.getId().intValue());
//                            dto.setLocNo(JSON.toJSONString(lockPath));
//                        }))
//                ));
                // 穿梭车提升机待机位至出库库位
                motionList.addAll(kernelService.shuttleMove(
@@ -784,27 +802,43 @@
                        MotionCtgType.SHUTTLE_PALLET_LIFT
                ));
                if (!originLoc.equals(lastPathStartLoc)) {
                    // 穿梭车载货出库至最后一段路径等待
                    motionList.addAll(kernelService.shuttleMove(
                            MotionDto.build((dto -> {
                                dto.setShuttleNo(shuttleDevice.getId().intValue());
                                dto.setLocNo(originLoc);
                            })),
                            MotionDto.build((dto -> {
                                dto.setShuttleNo(shuttleDevice.getId().intValue());
                                dto.setShuttleDevice(shuttleDevice);
                                dto.setLocNo(lastPathStartLoc);
                            })),
                            MotionCtgType.SHUTTLE_TRANSPORT
                    ));
                }
//                if (!originLoc.equals(lastPathStartLoc)) {
//                    // 穿梭车载货出库至最后一段路径等待
//                    motionList.addAll(kernelService.shuttleMove(
//                            MotionDto.build((dto -> {
//                                dto.setShuttleNo(shuttleDevice.getId().intValue());
//                                dto.setLocNo(originLoc);
//                            })),
//                            MotionDto.build((dto -> {
//                                dto.setShuttleNo(shuttleDevice.getId().intValue());
//                                dto.setShuttleDevice(shuttleDevice);
//                                dto.setLocNo(lastPathStartLoc);
//                            })),
//                            MotionCtgType.SHUTTLE_TRANSPORT
//                    ));
//                }
//
//                // 穿梭车载货至提升机待机位
//                motionList.addAll(kernelService.shuttleMove(
//                        MotionDto.build((dto -> {
//                            dto.setShuttleNo(shuttleDevice.getId().intValue());
//                            dto.setLocNo(lastPathStartLoc);
//                        })),
//                        MotionDto.build((dto -> {
//                            dto.setShuttleNo(shuttleDevice.getId().intValue());
//                            dto.setShuttleDevice(shuttleDevice);
//                            dto.setLiftNo(transferLiftDevice.getId().intValue());
//                            dto.setLocNo(standbyLocNoFrom);
//                            dto.setStaNo(getStaByLev(Utils.getLev(task.getOriginLoc())));//输送站
//                        })),
//                        MotionCtgType.SHUTTLE_TRANSPORT_TO_CONVEYOR
//                ));
                // 穿梭车载货至提升机待机位
                motionList.addAll(kernelService.shuttleMove(
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setLocNo(lastPathStartLoc);
                            dto.setLocNo(originLoc);
                        })),
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
@@ -950,6 +984,9 @@
        //穿梭车出提升机库位号
        String liftLocNoFrom = shuttleStandbyFrom.getDeviceLoc();
        //穿梭车换层时待机位置 使用表列 memo数据
        String standbyLocNoMemo = shuttleStandbyTo.getMemo();
        //穿梭车进提升机待机位库位号
        String standbyLocNoTo = shuttleStandbyTo.getDeviceStandbyLoc();
@@ -984,7 +1021,7 @@
                    MotionDto.build((dto -> {
                        dto.setShuttleNo(shuttleDevice.getId().intValue());
                        dto.setShuttleDevice(shuttleDevice);
                        dto.setLocNo(standbyLocNoTo);
                        dto.setLocNo(standbyLocNoMemo);
                    })),
                    MotionCtgType.SHUTTLE_MOVE
            ));
@@ -1010,7 +1047,7 @@
            motionList.addAll(kernelService.shuttleMove(
                    MotionDto.build((dto -> {
                        dto.setShuttleNo(shuttleDevice.getId().intValue());
                        dto.setLocNo(standbyLocNoTo);
                        dto.setLocNo(standbyLocNoMemo);
                    })),
                    MotionDto.build((dto -> {
                        dto.setShuttleNo(shuttleDevice.getId().intValue());
@@ -1239,6 +1276,9 @@
            //穿梭车到提升机待机位库位号
            String standbyLocNoTo = liftDispatcher.getLiftStandByLocNo(liftThread, Utils.getLev(shuttleLocNo));
            //穿梭车换层时待机位置 使用表列 memo数据
            String standbyLocNoMemo = liftDispatcher.getInLiftStandByLocNo(liftThread, Utils.getLev(shuttleLocNo));
            //穿梭车出提升机待机位库位号
            String standbyLocNoFrom = liftDispatcher.getLiftStandByLocNo(liftThread, Utils.getLev(task.getDestLoc()));
@@ -1256,19 +1296,19 @@
                        dto.setShuttleNo(shuttleDevice.getId().intValue());
                        dto.setShuttleDevice(shuttleDevice);
                        dto.setLiftNo(liftDevice.getId().intValue());
                        dto.setLocNo(standbyLocNoTo);
                        dto.setLocNo(standbyLocNoMemo);
                    })),
                    MotionCtgType.SHUTTLE_MOVE
            ));
            // 锁定换层路径
            motionList.addAll(kernelService.mapLockPath(
                    null,
                    MotionDto.build((dto -> {
                        dto.setShuttleNo(shuttleDevice.getId().intValue());
                        dto.setLocNo(JSON.toJSONString(lockPath));
                    }))
            ));
//            // 锁定换层路径
//            motionList.addAll(kernelService.mapLockPath(
//                    null,
//                    MotionDto.build((dto -> {
//                        dto.setShuttleNo(shuttleDevice.getId().intValue());
//                        dto.setLocNo(JSON.toJSONString(lockPath));
//                    }))
//            ));
            // 提升机空载移动到穿梭车层
            motionList.addAll(kernelService.liftMove(
@@ -1291,7 +1331,7 @@
            motionList.addAll(kernelService.shuttleMove(
                    MotionDto.build((dto -> {
                        dto.setShuttleNo(shuttleDevice.getId().intValue());
                        dto.setLocNo(standbyLocNoTo);
                        dto.setLocNo(standbyLocNoMemo);
                    })),
                    MotionDto.build((dto -> {
                        dto.setShuttleNo(shuttleDevice.getId().intValue());
@@ -1359,17 +1399,18 @@
                    null
                    , MotionDto.build((dto -> {
                        dto.setLiftNo(liftDevice.getId().intValue());
                        dto.setReleaseLift(1);//执行完成后释放提升机
                    }))
            ));
            // 解锁换层路径
            motionList.addAll(kernelService.mapUnlockPath(
                    null,
                    MotionDto.build((dto -> {
                        dto.setShuttleNo(shuttleDevice.getId().intValue());
                        dto.setLocNo(JSON.toJSONString(lockPath));
                    }))
            ));
//            // 解锁换层路径
//            motionList.addAll(kernelService.mapUnlockPath(
//                    null,
//                    MotionDto.build((dto -> {
//                        dto.setShuttleNo(shuttleDevice.getId().intValue());
//                        dto.setLocNo(JSON.toJSONString(lockPath));
//                    }))
//            ));
            // 穿梭车提升机待机位至目标位置
            motionList.addAll(kernelService.shuttleMove(
@@ -1678,8 +1719,11 @@
        //穿梭车出提升机库位号
        String liftLocNoFrom = shuttleStandbyFrom.getDeviceLoc();
        //穿梭车进提升机待机位库位号
        //穿梭车进提升机待机位库位号 输送线位置
        String standbyLocNoTo = shuttleStandbyTo.getDeviceStandbyLoc();
        //穿梭车换层时待机位置 使用表列 memo数据
        String standbyLocNoMemo = shuttleStandbyTo.getMemo();
        //穿梭车出提升机待机位库位号
        String standbyLocNoFrom = shuttleStandbyFrom.getDeviceStandbyLoc();
@@ -1692,25 +1736,14 @@
        //获取出库任务类型
        TaskCtg taskCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>()
                .eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.OUT))
                .eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.MOVE))
                .eq(TaskCtg::getStatus, 1));
        if (taskCtg == null) {
            return motionList;
        }
        //获取输送线路径
        BasConveyorPath basConveyorPath = basConveyorPathService.getOne(new LambdaQueryWrapper<BasConveyorPath>()
                .eq(BasConveyorPath::getDeviceStn, task.getOriginSite())
                .eq(BasConveyorPath::getDeviceNo, liftProtocol.getLiftNo())
                .eq(BasConveyorPath::getTypeNo, taskCtg.getId()));
        if (basConveyorPath == null) {
            return motionList;
        }
        //分析出库路径待机库位
        String lastPathStartLoc = shuttleDispatcher.analyzeOutPathWaitLoc(originLoc, locNo, shuttleDevice);
        if (lastPathStartLoc == null) {
            return motionList;//未分析成功
        }
        /**
         * 出库
@@ -1743,50 +1776,18 @@
                    MotionCtgType.SHUTTLE_PALLET_LIFT
            ));
            if (!originLoc.equals(lastPathStartLoc)) {
                // 穿梭车载货出库至最后一段路径等待
                motionList.addAll(kernelService.shuttleMove(
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setLocNo(originLoc);
                        })),
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setShuttleDevice(shuttleDevice);
                            dto.setLocNo(lastPathStartLoc);
                        })),
                        MotionCtgType.SHUTTLE_TRANSPORT
                ));
            }
//            // 穿梭车载货至提升机待机位
//            motionList.addAll(kernelService.shuttleMove(
//                    MotionDto.build((dto -> {
//                        dto.setShuttleNo(shuttleDevice.getId().intValue());
//                        dto.setLocNo(lastPathStartLoc);
//                    })),
//                    MotionDto.build((dto -> {
//                        dto.setShuttleNo(shuttleDevice.getId().intValue());
//                        dto.setShuttleDevice(shuttleDevice);
//                        dto.setLiftNo(transferLiftDevice.getId().intValue());
//                        dto.setLocNo(standbyLocNoTo);
//                        dto.setStaNo(getStaByLev(Utils.getLev(task.getOriginLoc())));//输送站
//                    })),
//                    MotionCtgType.SHUTTLE_TRANSPORT_TO_CONVEYOR
//            ));
            // 穿梭车走行至目标库位
            motionList.addAll(kernelService.shuttleMove(
                    MotionDto.build((dto -> {
                        dto.setShuttleNo(shuttleDevice.getId().intValue());
                        dto.setLocNo(lastPathStartLoc);
                        dto.setLocNo(originLoc);
                    })),
                    MotionDto.build((dto -> {
                        dto.setShuttleNo(shuttleDevice.getId().intValue());
                        dto.setShuttleDevice(shuttleDevice);
                        dto.setLocNo(locNo);
                    })),
                    MotionCtgType.SHUTTLE_MOVE
                    MotionCtgType.SHUTTLE_TRANSPORT
            ));
            // 穿梭车出库托盘下降
@@ -1815,19 +1816,19 @@
                        dto.setShuttleNo(shuttleDevice.getId().intValue());
                        dto.setShuttleDevice(shuttleDevice);
                        dto.setLiftNo(transferLiftDevice.getId().intValue());
                        dto.setLocNo(standbyLocNoTo);
                        dto.setLocNo(standbyLocNoMemo);
                    })),
                    MotionCtgType.SHUTTLE_MOVE
            ));
            // 锁定换层路径
            motionList.addAll(kernelService.mapLockPath(
                    null,
                    MotionDto.build((dto -> {
                        dto.setShuttleNo(shuttleDevice.getId().intValue());
                        dto.setLocNo(JSON.toJSONString(lockPath));
                    }))
            ));
//            // 锁定换层路径
//            motionList.addAll(kernelService.mapLockPath(
//                    null,
//                    MotionDto.build((dto -> {
//                        dto.setShuttleNo(shuttleDevice.getId().intValue());
//                        dto.setLocNo(JSON.toJSONString(lockPath));
//                    }))
//            ));
            // 提升机空载移动到穿梭车层
            motionList.addAll(kernelService.liftMove(
@@ -1850,7 +1851,7 @@
            motionList.addAll(kernelService.shuttleMove(
                    MotionDto.build((dto -> {
                        dto.setShuttleNo(shuttleDevice.getId().intValue());
                        dto.setLocNo(standbyLocNoTo);
                        dto.setLocNo(standbyLocNoMemo);
                    })),
                    MotionDto.build((dto -> {
                        dto.setShuttleNo(shuttleDevice.getId().intValue());
@@ -1922,14 +1923,14 @@
                    }))
            ));
            // 解锁换层路径
            motionList.addAll(kernelService.mapUnlockPath(
                    null,
                    MotionDto.build((dto -> {
                        dto.setShuttleNo(shuttleDevice.getId().intValue());
                        dto.setLocNo(JSON.toJSONString(lockPath));
                    }))
            ));
//            // 解锁换层路径
//            motionList.addAll(kernelService.mapUnlockPath(
//                    null,
//                    MotionDto.build((dto -> {
//                        dto.setShuttleNo(shuttleDevice.getId().intValue());
//                        dto.setLocNo(JSON.toJSONString(lockPath));
//                    }))
//            ));
            // 穿梭车提升机待机位至出库库位
            motionList.addAll(kernelService.shuttleMove(
@@ -1955,34 +1956,18 @@
                    MotionCtgType.SHUTTLE_PALLET_LIFT
            ));
            if (!originLoc.equals(lastPathStartLoc)) {
                // 穿梭车载货出库至最后一段路径等待
                motionList.addAll(kernelService.shuttleMove(
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setLocNo(originLoc);
                        })),
                        MotionDto.build((dto -> {
                            dto.setShuttleNo(shuttleDevice.getId().intValue());
                            dto.setShuttleDevice(shuttleDevice);
                            dto.setLocNo(lastPathStartLoc);
                        })),
                        MotionCtgType.SHUTTLE_TRANSPORT
                ));
            }
            // 穿梭车走行至目标库位
            motionList.addAll(kernelService.shuttleMove(
                    MotionDto.build((dto -> {
                        dto.setShuttleNo(shuttleDevice.getId().intValue());
                        dto.setLocNo(lastPathStartLoc);
                        dto.setLocNo(originLoc);
                    })),
                    MotionDto.build((dto -> {
                        dto.setShuttleNo(shuttleDevice.getId().intValue());
                        dto.setShuttleDevice(shuttleDevice);
                        dto.setLocNo(locNo);
                    })),
                    MotionCtgType.SHUTTLE_MOVE
                    MotionCtgType.SHUTTLE_TRANSPORT
            ));
            // 穿梭车出库托盘下降