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