From 233c0e20548cadafb77efdcb3418f38c6658bbad Mon Sep 17 00:00:00 2001
From: jiazx0107@163.com <jiazx0107@163.com>
Date: 星期四, 26 十月 2023 14:20:57 +0800
Subject: [PATCH] 四川省网关接口相关7
---
src/main/java/com/fzzy/api/data/PushProtocol.java | 24 +
src/main/java/com/fzzy/gateway/service/GatewayDeviceService.java | 39 -
src/main/java/com/fzzy/gateway/GatewayUtils.java | 66 +++
src/main/java/com/fzzy/gateway/hx2023/ScConstant.java | 23 -
src/main/java/com/fzzy/gateway/view/GatewayDevice.view.xml | 76 ++
pom.xml | 8
src/main/java/com/fzzy/api/data/GatewayDeviceType.java | 34 +
src/main/java/com/fzzy/gateway/api/GatewaySyncWeightService.java | 1
src/main/java/com/fzzy/gateway/entity/GatewayDevice.java | 18
src/main/java/com/fzzy/gateway/api/GatewayRemoteManager.java | 17
src/main/java/com/fzzy/api/data/GatewayProtocol.java | 14
src/main/java/com/fzzy/gateway/hx2023/websocket/WebSocketDeviceLed.java | 8
src/main/java/com/fzzy/api/utils/ContextUtil.java | 11
src/main/java/com/fzzy/gateway/hx2023/service/DeviceReportServiceImpl.java | 56 ++
src/main/java/com/fzzy/api/service/ApiTriggerService.java | 57 --
src/main/java/com/fzzy/gateway/api/DeviceReportService.java | 24 +
src/main/java/com/fzzy/protocol/weightyh/SessionListener.java | 31 +
src/main/java/com/fzzy/protocol/weightyh/MessageConsumer.java | 114 +++++
src/main/java/com/fzzy/gateway/hx2023/data/WebSocketPacketHeader.java | 6
src/main/java/com/fzzy/api/utils/BytesUtil.java | 404 +++++++++++++++++++
src/main/java/com/fzzy/gateway/hx2023/websocket/WebSocketDeviceReport.java | 22
src/main/java/com/fzzy/protocol/weightyh/YhScaleServerEngine.java | 43 ++
src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncWeightImpl1.java | 19
src/main/java/com/fzzy/gateway/view/GatewayConf.view.xml | 33 +
src/main/java/com/fzzy/api/utils/SpringUtil.java | 58 ++
src/main/java/com/fzzy/api/data/GatewayDeviceProtocol.java | 19
src/main/java/com/fzzy/api/data/SyncProtocol.java | 18
src/main/java/com/fzzy/gateway/GatewayRunner.java | 1
src/main/java/com/fzzy/protocol/package-info.java | 4
29 files changed, 1,108 insertions(+), 140 deletions(-)
diff --git a/pom.xml b/pom.xml
index f060457..342e6a8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -170,6 +170,14 @@
<!-- </dependency> -->
+ <!-- 寮曞叆IO鍖� -->
+ <dependency>
+ <groupId>com.ld.base.io</groupId>
+ <artifactId>base-io-netty</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </dependency>
+
+
<!-- mysql杩炴帴 -->
<dependency>
<groupId>mysql</groupId>
diff --git a/src/main/java/com/fzzy/api/data/GatewayDeviceProtocol.java b/src/main/java/com/fzzy/api/data/GatewayDeviceProtocol.java
index 93dec3a..e87c538 100644
--- a/src/main/java/com/fzzy/api/data/GatewayDeviceProtocol.java
+++ b/src/main/java/com/fzzy/api/data/GatewayDeviceProtocol.java
@@ -1,6 +1,11 @@
package com.fzzy.api.data;
+import com.fzzy.api.entity.ApiTrigger;
+
+import java.util.ArrayList;
+import java.util.List;
+
/**
* 缃戝叧涓庤澶囩洿鎺ョ殑閫氳鍗忚
*/
@@ -12,12 +17,24 @@
DEVICE_IDCARD_HTTP("DEVICE_IDCARD_HTTP", "韬唤璇�-HTTP鍗忚"),
DEVICE_LED_HTTP("DEVICE_LED_HTTP", "LED-HTTP鍗忚"),
DEVICE_LPR_SDK_HK("DEVICE_LPR_SDK_HK", "杞︾墝璇嗗埆-SDK娴峰悍"),
- DEVICE_TEST("DEVICE_TEST", "娴嬭瘯鍗忚");
+ DEVICE_TEST("DEVICE_TEST", "绌哄崗璁�");
private String code;
private String name;
+ public static List<ApiTrigger> listTrigger() {
+ List<ApiTrigger> list = new ArrayList<>();
+ list.add(new ApiTrigger(GRAIN_FZZY_ZH_2023.getCode(), GRAIN_FZZY_ZH_2023.getName()));
+ list.add(new ApiTrigger(DEVICE_WEIGHT_HTTP.getCode(), DEVICE_WEIGHT_HTTP.getName()));
+ list.add(new ApiTrigger(DEVICE_WEIGHT_TCP_YH.getCode(), DEVICE_WEIGHT_TCP_YH.getName()));
+ list.add(new ApiTrigger(DEVICE_IDCARD_HTTP.getCode(), DEVICE_IDCARD_HTTP.getName()));
+ list.add(new ApiTrigger(DEVICE_LED_HTTP.getCode(), DEVICE_LED_HTTP.getName()));
+ list.add(new ApiTrigger(DEVICE_LPR_SDK_HK.getCode(), DEVICE_LPR_SDK_HK.getName()));
+ list.add(new ApiTrigger(DEVICE_TEST.getCode(), DEVICE_TEST.getName()));
+ return list;
+ }
+
public String getCode() {
return code;
diff --git a/src/main/java/com/fzzy/api/data/GatewayDeviceType.java b/src/main/java/com/fzzy/api/data/GatewayDeviceType.java
index c4d65f4..afbafce 100644
--- a/src/main/java/com/fzzy/api/data/GatewayDeviceType.java
+++ b/src/main/java/com/fzzy/api/data/GatewayDeviceType.java
@@ -1,24 +1,44 @@
package com.fzzy.api.data;
+import com.fzzy.api.entity.ApiTrigger;
+
+import java.util.ArrayList;
+import java.util.List;
+
/**
* 缃戝叧璁惧绫诲瀷
*/
public enum GatewayDeviceType {
- GRAIN_FZZY_ZH_2023("GRAIN_FZZY_ZH_2023", "绮儏-椋庢鑷磋繙鎺у埗鏌滃崗璁�2023"),
- DEVICE_WEIGHT_HTTP("DEVICE_WEIGHT_HTTP", "鍦扮-HTTP鍗忚"),
- DEVICE_WEIGHT_TCP_YH("DEVICE_WEIGHT_TCP_YH", "鍦扮-鑰�鍗嶵CP鍗忚"),
- DEVICE_IDCARD_HTTP("DEVICE_IDCARD_HTTP", "韬唤璇�-HTTP鍗忚"),
- DEVICE_LED_HTTP("DEVICE_LED_HTTP", "LED-HTTP鍗忚"),
- DEVICE_LPR_SDK_HK("DEVICE_LPR_SDK_HK", "杞︾墝璇嗗埆-SDK娴峰悍"),
- DEVICE_TEST("DEVICE_TEST", "娴嬭瘯鍗忚");
+ TYPE_01("TYPE_01", "鍦扮"),
+ TYPE_02("TYPE_02", "杞︾墝璇嗗埆"),
+ TYPE_03("TYPE_03", "閬撻椄"),
+ TYPE_04("TYPE_04", "LED"),
+ TYPE_05("TYPE_05", "鎵︽牱鏈�"),
+ TYPE_06("TYPE_06", "鎽勫儚澶�"),
+ TYPE_07("TYPE_07", "绮儏鍒嗘満"),
+ TYPE_99("TYPE_99", "鐙珛IOT");
private String code;
private String name;
+ public static List<ApiTrigger> listTrigger() {
+ List<ApiTrigger> list = new ArrayList<>();
+ list.add(new ApiTrigger(TYPE_01.getCode(), TYPE_01.getName()));
+ list.add(new ApiTrigger(TYPE_02.getCode(), TYPE_02.getName()));
+ list.add(new ApiTrigger(TYPE_03.getCode(), TYPE_03.getName()));
+ list.add(new ApiTrigger(TYPE_04.getCode(), TYPE_04.getName()));
+ list.add(new ApiTrigger(TYPE_05.getCode(), TYPE_05.getName()));
+ list.add(new ApiTrigger(TYPE_06.getCode(), TYPE_06.getName()));
+ list.add(new ApiTrigger(TYPE_07.getCode(), TYPE_07.getName()));
+ list.add(new ApiTrigger(TYPE_99.getCode(), TYPE_99.getName()));
+ return list;
+ }
+
+
public String getCode() {
return code;
}
diff --git a/src/main/java/com/fzzy/api/data/GatewayProtocol.java b/src/main/java/com/fzzy/api/data/GatewayProtocol.java
index 4948379..44e65ba 100644
--- a/src/main/java/com/fzzy/api/data/GatewayProtocol.java
+++ b/src/main/java/com/fzzy/api/data/GatewayProtocol.java
@@ -1,6 +1,11 @@
package com.fzzy.api.data;
+import com.fzzy.api.entity.ApiTrigger;
+
+import java.util.ArrayList;
+import java.util.List;
+
/**
* 绯荤粺涓庣綉鍏充箣闂寸殑閫氳鍗忚
*/
@@ -15,6 +20,15 @@
private String code;
private String name;
+ public static List<ApiTrigger> listTrigger() {
+ List<ApiTrigger> list = new ArrayList<>();
+ list.add(new ApiTrigger(GATE_WEBSOCKET.getCode(), GATE_WEBSOCKET.getName()));
+ list.add(new ApiTrigger(GATE_MQTT.getCode(), GATE_MQTT.getName()));
+ list.add(new ApiTrigger(GATE_HTTP.getCode(), GATE_HTTP.getName()));
+ list.add(new ApiTrigger(GATE_TEST.getCode(), GATE_TEST.getName()));
+ return list;
+ }
+
public String getCode() {
return code;
diff --git a/src/main/java/com/fzzy/api/data/PushProtocol.java b/src/main/java/com/fzzy/api/data/PushProtocol.java
index b9bc2bd..5b1bed0 100644
--- a/src/main/java/com/fzzy/api/data/PushProtocol.java
+++ b/src/main/java/com/fzzy/api/data/PushProtocol.java
@@ -1,6 +1,11 @@
package com.fzzy.api.data;
+import com.fzzy.api.entity.ApiTrigger;
+
+import java.util.ArrayList;
+import java.util.List;
+
/**
* @Desc: 绯荤粺鏀寔宸茬粡瀹炵幇鐨勫崗璁�
* @author: andy.jia
@@ -26,6 +31,25 @@
private String name;
+ public static List<ApiTrigger> listTrigger() {
+ List<ApiTrigger> list = new ArrayList<>();
+ list.add(new ApiTrigger(GB_DEFAULT.getCode(), GB_DEFAULT.getName()));
+ list.add(new ApiTrigger(GB_2022.getCode(), GB_2022.getName()));
+ list.add(new ApiTrigger(SB_SH_2021.getCode(), SB_SH_2021.getName()));
+ list.add(new ApiTrigger(SB_GD_2022.getCode(), SB_GD_2022.getName()));
+ list.add(new ApiTrigger(SB_GD_2020.getCode(), SB_GD_2020.getName()));
+ list.add(new ApiTrigger(SB_HN_2022.getCode(), SB_HN_2022.getName()));
+ list.add(new ApiTrigger(SB_WHJL_2023.getCode(), SB_WHJL_2023.getName()));
+ list.add(new ApiTrigger(HB_FZZY_JG_2022.getCode(), HB_FZZY_JG_2022.getName()));
+ list.add(new ApiTrigger(SB_SHJdJW_2023.getCode(), SB_SHJdJW_2023.getName()));
+ list.add(new ApiTrigger(SB_SH_2023.getCode(), SB_SH_2023.getName()));
+ list.add(new ApiTrigger(GATEWAY_SC_2023.getCode(), GATEWAY_SC_2023.getName()));
+
+ return list;
+ }
+
+
+
public String getCode() {
return code;
}
diff --git a/src/main/java/com/fzzy/api/data/SyncProtocol.java b/src/main/java/com/fzzy/api/data/SyncProtocol.java
index 984af8c..1da4a40 100644
--- a/src/main/java/com/fzzy/api/data/SyncProtocol.java
+++ b/src/main/java/com/fzzy/api/data/SyncProtocol.java
@@ -1,6 +1,11 @@
package com.fzzy.api.data;
+import com.fzzy.api.entity.ApiTrigger;
+
+import java.util.ArrayList;
+import java.util.List;
+
/**
* @Desc: 绯荤粺鏀寔鐨勫悓姝ュ崗璁�
* @author: andy.jia
@@ -20,6 +25,19 @@
private String name;
+ public static List<ApiTrigger> listTrigger() {
+ List<ApiTrigger> list = new ArrayList<>();
+ list.add(new ApiTrigger(GB_DEFAULT.getCode(), GB_DEFAULT.getName()));
+ list.add(new ApiTrigger(FZZY_V30_GB.getCode(), FZZY_V30_GB.getName()));
+ list.add(new ApiTrigger(FZZY_V35_GB.getCode(), FZZY_V35_GB.getName()));
+ list.add(new ApiTrigger(FZZY_V40_GB.getCode(), FZZY_V40_GB.getName()));
+ list.add(new ApiTrigger(FZZY_V40_WHJL.getCode(), FZZY_V40_WHJL.getName()));
+ list.add(new ApiTrigger(FZZY_V35_SHYZ.getCode(), FZZY_V35_SHYZ.getName()));
+
+ return list;
+ }
+
+
public String getCode() {
return code;
}
diff --git a/src/main/java/com/fzzy/api/service/ApiTriggerService.java b/src/main/java/com/fzzy/api/service/ApiTriggerService.java
index 819b278..adc7454 100644
--- a/src/main/java/com/fzzy/api/service/ApiTriggerService.java
+++ b/src/main/java/com/fzzy/api/service/ApiTriggerService.java
@@ -4,10 +4,7 @@
import com.bstek.dorado.annotation.DataProvider;
import com.bstek.dorado.annotation.Expose;
import com.fzzy.api.Constant;
-import com.fzzy.api.data.GatewayDeviceProtocol;
-import com.fzzy.api.data.GatewayProtocol;
-import com.fzzy.api.data.PushProtocol;
-import com.fzzy.api.data.SyncProtocol;
+import com.fzzy.api.data.*;
import com.fzzy.api.entity.ApiTrigger;
import com.fzzy.api.utils.RedisConst;
import com.fzzy.api.utils.RedisUtil;
@@ -180,21 +177,7 @@
*/
@DataProvider
public List<ApiTrigger> triggerPushProtocol() {
- List<ApiTrigger> list = new ArrayList<>();
- list.add(new ApiTrigger(PushProtocol.GB_DEFAULT.getCode(), PushProtocol.GB_DEFAULT.getName()));
- list.add(new ApiTrigger(PushProtocol.GB_2022.getCode(), PushProtocol.GB_2022.getName()));
- list.add(new ApiTrigger(PushProtocol.SB_SH_2021.getCode(), PushProtocol.SB_SH_2021.getName()));
- list.add(new ApiTrigger(PushProtocol.SB_SC_2021.getCode(), PushProtocol.SB_SC_2021.getName()));
- list.add(new ApiTrigger(PushProtocol.SB_GD_2022.getCode(), PushProtocol.SB_GD_2022.getName()));
- list.add(new ApiTrigger(PushProtocol.SB_GD_2020.getCode(), PushProtocol.SB_GD_2020.getName()));
- list.add(new ApiTrigger(PushProtocol.SB_HN_2022.getCode(), PushProtocol.SB_HN_2022.getName()));
- list.add(new ApiTrigger(PushProtocol.SB_WHJL_2023.getCode(), PushProtocol.SB_WHJL_2023.getName()));
- list.add(new ApiTrigger(PushProtocol.HB_FZZY_JG_2022.getCode(), PushProtocol.HB_FZZY_JG_2022.getName()));
- list.add(new ApiTrigger(PushProtocol.SB_SHJdJW_2023.getCode(), PushProtocol.SB_SHJdJW_2023.getName()));
- list.add(new ApiTrigger(PushProtocol.SB_SH_2023.getCode(), PushProtocol.SB_SH_2023.getName()));
-
- list.add(new ApiTrigger(PushProtocol.GATEWAY_SC_2023.getCode(), PushProtocol.GATEWAY_SC_2023.getName()));
- return list;
+ return PushProtocol.listTrigger();
}
/**
@@ -205,14 +188,7 @@
*/
@DataProvider
public List<ApiTrigger> triggerSyncProtocol() {
- List<ApiTrigger> list = new ArrayList<>();
- list.add(new ApiTrigger(SyncProtocol.GB_DEFAULT.getCode(), SyncProtocol.GB_DEFAULT.getName()));
- list.add(new ApiTrigger(SyncProtocol.FZZY_V30_GB.getCode(), SyncProtocol.FZZY_V30_GB.getName()));
- list.add(new ApiTrigger(SyncProtocol.FZZY_V35_GB.getCode(), SyncProtocol.FZZY_V35_GB.getName()));
- list.add(new ApiTrigger(SyncProtocol.FZZY_V40_GB.getCode(), SyncProtocol.FZZY_V40_GB.getName()));
- list.add(new ApiTrigger(SyncProtocol.FZZY_V40_WHJL.getCode(), SyncProtocol.FZZY_V40_WHJL.getName()));
- list.add(new ApiTrigger(SyncProtocol.FZZY_V35_SHYZ.getCode(), SyncProtocol.FZZY_V35_SHYZ.getName()));
- return list;
+ return SyncProtocol.listTrigger();
}
/**
@@ -223,12 +199,7 @@
*/
@DataProvider
public List<ApiTrigger> triggerGatewayProtocol() {
- List<ApiTrigger> list = new ArrayList<>();
- list.add(new ApiTrigger(GatewayProtocol.GATE_HTTP.getCode(), GatewayProtocol.GATE_HTTP.getName()));
- list.add(new ApiTrigger(GatewayProtocol.GATE_MQTT.getCode(), GatewayProtocol.GATE_MQTT.getName()));
- list.add(new ApiTrigger(GatewayProtocol.GATE_WEBSOCKET.getCode(), GatewayProtocol.GATE_WEBSOCKET.getName()));
- list.add(new ApiTrigger(GatewayProtocol.GATE_TEST.getName(), GatewayProtocol.GATE_TEST.getName()));
- return list;
+ return GatewayProtocol.listTrigger();
}
/**
@@ -239,16 +210,18 @@
*/
@DataProvider
public List<ApiTrigger> triggerGatewayDeviceProtocol() {
- List<ApiTrigger> list = new ArrayList<>();
- list.add(new ApiTrigger(GatewayDeviceProtocol.GRAIN_FZZY_ZH_2023.getCode(), GatewayDeviceProtocol.GRAIN_FZZY_ZH_2023.getName()));
+ return GatewayDeviceProtocol.listTrigger();
+ }
- list.add(new ApiTrigger(GatewayDeviceProtocol.DEVICE_WEIGHT_HTTP.getCode(), GatewayDeviceProtocol.DEVICE_WEIGHT_HTTP.getName()));
- list.add(new ApiTrigger(GatewayDeviceProtocol.DEVICE_IDCARD_HTTP.getCode(), GatewayDeviceProtocol.DEVICE_IDCARD_HTTP.getName()));
- list.add(new ApiTrigger(GatewayDeviceProtocol.DEVICE_LED_HTTP.getCode(), GatewayDeviceProtocol.DEVICE_LED_HTTP.getName()));
- list.add(new ApiTrigger(GatewayDeviceProtocol.DEVICE_LPR_HTTP.getCode(), GatewayDeviceProtocol.DEVICE_LPR_HTTP.getName()));
- list.add(new ApiTrigger(GatewayDeviceProtocol.DEVICE_TEST.getCode(), GatewayDeviceProtocol.DEVICE_TEST.getName()));
-
- return list;
+ /**
+ * ${dorado.getDataProvider("apiTriggerService#triggerGatewayDeviceType").getResult()}
+ * 绯荤粺涓庣綉鍏崇洿鎺ョ殑閫氳鍗忚
+ *
+ * @return
+ */
+ @DataProvider
+ public List<ApiTrigger> triggerGatewayDeviceType() {
+ return GatewayDeviceType.listTrigger();
}
diff --git a/src/main/java/com/fzzy/api/utils/BytesUtil.java b/src/main/java/com/fzzy/api/utils/BytesUtil.java
new file mode 100644
index 0000000..af40a1d
--- /dev/null
+++ b/src/main/java/com/fzzy/api/utils/BytesUtil.java
@@ -0,0 +1,404 @@
+package com.fzzy.api.utils;
+
+import java.math.BigInteger;
+
+public class BytesUtil {
+
+ /**
+ * bytes杈撳嚭鍗佽繘鍒�
+ *
+ * @param bytes
+ * @return
+ */
+ public static Integer bytesToInt(byte[] bytes) {
+ String str = "";
+ int i = 0;
+ boolean flag = true && bytes.length > 0;
+ while (flag) {
+ Byte b = bytes[i];
+ i++;
+ Integer bi = Byte.toUnsignedInt(b);
+ str += toHexString(bi);
+ if (i >= bytes.length || str.endsWith("EEEE"))
+ flag = false;
+ }
+ return Integer.parseInt(str, 16);
+ }
+
+ /**
+ * bytes杈撳嚭鍗佸叚杩涘埗瀛楃涓�
+ *
+ * @param bytes
+ * @return
+ */
+ public static String bytesToString(byte[] bytes) {
+ String str = "";
+ int i = 0;
+ boolean flag = true && bytes.length > 0;
+ while (flag) {
+ Byte b = bytes[i];
+ i++;
+ Integer bi = Byte.toUnsignedInt(b);
+ str += toHexString(bi);
+ if (i >= bytes.length)
+ flag = false;
+ }
+ return str;
+ }
+
+ /**
+ * 鍗佸叚杩涘埗杞瓧鑺�
+ *
+ * @param hex
+ * @return
+ */
+ public static byte hexToByte(Integer hex) {
+ return hex.byteValue();
+ }
+
+ /**
+ * short杞�2瀛楄妭 宸茶皟鏁撮珮浣庝綅
+ *
+ * @param number
+ * @return
+ */
+ public static byte[] shortToByte(short number) {
+ int temp = number;
+ byte[] b = new byte[2];
+ for (int i = 0; i < b.length; i++) {
+ b[i] = new Integer(temp & 0xff).byteValue();// 灏嗘渶浣庝綅淇濆瓨鍦ㄦ渶浣庝綅
+ temp = temp >> 8; // 鍚戝彸绉�8浣�
+ }
+ return b;
+ }
+
+ /**
+ * 浜岃繘鍒跺瓙涓茶浆16杩涘埗瀛愪覆
+ *
+ * @param bin
+ * @return
+ */
+ public static String binToHex(String bin) {
+ String hexStr = "";
+ int size = bin.length() / 8;
+ for (int i = 0; i < size; i++) {
+ String value = bin.substring(i * 8, (i + 1) * 8);
+ int temp = Integer.parseInt(value, 2);
+ String tempHex = Integer.toHexString(temp);
+ hexStr += tempHex;
+ }
+ return hexStr;
+ }
+
+ /**
+ * 浜岃繘鍒惰浆16杩涘埗锛屼笉瓒�2浣嶈ˉ浣�
+ *
+ * @param bin
+ * @return
+ */
+ public static String bin2Hex(String bin) {
+ String hexStr = "";
+ int size = bin.length() / 8;
+ for (int i = 0; i < size; i++) {
+ String value = bin.substring(i * 8, (i + 1) * 8);
+ int temp = Integer.parseInt(value, 2);
+ String tempHex = Integer.toHexString(temp);
+ if (tempHex.length() < 2) {
+ tempHex = "0" + tempHex;
+ }
+ hexStr += tempHex;
+ }
+
+ return hexStr;
+ }
+
+ /**
+ * 杞负鍗佸叚杩涘埗涓诧紝涓嶈冻2浣嶈ˉ0
+ *
+ * @param value
+ * @return
+ */
+ public static String toHexString(int value) {
+ String tempHex = Integer.toHexString(value);
+ if (tempHex.length() < 2) {
+ tempHex = "0" + tempHex;
+ }
+ return tempHex.toUpperCase();
+ }
+
+ public static String getTargetId(String value, boolean isTwo) {
+ String tempHex = Integer.toHexString(Integer.valueOf(value));
+ if (tempHex.length() < 2) {
+ tempHex = "0" + tempHex;
+ }
+ if (isTwo) {
+ if (tempHex.length() < 4) {
+ tempHex = "0" + tempHex;
+ }
+ if (tempHex.length() < 4) {
+ tempHex = "0" + tempHex;
+ }
+ }
+ return tempHex.toUpperCase();
+ }
+
+ /**
+ * 鏍规嵁鏁板�艰幏鍙栧埌闀垮害涓�2瀛楄妭鐨�16杩涘埗瀛楃
+ *
+ * @param value
+ * @return
+ */
+ public static String getHex2LenStr(int value) {
+ String tempHex = Integer.toHexString(value);
+ if (tempHex.length() < 2) {
+ tempHex = "0" + tempHex;
+ }
+ if (tempHex.length() < 4) {
+ tempHex = "0" + tempHex;
+ }
+ if (tempHex.length() < 4) {
+ tempHex = "0" + tempHex;
+ }
+ return tempHex.toUpperCase();
+ }
+
+ public static String getOrderId(int value) {
+ return getHex2LenStr(value);
+ }
+
+ /**
+ * 灏唙alue杞负same涓浉鍚屾弧8浣嶇殑浜岃繘鍒跺瓧涓�
+ *
+ * @param value
+ * @param same
+ * @return
+ */
+ public static String toBinary8StringSame(int value, int same) {
+ String tempBinStr = toBinary8String(value);
+ String rsBinStr = "";
+ for (int i = 0; i < same; i++) {
+ rsBinStr += tempBinStr;
+ }
+ return rsBinStr;
+ }
+
+ /**
+ * 涓嶈冻width涓瓧鑺傚搴︽椂锛屽墠闈㈣ˉ0鑷硍idth*8
+ *
+ * @param value
+ * @param width
+ * @return
+ */
+ public static String toBinary8String(int value, int width) {
+ String tempBinStr = toBinary8String(value);
+ int size = tempBinStr.length();
+ for (int i = 0; i < width; i++) {
+ int temp = (i + 1) * 8;
+ if (temp > size) {
+ tempBinStr = "00000000" + tempBinStr;
+ size = tempBinStr.length();
+ }
+ }
+ return tempBinStr;
+ }
+
+ /**
+ * 琛ヨ冻8浣�
+ *
+ * @param value
+ * @return
+ */
+ public static String toBinary8String(int value) {
+ String temp = Integer.toBinaryString(value);
+ if (value == 0) {
+ temp = "00000000";
+ }
+ int length = temp.length();
+ while (length < 8) {
+ temp = "0" + temp;
+ length = temp.length();
+ }
+ return temp;
+ }
+
+ public static String toEmptyBinaryWidthString(int width) {
+ String str = "";
+ for (int i = 0; i < width; i++) {
+ str += "00000000";
+ }
+ return str;
+ }
+
+ public static byte[] emptyBytes(int bytes) {
+ byte[] bys = new byte[bytes];
+ for (int i = 0; i < bytes; i++) {
+ bys[i] = emptyByte();
+ }
+ return bys;
+ }
+
+ public static byte emptyByte() {
+ Integer b0 = 0x00;
+ return b0.byteValue();
+ }
+
+ public static byte binToBytes(String bin) {
+ return Integer.valueOf(bin, 2).byteValue();
+ }
+
+ public static byte[] binaryStrToBytes(String binStr) {
+ int size = binStr.length() / 8;
+ byte[] bs = new byte[size];
+ for (int i = 0; i < size; i++) {
+ String temp = binStr.substring(i * 8, (i + 1) * 8);
+ bs[i] = Integer.valueOf(temp, 2).byteValue();
+ }
+ return bs;
+ }
+
+ /**
+ * 鍗佸叚杩涘埗涓茶浆瀛楄妭鏁扮粍
+ *
+ * @param hexStr
+ * @return
+ */
+ public static byte[] hexStrToBytes(String hexStr) {
+ int size = hexStr.length() / 2;
+ byte[] bytes = new byte[size];
+ for (int i = 0; i < size; i++) {
+ String tmp = hexStr.substring(i * 2, (i + 1) * 2);
+ Integer tmpHex = Integer.parseInt(tmp, 16);
+ bytes[i] = tmpHex.byteValue();
+ }
+ return bytes;
+ }
+
+ /**
+ * 涓ゅ瓧鑺傞珮浣庝綅瑁呮崲
+ *
+ * @param b
+ * @return
+ */
+ public static byte[] hexHeightLow(byte[] b) {
+ byte[] b2 = new byte[2];
+ // 杞崲楂樹綆浣�
+ b2[0] = b[1];
+ b2[1] = b[0];
+ return b2;
+ }
+
+ /**
+ * 16杩涘埗杞崲涓�10杩涘埗
+ *
+ * @param strHex
+ * @return
+ */
+ public static int hexToInt(String strHex) {
+ short s = (short) (Integer.valueOf(strHex, 16) & 0xffff);
+ return s;
+ }
+
+ /**
+ * 16杩涘埗杞崲涓�10杩涘埗
+ *
+ * @param strHex
+ * @return
+ */
+ public static int hexToBigInt(String strHex) {
+ BigInteger bigint = new BigInteger(strHex, 16);
+ return bigint.intValue();
+ }
+
+ /**
+ * int杞�16杩涘埗瀛楃涓� 2浣� 00 00
+ *
+ * @param num
+ * @return
+ */
+ public static String intToHexStr(int num) {
+ // 闇�瑕佷娇鐢�2瀛楄妭琛ㄧずb
+ return String.format("%04x", num).toUpperCase();
+ }
+
+ // 璁$畻16杩涘埗瀵瑰簲鐨勬暟鍊�
+ public static int GetHex(char ch) throws Exception {
+ if (ch >= '0' && ch <= '9')
+ return (int) (ch - '0');
+ if (ch >= 'a' && ch <= 'f')
+ return (int) (ch - 'a' + 10);
+ if (ch >= 'A' && ch <= 'F')
+ return (int) (ch - 'A' + 10);
+ throw new Exception("error param");
+ }
+
+ // 璁$畻骞�
+ public static int GetPower(int nValue, int nCount) throws Exception {
+ if (nCount < 0)
+ throw new Exception("nCount can't small than 1!");
+ if (nCount == 0)
+ return 1;
+ int nSum = 1;
+ for (int i = 0; i < nCount; ++i) {
+ nSum = nSum * nValue;
+ }
+ return nSum;
+ }
+
+ public static void main(String[] args) {
+
+ double d1 = hexToBigInt("000906EB")/100.0;
+ double d2 = hexToBigInt("0004F6E6")/100.0;
+
+ System.out.println(d1);
+ System.out.println(d2);
+
+ System.out.println(d1 + d2);
+
+ }
+
+ /**
+ * 16杩涘埗瀛楃涓� 楂樹綆鎹綅
+ *
+ * @param info
+ * @return
+ */
+ public static String tran_LH(String info) {
+ return info.substring(2) + info.substring(0, 2);
+ }
+
+ /**
+ * 16杩涘埗瀛楃涓� 楂樹綆鎹綅 8涓瓧绗�
+ *
+ * @param info
+ * @return
+ */
+ public static String tran_LH8(String info) {
+ return tran_LH(info.substring(4)) + tran_LH(info.substring(0, 4));
+ }
+
+ /**
+ * 灏� 4瀛楄妭鐨�16杩涘埗瀛楃涓诧紝杞崲涓�32浣嶅甫绗﹀彿鐨勫崄杩涘埗娴偣鍨�
+ *
+ * 42c60000 -> 99.00
+ *
+ * @param str
+ * 4瀛楄妭 16杩涘埗瀛楃
+ * @return
+ */
+ public static float hexToFloat(String str) {
+ return Float.intBitsToFloat(new BigInteger(str, 16).intValue());
+ }
+
+ /**
+ * 灏嗗甫绗﹀彿鐨�32浣嶆诞鐐规暟瑁呮崲涓�16杩涘埗
+ *
+ * 99.00 -> 42c60000
+ *
+ *
+ * @param value
+ * @return
+ */
+ public static String folatToHexString(Float value) {
+ return Integer.toHexString(Float.floatToIntBits(value));
+ }
+}
diff --git a/src/main/java/com/fzzy/api/utils/ContextUtil.java b/src/main/java/com/fzzy/api/utils/ContextUtil.java
index a88a81c..cc8cafe 100644
--- a/src/main/java/com/fzzy/api/utils/ContextUtil.java
+++ b/src/main/java/com/fzzy/api/utils/ContextUtil.java
@@ -136,4 +136,15 @@
return null;
}
}
+
+ /**
+ * 鐢熸垚TCP杩炴帴鐨凨EY
+ *
+ * @param ip
+ * @param port
+ * @return
+ */
+ public static String getServerKey(String ip, Integer port) {
+ return ip + ":" + port;
+ }
}
diff --git a/src/main/java/com/fzzy/api/utils/SpringUtil.java b/src/main/java/com/fzzy/api/utils/SpringUtil.java
new file mode 100644
index 0000000..f2c8893
--- /dev/null
+++ b/src/main/java/com/fzzy/api/utils/SpringUtil.java
@@ -0,0 +1,58 @@
+package com.fzzy.api.utils;
+
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+@Component
+public class SpringUtil implements ApplicationContextAware {
+
+ private static ApplicationContext applicationContext;
+
+ @Override
+ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+ if (SpringUtil.applicationContext == null) {
+ SpringUtil.applicationContext = applicationContext;
+ }
+ }
+
+ /**
+ * 鑾峰彇applicationContext
+ * @return
+ */
+ public static ApplicationContext getApplicationContext() {
+ return applicationContext;
+ }
+
+ /**
+ * 閫氳繃name鑾峰彇 Bean.
+ * @param name
+ * @return
+ */
+ public static Object getBean(String name) {
+ return getApplicationContext().getBean(name);
+ }
+
+ /**
+ * 閫氳繃class鑾峰彇Bean.
+ * @param clazz
+ * @param <T>
+ * @return
+ */
+ public static <T> T getBean(Class<T> clazz) {
+ return getApplicationContext().getBean(clazz);
+ }
+
+ /**
+ * 閫氳繃name,浠ュ強Clazz杩斿洖鎸囧畾鐨凚ean
+ * @param name
+ * @param clazz
+ * @param <T>
+ * @return
+ */
+ public static <T> T getBean(String name, Class<T> clazz) {
+ return getApplicationContext().getBean(name, clazz);
+ }
+
+}
diff --git a/src/main/java/com/fzzy/gateway/GatewayRunner.java b/src/main/java/com/fzzy/gateway/GatewayRunner.java
index 9dfc519..9597fee 100644
--- a/src/main/java/com/fzzy/gateway/GatewayRunner.java
+++ b/src/main/java/com/fzzy/gateway/GatewayRunner.java
@@ -27,7 +27,6 @@
//鍥涘窛缃戝叧鎺ュ彛锛屽惎鍔ㄩ粯璁よ幏鍙栭壌鏉冧俊鎭紝闀挎湡鏈夋晥
apiInitService.init();
-
}
}
diff --git a/src/main/java/com/fzzy/gateway/GatewayUtils.java b/src/main/java/com/fzzy/gateway/GatewayUtils.java
new file mode 100644
index 0000000..655af00
--- /dev/null
+++ b/src/main/java/com/fzzy/gateway/GatewayUtils.java
@@ -0,0 +1,66 @@
+package com.fzzy.gateway;
+
+import com.fzzy.gateway.entity.GatewayDevice;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 甯搁噺
+ */
+public class GatewayUtils {
+
+
+
+ /**
+ * 璁惧鍦ㄧ嚎鏍囪锛岄拡瀵筗EBSocket璇锋眰锛屾帶鍒惰澶囨槸鍚﹀湪绾匡紝key = deviceId锛孷alue=Y/N
+ */
+ public static Map<String, String> contextOnlineMap = new HashMap<>();
+
+
+ /**
+ * 璁惧缂撳瓨
+ */
+ public static Map<String, GatewayDevice> cacheMapDeviceId = new HashMap<>();
+
+ /**
+ * 璁惧缂撳瓨
+ */
+ public static Map<String, GatewayDevice> cacheMapDeviceSn = new HashMap<>();
+
+
+ public static void add2Cache(GatewayDevice device) {
+ cacheMapDeviceId.put(device.getDeviceId(), device);
+ cacheMapDeviceSn.put(device.getDeviceSn(), device);
+ }
+
+ public static GatewayDevice getCacheByDeviceId(String deviceId) {
+ return cacheMapDeviceId.get(deviceId);
+ }
+
+ public static GatewayDevice getCacheByDeviceSn(String deviceSn) {
+ return cacheMapDeviceSn.get(deviceSn);
+ }
+
+
+ public static void removeCache(GatewayDevice data) {
+ cacheMapDeviceId.remove(data.getDeviceId());
+ cacheMapDeviceSn.remove(data.getDeviceSn());
+ }
+
+
+
+ public static void updateOnline(String deviceId) {
+ contextOnlineMap.put(deviceId, "Y");
+ }
+
+ public static void updateOffOnline(String deviceId) {
+ contextOnlineMap.put(deviceId, "N");
+ }
+
+ public static boolean isOnline(String deviceId) {
+ String value = contextOnlineMap.get(deviceId);
+ if (null == value || "N".equals(value)) return false;
+ return true;
+ }
+}
diff --git a/src/main/java/com/fzzy/gateway/api/DeviceReportService.java b/src/main/java/com/fzzy/gateway/api/DeviceReportService.java
new file mode 100644
index 0000000..0481757
--- /dev/null
+++ b/src/main/java/com/fzzy/gateway/api/DeviceReportService.java
@@ -0,0 +1,24 @@
+package com.fzzy.gateway.api;
+
+import com.fzzy.gateway.entity.GatewayDevice;
+
+
+public interface DeviceReportService {
+
+ /**
+ * 鍗忚瀹氫箟
+ *
+ * @return
+ */
+ String getProvinceProtocol();
+
+
+ /**
+ * 閫氳繃璁惧搴忓垪鍙疯繑鍥炵粨鏋滀俊鎭�
+ *
+ * @param weigh
+ * @param device 璁惧搴忓垪鍙�
+ */
+ String report2GatewayBySn(double weigh, GatewayDevice device);
+
+}
diff --git a/src/main/java/com/fzzy/gateway/api/GatewayRemoteManager.java b/src/main/java/com/fzzy/gateway/api/GatewayRemoteManager.java
index 6df640e..b90a996 100644
--- a/src/main/java/com/fzzy/gateway/api/GatewayRemoteManager.java
+++ b/src/main/java/com/fzzy/gateway/api/GatewayRemoteManager.java
@@ -17,6 +17,8 @@
public static Map<String, GatewayRemoteService> remoteMap = new HashMap<>();
+ public static Map<String, DeviceReportService> reportMap = new HashMap<>();
+
public static Map<String, GatewaySyncGranService> syncGrain = new HashMap<>();
public static Map<String, GatewaySyncIdCardService> syncIdCard = new HashMap<>();
@@ -58,6 +60,11 @@
Map<String, GatewaySyncWeightService> serviceMap6 = applicationContext.getBeansOfType(GatewaySyncWeightService.class);
for (String key : serviceMap6.keySet()) {
syncWeight.put(serviceMap6.get(key).getWeightProtocol(), serviceMap6.get(key));
+ }
+
+ Map<String, DeviceReportService> serviceMap7 = applicationContext.getBeansOfType(DeviceReportService.class);
+ for (String key : serviceMap7.keySet()) {
+ reportMap.put(serviceMap7.get(key).getProvinceProtocol(), serviceMap7.get(key));
}
}
@@ -123,4 +130,14 @@
return syncWeight.get(protocol);
}
+ /**
+ * 鏍规嵁瀹炵幇鍗忚鑾峰彇褰撳墠瀹炵幇鏂规硶
+ *
+ * @param protocol
+ * @return
+ */
+ public DeviceReportService getDeviceReportService(String protocol) {
+ return reportMap.get(protocol);
+ }
+
}
diff --git a/src/main/java/com/fzzy/gateway/api/GatewaySyncWeightService.java b/src/main/java/com/fzzy/gateway/api/GatewaySyncWeightService.java
index 2a59985..061a83c 100644
--- a/src/main/java/com/fzzy/gateway/api/GatewaySyncWeightService.java
+++ b/src/main/java/com/fzzy/gateway/api/GatewaySyncWeightService.java
@@ -22,5 +22,4 @@
* @return
*/
public WeightInfo syncWeightInfo(SyncReqData reqData);
-
}
diff --git a/src/main/java/com/fzzy/gateway/entity/GatewayDevice.java b/src/main/java/com/fzzy/gateway/entity/GatewayDevice.java
index f10ec07..1e9c529 100644
--- a/src/main/java/com/fzzy/gateway/entity/GatewayDevice.java
+++ b/src/main/java/com/fzzy/gateway/entity/GatewayDevice.java
@@ -1,9 +1,11 @@
package com.fzzy.gateway.entity;
import com.bstek.dorado.annotation.PropertyDef;
+
import lombok.Data;
import javax.persistence.*;
+
import java.io.Serializable;
/**
@@ -27,7 +29,7 @@
@PropertyDef(label = "璁惧搴忓垪鍙�")
private String deviceSn;
- @Column(name = "DEVICE_ID_", length = 100)
+ @Column(name = "DEVICE_ID_", length = 50)
@PropertyDef(label = "璁惧ID")
private String deviceId;
@@ -54,7 +56,15 @@
@Column(name = "PORT_")
@PropertyDef(label = "閫氳绔彛")
private Integer port;
-
+
+ @PropertyDef(label = "璁惧鐢ㄦ埛鍚�")
+ @Column(name = "username", length = 50)
+ private String userName;
+
+ @PropertyDef(label = "璁惧瀵嗙爜")
+ @Column(name = "password", length = 50)
+ private String password;
+
@Column(name = "RTSP_", length = 100)
@PropertyDef(label = "瑙嗛RTSP", description = "鐢ㄤ簬灞�鍩熺綉鍐呮姄鎷嶉厤缃�")
private String rtsp;
@@ -67,6 +77,10 @@
@Column(name = "PUSH_PROTOCOL_", length = 20)
private String pushProtocol;
+ @PropertyDef(label = "鐪佸钩鍙板崗璁�")
+ @Column(name = "PROVINCE_PROTOCOL_", length = 20)
+ private String provinceProtocol;
+
@PropertyDef(label = "鍚屾鍗忚")
@Column(name = "SYNC_PROTOCOL_", length = 20)
private String syncProtocol;
diff --git a/src/main/java/com/fzzy/gateway/hx2023/ScConstant.java b/src/main/java/com/fzzy/gateway/hx2023/ScConstant.java
index 1623d17..7ca1516 100644
--- a/src/main/java/com/fzzy/gateway/hx2023/ScConstant.java
+++ b/src/main/java/com/fzzy/gateway/hx2023/ScConstant.java
@@ -1,8 +1,5 @@
package com.fzzy.gateway.hx2023;
-import java.util.HashMap;
-import java.util.Map;
-
/**
* 甯搁噺
*/
@@ -10,26 +7,6 @@
public static String API_URL_AUTH = "${auth}/authorize/login";
-
- /**
- * 璁惧鍦ㄧ嚎鏍囪锛岄拡瀵筗EBSocket璇锋眰锛屾帶鍒惰澶囨槸鍚﹀湪绾匡紝key = deviceId锛孷alue=Y/N
- */
- public static Map<String, String> contextOnlineMap = new HashMap<>();
-
-
- public static void updateOnline(String deviceId) {
- contextOnlineMap.put(deviceId, "Y");
- }
-
- public static void updateOffOnline(String deviceId) {
- contextOnlineMap.put(deviceId, "N");
- }
-
- public static boolean isOnline(String deviceId) {
- String value = contextOnlineMap.get(deviceId);
- if (null == value || "N".equals(value)) return false;
- return true;
- }
}
diff --git a/src/main/java/com/fzzy/gateway/hx2023/data/WebSocketPacketHeader.java b/src/main/java/com/fzzy/gateway/hx2023/data/WebSocketPacketHeader.java
index 58eddd0..00759bb 100644
--- a/src/main/java/com/fzzy/gateway/hx2023/data/WebSocketPacketHeader.java
+++ b/src/main/java/com/fzzy/gateway/hx2023/data/WebSocketPacketHeader.java
@@ -8,13 +8,11 @@
private String productId;
- private String keepOnlineTimeoutSeconds;
+ private int keepOnlineTimeoutSeconds = 600 ;
- private String keepOnline;
+ private boolean keepOnline = true;
private String deviceName;
private String orgId;
-
-
}
diff --git a/src/main/java/com/fzzy/gateway/hx2023/service/DeviceReportServiceImpl.java b/src/main/java/com/fzzy/gateway/hx2023/service/DeviceReportServiceImpl.java
new file mode 100644
index 0000000..7f76daa
--- /dev/null
+++ b/src/main/java/com/fzzy/gateway/hx2023/service/DeviceReportServiceImpl.java
@@ -0,0 +1,56 @@
+package com.fzzy.gateway.hx2023.service;
+
+import com.fzzy.api.data.GatewayProtocol;
+import com.fzzy.api.data.PushProtocol;
+import com.fzzy.gateway.api.DeviceReportService;
+import com.fzzy.gateway.entity.GatewayDevice;
+import com.fzzy.gateway.hx2023.data.WebSocketPacket;
+import com.fzzy.gateway.hx2023.data.WebSocketPacketHeader;
+import com.fzzy.gateway.hx2023.websocket.WebSocketDeviceReport;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+@Slf4j
+@Component
+public class DeviceReportServiceImpl implements DeviceReportService {
+
+
+ @Resource
+ private WebSocketDeviceReport webSocketDeviceReport;
+
+ @Override
+ public String getProvinceProtocol() {
+ return PushProtocol.GATEWAY_SC_2023.getCode();
+ }
+
+ @Override
+ public String report2GatewayBySn(double weigh, GatewayDevice device) {
+
+ if (null == device) {
+ log.error("-----------娌℃湁鑾峰彇鍒拌澶囬厤缃俊鎭�-----");
+ return "ERROR:娌℃湁鑾峰彇鍒拌澶囬厤缃俊鎭�";
+ }
+
+ //浣跨敤WEBSOCKET杩斿洖
+ if (GatewayProtocol.GATE_WEBSOCKET.equals(device.getPushProtocol())) {
+
+ WebSocketPacket packet = new WebSocketPacket();
+
+ WebSocketPacketHeader header = new WebSocketPacketHeader();
+ header.setDeviceName(device.getDeviceName());
+ packet.setHeaders(header);
+ packet.setMessageType("");
+ packet.setDeviceId(device.getDeviceId());
+ packet.setProperties(null);
+ packet.setTimestamp(System.currentTimeMillis());
+
+
+ webSocketDeviceReport.sendByPacket(packet);
+
+ }
+
+ return null;
+ }
+}
diff --git a/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncWeightImpl1.java b/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncWeightImpl1.java
index 970be79..c615730 100644
--- a/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncWeightImpl1.java
+++ b/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncWeightImpl1.java
@@ -1,14 +1,18 @@
package com.fzzy.gateway.hx2023.service;
import com.fzzy.api.data.GatewayDeviceProtocol;
-import com.fzzy.gateway.api.GatewaySyncLprService;
+import com.fzzy.api.data.GatewayProtocol;
+import com.fzzy.api.utils.ContextUtil;
import com.fzzy.gateway.api.GatewaySyncWeightService;
-import com.fzzy.gateway.hx2023.data.LprData;
-import com.fzzy.gateway.hx2023.data.SyncReqData;
-import com.fzzy.gateway.hx2023.data.WeightInfo;
+import com.fzzy.gateway.entity.GatewayDevice;
+import com.fzzy.gateway.hx2023.data.*;
+import com.fzzy.gateway.hx2023.websocket.WebSocketDeviceReport;
+import com.fzzy.gateway.service.GatewayDeviceService;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
/**
* 缃戝叧涓庤澶囦箣闂寸殑閫氳
@@ -19,6 +23,12 @@
public class HxGatewaySyncWeightImpl1 implements GatewaySyncWeightService {
+ @Resource
+ private GatewayDeviceService deviceService;
+ @Resource
+ private WebSocketDeviceReport webSocketDeviceReport;
+
+
@Override
public String getWeightProtocol() {
return GatewayDeviceProtocol.DEVICE_WEIGHT_TCP_YH.getCode();
@@ -27,6 +37,7 @@
@Override
public WeightInfo syncWeightInfo(SyncReqData reqData) {
+ //doNothing
return null;
}
diff --git a/src/main/java/com/fzzy/gateway/hx2023/websocket/WebSocketDeviceLed.java b/src/main/java/com/fzzy/gateway/hx2023/websocket/WebSocketDeviceLed.java
index 7662a8a..a8d27d6 100644
--- a/src/main/java/com/fzzy/gateway/hx2023/websocket/WebSocketDeviceLed.java
+++ b/src/main/java/com/fzzy/gateway/hx2023/websocket/WebSocketDeviceLed.java
@@ -1,7 +1,7 @@
package com.fzzy.gateway.hx2023.websocket;
import com.alibaba.fastjson.JSONObject;
-import com.fzzy.gateway.hx2023.ScConstant;
+import com.fzzy.gateway.GatewayUtils;
import com.fzzy.gateway.hx2023.data.WebSocketPacket;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
@@ -42,7 +42,7 @@
sessionPool.put(key, session);
sessionIds.put(session.getId(), key);
- ScConstant.updateOnline(deviceId);
+ GatewayUtils.updateOnline(deviceId);
log.info("new webSocket,clientId={}", key);
}
@@ -57,7 +57,7 @@
String deviceId = key.substring(0, key.indexOf("-"));
- ScConstant.updateOffOnline(deviceId);
+ GatewayUtils.updateOffOnline(deviceId);
log.info("WebSocket杩炴帴鍏抽棴={}", key);
@@ -84,7 +84,7 @@
String deviceId = key.substring(0, key.indexOf("-"));
- ScConstant.updateOffOnline(deviceId);
+ GatewayUtils.updateOffOnline(deviceId);
sessionPool.remove(key);
sessionIds.remove(session.getId());
diff --git a/src/main/java/com/fzzy/gateway/hx2023/websocket/WebSocketDevice.java b/src/main/java/com/fzzy/gateway/hx2023/websocket/WebSocketDeviceReport.java
similarity index 83%
rename from src/main/java/com/fzzy/gateway/hx2023/websocket/WebSocketDevice.java
rename to src/main/java/com/fzzy/gateway/hx2023/websocket/WebSocketDeviceReport.java
index dce5180..b886a61 100644
--- a/src/main/java/com/fzzy/gateway/hx2023/websocket/WebSocketDevice.java
+++ b/src/main/java/com/fzzy/gateway/hx2023/websocket/WebSocketDeviceReport.java
@@ -1,6 +1,7 @@
package com.fzzy.gateway.hx2023.websocket;
import com.alibaba.fastjson.JSONObject;
+import com.fzzy.gateway.GatewayUtils;
import com.fzzy.gateway.hx2023.ScConstant;
import com.fzzy.gateway.hx2023.data.WebSocketPacket;
import lombok.extern.slf4j.Slf4j;
@@ -19,7 +20,7 @@
@Slf4j
@Component
@ServerEndpoint(value = "/device/{productId}/{deviceId}/message/property/report")
-public class WebSocketDevice {
+public class WebSocketDeviceReport {
private static Map<String, Session> sessionPool = new ConcurrentHashMap<>();
private static Map<String, String> sessionIds = new ConcurrentHashMap<>();
@@ -42,7 +43,7 @@
sessionPool.put(key, session);
sessionIds.put(session.getId(), key);
- ScConstant.updateOnline(deviceId);
+ GatewayUtils.updateOnline(deviceId);
log.info("new webSocket,clientId={}", key);
}
@@ -52,9 +53,9 @@
String key = sessionIds.get(session.getId());
- String deviceId = key.substring(0, key.indexOf("-"));
+ String deviceId = key.substring(key.indexOf("-"));
- ScConstant.updateOffOnline(deviceId);
+ GatewayUtils.updateOffOnline(deviceId);
sessionPool.remove(key);
sessionIds.remove(session.getId());
@@ -81,9 +82,9 @@
String key = sessionIds.get(session.getId());
- String deviceId = key.substring(0, key.indexOf("-"));
+ String deviceId = key.substring(key.indexOf("-"));
- ScConstant.updateOffOnline(deviceId);
+ GatewayUtils.updateOffOnline(deviceId);
sessionPool.remove(key);
sessionIds.remove(session.getId());
@@ -96,17 +97,24 @@
*
* @param packet
*/
- public static void sendByPacket(WebSocketPacket packet) {
+ public void sendByPacket(WebSocketPacket packet) {
if (StringUtils.isEmpty(packet.getDeviceId())) {
log.error("WebSocket淇℃伅鎺ㄩ�佸け璐ワ紝璁惧缂栫爜涓虹┖銆�");
return;
}
+
String tag = packet.getDeviceId();
// 閬嶅巻鎺ㄩ��
Session session;
+ String productId;
for (String key : sessionPool.keySet()) {
+
+ productId = key.substring(0, key.indexOf("-"));
+
+ packet.getHeaders().setProductId(productId);
+
if (key.indexOf(tag) != -1) {
session = sessionPool.get(key);
session.getAsyncRemote().sendText(
diff --git a/src/main/java/com/fzzy/gateway/service/GatewayDeviceService.java b/src/main/java/com/fzzy/gateway/service/GatewayDeviceService.java
index 5a738b1..fd196ab 100644
--- a/src/main/java/com/fzzy/gateway/service/GatewayDeviceService.java
+++ b/src/main/java/com/fzzy/gateway/service/GatewayDeviceService.java
@@ -6,22 +6,22 @@
import com.fzzy.api.utils.ContextUtil;
import com.fzzy.api.utils.RedisConst;
import com.fzzy.api.utils.RedisUtil;
+import com.fzzy.gateway.GatewayUtils;
import com.fzzy.gateway.entity.GatewayDevice;
import com.fzzy.gateway.service.repository.GatewayDeviceRep;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
@Component
public class GatewayDeviceService {
@Resource
private GatewayDeviceRep gatewayDeviceRep;
- @Resource
- private RedisUtil redisUtil;
-
/**
* gatewayDeviceService#listAll
@@ -30,10 +30,7 @@
*/
@DataProvider
public List<GatewayDevice> listAll() {
-
- List<GatewayDevice> list = gatewayDeviceRep.findAll();
-
- return list;
+ return gatewayDeviceRep.findAll();
}
/**
@@ -48,6 +45,15 @@
if (null == data.getId()) {
data.setId(ContextUtil.getUUID());
+ }
+
+
+ if (null == data.getDeviceSn()) {
+ if (null != entity.getIp()) {
+ data.setDeviceSn(entity.getIp());
+ } else {
+ data.setDeviceSn(data.getDeviceId());
+ }
}
gatewayDeviceRep.save(data);
@@ -66,6 +72,8 @@
BeanUtils.copyProperties(data, data2);
gatewayDeviceRep.delete(data2);
+ GatewayUtils.removeCache(data2);
+
flushCache();
return null;
}
@@ -78,23 +86,8 @@
public void flushCache() {
List<GatewayDevice> list = listAll();
if (null == list || list.isEmpty()) return;
- String key;
for (GatewayDevice device : list) {
- key = RedisConst.buildKey(RedisConst.KYE_GATE_DEVICE, device.getDeviceId());
- redisUtil.set(key, device);
+ GatewayUtils.add2Cache(device);
}
}
-
- /**
- * 缂撳瓨鑾峰彇璁惧淇℃伅
- *
- * @param deviceId
- * @return
- */
- public GatewayDevice getCacheDevice(String deviceId) {
- String key = RedisConst.buildKey(RedisConst.KYE_GATE_DEVICE, deviceId);
- return (GatewayDevice) redisUtil.get(key);
- }
-
-
}
diff --git a/src/main/java/com/fzzy/gateway/view/GatewayConf.view.xml b/src/main/java/com/fzzy/gateway/view/GatewayConf.view.xml
index 9c6076c..131ebaa 100644
--- a/src/main/java/com/fzzy/gateway/view/GatewayConf.view.xml
+++ b/src/main/java/com/fzzy/gateway/view/GatewayConf.view.xml
@@ -16,31 +16,39 @@
<Property name="required">true</Property>
</PropertyDef>
<PropertyDef name="appId">
- <Property/>
+ <Property></Property>
<Property name="label">appId</Property>
</PropertyDef>
<PropertyDef name="gatewayId">
- <Property/>
+ <Property></Property>
<Property name="label">缃戝叧ID</Property>
</PropertyDef>
- <PropertyDef name="gatewayIp">
+ <PropertyDef name="gatewayUsername">
<Property/>
+ <Property name="label">缃戝叧鐢ㄦ埛鍚�</Property>
+ </PropertyDef>
+ <PropertyDef name="gatewayPassword">
+ <Property/>
+ <Property name="label">缃戝叧瀵嗙爜</Property>
+ </PropertyDef>
+ <PropertyDef name="gatewayIp">
+ <Property></Property>
<Property name="label">缃戝叧IP</Property>
</PropertyDef>
<PropertyDef name="gatewayMac">
- <Property/>
+ <Property></Property>
<Property name="label">缃戝叧Mac</Property>
</PropertyDef>
<PropertyDef name="gatewayCPU">
- <Property/>
+ <Property></Property>
<Property name="label">缃戝叧CPU</Property>
</PropertyDef>
<PropertyDef name="gatewayMem">
- <Property/>
+ <Property></Property>
<Property name="label">缃戝叧鍐呭瓨</Property>
</PropertyDef>
<PropertyDef name="gatewayHardDisk">
- <Property/>
+ <Property></Property>
<Property name="label">缃戝叧纭洏</Property>
</PropertyDef>
<PropertyDef name="userName">
@@ -216,6 +224,17 @@
<Editor/>
</AutoFormElement>
<AutoFormElement>
+ <Property name="name">gatewayUsername</Property>
+ <Property name="property">gatewayUsername</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">gatewayPassword</Property>
+ <Property name="property">gatewayPassword</Property>
+ <Property name="editorType">PasswordEditor</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
<Property name="name">gatewayIp</Property>
<Property name="property">gatewayIp</Property>
<Editor/>
diff --git a/src/main/java/com/fzzy/gateway/view/GatewayDevice.view.xml b/src/main/java/com/fzzy/gateway/view/GatewayDevice.view.xml
index 617451d..1d47410 100644
--- a/src/main/java/com/fzzy/gateway/view/GatewayDevice.view.xml
+++ b/src/main/java/com/fzzy/gateway/view/GatewayDevice.view.xml
@@ -22,14 +22,15 @@
<PropertyDef name="type">
<Property></Property>
<Property name="label">璁惧绫诲瀷</Property>
+ <Property name="mapping">
+ <Property name="keyProperty">code</Property>
+ <Property name="valueProperty">name</Property>
+ <Property name="mapValues">${dorado.getDataProvider("apiTriggerService#triggerGatewayDeviceType").getResult()}</Property>
+ </Property>
</PropertyDef>
<PropertyDef name="depotId">
<Property></Property>
- <Property name="label">鎵�灞炰粨搴�</Property>
- </PropertyDef>
- <PropertyDef name="depotName">
- <Property></Property>
- <Property name="label">鎵�灞炰粨搴�</Property>
+ <Property name="label">鎵�灞炰粨搴撶紪鐮�</Property>
</PropertyDef>
<PropertyDef name="ip">
<Property></Property>
@@ -43,6 +44,16 @@
<Property></Property>
<Property name="label">瑙嗛RTSP</Property>
</PropertyDef>
+ <PropertyDef name="provinceProtocol">
+ <Property/>
+ <Property name="label">鐪佸钩鍙板崗璁�</Property>
+ <Property name="mapping">
+ <Property name="mapValues">${dorado.getDataProvider("apiTriggerService#triggerPushProtocol").getResult()}</Property>
+ <Property name="keyProperty">code</Property>
+ <Property name="valueProperty">name</Property>
+ </Property>
+ <Property name="required">true</Property>
+ </PropertyDef>
<PropertyDef name="pushProtocol">
<Property></Property>
<Property name="label">绯荤粺缃戝叧閫氳鍗忚</Property>
@@ -55,7 +66,7 @@
</PropertyDef>
<PropertyDef name="syncProtocol">
<Property></Property>
- <Property name="label">缃戝叧涓庤澶囬�氳鍗忚</Property>
+ <Property name="label">缃戝叧璁惧閫氳鍗忚</Property>
<Property name="mapping">
<Property name="keyProperty">code</Property>
<Property name="valueProperty">name</Property>
@@ -76,8 +87,24 @@
<Property name="label">HTTP鍦板潃</Property>
</PropertyDef>
<PropertyDef name="deviceSn">
- <Property/>
+ <Property></Property>
<Property name="label">璁惧搴忓垪鍙�</Property>
+ </PropertyDef>
+ <PropertyDef name="serPort">
+ <Property name="dataType">int</Property>
+ <Property name="label">TCP鏈嶅姟绔彛</Property>
+ </PropertyDef>
+ <PropertyDef name="userName">
+ <Property/>
+ <Property name="label">璁惧鐢ㄦ埛鍚�</Property>
+ </PropertyDef>
+ <PropertyDef name="password">
+ <Property/>
+ <Property name="label">璁惧瀵嗙爜</Property>
+ </PropertyDef>
+ <PropertyDef name="depotName">
+ <Property/>
+ <Property name="label">鎵�灞炰粨搴�</Property>
</PropertyDef>
</DataType>
</Model>
@@ -150,9 +177,6 @@
<DataColumn name="type">
<Property name="property">type</Property>
</DataColumn>
- <DataColumn name="depotName">
- <Property name="property">depotName</Property>
- </DataColumn>
<DataColumn name="syncProtocol">
<Property name="property">syncProtocol</Property>
</DataColumn>
@@ -192,13 +216,18 @@
<AutoForm>
<Property name="dataSet">dsMain</Property>
<Property name="cols">*,*,*</Property>
- <Property name="labelWidth">100</Property>
+ <Property name="labelWidth">125</Property>
<Property name="labelAlign">right</Property>
<Property name="labelSeparator">锛�</Property>
<Property name="labelPosition">left</Property>
- <AutoFormElement>
+ <AutoFormElement layoutConstraint="colSpan:2">
<Property name="name">deviceId</Property>
<Property name="property">deviceId</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">deviceSn</Property>
+ <Property name="property">deviceSn</Property>
<Editor/>
</AutoFormElement>
<AutoFormElement>
@@ -209,6 +238,11 @@
<AutoFormElement>
<Property name="name">type</Property>
<Property name="property">type</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">orgId</Property>
+ <Property name="property">orgId</Property>
<Editor/>
</AutoFormElement>
<AutoFormElement>
@@ -227,18 +261,32 @@
<Editor/>
</AutoFormElement>
<AutoFormElement>
+ <Property name="name">userName</Property>
+ <Property name="property">userName</Property>
+ <Editor/>
+ </AutoFormElement>
+ <AutoFormElement>
+ <Property name="name">password</Property>
+ <Property name="property">password</Property>
+ <Editor/>
+ </AutoFormElement>
+ <Control/>
+ <AutoFormElement>
<Property name="name">pushProtocol</Property>
<Property name="property">pushProtocol</Property>
+ <Property name="labelWidth">150</Property>
<Editor/>
</AutoFormElement>
<AutoFormElement>
<Property name="name">syncProtocol</Property>
<Property name="property">syncProtocol</Property>
+ <Property name="labelWidth">150</Property>
<Editor/>
</AutoFormElement>
<AutoFormElement>
- <Property name="name">orgId</Property>
- <Property name="property">orgId</Property>
+ <Property name="name">serPort</Property>
+ <Property name="property">serPort</Property>
+ <Property name="labelWidth">150</Property>
<Editor/>
</AutoFormElement>
<AutoFormElement layoutConstraint="colSpan:2">
diff --git a/src/main/java/com/fzzy/protocol/package-info.java b/src/main/java/com/fzzy/protocol/package-info.java
new file mode 100644
index 0000000..ed755f0
--- /dev/null
+++ b/src/main/java/com/fzzy/protocol/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * 绯荤粺鐩稿叧鍗忚
+ */
+package com.fzzy.protocol;
\ No newline at end of file
diff --git a/src/main/java/com/fzzy/protocol/weightyh/MessageConsumer.java b/src/main/java/com/fzzy/protocol/weightyh/MessageConsumer.java
new file mode 100644
index 0000000..354596c
--- /dev/null
+++ b/src/main/java/com/fzzy/protocol/weightyh/MessageConsumer.java
@@ -0,0 +1,114 @@
+package com.fzzy.protocol.weightyh;
+
+import com.fzzy.api.utils.BytesUtil;
+import com.fzzy.api.utils.SpringUtil;
+import com.fzzy.gateway.GatewayUtils;
+import com.fzzy.gateway.api.DeviceReportService;
+import com.fzzy.gateway.api.GatewayRemoteManager;
+import com.fzzy.gateway.entity.GatewayDevice;
+import com.fzzy.gateway.hx2023.service.HxGatewaySyncWeightImpl1;
+import com.ld.io.api.IoMsgConsumer;
+import com.ld.io.api.IoSession;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 鍦扮淇℃伅鎺ㄩ��
+ *
+ * @author: andy.jia
+ * @description:
+ * @version:
+ * @data:2020骞�3鏈�19鏃�
+ */
+@Slf4j
+public class MessageConsumer implements IoMsgConsumer {
+
+ private long timeTag = 0;
+
+ private GatewayRemoteManager reportService;
+
+ @Override
+ public void consume(IoSession session, byte[] bytes) {
+ analysisInfo(session.getAddress(), session.getPort(), bytes);
+ }
+
+ /**
+ * 02 2B 30 30 31 31 38 30 30 31 33 03 02寮�濮� 03 缁撴潫
+ */
+ public void analysisInfo(String ip, Integer port, byte[] bytes) {
+ String strMsg = BytesUtil.bytesToString(bytes);
+ //log.debug("寮�濮嬭В鏋愬湴纾呰繑鍥炰俊鎭�=" + strMsg);
+ if (strMsg.length() < 22) {
+ return;
+ }
+
+ // 姣忛棿闅�2.5鎵ц涓�娆�
+ if (System.currentTimeMillis() - timeTag <= 2500) {
+ return;
+ }
+ timeTag = System.currentTimeMillis();
+
+ String temp = strMsg.substring(2, 4);
+ String symbol = HexASCIIToConvert(temp);
+ temp = strMsg.substring(4, 16);
+ String w = HexASCIIToConvert(temp);
+ temp = strMsg.substring(16, 18);
+ int d = getProduct(Integer.parseInt(HexASCIIToConvert(temp)));
+
+ //鏈�缁堥噸閲忕粨鏋�
+ double weigh = Double.valueOf(w) / d;
+
+
+ log.debug("----------鍦扮绉伴噸鏁板�艰В鏋�------{}", weigh);
+
+ //褰撳墠鍦扮鍗忚涓嶆敮鎸佷紶閫扴N锛屼娇鐢ㄥ眬鍩熺綉IP浣滀负SN
+ String sn = ip;
+
+
+ //鏍规嵁淇℃伅鑾峰彇璁惧
+ GatewayDevice device = GatewayUtils.getCacheByDeviceSn(sn);
+
+ if (null == device) {
+ log.error("----------娌℃湁鑾峰彇鍒拌澶囦俊鎭�--------{}", sn);
+ return;
+ }
+
+ //鐩存帴璋冪敤瀹炵幇绫伙紝鏇村瀹炵幇绫诲崟鐙皟鐢�
+ if (null == reportService) {
+ reportService = SpringUtil.getBean(GatewayRemoteManager.class);
+ }
+
+ reportService.getDeviceReportService(device.getProvinceProtocol()).report2GatewayBySn(weigh, device);
+ }
+
+ /**
+ * 鏍规嵁灏忔暟鐐逛綅鏁拌绠楀師鏁板瓧闇�瑕侀櫎浠ュ灏�
+ *
+ * @param i
+ */
+ private int getProduct(int i) {
+ if (i == 0)
+ return 1;
+ int num = 1;
+ for (int a = 0; a < i; a++) {
+ num = num * 10;
+ }
+ return num;
+ }
+
+ private String HexASCIIToConvert(String value) {
+ // String value = "30 30 31 31 38 30 30";
+ StringBuffer sbu = new StringBuffer();
+ char t = 0;
+ int size = value.length() / 2;
+ for (int i = 0; i < size; i++) {
+ String tmp = value.substring(i * 2, (i + 1) * 2);
+ t = (char) Integer.parseInt(""
+ + BytesUtil.bytesToInt(BytesUtil.hexStrToBytes(tmp)));
+ sbu.append(t);
+ }
+
+ return sbu.toString();
+ }
+
+
+}
diff --git a/src/main/java/com/fzzy/protocol/weightyh/SessionListener.java b/src/main/java/com/fzzy/protocol/weightyh/SessionListener.java
new file mode 100644
index 0000000..87855a4
--- /dev/null
+++ b/src/main/java/com/fzzy/protocol/weightyh/SessionListener.java
@@ -0,0 +1,31 @@
+package com.fzzy.protocol.weightyh;
+
+import com.fzzy.api.utils.ContextUtil;
+import com.ld.io.api.IoSession;
+import com.ld.io.api.IoSessionListener;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * @author: andy.jia
+ * @description:
+ * @version:
+ */
+@Slf4j
+public class SessionListener implements IoSessionListener {
+
+ public static final String BEAN_ID = "yh.sessionListener";
+
+ @Override
+ public void onCreate(IoSession session) {
+ // 娣诲姞鑷畾涔変笟鍔D
+ session.setBusinessKey(ContextUtil.getServerKey(session.getAddress(), session.getPort()));
+
+ log.info("鍦扮鎴愬姛杩炴帴锛孖P={},port={}", session.getAddress(), session.getPort());
+ }
+
+ @Override
+ public void onDestroy(IoSession session) {
+ log.info("鍦扮鏂紑杩炴帴锛孖P={},port={}", session.getAddress(), session.getPort());
+
+ }
+}
diff --git a/src/main/java/com/fzzy/protocol/weightyh/YhScaleServerEngine.java b/src/main/java/com/fzzy/protocol/weightyh/YhScaleServerEngine.java
new file mode 100644
index 0000000..9d5221a
--- /dev/null
+++ b/src/main/java/com/fzzy/protocol/weightyh/YhScaleServerEngine.java
@@ -0,0 +1,43 @@
+package com.fzzy.protocol.weightyh;
+
+import com.fzzy.api.utils.BytesUtil;
+import com.ld.io.api.IoServerOption;
+import com.ld.io.netty.NettyServer;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 鍦扮鏈嶅姟鍚姩
+ *
+ * @author: andy.jia
+ * @description:
+ * @version:
+ */
+@Slf4j
+public class YhScaleServerEngine {
+
+ public static final int port = 19090;
+
+ public static NettyServer ioServer = null;
+ // 閰嶇疆娑堟伅鎺ユ敹绫�
+ private static MessageConsumer messageConsume = new MessageConsumer();
+ // 鐩戝惉浼氳瘽鐨勫垱寤轰笌閿�姣�
+ private static SessionListener ioSessionListener = new SessionListener();
+
+ public static void start() throws InterruptedException {
+ // 閰嶇疆Server鐨勯厤缃�
+ IoServerOption ioServerOption = new IoServerOption(port);
+ // 鎷嗗寘鍣ㄩ厤缃�
+ //ioServerOption.setSplitDecoderType(SplitByteDecoderType.DELIMITER_SYMBOL);
+ ioServerOption.setDelimiter(BytesUtil.hexStrToBytes("03"));
+
+ ioServer = new NettyServer(ioServerOption, messageConsume, ioSessionListener);
+ ioServer.startup();
+
+ log.info("* ========================");
+ log.info("* ");
+ log.info("* 鍦扮-鑰�鍗庡搧鐗屾湇鍔″惎鍔紝绔彛鍙�={}", YhScaleServerEngine.port);
+ log.info("* ");
+ log.info("* ========================");
+ }
+
+}
--
Gitblit v1.9.3