From 231cdeb9b7a55ba08fb8cffda35f5535b9292873 Mon Sep 17 00:00:00 2001
From: jiazx0107@163.com <jiazx0107@163.com>
Date: 星期四, 14 十二月 2023 19:33:41 +0800
Subject: [PATCH] 提交正来电子协议解析-2

---
 src/main/java/com/fzzy/protocol/zldz/server/SessionListener.java            |   31 ++++++++--
 src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1115.java            |    4 
 src/main/java/com/fzzy/protocol/zldz/analysis/AnalysisGrain.java            |    7 -
 src/main/java/com/fzzy/api/data/ApiCommonDevice.java                        |    2 
 src/main/java/com/fzzy/protocol/ProtocolRunner.java                         |   10 +++
 src/main/java/com/fzzy/protocol/bhzn/server/BhznGrainV2ServerEngine.java    |    3 
 src/main/java/com/fzzy/protocol/bhzn/server/BhznGrainV2SessionListener.java |    6 -
 src/main/java/com/fzzy/gateway/entity/GatewayDevice.java                    |   14 ++--
 src/main/java/com/fzzy/protocol/zldz/cmd/OnLineCommandBuilder.java          |   40 +++++++++++++
 src/main/java/com/fzzy/protocol/zldz/analysis/AnalysisConf.java             |   46 +++++++-------
 src/main/java/com/fzzy/protocol/zldz/analysis/AnalysisService.java          |    2 
 11 files changed, 115 insertions(+), 50 deletions(-)

diff --git a/src/main/java/com/fzzy/api/data/ApiCommonDevice.java b/src/main/java/com/fzzy/api/data/ApiCommonDevice.java
index 9cde079..91f736d 100644
--- a/src/main/java/com/fzzy/api/data/ApiCommonDevice.java
+++ b/src/main/java/com/fzzy/api/data/ApiCommonDevice.java
@@ -33,4 +33,6 @@
 
     private Date onlineTime = new Date();
 
+    private String cable;//灞�-琛�-鍒�
+
 }
diff --git a/src/main/java/com/fzzy/gateway/entity/GatewayDevice.java b/src/main/java/com/fzzy/gateway/entity/GatewayDevice.java
index b69ac87..d2dd7be 100644
--- a/src/main/java/com/fzzy/gateway/entity/GatewayDevice.java
+++ b/src/main/java/com/fzzy/gateway/entity/GatewayDevice.java
@@ -121,23 +121,23 @@
     @PropertyDef(label = "鍦ㄧ嚎鐘舵��")
     private String status = Constant.YN_Y;
 
-    @Column(name = "CABLE_START_")
+    @Column(name = "CABLE_START_", length = 4)
     @PropertyDef(label = "鐢电紗寮�濮�")
-    private int cableStart;
+    private String cableStart;
 
-    @Column(name = "CABLE_END_")
+    @Column(name = "CABLE_END_", length = 4)
     @PropertyDef(label = "鐢电紗鎴嚦")
-    private int cableEnd;
+    private String cableEnd;
 
-    @Column(name = "TH_ADDR_")
+    @Column(name = "TH_ADDR_",length = 4)
     @PropertyDef(label = "娓╂箍搴﹀湴鍧�")
     private String thAddr;
 
-    @Column(name = "CABLE_FORMAT", length = 4)
+    @Column(name = "CABLE_FORMAT_", length = 4)
     @PropertyDef(label = "鐢电紗鍒跺紡")
     private String cableFormat;
 
-    @Column(name = "CABLE_TYPE", length = 4)
+    @Column(name = "CABLE_TYPE_", length = 4)
     @PropertyDef(label = "鐢电紗绫诲瀷")
     private String cableType;
 
diff --git a/src/main/java/com/fzzy/protocol/ProtocolRunner.java b/src/main/java/com/fzzy/protocol/ProtocolRunner.java
index 5287ebb..c883fcc 100644
--- a/src/main/java/com/fzzy/protocol/ProtocolRunner.java
+++ b/src/main/java/com/fzzy/protocol/ProtocolRunner.java
@@ -1,7 +1,9 @@
 package com.fzzy.protocol;
 
+import com.fzzy.protocol.bhzn.server.BhznGrainV2ServerEngine;
 import com.fzzy.protocol.fzzy.server.FzzyServerEngine;
 import com.fzzy.protocol.weightyh.YhScaleServerEngine;
+import com.fzzy.protocol.zldz.server.ZldzServerEngine;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.core.annotation.Order;
@@ -25,6 +27,14 @@
         //椋庢鑷磋繙鎺у埗鏌滃崗璁惎鍔�
         FzzyServerEngine.start(null);
 
+
+        //姝f潵鐢靛瓙绮儏鍚姩
+        ZldzServerEngine.start();
+
+
+        //閭︽捣鏅鸿兘绾綉鍙h澶囧崗璁�
+        BhznGrainV2ServerEngine.start(null);
+
     }
 
 }
diff --git a/src/main/java/com/fzzy/protocol/bhzn/server/BhznGrainV2ServerEngine.java b/src/main/java/com/fzzy/protocol/bhzn/server/BhznGrainV2ServerEngine.java
index 2a6ee94..3f827bf 100644
--- a/src/main/java/com/fzzy/protocol/bhzn/server/BhznGrainV2ServerEngine.java
+++ b/src/main/java/com/fzzy/protocol/bhzn/server/BhznGrainV2ServerEngine.java
@@ -36,7 +36,8 @@
         if (null != port) {
             ioServerOption.setPort(port);
         } else {
-            ioServerOption.setPort(PORT);
+            port = PORT;
+            ioServerOption.setPort(port);
         }
 
         //纭缁撳熬鏍囧織
diff --git a/src/main/java/com/fzzy/protocol/bhzn/server/BhznGrainV2SessionListener.java b/src/main/java/com/fzzy/protocol/bhzn/server/BhznGrainV2SessionListener.java
index 3211e6b..dbfdd8b 100644
--- a/src/main/java/com/fzzy/protocol/bhzn/server/BhznGrainV2SessionListener.java
+++ b/src/main/java/com/fzzy/protocol/bhzn/server/BhznGrainV2SessionListener.java
@@ -32,10 +32,8 @@
         session.setBusinessKey(BhznGrainV2ServerUtils.getServerKey(session.getAddress(), session.getPort()));
 
         //鎵ц鍒嗘満涓婄嚎
-        ApiCommonDevice commonDevice = Constant.updateCacheOnline(session.getAddress(), session.getPort());
-        if (null == commonDevice.getSn()) {
-            log.error("------璁惧涓婄嚎锛岀郴缁熶腑鏈彂鐜板綋鍓嶉厤缃�-------");
-        }
+        Constant.updateCacheOnline(session.getAddress(), session.getPort());
+
     }
 
     /**
diff --git a/src/main/java/com/fzzy/protocol/zldz/analysis/AnalysisConf.java b/src/main/java/com/fzzy/protocol/zldz/analysis/AnalysisConf.java
index ed5d024..18c2fc8 100644
--- a/src/main/java/com/fzzy/protocol/zldz/analysis/AnalysisConf.java
+++ b/src/main/java/com/fzzy/protocol/zldz/analysis/AnalysisConf.java
@@ -1,5 +1,7 @@
 package com.fzzy.protocol.zldz.analysis;
 
+import com.fzzy.api.Constant;
+import com.fzzy.api.data.ApiCommonDevice;
 import com.fzzy.api.utils.BytesUtil;
 import com.fzzy.gateway.entity.GatewayDevice;
 import com.fzzy.gateway.service.GatewayDeviceService;
@@ -25,11 +27,11 @@
      * 瑙f瀽鍒嗘満閰嶇疆淇℃伅
      *
      * @param message
-     * @param ser
+     * @param device
      */
-    public void analysis8816(ReMessage message, GatewayDevice ser) {
+    public void analysis8816(ReMessage message, GatewayDevice device, ApiCommonDevice commonDevice) {
 
-        log.debug("鍒嗘満---->>>骞冲彴锛氭秷鎭被鍨�=8816-----{}", ser.getDeviceName());
+        log.debug("鍒嗘満---->>>骞冲彴锛氭秷鎭被鍨�=8816-----{}", device.getDeviceName());
 
         String content = message.getBody().getContent();
 
@@ -58,8 +60,9 @@
         len = 1;
         temp = content.substring(start * 2, start * 2 + len * 2);
 
-        // 灞傛暟
+        //灞� -琛� -鍒�
         String cable = "";
+        // 灞傛暟
         start = 6;
         len = 1;
         temp = content.substring(start * 2, start * 2 + len * 2);
@@ -77,20 +80,18 @@
         temp = content.substring(start * 2, start * 2 + len * 2);
         cable += "-" + BytesUtil.hexToInt(temp);
 
-        //灞� - 琛� - 鍒� 閰嶇疆
-        ser.setCableRule(cable);
 
         // 鐢电紗鍒跺紡
         start = 9;
         len = 1;
         temp = content.substring(start * 2, start * 2 + len * 2);
-        ser.setCableFormat("0" + BytesUtil.hexToInt(temp));
+        device.setCableFormat("0" + BytesUtil.hexToInt(temp));
 
         // 鐢电紗绫诲瀷
         start = 10;
         len = 1;
         temp = content.substring(start * 2, start * 2 + len * 2);
-        ser.setCableType("0" + BytesUtil.hexToInt(temp));
+        device.setCableType("0" + BytesUtil.hexToInt(temp));
 
         // 渚涚數妯″紡
         start = 11;
@@ -98,34 +99,33 @@
         temp = content.substring(start * 2, start * 2 + len * 2);
         //ser.setPowerModel("0" + BytesUtil.hexToInt(temp));
 
-        String msg = ser.getDeviceName() + " 杩滅▼鑾峰彇閰嶇疆鎴愬姛锛岃鍒锋柊鏁版嵁鏌ョ湅锛�";
 
         // 缁勭粐缂栫爜
         start = 12;
         temp = content.substring(start * 2);
-        if (readTag == 1) {// 琛ㄧず鍐欑殑鎴愬姛杩斿洖
-            ser.setOrgId(ser.getOrgId());
-            msg = ser.getDeviceName() + " 杩滅▼鍐欏叆鎴愬姛锛岃鍒锋柊鏁版嵁鏌ョ湅锛�";
-        } else {
-            ser.setOrgId(BytesUtil.hexToInt(BytesUtil.tran_LH(temp)) + "");
+        if (readTag != 1) {// 琛ㄧず鍐欑殑鎴愬姛杩斿洖
+            device.setOrgId(BytesUtil.hexToInt(BytesUtil.tran_LH(temp)) + "");
         }
 
-        if (null == ser.getDeviceSn()) {
-            ser.setDeviceSn(ser.getId());
-        }
-        ser.setIp(message.getIp());
-        ser.setPort(message.getPort());
+        device.setIp(message.getIp());
+        device.setPort(message.getPort());
 
         // 寮�濮嬪垪榛樿=1
-        if (ser.getCableStart() == 0) {
-            ser.setCableStart(1);
+        if (null == device.getCableStart()) {
+            device.setCableStart("1");
         }
 
         log.info("鍒嗘満---->>>骞冲彴锛氬垎鏈洪厤缃В鏋愬畬鎴�---{}锛屾洿鏂板埌鏈嶆湇鍔″櫒",
-                ser.getDeviceName());
+                device.getDeviceName());
 
         //鏇存柊璁惧淇℃伅
-        gatewayDeviceService.updateData(ser);
+        gatewayDeviceService.updateData(device);
+
+        //鏇存柊杩炴帴璁惧淇℃伅
+        commonDevice.setSn(device.getDeviceSn());
+        commonDevice.setCable(cable);
+        commonDevice.setOrgId(device.getOrgId());
+        Constant.updateCache(commonDevice);
     }
 
     /**
diff --git a/src/main/java/com/fzzy/protocol/zldz/analysis/AnalysisGrain.java b/src/main/java/com/fzzy/protocol/zldz/analysis/AnalysisGrain.java
index 99ffdd7..d2b07b1 100644
--- a/src/main/java/com/fzzy/protocol/zldz/analysis/AnalysisGrain.java
+++ b/src/main/java/com/fzzy/protocol/zldz/analysis/AnalysisGrain.java
@@ -14,6 +14,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import javax.persistence.criteria.CriteriaBuilder;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -294,10 +295,6 @@
     /**
      * 骞虫柟浠撶殑瑙f瀽锛岃В鏋愰渶瑕佽�冭檻褰撳墠鏄惁鍚敤鐨勪竴鍒嗘満澶氫粨
      *
-     * @param depotConf
-     * @param msg
-     * @param ser
-     * @param exeRequest
      * @param packetMap
      * @param sumPackets
      */
@@ -316,7 +313,7 @@
         int cableX = Integer.valueOf(attCable[2]);
 
         // 鏍规嵁灞傝鍒楄幏鍙栨寚瀹氶暱搴�
-        int start = 4 * (device.getCableStart() - 1) * cableZ * cableY;
+        int start = 4 * (Integer.valueOf(device.getCableStart()) - 1) * cableZ * cableY;
         int len = 4 * cableZ * cableY * cableX;
 
         log.info("鍒嗘満------>>>骞冲彴锛氳繑鍥炵伯鎯呭畬鏁翠俊鎭紝鍒嗘満={}", device.getDeviceName());
diff --git a/src/main/java/com/fzzy/protocol/zldz/analysis/AnalysisService.java b/src/main/java/com/fzzy/protocol/zldz/analysis/AnalysisService.java
index 12878e3..5454488 100644
--- a/src/main/java/com/fzzy/protocol/zldz/analysis/AnalysisService.java
+++ b/src/main/java/com/fzzy/protocol/zldz/analysis/AnalysisService.java
@@ -78,7 +78,7 @@
                 analysisConf.analysis1129(reMessage, device);
                 break;
             case ZldzServerUtil.MSG_TYPE_8816:// 瑙f瀽閰嶇疆
-                analysisConf.analysis8816(reMessage, device);
+                analysisConf.analysis8816(reMessage, device,commonDevice);
                 break;
             case ZldzServerUtil.MSG_TYPE_8822:// 鐢电紗鍒濆鍖栨垚鍔�
                 analysisConf.analysis8822(reMessage, device);
diff --git a/src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1115.java b/src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1115.java
index 7f58fb5..04fa321 100644
--- a/src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1115.java
+++ b/src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1115.java
@@ -76,8 +76,8 @@
 
         MessageBody body = new MessageBody();
         body.setLength(2);
-        int start = device.getCableStart();
-        int end = device.getCableEnd();
+        int start = Integer.valueOf(device.getCableStart());
+        int end = Integer.valueOf(device.getCableEnd());
         body.setContent(BytesUtil.toHexString(start) + BytesUtil.toHexString(end));
         message.setBody(body);
     }
diff --git a/src/main/java/com/fzzy/protocol/zldz/cmd/OnLineCommandBuilder.java b/src/main/java/com/fzzy/protocol/zldz/cmd/OnLineCommandBuilder.java
new file mode 100644
index 0000000..02627d0
--- /dev/null
+++ b/src/main/java/com/fzzy/protocol/zldz/cmd/OnLineCommandBuilder.java
@@ -0,0 +1,40 @@
+package com.fzzy.protocol.zldz.cmd;
+
+
+import com.fzzy.api.utils.BytesUtil;
+import com.fzzy.io.request.BaseRequest;
+import com.fzzy.protocol.zldz.data.Message;
+import com.fzzy.protocol.zldz.data.MessageBody;
+import com.fzzy.protocol.zldz.server.ZldzServerUtil;
+
+/**
+ * @author Andy
+ */
+public class OnLineCommandBuilder extends CommandBuilder {
+
+    private final static OnLineCommandBuilder instance = new OnLineCommandBuilder();
+
+    private OnLineCommandBuilder() {
+
+    }
+
+    public static OnLineCommandBuilder getInstance() {
+        return instance;
+    }
+
+    public void buildHeader(Message message, BaseRequest request) {
+        message.setSourceId("0000");
+        message.setSendId("0000");
+        message.setCompanyId("0000");
+        message.setTargetId("FFFF");
+        message.setMessageType(BytesUtil.tran_LH(ZldzServerUtil.MSG_TYPE_1116));
+    }
+
+    public void buildBody(Message message, BaseRequest request) {
+        MessageBody body = new MessageBody();
+        body.setContent("0000000000000000000000000000");
+        body.setLength(14);
+        message.setBody(body);
+    }
+
+}
diff --git a/src/main/java/com/fzzy/protocol/zldz/server/SessionListener.java b/src/main/java/com/fzzy/protocol/zldz/server/SessionListener.java
index ccf6678..edb2881 100644
--- a/src/main/java/com/fzzy/protocol/zldz/server/SessionListener.java
+++ b/src/main/java/com/fzzy/protocol/zldz/server/SessionListener.java
@@ -4,7 +4,10 @@
 import com.fzzy.api.data.ApiCommonDevice;
 import com.fzzy.api.utils.SpringUtil;
 import com.fzzy.gateway.service.GatewayDeviceService;
-import com.fzzy.protocol.bhzn.server.BhznGrainV2ServerUtils;
+import com.fzzy.io.request.BaseRequest;
+import com.fzzy.protocol.zldz.cmd.OnLineCommandBuilder;
+import com.fzzy.protocol.zldz.data.Message;
+import com.ld.io.api.InvokeResult;
 import com.ld.io.api.IoSession;
 import com.ld.io.api.IoSessionListener;
 import lombok.extern.slf4j.Slf4j;
@@ -26,13 +29,27 @@
         log.info("++++鏂板缓杩炴帴++++-IP={}锛孭ORT={}", session.getAddress(), session.getPort());
 
         // 娣诲姞鑷畾涔変笟鍔D
-        session.setBusinessKey(BhznGrainV2ServerUtils.getServerKey(session.getAddress(), session.getPort()));
+        session.setBusinessKey(ZldzServerUtil.getServerKey(session.getAddress(), session.getPort()));
 
         //鎵ц鍒嗘満涓婄嚎
-        ApiCommonDevice commonDevice = Constant.updateCacheOnline(session.getAddress(), session.getPort());
-        if (null == commonDevice.getSn()) {
-            log.error("------璁惧涓婄嚎锛岀郴缁熶腑鏈彂鐜板綋鍓嶉厤缃�-------");
+        Constant.updateCacheOnline(session.getAddress(), session.getPort());
+
+
+        /***********************璁惧涓婄嚎鍚庝富鍔ㄨ幏鍙栭厤缃俊鎭�******************/
+
+        BaseRequest request = new BaseRequest();
+        request.setIp(session.getAddress());
+        request.setPort(session.getPort());
+        request.setCompanyId(ZldzServerUtil.DEFAULT_COMPANY);
+        // Step1 鐢熸垚鍦ㄧ嚎娴嬭瘯鍛戒护
+        Message message = OnLineCommandBuilder.getInstance().buildMessage(request);
+        // 鍙戦�佸懡浠�
+        InvokeResult result = session.invoke(message.getByteMsg());
+        //濡傛灉鍛戒护鍙戦�佸け璐ワ紝鐩存帴韪㈡帀杩炴帴
+        if (!InvokeResult.SUCCESS.getCode().equals(result.getCode())) {
+            session.destroy();
         }
+        log.info("骞冲彴------->>鍒嗘満---璁惧涓婄嚎锛岃嚜鍔ㄥ彂閫佽澶囬厤缃俊鎭姹傚懡浠�--{}",message);
     }
 
     /**
@@ -51,9 +68,9 @@
 
         if (null == gatewayDeviceService) {
             gatewayDeviceService = SpringUtil.getBean(GatewayDeviceService.class);
-
-            gatewayDeviceService.OfflineByCommonDevice(commonDevice);
         }
 
+        gatewayDeviceService.OfflineByCommonDevice(commonDevice);
+
     }
 }

--
Gitblit v1.9.3