#
vincentlu
2026-03-25 d3135896148a137476a561a8a9a2bd28a27df01e
#
25个文件已添加
2个文件已修改
1个文件已删除
6 文件已重命名
676 ■■■■■ 已修改文件
zy-acs-common/src/main/java/com/zy/acs/common/hk/HkConnectionStateType.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/HkAction.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/HkActionParameter.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/HkInstantActionMessage.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkCancelOrderActionParam.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkConfigAgvActionParam.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkControlAudioActionParam.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkDropActionParam.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkInitPositionActionParam.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkLampControllerActionParam.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkPickActionParam.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkRotateAgvActionParam.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkRotateLoadLiftActionParam.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkStartChargingActionParam.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkSwitchEnergyWorkModeActionParam.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkUpgAmrActionParam.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkActionType.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkAudioModeType.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkBlockingType.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkEnergyModeType.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkLampColorType.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkLampDirectionType.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkLampModeType.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/base/HkMessageHeader.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/connection/HkConnectionMessage.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/connection/HkConnectionStateType.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/order/HkNodePosition.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/order/HkOrderEdge.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/order/HkOrderMessage.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/order/HkOrderNode.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/listen/MessageListener.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/mqtt/handler/ConnectionMessageHandler.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/mqtt/publisher/HkInstantActionPublisher.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/mqtt/publisher/HkOrderPublisher.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/hk/HkConnectionStateType.java
File was deleted
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/HkAction.java
New file
@@ -0,0 +1,29 @@
package com.zy.acs.common.hk.action;
import com.zy.acs.common.hk.action.type.HkActionType;
import com.zy.acs.common.hk.action.type.HkBlockingType;
import lombok.Data;
import java.util.List;
/**
 * 节点动作或即时动作的通用定义。
 */
@Data
public class HkAction {
    // 动作名称
    private HkActionType actionType;
    // 动作 ID
    private String actionId;
    // 动作描述
    private String actionDescription;
    // 动作阻塞类型:NONE、SOFT、HARD
    private HkBlockingType blockingType;
    // 动作参数数组
    private List<HkActionParameter> actionParameters;
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/HkActionParameter.java
New file
@@ -0,0 +1,16 @@
package com.zy.acs.common.hk.action;
import lombok.Data;
/**
 * 动作参数键值对。
 */
@Data
public class HkActionParameter {
    // 参数键
    private String key;
    // 参数值
    private Object value;
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/HkInstantActionMessage.java
New file
@@ -0,0 +1,18 @@
package com.zy.acs.common.hk.action;
import com.zy.acs.common.hk.base.HkMessageHeader;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
 * instantActions 主题即时动作消息。
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class HkInstantActionMessage extends HkMessageHeader {
    // 即时动作数组
    private List<HkAction> instantActions;
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkCancelOrderActionParam.java
New file
@@ -0,0 +1,13 @@
package com.zy.acs.common.hk.action.param;
import lombok.Data;
/**
 * cancelOrder 动作参数。
 */
@Data
public class HkCancelOrderActionParam {
    // 是否立即停车
    private Boolean stopRightInstantStop;
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkConfigAgvActionParam.java
New file
@@ -0,0 +1,22 @@
package com.zy.acs.common.hk.action.param;
import lombok.Data;
/**
 * configAGV 动作参数。
 */
@Data
public class HkConfigAgvActionParam {
    // AMS 服务器 IP
    private String amsIp;
    // AMS 服务器端口
    private Integer amsPort;
    // NTP 服务器 IP
    private String ntpIp;
    // NTP 服务器端口
    private Integer ntpPort;
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkControlAudioActionParam.java
New file
@@ -0,0 +1,17 @@
package com.zy.acs.common.hk.action.param;
import com.zy.acs.common.hk.action.type.HkAudioModeType;
import lombok.Data;
/**
 * controlAudio 动作参数。
 */
@Data
public class HkControlAudioActionParam {
    // 播放模式
    private HkAudioModeType mode;
    // 音频方案名字
    private String scheme;
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkDropActionParam.java
New file
@@ -0,0 +1,22 @@
package com.zy.acs.common.hk.action.param;
import lombok.Data;
/**
 * drop 动作参数。
 */
@Data
public class HkDropActionParam {
    // 货架 ID
    private String loadId;
    // 货架类型
    private String loadType;
    // 举升精度
    private Double precision;
    // 下放货架后转盘是否回零
    private Boolean tabZero;
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkInitPositionActionParam.java
New file
@@ -0,0 +1,25 @@
package com.zy.acs.common.hk.action.param;
import lombok.Data;
/**
 * initPosition 动作参数。
 */
@Data
public class HkInitPositionActionParam {
    // 初始化车体坐标系 x 值
    private Double x;
    // 初始化车体坐标系 y 值
    private Double y;
    // 初始化车体坐标系角度值
    private Double theta;
    // 初始化车体地图 ID
    private String mapId;
    // 初始化车体 lastNodeId
    private String lastNodeId;
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkLampControllerActionParam.java
New file
@@ -0,0 +1,31 @@
package com.zy.acs.common.hk.action.param;
import com.zy.acs.common.hk.action.type.HkLampColorType;
import com.zy.acs.common.hk.action.type.HkLampDirectionType;
import com.zy.acs.common.hk.action.type.HkLampModeType;
import lombok.Data;
/**
 * lampController 动作参数。
 */
@Data
public class HkLampControllerActionParam {
    // 指示灯模式
    private HkLampModeType mode;
    // 指示灯方向
    private HkLampDirectionType dir;
    // 指示灯颜色
    private HkLampColorType color;
    // 持续时间
    private Integer keepTime;
    // 亮灯时长
    private Integer blinkOnTime;
    // 灭灯时长
    private Integer blinkOffTime;
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkPickActionParam.java
New file
@@ -0,0 +1,22 @@
package com.zy.acs.common.hk.action.param;
import lombok.Data;
/**
 * pick 动作参数。
 */
@Data
public class HkPickActionParam {
    // 货架 ID
    private String loadId;
    // 货架类型
    private String loadType;
    // 举升高度
    private Double height;
    // 举升精度
    private Double precision;
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkRotateAgvActionParam.java
New file
@@ -0,0 +1,13 @@
package com.zy.acs.common.hk.action.param;
import lombok.Data;
/**
 * rotateAGV 动作参数。
 */
@Data
public class HkRotateAgvActionParam {
    // 车体需要旋转到地图坐标系角度值,单位 rad
    private Double angle;
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkRotateLoadLiftActionParam.java
New file
@@ -0,0 +1,16 @@
package com.zy.acs.common.hk.action.param;
import lombok.Data;
/**
 * rotateLoadLift 动作参数。
 */
@Data
public class HkRotateLoadLiftActionParam {
    // 旋转载物到地图坐标系角度,单位 rad
    private Double angle;
    // 调整夹包升降高度,单位 m
    private Double height;
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkStartChargingActionParam.java
New file
@@ -0,0 +1,19 @@
package com.zy.acs.common.hk.action.param;
import lombok.Data;
/**
 * startCharging 动作参数。
 */
@Data
public class HkStartChargingActionParam {
    // 充电时间,单位分钟
    private Integer time;
    // 充电桩 IP
    private String ip;
    // 充电桩端口
    private Integer port;
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkSwitchEnergyWorkModeActionParam.java
New file
@@ -0,0 +1,17 @@
package com.zy.acs.common.hk.action.param;
import com.zy.acs.common.hk.action.type.HkEnergyModeType;
import lombok.Data;
/**
 * switchEnergyWorkMode 动作参数。
 */
@Data
public class HkSwitchEnergyWorkModeActionParam {
    // 能源模式
    private HkEnergyModeType energyMode;
    // 模式持续时间,单位秒
    private Integer time;
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkUpgAmrActionParam.java
New file
@@ -0,0 +1,16 @@
package com.zy.acs.common.hk.action.param;
import lombok.Data;
/**
 * upgAMR 动作参数。
 */
@Data
public class HkUpgAmrActionParam {
    // 升级包下载路径
    private String url;
    // 升级包版本
    private String version;
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkActionType.java
New file
@@ -0,0 +1,107 @@
package com.zy.acs.common.hk.action.type;
import com.google.gson.annotations.SerializedName;
import lombok.Getter;
import org.springframework.util.StringUtils;
/**
 * 海康协议动作类型枚举。
 */
@Getter
public enum HkActionType {
    // 初始位置初始化
    @SerializedName("initPosition")
    INIT_POSITION("initPosition"),
    // 暂停 AGV
    @SerializedName("startPause")
    START_PAUSE("startPause"),
    // 取消暂停
    @SerializedName("stopPause")
    STOP_PAUSE("stopPause"),
    // 开始充电
    @SerializedName("startCharging")
    START_CHARGING("startCharging"),
    // 取消充电
    @SerializedName("stopCharging")
    STOP_CHARGING("stopCharging"),
    // 请求 AGV 立即上报状态
    @SerializedName("stateRequest")
    STATE_REQUEST("stateRequest"),
    // 车辆急停
    @SerializedName("stopAGV")
    STOP_AGV("stopAGV"),
    // 取消当前任务
    @SerializedName("cancelOrder")
    CANCEL_ORDER("cancelOrder"),
    // 旋转车体
    @SerializedName("rotateAGV")
    ROTATE_AGV("rotateAGV"),
    // 请求 factsheet
    @SerializedName("factsheetRequest")
    FACTSHEET_REQUEST("factsheetRequest"),
    // 请求维保信息
    @SerializedName("maintainRequest")
    MAINTAIN_REQUEST("maintainRequest"),
    // 配置 AGV 属性
    @SerializedName("configAGV")
    CONFIG_AGV("configAGV"),
    // 升级 AMR
    @SerializedName("upgAMR")
    UPG_AMR("upgAMR"),
    // 切换能源工作模式
    @SerializedName("switchEnergyWorkMode")
    SWITCH_ENERGY_WORK_MODE("switchEnergyWorkMode"),
    // 控制指示灯
    @SerializedName("lampController")
    LAMP_CONTROLLER("lampController"),
    // 控制语音播放
    @SerializedName("controlAudio")
    CONTROL_AUDIO("controlAudio"),
    // 潜伏式举升取货
    @SerializedName("pick")
    PICK("pick"),
    // 潜伏式下放货架
    @SerializedName("drop")
    DROP("drop"),
    // 潜伏式举升旋转载物
    @SerializedName("rotateLoadLift")
    ROTATE_LOAD_LIFT("rotateLoadLift");
    private final String code;
    HkActionType(String code) {
        this.code = code;
    }
    public static HkActionType fromCode(String code) {
        if (!StringUtils.hasText(code)) {
            return null;
        }
        for (HkActionType actionType : values()) {
            if (actionType.code.equalsIgnoreCase(code)) {
                return actionType;
            }
        }
        return null;
    }
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkAudioModeType.java
New file
@@ -0,0 +1,13 @@
package com.zy.acs.common.hk.action.type;
/**
 * 音频播放模式。
 */
public enum HkAudioModeType {
    // 设备按默认方案播放
    NORMAL,
    // 播放指定方案
    SPECIFIC
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkBlockingType.java
New file
@@ -0,0 +1,16 @@
package com.zy.acs.common.hk.action.type;
/**
 * 动作阻塞类型。
 */
public enum HkBlockingType {
    // 允许与其他动作并行执行
    NONE,
    // 允许与部分动作并行,但不允许移动
    SOFT,
    // 同时只允许一个动作执行
    HARD
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkEnergyModeType.java
New file
@@ -0,0 +1,19 @@
package com.zy.acs.common.hk.action.type;
/**
 * 能源工作模式。
 */
public enum HkEnergyModeType {
    // 正常模式
    NORMAL,
    // 节能模式
    ENERGYSAVING,
    // 休眠模式
    HIBERNATE,
    // 关机模式
    POWEROFF
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkLampColorType.java
New file
@@ -0,0 +1,16 @@
package com.zy.acs.common.hk.action.type;
/**
 * 指示灯颜色。
 */
public enum HkLampColorType {
    // 红灯
    RED,
    // 绿灯
    GREEN,
    // 黄灯
    YELLOW
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkLampDirectionType.java
New file
@@ -0,0 +1,16 @@
package com.zy.acs.common.hk.action.type;
/**
 * 指示灯方向。
 */
public enum HkLampDirectionType {
    // 左侧指示灯
    LEFT,
    // 右侧指示灯
    RIGHT,
    // 所有指示灯
    ALL
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkLampModeType.java
New file
@@ -0,0 +1,19 @@
package com.zy.acs.common.hk.action.type;
/**
 * 指示灯模式。
 */
public enum HkLampModeType {
    // 恢复设备默认模式
    NORMAL,
    // 常亮
    ON,
    // 常灭
    OFF,
    // 闪烁
    BLINK
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/base/HkMessageHeader.java
File was renamed from zy-acs-common/src/main/java/com/zy/acs/common/hk/HkMessageHeader.java
@@ -1,7 +1,10 @@
package com.zy.acs.common.hk;
package com.zy.acs.common.hk.base;
import lombok.Data;
/**
 * 海康 VDA 协议通用消息头。
 */
@Data
public class HkMessageHeader {
zy-acs-common/src/main/java/com/zy/acs/common/hk/connection/HkConnectionMessage.java
File was renamed from zy-acs-common/src/main/java/com/zy/acs/common/hk/HkConnectionMessage.java
@@ -1,8 +1,12 @@
package com.zy.acs.common.hk;
package com.zy.acs.common.hk.connection;
import com.zy.acs.common.hk.base.HkMessageHeader;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * connection 主题消息。
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class HkConnectionMessage extends HkMessageHeader {
zy-acs-common/src/main/java/com/zy/acs/common/hk/connection/HkConnectionStateType.java
New file
@@ -0,0 +1,17 @@
package com.zy.acs.common.hk.connection;
/**
 * connection 主题连接状态枚举。
 */
public enum HkConnectionStateType {
    // AGV 在线注册 RCS
    ONLINE,
    // AGV 主动下线
    OFFLINE,
    // AGV 异常下线
    CONNECTIONBROKEN
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/order/HkNodePosition.java
File was renamed from zy-acs-common/src/main/java/com/zy/acs/common/hk/HkNodePosition.java
@@ -1,7 +1,10 @@
package com.zy.acs.common.hk;
package com.zy.acs.common.hk.order;
import lombok.Data;
/**
 * 任务节点地图坐标信息。
 */
@Data
public class HkNodePosition {
zy-acs-common/src/main/java/com/zy/acs/common/hk/order/HkOrderEdge.java
File was renamed from zy-acs-common/src/main/java/com/zy/acs/common/hk/HkOrderEdge.java
@@ -1,9 +1,13 @@
package com.zy.acs.common.hk;
package com.zy.acs.common.hk.order;
import com.zy.acs.common.hk.action.HkAction;
import lombok.Data;
import java.util.List;
/**
 * order 消息中的路径段定义。
 */
@Data
public class HkOrderEdge {
@@ -52,6 +56,6 @@
    // 轨迹对象,待协议细化
    private Object trajectory;
    // 路径上的动作列表,待协议细化
    private List<Object> actions;
    // 路径上的动作列表
    private List<HkAction> actions;
}
zy-acs-common/src/main/java/com/zy/acs/common/hk/order/HkOrderMessage.java
File was renamed from zy-acs-common/src/main/java/com/zy/acs/common/hk/HkOrderMessage.java
@@ -1,10 +1,14 @@
package com.zy.acs.common.hk;
package com.zy.acs.common.hk.order;
import com.zy.acs.common.hk.base.HkMessageHeader;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
 * order 主题任务下发消息。
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class HkOrderMessage extends HkMessageHeader {
zy-acs-common/src/main/java/com/zy/acs/common/hk/order/HkOrderNode.java
File was renamed from zy-acs-common/src/main/java/com/zy/acs/common/hk/HkOrderNode.java
@@ -1,9 +1,13 @@
package com.zy.acs.common.hk;
package com.zy.acs.common.hk.order;
import com.zy.acs.common.hk.action.HkAction;
import lombok.Data;
import java.util.List;
/**
 * order 消息中的节点定义。
 */
@Data
public class HkOrderNode {
@@ -37,6 +41,6 @@
    // 执行机构姿态信息,待协议细化
    private Object actuator;
    // 节点上的动作列表,待协议细化
    private List<Object> actions;
    // 节点上的动作列表
    private List<HkAction> actions;
}
zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/listen/MessageListener.java
New file
@@ -0,0 +1,53 @@
package com.zy.acs.hk.latent.listen;
import com.alibaba.fastjson.JSON;
import com.zy.acs.common.constant.RedisConstant;
import com.zy.acs.common.domain.AgvProtocol;
import com.zy.acs.common.utils.RedisSupport;
import com.zy.acs.framework.common.Cools;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
/**
 * 下行报文监听器
 * 消息队列: redis list
 * Created by vincent on 2019-04-02
 */
@Component
public class MessageListener {
    private Thread thread;
    private final RedisSupport redis = RedisSupport.defaultRedisSupport;
    private final static Logger log = LoggerFactory.getLogger(MessageListener.class);
    @PostConstruct
    private void start(){
        thread = new Thread(() -> {
            while (!Thread.currentThread().isInterrupted()) {
                AgvProtocol protocol = redis.pop(RedisConstant.AGV_PATH_DOWN_FLAG);
                if (null != protocol) {
                    log.info("监听器 >>> {}", JSON.toJSONString(protocol));
                    if (!Cools.isEmpty(protocol.getAgvNo())) {
//                        publisher.publish(ProtocolUtils.installDownProtocol(protocol));
                    }
                }
                // 间隔
                try {
                    Thread.sleep(300);
                } catch (Exception ignore) {}
            }
        });
        thread.start();
    }
    @PreDestroy
    public void shutDown(){
        if (thread != null) thread.interrupt();
    }
}
zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/mqtt/handler/ConnectionMessageHandler.java
@@ -1,7 +1,7 @@
package com.zy.acs.hk.latent.mqtt.handler;
import com.zy.acs.common.hk.HkConnectionMessage;
import com.zy.acs.common.hk.HkConnectionStateType;
import com.zy.acs.common.hk.connection.HkConnectionMessage;
import com.zy.acs.common.hk.connection.HkConnectionStateType;
import com.zy.acs.common.constant.RedisConstant;
import com.zy.acs.common.utils.GsonUtils;
import com.zy.acs.common.utils.RedisSupport;
zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/mqtt/publisher/HkInstantActionPublisher.java
New file
@@ -0,0 +1,46 @@
package com.zy.acs.hk.latent.mqtt.publisher;
import com.zy.acs.common.hk.action.HkInstantActionMessage;
import com.zy.acs.common.utils.GsonUtils;
import com.zy.acs.hk.latent.mqtt.EmqxMqttClient;
import com.zy.acs.hk.latent.mqtt.HkTopicBuilder;
import com.zy.acs.hk.latent.mqtt.type.HkSubTopicType;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
@Slf4j
@Component
public class HkInstantActionPublisher {
    @Autowired
    private EmqxMqttClient emqxMqttClient;
    @Autowired
    private HkTopicBuilder hkTopicBuilder;
    public void publish(HkInstantActionMessage instantActionMessage) {
        if (instantActionMessage == null) {
            throw new IllegalArgumentException("instantActionMessage can not be null");
        }
        if (!StringUtils.hasText(instantActionMessage.getSerialNumber())) {
            throw new IllegalArgumentException("instantActionMessage.serialNumber can not be blank");
        }
        if (instantActionMessage.getInstantActions() == null || instantActionMessage.getInstantActions().isEmpty()) {
            throw new IllegalArgumentException("instantActionMessage.instantActions can not be empty");
        }
        String topic = hkTopicBuilder.buildTopic(
                instantActionMessage.getSerialNumber(),
                HkSubTopicType.INSTANT_ACTIONS.getCode()
        );
        String payload = GsonUtils.toJson(instantActionMessage);
        emqxMqttClient.publish(topic, payload);
        log.info("publish hk instant action message, agvNo={}, actionCount={}, topic={}",
                instantActionMessage.getSerialNumber(),
                instantActionMessage.getInstantActions().size(),
                topic);
    }
}
zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/mqtt/publisher/HkOrderPublisher.java
@@ -1,6 +1,6 @@
package com.zy.acs.hk.latent.mqtt.publisher;
import com.zy.acs.common.hk.HkOrderMessage;
import com.zy.acs.common.hk.order.HkOrderMessage;
import com.zy.acs.common.utils.GsonUtils;
import com.zy.acs.hk.latent.mqtt.EmqxMqttClient;
import com.zy.acs.hk.latent.mqtt.HkTopicBuilder;