自动化立体仓库 - WCS系统
#
Junjie
2023-09-04 3f48e38eeaf31f85ec8b68489c8079800ca65e0f
src/main/java/com/zy/common/utils/NyShuttleOperaUtils.java
@@ -23,26 +23,32 @@
     * @param targetPoint 目标点(货物目标位置)
     */
    public static NyShuttleOperaResult getShuttleTransportCommands(Integer shuttleNo, Integer wrkNo, String startPoint, String middlePoint, String targetPoint) {
        //计算起点到中间点命令
        NyShuttleOperaResult result1 = getStartToTargetCommands(shuttleNo, wrkNo, startPoint, middlePoint);
        //计算中间点到目标点命令
        NyShuttleOperaResult result2 = getStartToTargetCommands(shuttleNo, wrkNo, middlePoint, targetPoint);
        if (result1 == null || result2 == null) {
            //两个计算结果必须不为空,否则计算失败
            return null;
        }
        //行走路径
        ArrayList<NavigateNode> nodes = new ArrayList<>();
        nodes.addAll(result1.getNodes());
        nodes.addAll(result2.getNodes());
        //命令集合
        ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>();
        commands.addAll(result1.getCommands());
        if (!startPoint.equals(middlePoint)) {//起点和中间点不一致,需要计算起点到中间点路径
            //计算起点到中间点命令
            NyShuttleOperaResult result1 = getStartToTargetCommands(shuttleNo, wrkNo, startPoint, middlePoint);
            if (result1 == null) {
                //计算结果必须不为空,否则计算失败
                return null;
            }
            nodes.addAll(result1.getNodes());
            commands.addAll(result1.getCommands());
        }
        //计算中间点到目标点命令
        NyShuttleOperaResult result2 = getStartToTargetCommands(shuttleNo, wrkNo, middlePoint, targetPoint);
        if (result2 == null) {
            //计算结果必须不为空,否则计算失败
            return null;
        }
        nodes.addAll(result2.getNodes());
        //当小车行走到中间点后,需要下发一条顶升命令将货物进行搬运
        commands.add(NyHttpUtils.getPalletLiftCommand(shuttleNo, wrkNo, true));
        commands.addAll(result2.getCommands());
        commands.addAll(result2.getCommands());//中间点到目标点移动命令
        //当小车行走到目标点后,需要下发一条下降命令将货物放置
        commands.add(NyHttpUtils.getPalletLiftCommand(shuttleNo, wrkNo, false));
        return result(commands, nodes);
@@ -71,6 +77,7 @@
            NavigateNode targetPath = nodes.get(nodes.size() - 1);
            //获取移动命令
            NyShuttleHttpCommand moveCommand = NyHttpUtils.getMoveCommand(shuttleNo, wrkNo, startPath, targetPath);
            moveCommand.setNodes(nodes);//将行走节点添加到每一步命令中
            commands.add(moveCommand);
        }