zhang
8 天以前 4ad3a6e5540c5ca9d6042fc2fb7d72fa18c49c15
保存一个版本
3个文件已修改
1个文件已添加
89 ■■■■■ 已修改文件
zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/action/RunToWaitHeight.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/enums/AgvActionCmdType.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/ActionTypeType.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/action/RunToWaitHeight.java
New file
@@ -0,0 +1,33 @@
package com.zy.acs.common.domain.protocol.action;
import com.zy.acs.common.domain.protocol.IActionBody;
import com.zy.acs.common.utils.Utils;
import com.zy.acs.framework.common.RadixTools;
import lombok.Data;
import java.io.Serializable;
/**
 * 去待机位,将货叉升至指定高度
 * 属性值:方向,左1 右2
 * Created by vincent on 2023/3/23
 */
@Data
public class RunToWaitHeight implements IActionBody, Serializable {
    private static final long serialVersionUID = 6496283344148393737L;
    @Override
    public byte[] writeToBytes() {
        return Utils.reverse(RadixTools.shortToByte(this.height));
    }
    @Override
    public void readFromBytes(byte[] messageBodyBytes) {
    }
    // 高度
    private Short height;
}
zy-acs-common/src/main/java/com/zy/acs/common/enums/AgvActionCmdType.java
@@ -29,6 +29,8 @@
    READY_RELEASE_FROM_SHELVES_LOC(0x78, "准备往货架放货", ReadyReleaseToShelvesLoc.class),
    RUN_TO_WAIT_HEIGHT(0x79, "货叉运行至待机高度", RunToWaitHeight.class),
    READY_TAKE_FROM_CONVEYOR_STA(0x7B, "准备从输送线取货", ReadyTakeFromConveyorSta.class),
    READY_RELEASE_FROM_CONVEYOR_STA(0x7C, "准备往输送线放货", ReadyReleaseToConveyorSta.class),
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -989,7 +989,7 @@
                                    null,    // 动作号
                                    null,    // 优先级
                                    ActionTypeType.TurnCorner.desc,    // 名称
                                    mapService.isTurnCorner(lastCode.getData()) ? 1D : 0D,    // 属性值
                                    mapService.isTurnCorner(lastCode.getData()) ? 1D : 0D,    // 属性값
                                    lastCode.getData(),    // 地面码
                                    String.valueOf(oriStaWorkDirection),   // 动作参数
                                    ActionTypeType.TurnCorner.val(),    // 动作类型
@@ -1025,7 +1025,7 @@
                                null,    // 动作号
                                null,    // 优先级
                                ActionTypeType.ReadyReleaseToAgvSite.desc,    // 名称
                                (double) backpackType.lev,    // 属性值
                                (double) backpackType.lev,    // 属性값
                                lastCode.getData(),    // 地面码
                                String.valueOf(backpackType.height),   // 动作参数
                                ActionTypeType.ReadyReleaseToAgvSite.val(),    // 动作类型
@@ -1051,7 +1051,7 @@
                                    null,    // 动作号
                                    null,    // 优先级
                                    ActionTypeType.TurnCorner.desc,    // 名称
                                    mapService.isTurnCorner(lastCode.getData()) ? 1D : 0D,    // 属性值
                                    mapService.isTurnCorner(lastCode.getData()) ? 1D : 0D,    // 属性값
                                    lastCode.getData(),    // 地面码
                                    String.valueOf(destStaWorkDirection),   // 动作参数
                                    ActionTypeType.TurnCorner.val(),    // 动作类型
@@ -1070,7 +1070,7 @@
                                null,    // 动作号
                                null,    // 优先级
                                ActionTypeType.ReadyTakeFromAgvSite.desc,    // 名称
                                (double) backpackType.lev,    // 属性值
                                (double) backpackType.lev,    // 属性값
                                lastCode.getData(),    // 地面码
                                String.valueOf(backpackType.height),   // 动作参数
                                ActionTypeType.ReadyTakeFromAgvSite.val(),    // 动作类型
@@ -1087,7 +1087,7 @@
                                null,    // 动作号
                                null,    // 优先级
                                ActionTypeType.ReadyReleaseToConveyorSta.desc,    // 名称
                                staWorkDirection,    // 属性值
                                staWorkDirection,    // 属性값
                                lastCode.getData(),    // 地面码
                                String.valueOf(destSta.getOffset()),   // 动作参数
                                ActionTypeType.ReadyReleaseToConveyorSta.val(),    // 动作类型
@@ -1108,7 +1108,7 @@
                                    null,    // 动作号
                                    null,    // 优先级
                                    ActionTypeType.TurnCorner.desc,    // 名称
                                    mapService.isTurnCorner(lastCode.getData()) ? 1D : 0D,    // 属性值
                                    mapService.isTurnCorner(lastCode.getData()) ? 1D : 0D,    // 属性값
                                    lastCode.getData(),    // 地面码
                                    String.valueOf(chargeDirection),   // 动作参数
                                    ActionTypeType.TurnCorner.val(),    // 动作类型
@@ -1127,7 +1127,7 @@
                                null,    // 动作号
                                null,    // 优先级
                                ActionTypeType.DockingCharge.desc,    // 名称
                                null,    // 属性值
                                null,    // 属性값
                                lastCode.getData(),    // 地面码
                                null,   // 动作参数
                                ActionTypeType.DockingCharge.val(),    // 动作类型
@@ -1147,7 +1147,7 @@
//                                    null,    // 动作号
//                                    null,    // 优先级
//                                    ActionTypeType.TurnCorner.desc,    // 名称
//                                    null,    // 属性值
//                                    null,    // 属性값
//                                    lastCode.getData(),    // 地面码
//                                    String.valueOf(standByDirection),   // 动作参数
//                                    ActionTypeType.TurnCorner.val(),    // 动作类型
@@ -1157,6 +1157,36 @@
//                            ));
//                            lastDirection = standByDirection;
//                        }
                        String runToWaitHeightFlag = configService.getVal("RunToWaitHeightFlag", String.class);
                        if (!Cools.isEmpty(runToWaitHeightFlag) && runToWaitHeightFlag.contains(agvId.toString())) {
                            String runToWaitHeight = configService.getVal("RunToWaitHeight", String.class);
                            if (Cools.isEmpty(runToWaitHeight)) {
                                runToWaitHeight = "800";
                            }
                            Double runToWaitHeightValue = configService.getVal("RunToWaitHeightValue", Double.class);
                            if (Cools.isEmpty(runToWaitHeight) || runToWaitHeightValue == 0) {
                                runToWaitHeightValue = 1D;
                            }
                            // 修复空指针异常:检查lastCode是否为null
                            if (lastCode == null) {
                                throw new BusinessException("AGV定位信息异常,无法生成待机动作");
                            }
                            actionList.add(new Action(
                                    null,    // 编号
                                    task.getBusId(),    // 总线
                                    task.getId(),    // 任务
                                    null,    // 动作号
                                    null,    // 优先级
                                    ActionTypeType.RunToWaitHeight.desc,    // 名称
                                    runToWaitHeightValue,    // 属性값
                                    lastCode.getData(),    // 地面码
                                    runToWaitHeight,   // 动作参数
                                    ActionTypeType.RunToWaitHeight.val(),    // 动作类型
                                    actionPrepareSts,    // 动作进度
                                    agvId,    // AGV
                                    now    // 工作时间
                            ));
                        }
                        break;
                    case MOVE:
                        break;
@@ -1341,6 +1371,13 @@
                                .bodySync(body -> body.setDepth((short) Double.parseDouble(action.getParams())))
                        );
                        break;
                    case RunToWaitHeight:
                        agvAction.add(new AgvActionItem<>(RunToWaitHeight.class)
                                .setVal(action.getVal().intValue())
                                .setQrCode(action.getCode())
                                .bodySync(body -> body.setHeight((short) Double.parseDouble(action.getParams())))
                        );
                        break;
                    case FinishPath:
                        agvAction.add(new AgvActionItem<>(FinishPathAction.class)
                                .setQrCode(action.getCode())
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/ActionTypeType.java
@@ -21,6 +21,7 @@
    ReadyReleaseToShelvesLoc("准备往货架放货"), //     准备从货架放货
    ReadyReleaseToConveyorSta("准备往输送线放货"), //     准备往输送线放货
    ReadyReleaseToAgvSite("准备往AGV暂存货位放货"), // 准备往AGV暂存货位放货
    RunToWaitHeight("货叉运行至待机高度"), // 货叉运行至待机高度
    FinishPath("整个路径结束"), //     整个路径结束
    DockingCharge("对接充电桩"), //     对接充电桩
    ;