From d3135896148a137476a561a8a9a2bd28a27df01e Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期三, 25 三月 2026 14:03:32 +0800
Subject: [PATCH] #

---
 zy-acs-common/src/main/java/com/zy/acs/common/hk/order/HkNodePosition.java                                 |    5 
 zy-acs-common/src/main/java/com/zy/acs/common/hk/order/HkOrderMessage.java                                 |    6 
 zy-acs-common/src/main/java/com/zy/acs/common/hk/base/HkMessageHeader.java                                 |    5 
 zy-acs-common/src/main/java/com/zy/acs/common/hk/connection/HkConnectionStateType.java                     |   17 +
 zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkLampColorType.java                          |   16 +
 zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkRotateLoadLiftActionParam.java             |   16 +
 zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkStartChargingActionParam.java              |   19 +
 zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/mqtt/handler/ConnectionMessageHandler.java   |    4 
 zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkLampModeType.java                           |   19 +
 zy-acs-common/src/main/java/com/zy/acs/common/hk/action/HkInstantActionMessage.java                        |   18 +
 zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkInitPositionActionParam.java               |   25 ++
 zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkBlockingType.java                           |   16 +
 zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkAudioModeType.java                          |   13 +
 zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkControlAudioActionParam.java               |   17 +
 zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkEnergyModeType.java                         |   19 +
 zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkCancelOrderActionParam.java                |   13 +
 zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkPickActionParam.java                       |   22 +
 zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/mqtt/publisher/HkInstantActionPublisher.java |   46 +++
 zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkDropActionParam.java                       |   22 +
 zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkLampControllerActionParam.java             |   31 ++
 zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkConfigAgvActionParam.java                  |   22 +
 zy-acs-common/src/main/java/com/zy/acs/common/hk/connection/HkConnectionMessage.java                       |    6 
 zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkUpgAmrActionParam.java                     |   16 +
 zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkActionType.java                             |  107 ++++++++
 zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/listen/MessageListener.java                  |   53 ++++
 /dev/null                                                                                                  |   10 
 zy-acs-common/src/main/java/com/zy/acs/common/hk/action/HkActionParameter.java                             |   16 +
 zy-acs-common/src/main/java/com/zy/acs/common/hk/action/HkAction.java                                      |   29 ++
 zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/mqtt/publisher/HkOrderPublisher.java         |    2 
 zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkSwitchEnergyWorkModeActionParam.java       |   17 +
 zy-acs-common/src/main/java/com/zy/acs/common/hk/order/HkOrderNode.java                                    |   10 
 zy-acs-common/src/main/java/com/zy/acs/common/hk/order/HkOrderEdge.java                                    |   10 
 zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkRotateAgvActionParam.java                  |   13 +
 zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkLampDirectionType.java                      |   16 +
 34 files changed, 653 insertions(+), 23 deletions(-)

diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/HkConnectionStateType.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/HkConnectionStateType.java
deleted file mode 100644
index cea7339..0000000
--- a/zy-acs-common/src/main/java/com/zy/acs/common/hk/HkConnectionStateType.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.zy.acs.common.hk;
-
-public enum HkConnectionStateType {
-
-    ONLINE,
-    OFFLINE,
-    CONNECTIONBROKEN,
-    ;
-
-}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/HkAction.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/HkAction.java
new file mode 100644
index 0000000..a393497
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/HkAction.java
@@ -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;
+
+    // 鍔ㄤ綔闃诲绫诲瀷锛歂ONE銆丼OFT銆丠ARD
+    private HkBlockingType blockingType;
+
+    // 鍔ㄤ綔鍙傛暟鏁扮粍
+    private List<HkActionParameter> actionParameters;
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/HkActionParameter.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/HkActionParameter.java
new file mode 100644
index 0000000..9511dd9
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/HkActionParameter.java
@@ -0,0 +1,16 @@
+package com.zy.acs.common.hk.action;
+
+import lombok.Data;
+
+/**
+ * 鍔ㄤ綔鍙傛暟閿�煎銆�
+ */
+@Data
+public class HkActionParameter {
+
+    // 鍙傛暟閿�
+    private String key;
+
+    // 鍙傛暟鍊�
+    private Object value;
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/HkInstantActionMessage.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/HkInstantActionMessage.java
new file mode 100644
index 0000000..20fe183
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/HkInstantActionMessage.java
@@ -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;
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkCancelOrderActionParam.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkCancelOrderActionParam.java
new file mode 100644
index 0000000..9b581c2
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkCancelOrderActionParam.java
@@ -0,0 +1,13 @@
+package com.zy.acs.common.hk.action.param;
+
+import lombok.Data;
+
+/**
+ * cancelOrder 鍔ㄤ綔鍙傛暟銆�
+ */
+@Data
+public class HkCancelOrderActionParam {
+
+    // 鏄惁绔嬪嵆鍋滆溅
+    private Boolean stopRightInstantStop;
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkConfigAgvActionParam.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkConfigAgvActionParam.java
new file mode 100644
index 0000000..f45de93
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkConfigAgvActionParam.java
@@ -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;
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkControlAudioActionParam.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkControlAudioActionParam.java
new file mode 100644
index 0000000..430b898
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkControlAudioActionParam.java
@@ -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;
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkDropActionParam.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkDropActionParam.java
new file mode 100644
index 0000000..1033c83
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkDropActionParam.java
@@ -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;
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkInitPositionActionParam.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkInitPositionActionParam.java
new file mode 100644
index 0000000..8cce713
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkInitPositionActionParam.java
@@ -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;
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkLampControllerActionParam.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkLampControllerActionParam.java
new file mode 100644
index 0000000..8ed7f9a
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkLampControllerActionParam.java
@@ -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;
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkPickActionParam.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkPickActionParam.java
new file mode 100644
index 0000000..2a77165
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkPickActionParam.java
@@ -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;
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkRotateAgvActionParam.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkRotateAgvActionParam.java
new file mode 100644
index 0000000..37ac38c
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkRotateAgvActionParam.java
@@ -0,0 +1,13 @@
+package com.zy.acs.common.hk.action.param;
+
+import lombok.Data;
+
+/**
+ * rotateAGV 鍔ㄤ綔鍙傛暟銆�
+ */
+@Data
+public class HkRotateAgvActionParam {
+
+    // 杞︿綋闇�瑕佹棆杞埌鍦板浘鍧愭爣绯昏搴﹀�硷紝鍗曚綅 rad
+    private Double angle;
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkRotateLoadLiftActionParam.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkRotateLoadLiftActionParam.java
new file mode 100644
index 0000000..84e247a
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkRotateLoadLiftActionParam.java
@@ -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;
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkStartChargingActionParam.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkStartChargingActionParam.java
new file mode 100644
index 0000000..585ae61
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkStartChargingActionParam.java
@@ -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;
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkSwitchEnergyWorkModeActionParam.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkSwitchEnergyWorkModeActionParam.java
new file mode 100644
index 0000000..b83f985
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkSwitchEnergyWorkModeActionParam.java
@@ -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;
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkUpgAmrActionParam.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkUpgAmrActionParam.java
new file mode 100644
index 0000000..26f5ad8
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/param/HkUpgAmrActionParam.java
@@ -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;
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkActionType.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkActionType.java
new file mode 100644
index 0000000..75664bd
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkActionType.java
@@ -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;
+    }
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkAudioModeType.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkAudioModeType.java
new file mode 100644
index 0000000..2b9325a
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkAudioModeType.java
@@ -0,0 +1,13 @@
+package com.zy.acs.common.hk.action.type;
+
+/**
+ * 闊抽鎾斁妯″紡銆�
+ */
+public enum HkAudioModeType {
+
+    // 璁惧鎸夐粯璁ゆ柟妗堟挱鏀�
+    NORMAL,
+
+    // 鎾斁鎸囧畾鏂规
+    SPECIFIC
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkBlockingType.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkBlockingType.java
new file mode 100644
index 0000000..f8e75df
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkBlockingType.java
@@ -0,0 +1,16 @@
+package com.zy.acs.common.hk.action.type;
+
+/**
+ * 鍔ㄤ綔闃诲绫诲瀷銆�
+ */
+public enum HkBlockingType {
+
+    // 鍏佽涓庡叾浠栧姩浣滃苟琛屾墽琛�
+    NONE,
+
+    // 鍏佽涓庨儴鍒嗗姩浣滃苟琛岋紝浣嗕笉鍏佽绉诲姩
+    SOFT,
+
+    // 鍚屾椂鍙厑璁镐竴涓姩浣滄墽琛�
+    HARD
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkEnergyModeType.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkEnergyModeType.java
new file mode 100644
index 0000000..4e18123
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkEnergyModeType.java
@@ -0,0 +1,19 @@
+package com.zy.acs.common.hk.action.type;
+
+/**
+ * 鑳芥簮宸ヤ綔妯″紡銆�
+ */
+public enum HkEnergyModeType {
+
+    // 姝e父妯″紡
+    NORMAL,
+
+    // 鑺傝兘妯″紡
+    ENERGYSAVING,
+
+    // 浼戠湢妯″紡
+    HIBERNATE,
+
+    // 鍏虫満妯″紡
+    POWEROFF
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkLampColorType.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkLampColorType.java
new file mode 100644
index 0000000..bd564d6
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkLampColorType.java
@@ -0,0 +1,16 @@
+package com.zy.acs.common.hk.action.type;
+
+/**
+ * 鎸囩ず鐏鑹层��
+ */
+public enum HkLampColorType {
+
+    // 绾㈢伅
+    RED,
+
+    // 缁跨伅
+    GREEN,
+
+    // 榛勭伅
+    YELLOW
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkLampDirectionType.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkLampDirectionType.java
new file mode 100644
index 0000000..6a4ff49
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkLampDirectionType.java
@@ -0,0 +1,16 @@
+package com.zy.acs.common.hk.action.type;
+
+/**
+ * 鎸囩ず鐏柟鍚戙��
+ */
+public enum HkLampDirectionType {
+
+    // 宸︿晶鎸囩ず鐏�
+    LEFT,
+
+    // 鍙充晶鎸囩ず鐏�
+    RIGHT,
+
+    // 鎵�鏈夋寚绀虹伅
+    ALL
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkLampModeType.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkLampModeType.java
new file mode 100644
index 0000000..a7bbadc
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/action/type/HkLampModeType.java
@@ -0,0 +1,19 @@
+package com.zy.acs.common.hk.action.type;
+
+/**
+ * 鎸囩ず鐏ā寮忋��
+ */
+public enum HkLampModeType {
+
+    // 鎭㈠璁惧榛樿妯″紡
+    NORMAL,
+
+    // 甯镐寒
+    ON,
+
+    // 甯哥伃
+    OFF,
+
+    // 闂儊
+    BLINK
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/HkMessageHeader.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/base/HkMessageHeader.java
similarity index 80%
rename from zy-acs-common/src/main/java/com/zy/acs/common/hk/HkMessageHeader.java
rename to zy-acs-common/src/main/java/com/zy/acs/common/hk/base/HkMessageHeader.java
index ecdf589..d3f873a 100644
--- a/zy-acs-common/src/main/java/com/zy/acs/common/hk/HkMessageHeader.java
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/base/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 {
 
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/HkConnectionMessage.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/connection/HkConnectionMessage.java
similarity index 67%
rename from zy-acs-common/src/main/java/com/zy/acs/common/hk/HkConnectionMessage.java
rename to zy-acs-common/src/main/java/com/zy/acs/common/hk/connection/HkConnectionMessage.java
index 337878b..a7e2ef0 100644
--- a/zy-acs-common/src/main/java/com/zy/acs/common/hk/HkConnectionMessage.java
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/connection/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 {
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/connection/HkConnectionStateType.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/connection/HkConnectionStateType.java
new file mode 100644
index 0000000..e8d7a28
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/connection/HkConnectionStateType.java
@@ -0,0 +1,17 @@
+package com.zy.acs.common.hk.connection;
+
+/**
+ * connection 涓婚杩炴帴鐘舵�佹灇涓俱��
+ */
+public enum HkConnectionStateType {
+
+    // AGV 鍦ㄧ嚎娉ㄥ唽 RCS
+    ONLINE,
+
+    // AGV 涓诲姩涓嬬嚎
+    OFFLINE,
+
+    // AGV 寮傚父涓嬬嚎
+    CONNECTIONBROKEN
+
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/HkNodePosition.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/order/HkNodePosition.java
similarity index 79%
rename from zy-acs-common/src/main/java/com/zy/acs/common/hk/HkNodePosition.java
rename to zy-acs-common/src/main/java/com/zy/acs/common/hk/order/HkNodePosition.java
index 74d0185..f18e11e 100644
--- a/zy-acs-common/src/main/java/com/zy/acs/common/hk/HkNodePosition.java
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/order/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 {
 
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/HkOrderEdge.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/order/HkOrderEdge.java
similarity index 84%
rename from zy-acs-common/src/main/java/com/zy/acs/common/hk/HkOrderEdge.java
rename to zy-acs-common/src/main/java/com/zy/acs/common/hk/order/HkOrderEdge.java
index b4ec0b2..a6255ba 100644
--- a/zy-acs-common/src/main/java/com/zy/acs/common/hk/HkOrderEdge.java
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/order/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;
 }
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/HkOrderMessage.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/order/HkOrderMessage.java
similarity index 78%
rename from zy-acs-common/src/main/java/com/zy/acs/common/hk/HkOrderMessage.java
rename to zy-acs-common/src/main/java/com/zy/acs/common/hk/order/HkOrderMessage.java
index f125bfb..8ae76d1 100644
--- a/zy-acs-common/src/main/java/com/zy/acs/common/hk/HkOrderMessage.java
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/order/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 {
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/hk/HkOrderNode.java b/zy-acs-common/src/main/java/com/zy/acs/common/hk/order/HkOrderNode.java
similarity index 79%
rename from zy-acs-common/src/main/java/com/zy/acs/common/hk/HkOrderNode.java
rename to zy-acs-common/src/main/java/com/zy/acs/common/hk/order/HkOrderNode.java
index 942fb4d..48dc2a6 100644
--- a/zy-acs-common/src/main/java/com/zy/acs/common/hk/HkOrderNode.java
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/hk/order/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;
 }
diff --git a/zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/listen/MessageListener.java b/zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/listen/MessageListener.java
new file mode 100644
index 0000000..8fda701
--- /dev/null
+++ b/zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/listen/MessageListener.java
@@ -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();
+    }
+
+}
diff --git a/zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/mqtt/handler/ConnectionMessageHandler.java b/zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/mqtt/handler/ConnectionMessageHandler.java
index 170fb0c..f9bfa75 100644
--- a/zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/mqtt/handler/ConnectionMessageHandler.java
+++ b/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;
diff --git a/zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/mqtt/publisher/HkInstantActionPublisher.java b/zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/mqtt/publisher/HkInstantActionPublisher.java
new file mode 100644
index 0000000..fb72003
--- /dev/null
+++ b/zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/mqtt/publisher/HkInstantActionPublisher.java
@@ -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);
+    }
+}
diff --git a/zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/mqtt/publisher/HkOrderPublisher.java b/zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/mqtt/publisher/HkOrderPublisher.java
index 0699675..3354cd8 100644
--- a/zy-acs-hk/zy-acs-hk-latent/src/main/java/com/zy/acs/hk/latent/mqtt/publisher/HkOrderPublisher.java
+++ b/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;

--
Gitblit v1.9.1