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