From 3a97ed3e03c8969aef34d172bf46116596683bd3 Mon Sep 17 00:00:00 2001
From: CZT <czt18638530771@163.com>
Date: 星期三, 27 九月 2023 21:50:00 +0800
Subject: [PATCH] 贝博粮情解析2

---
 igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/builder/ReMessageBuilder.java           |   20 --
 igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/server/BeiboGrainV1MessageConsumer.java |   50 +++++
 igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/util/BeiboGrainServerUtils.java         |    2 
 igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/ServerRunner.java                               |   36 ++++
 igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/server/BeiboGrainV1SessionListener.java |   61 ++++++
 igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/client/BeiboClientEngine.java           |   16 +
 igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/analysis/AnalysisService.java           |   20 +-
 igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/RemoteGrainServiceImpl.java             |   60 ++++++
 igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/server/BeiboGrainV1ServerUtils.java     |   65 +++++++
 /dev/null                                                                                                    |    6 
 igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/server/BeiboGrainV1HeartbeatImpl.java   |   41 ++++
 igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/builder/ReMessage.java                  |    7 
 igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/client/ClientHandler.java               |   15 
 igds-web/src/main/resources/READ-INFO.properties                                                             |    3 
 igds-protocol-zldz/src/main/java/com/ld/igds/protocol/zldz/task/CommandReSendService.java                    |    1 
 igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/builder/CommandBuild.java               |    4 
 igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/package-info.java                       |    6 
 igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/server/BeiboGrainV1ServerEngine.java    |  110 ++++++++++++
 18 files changed, 468 insertions(+), 55 deletions(-)

diff --git a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/ServerRunner.java b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/ServerRunner.java
new file mode 100644
index 0000000..d4dbabd
--- /dev/null
+++ b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/ServerRunner.java
@@ -0,0 +1,36 @@
+package com.ld.igds.protocol.beibo;
+
+import com.ld.igds.data.ConfigData;
+import com.ld.igds.protocol.beibo.grainv1.server.BeiboGrainV1ServerEngine;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+/**
+ * 閰嶇疆闅忕郴缁熻嚜鍔ㄥ惎鍔ㄦ湇鍔� -- 鎵ц椤哄簭20-29
+ */
+@Component(ServerRunner.BEAN_ID)
+@Order(value = 25)
+public class ServerRunner implements CommandLineRunner {
+
+    public static final String BEAN_ID = "beibo.serverRunnerV1";
+
+    @Autowired
+    private ConfigData configData;
+
+    @Autowired
+    private BeiboGrainV1ServerEngine beiboGrainV1ServerEngine;
+
+    @Override
+    public void run(String... strings) throws Exception {
+
+        if (configData.getActive().indexOf("pro") >= 0) {
+
+            beiboGrainV1ServerEngine.start(BeiboGrainV1ServerEngine.PORT);
+        }
+        if (configData.getActive().indexOf("dev") >= 0) {
+            beiboGrainV1ServerEngine.start(BeiboGrainV1ServerEngine.PORT);
+        }
+    }
+}
diff --git a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/RemoteGrainServiceImpl.java b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/RemoteGrainServiceImpl.java
deleted file mode 100644
index 1dc5ca5..0000000
--- a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/RemoteGrainServiceImpl.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package com.ld.igds.protocol.beibo.grain;
-
-import com.ld.igds.constant.RedisConst;
-import com.ld.igds.io.RemoteGrainService;
-import com.ld.igds.io.constant.OrderRespEnum;
-import com.ld.igds.io.constant.ProtocolEnum;
-import com.ld.igds.io.request.CheckGrainRequest;
-import com.ld.igds.io.response.GrainResponse;
-import com.ld.igds.protocol.beibo.grain.builder.CommandBuild;
-import com.ld.igds.protocol.beibo.grain.client.BeiboClientEngine;
-import com.ld.igds.util.BytesUtil;
-import com.ld.igds.util.RedisUtil;
-import com.ld.io.api.InvokeResult;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-/**
- * 璐濆崥绮儏鍒嗘満鍗忚
- *
- * @author czt
- */
-@Slf4j
-@Component(RemoteGrainServiceImpl.BEAN_ID)
-public class RemoteGrainServiceImpl implements RemoteGrainService {
-
-    public static final String BEAN_ID = "beiboGrain.remoteGrainService";
-
-    @Autowired
-    private RedisUtil redisUtil;
-
-    @Override
-    public String getProtocol() {
-        return ProtocolEnum.TCP_BEIBO_GRAIN_V1.getCode();
-    }
-
-    @Override
-    public GrainResponse checkGrain(CheckGrainRequest request) {
-        try {
-            log.info("璐濆崥绮儏鍒嗘満寮�濮嬫娴嬶紝鍒嗘満{}鐨処P={},绔彛={}", request.getSerId(), request.getIp(), request.getPort());
-            BeiboClientEngine beibo = new BeiboClientEngine(request.getIp(), request.getPort());
-            beibo.start();
-            Thread.sleep(3000);
-
-            //鐢熸垚绮儏鍛戒护
-            String hexStr = CommandBuild.getInstance().getMsgCheck(request.getSerId());
-
-            InvokeResult result = beibo.send(BytesUtil.hexStrToBytes(hexStr));
-
-            log.info("result=" + result.getMessage());
-
-            // 灏佽杩斿洖淇℃伅
-            if (InvokeResult.SUCCESS == result) {
-                String key = RedisConst.buildKey(request.getCompanyId(), "GRAIN_BEIBO");
-                redisUtil.set(key, request.getDepotId());
-                return new GrainResponse(OrderRespEnum.ORDER_SUCCESS.getCode(),
-                        "绮儏绮儏鍙戦�佹垚鍔燂紒");
-            } else {
-                log.error("骞冲彴------>>>>璐濆崥绮儏鍒嗘満锛氱伯鎯呮娴�-澶辫触{}", result.getMessage());
-                return new GrainResponse(OrderRespEnum.ORDER_ERROR.getCode(),
-                        "鍛戒护鍙戦�佸紓甯革細" + result.getMessage());
-            }
-
-        } catch (Exception e) {
-            log.error("绮儏妫�娴嬪紓甯革細{}", e);
-            return new GrainResponse(OrderRespEnum.ORDER_ERROR.getCode(), "鍚庣寮傚父锛�" + e.getMessage());
-        }
-    }
-}
\ No newline at end of file
diff --git a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/package-info.java b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/package-info.java
deleted file mode 100644
index cf5b4a3..0000000
--- a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/package-info.java
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * 璐濆崥绮儏鍗忚-鍒嗘満涓烘湇鍔$
- */
-package com.ld.igds.protocol.beibo.grain;
-
-
diff --git a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/RemoteGrainServiceImpl.java b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/RemoteGrainServiceImpl.java
new file mode 100644
index 0000000..f2269d8
--- /dev/null
+++ b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/RemoteGrainServiceImpl.java
@@ -0,0 +1,60 @@
+package com.ld.igds.protocol.beibo.grainv1;
+
+import com.ld.igds.io.RemoteGrainService;
+import com.ld.igds.io.constant.OrderRespEnum;
+import com.ld.igds.io.constant.ProtocolEnum;
+import com.ld.igds.io.request.CheckGrainRequest;
+import com.ld.igds.io.response.GrainResponse;
+import com.ld.igds.protocol.beibo.grainv1.builder.CommandBuild;
+import com.ld.igds.protocol.beibo.grainv1.server.BeiboGrainV1ServerEngine;
+import com.ld.io.api.InvokeResult;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 璐濆崥绮儏鍒嗘満鍗忚
+ *
+ * @author czt
+ */
+@Slf4j
+@Component(RemoteGrainServiceImpl.BEAN_ID)
+public class RemoteGrainServiceImpl implements RemoteGrainService {
+
+    public static final String BEAN_ID = "beiboGrain.remoteGrainService";
+
+    @Autowired
+    private BeiboGrainV1ServerEngine beiboGrainV1ServerEngine;
+
+    @Override
+    public String getProtocol() {
+        return ProtocolEnum.TCP_BEIBO_GRAIN_V1.getCode();
+    }
+
+    @Override
+    public GrainResponse checkGrain(CheckGrainRequest request) {
+        try {
+            //鐢熸垚绮儏鍛戒护
+            String hexStr = CommandBuild.getInstance().getMsgCheck(request.getSerId());
+
+            // 鍙戦�佸懡浠�
+            InvokeResult result = beiboGrainV1ServerEngine.pushByMin(hexStr);
+
+            log.error("骞冲彴------>>>>鍒嗘満锛氱伯鎯呮娴�-{}", hexStr);
+
+            // 灏佽杩斿洖淇℃伅
+            if (InvokeResult.SUCCESS == result) {
+                return new GrainResponse(OrderRespEnum.ORDER_SUCCESS.getCode(),
+                        "绮儏閲囬泦鍛戒护鍙戦�佹垚鍔燂紒");
+            } else {
+                log.error("骞冲彴------>>>>鍒嗘満锛氱伯鎯呮娴�-澶辫触{}", result.getMessage());
+                return new GrainResponse(OrderRespEnum.ORDER_ERROR.getCode(),
+                        "鍛戒护鍙戦�佸紓甯革細" + result.getMessage());
+            }
+
+        } catch (Exception e) {
+            log.error("绮儏妫�娴嬪紓甯革細{}", e);
+            return new GrainResponse(OrderRespEnum.ORDER_ERROR.getCode(), "鍚庣寮傚父锛�" + e.getMessage());
+        }
+    }
+}
\ No newline at end of file
diff --git a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/analysis/AnalysisService.java b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/analysis/AnalysisService.java
similarity index 98%
rename from igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/analysis/AnalysisService.java
rename to igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/analysis/AnalysisService.java
index 0191804..297fd5c 100644
--- a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/analysis/AnalysisService.java
+++ b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/analysis/AnalysisService.java
@@ -1,4 +1,4 @@
-package com.ld.igds.protocol.beibo.grain.analysis;
+package com.ld.igds.protocol.beibo.grainv1.analysis;
 
 import com.ld.igds.common.CoreCommonService;
 import com.ld.igds.common.CoreSerService;
@@ -15,9 +15,9 @@
 import com.ld.igds.models.Grain;
 import com.ld.igds.order.ExeOrderService;
 import com.ld.igds.order.data.ExeRequest;
-import com.ld.igds.protocol.beibo.grain.builder.ReMessage;
-import com.ld.igds.protocol.beibo.grain.builder.ReMessageBuilder;
-import com.ld.igds.protocol.beibo.grain.util.BeiboGrainServerUtils;
+import com.ld.igds.protocol.beibo.grainv1.builder.ReMessage;
+import com.ld.igds.protocol.beibo.grainv1.builder.ReMessageBuilder;
+import com.ld.igds.protocol.beibo.grainv1.util.BeiboGrainServerUtils;
 import com.ld.igds.util.BytesUtil;
 import com.ld.igds.util.ContextUtil;
 import com.ld.igds.warn.WarnUtils;
@@ -25,7 +25,6 @@
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-
 import java.util.*;
 
 /**
@@ -52,7 +51,6 @@
     @Autowired
     private ExeOrderService exeOrderService;
 
-
     public static Map<String, Map<String, String>> contextMap = new HashMap<>();
 
     public static double ERROR_CHECK_TAG = -100.0;
@@ -67,17 +65,17 @@
     /**
      * 00000000FFEB90FEAA 41 E821EC21EA21EC21ED21EC21E921E221E921E921E921EC21E921ED21F021E521E521E221E421E321E321E121DE21D721E021DD21DC21DF21FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
      *
-     * @param result
+     * @param hexStr
      */
-    public void analysis(String result) {
+    public void analysis(String ip, int port, String hexStr) {
 
-        log.info("鍒嗘満------->>骞冲彴锛氫俊鎭姤鏂�={}", result);
-        ReMessage reMessage = ReMessageBuilder.getInstance().buildMessage(result);
+        ReMessage reMessage = ReMessageBuilder.getInstance().buildMessage(hexStr);
+
+        log.info("鍒嗘満------->>骞冲彴锛氫俊鎭姤鏂�={}", reMessage);
 
         if (!BeiboGrainServerUtils.MSG_START.startsWith(reMessage.getStartStr())) {
             log.error("鍒嗘満------->>骞冲彴锛岃В鏋愮伯鎯呭け璐ワ細鎶ユ枃璧峰绗�={}閿欒锛屼笉瑙f瀽", reMessage.getStartStr());
         }
-
 
         //鏍规嵁鍒嗘満鍦板潃鑾峰彇鍒嗘満淇℃伅
         DeviceSer ser = coreSerService.getCacheSer(ContextUtil.getDefaultCompanyId(), reMessage.getSerId());
diff --git a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/builder/CommandBuild.java b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/builder/CommandBuild.java
similarity index 90%
rename from igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/builder/CommandBuild.java
rename to igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/builder/CommandBuild.java
index 816574a..7002fcf 100644
--- a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/builder/CommandBuild.java
+++ b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/builder/CommandBuild.java
@@ -1,6 +1,6 @@
-package com.ld.igds.protocol.beibo.grain.builder;
+package com.ld.igds.protocol.beibo.grainv1.builder;
 
-import com.ld.igds.protocol.beibo.grain.util.BeiboGrainServerUtils;
+import com.ld.igds.protocol.beibo.grainv1.util.BeiboGrainServerUtils;
 import com.ld.igds.util.BytesUtil;
 
 /**
diff --git a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/builder/ReMessage.java b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/builder/ReMessage.java
similarity index 85%
rename from igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/builder/ReMessage.java
rename to igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/builder/ReMessage.java
index 70b81c2..1d6821a 100644
--- a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/builder/ReMessage.java
+++ b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/builder/ReMessage.java
@@ -1,4 +1,4 @@
-package com.ld.igds.protocol.beibo.grain.builder;
+package com.ld.igds.protocol.beibo.grainv1.builder;
 
 import lombok.Data;
 import java.util.Date;
@@ -12,6 +12,11 @@
 @Data
 public class ReMessage {
 
+
+	private String ip;
+
+	private int port;
+
 	private String startStr; //璧峰绗�
 
 	private String serId;     //鍒嗘満鍦板潃
diff --git a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/builder/ReMessageBuilder.java b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/builder/ReMessageBuilder.java
similarity index 60%
rename from igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/builder/ReMessageBuilder.java
rename to igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/builder/ReMessageBuilder.java
index 9491a6f..eccf5be 100644
--- a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/builder/ReMessageBuilder.java
+++ b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/builder/ReMessageBuilder.java
@@ -1,6 +1,6 @@
-package com.ld.igds.protocol.beibo.grain.builder;
+package com.ld.igds.protocol.beibo.grainv1.builder;
 
-import com.ld.igds.protocol.beibo.grain.util.BeiboGrainServerUtils;
+import com.ld.igds.protocol.beibo.grainv1.util.BeiboGrainServerUtils;
 import com.ld.igds.util.BytesUtil;
 
 /**
@@ -35,22 +35,6 @@
         int i = BytesUtil.hexToInt(str);
         String serId = String.valueOf(i - BeiboGrainServerUtils.BM);
         message.setSerId(serId);
-
-        //绮儏鏁版嵁
-        str = strMsg.substring(10*2-1, 1034*2 -1);
-        message.setGrainStr(str);
-
-        //娓╁害鏁版嵁
-        str = strMsg.substring(1034*2 -1, 1052*2-1);
-        message.setThStr(str);
-
-        //鎵╁厖鏁版嵁
-        str = strMsg.substring(strMsg.length()-14*2, strMsg.length()-4*2);
-        message.setExpand(str);
-
-        //妫�楠岀爜
-        str = strMsg.substring(strMsg.length()-4*2);
-        message.setHexCrc16(str);
 
         return message;
     }
diff --git a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/client/BeiboClientEngine.java b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/client/BeiboClientEngine.java
similarity index 85%
rename from igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/client/BeiboClientEngine.java
rename to igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/client/BeiboClientEngine.java
index b4d65e2..de79179 100644
--- a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/client/BeiboClientEngine.java
+++ b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/client/BeiboClientEngine.java
@@ -1,4 +1,4 @@
-package com.ld.igds.protocol.beibo.grain.client;
+package com.ld.igds.protocol.beibo.grainv1.client;
 
 import com.ld.igds.util.BytesUtil;
 import com.ld.io.api.InvokeResult;
@@ -10,6 +10,8 @@
 import io.netty.channel.socket.oio.OioSocketChannel;
 import io.netty.handler.codec.bytes.ByteArrayDecoder;
 import io.netty.handler.codec.bytes.ByteArrayEncoder;
+import io.netty.util.internal.logging.InternalLogger;
+import io.netty.util.internal.logging.InternalLoggerFactory;
 
 /**
  * 璐濆崥绮儏鍗忚锛屽垎鏈轰负鏈嶅姟绔紝骞冲彴涓哄鎴风涓诲姩杩炴帴
@@ -17,6 +19,8 @@
  * @author czt
  */
 public class BeiboClientEngine implements Runnable {
+
+	private final InternalLogger log = InternalLoggerFactory.getInstance(this.getClass());
 
 	private String host;
 	private int port;
@@ -44,14 +48,14 @@
 	public void startRun() throws Exception {
 		EventLoopGroup group = new OioEventLoopGroup();
 		Bootstrap b = new Bootstrap();
-		// b.option(ChannelOption.SO_KEEPALIVE, true);
+//		b.option(ChannelOption.SO_KEEPALIVE, true);
 		b.group(group).channel(OioSocketChannel.class)
 				.handler(new ChannelInitializer<SocketChannel>() {
 					@Override
 					protected void initChannel(SocketChannel ch)
 							throws Exception {
 						ChannelPipeline p = ch.pipeline();
-						// 瀛楃涓茶В鐮� 鍜� 缂栫爜
+						// 瀛楃涓茶В鐮佸拰缂栫爜
 						p.addLast("decoder", new ByteArrayDecoder());
 						p.addLast("encoder", new ByteArrayEncoder());
 						// 鑷繁鐨勯�昏緫Handler
@@ -62,15 +66,15 @@
 		// 鍙戣捣寮傛杩炴帴璇锋眰锛岀粦瀹氳繛鎺ョ鍙e拰host淇℃伅
 		ChannelFuture channelFuture = b.connect(host, port);
 		this.channel = channelFuture.channel();
-		// channelFuture.channel().closeFuture().sync();
+//		 channelFuture.channel().closeFuture().sync();
 
 		channelFuture.addListener(new ChannelFutureListener() {
 			@Override
 			public void operationComplete(ChannelFuture arg0) throws Exception {
 				if (channelFuture.isSuccess()) {
-					System.out.println("杩炴帴鏈嶅姟鍣ㄦ垚鍔�");
+					log.info("杩炴帴鏈嶅姟鍣ㄦ垚鍔�");
 				} else {
-					System.out.println("杩炴帴鏈嶅姟鍣ㄥけ璐�");
+					log.info("杩炴帴鏈嶅姟鍣ㄥけ璐�");
 					channelFuture.cause().printStackTrace();
 					group.shutdownGracefully(); // 鍏抽棴绾跨▼缁�
 				}
diff --git a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/client/ClientHandler.java b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/client/ClientHandler.java
similarity index 72%
rename from igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/client/ClientHandler.java
rename to igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/client/ClientHandler.java
index 9fdb924..4d97ce2 100644
--- a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/client/ClientHandler.java
+++ b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/client/ClientHandler.java
@@ -1,13 +1,12 @@
-package com.ld.igds.protocol.beibo.grain.client;
+package com.ld.igds.protocol.beibo.grainv1.client;
 
-import com.ld.igds.protocol.beibo.grain.analysis.AnalysisService;
+import com.ld.igds.protocol.beibo.grainv1.analysis.AnalysisService;
 import com.ld.igds.util.BytesUtil;
 import com.ld.igds.util.SpringUtil;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.SimpleChannelInboundHandler;
 import io.netty.util.internal.logging.InternalLogger;
 import io.netty.util.internal.logging.InternalLoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
 
 import java.net.InetSocketAddress;
 
@@ -25,7 +24,7 @@
 	public void channelActive(ChannelHandlerContext ctx) {
 		InetSocketAddress insocket = (InetSocketAddress) ctx.channel()
 				.remoteAddress();
-		log.info("璐濆崥绮儏鍒嗘満鎴愬姛杩炴帴锛孖P={},port={}", insocket.getAddress()
+		log.info("鍒嗘満鎴愬姛杩炴帴锛孖P={},port={}", insocket.getAddress()
 				.getHostAddress(), insocket.getPort());
 	}
 
@@ -36,7 +35,7 @@
 		InetSocketAddress insocket = (InetSocketAddress) ctx.channel()
 				.remoteAddress();
 
-		log.info("璐濆崥绮儏鍒嗘満鏂紑杩炴帴锛孖P={},port={}", insocket.getAddress(),insocket.getPort());
+		log.info("鍒嗘満鏂紑杩炴帴锛孖P={},port={}", insocket.getAddress(),insocket.getPort());
 	}
 
 	@Override
@@ -44,15 +43,15 @@
 			throws Exception {
 		byte[] bytes = (byte[]) msg;
 		String result = BytesUtil.bytesToString(bytes);
-		log.info("璐濆崥绮儏鍒嗘満杩斿洖淇℃伅=" + result);
+		log.info("鍒嗘満杩斿洖淇℃伅=" + result);
 
-		InetSocketAddress insocket = (InetSocketAddress) ctx.channel().remoteAddress();
+//		InetSocketAddress insocket = (InetSocketAddress) ctx.channel().remoteAddress();
 
 		//瑙f瀽
 		if (null == analysisService) {
 			analysisService = (AnalysisService) SpringUtil.getBean(AnalysisService.BEAN_ID);
 		}
-		analysisService.analysis(result);
+//		analysisService.analysis(result);
 	}
 
 	@Override
diff --git a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/package-info.java b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/package-info.java
new file mode 100644
index 0000000..e752e77
--- /dev/null
+++ b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/package-info.java
@@ -0,0 +1,6 @@
+/**
+ * 璐濆崥绮儏鍗忚-鍒嗘満涓烘湇鍔$
+ */
+package com.ld.igds.protocol.beibo.grainv1;
+
+
diff --git a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/server/BeiboGrainV1HeartbeatImpl.java b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/server/BeiboGrainV1HeartbeatImpl.java
new file mode 100644
index 0000000..5827efb
--- /dev/null
+++ b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/server/BeiboGrainV1HeartbeatImpl.java
@@ -0,0 +1,41 @@
+package com.ld.igds.protocol.beibo.grainv1.server;
+
+import com.ld.io.api.HeartbeatProvider;
+import com.ld.io.api.IoSession;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鎻愪緵蹇冭烦淇℃伅
+ *
+ * @author czt
+ */
+@Slf4j
+@Service
+public class BeiboGrainV1HeartbeatImpl implements HeartbeatProvider {
+
+    @Override
+    public byte[] provide(IoSession session) {
+
+
+        //鐩存帴鏍规嵁涓绘満SESSIOn鍒ゆ柇
+        IoSession session1 = BeiboGrainV1ServerUtils.getSession();
+
+        Long lastBeatTime = BeiboGrainV1ServerUtils.getHearBeat(session1);
+
+        if (null == lastBeatTime) {
+            return null;
+        }
+
+        //濡傛灉鏈�鍚庝竴娆$粓绔績璺虫椂闂磋窛绂诲綋鍓嶆椂闂村ぇ浜� 缁堢蹇冭烦鏃堕棿鐨�3娆★紝鍒欏垽鏂负绂荤嚎
+        long deTime = System.currentTimeMillis() - lastBeatTime;
+
+        if (deTime > (BeiboGrainV1ServerUtils.HEART_BEAT_TIME * 3 * 1000)) {
+            log.info("-----------瓒呰繃{}绉掓湭鑾峰彇鍒板績璺充俊鎭紝鍒ゅ畾缁堢绂荤嚎锛岃涪鍑鸿繛鎺�------------{}-{}", deTime, session.getAddress(), session.getPort());
+
+            session.destroy();
+        }
+
+        return null;
+    }
+}
diff --git a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/server/BeiboGrainV1MessageConsumer.java b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/server/BeiboGrainV1MessageConsumer.java
new file mode 100644
index 0000000..b3df71c
--- /dev/null
+++ b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/server/BeiboGrainV1MessageConsumer.java
@@ -0,0 +1,50 @@
+package com.ld.igds.protocol.beibo.grainv1.server;
+
+import com.ld.igds.protocol.beibo.grainv1.analysis.AnalysisService;
+import com.ld.igds.util.BytesUtil;
+import com.ld.io.api.IoMsgConsumer;
+import com.ld.io.api.IoSession;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ */
+@Slf4j
+@Service
+public class BeiboGrainV1MessageConsumer implements IoMsgConsumer {
+
+
+    @Autowired
+    private AnalysisService analysisService;
+
+    /**
+     * 澶勭悊娑堟伅
+     *
+     * @param ioSession
+     * @param bytes
+     */
+    @Override
+    public void consume(IoSession ioSession, byte[] bytes) {
+        if (null == bytes) {
+            log.error("Reply bytes is null");
+            return;
+        }
+
+        //娣诲姞淇℃伅蹇冭烦鏍囪
+        BeiboGrainV1ServerUtils.addHeartBeat(ioSession);
+
+        //榛樿璁剧疆涓婚�氳鏈嶅姟
+        BeiboGrainV1ServerUtils.addSession(ioSession);
+
+        try {
+            String hexStr = BytesUtil.bytesToString(bytes);
+            log.info("涓绘満杩斿洖鎶ユ枃------->>骞冲彴锛�" + hexStr);
+
+            analysisService.analysis(ioSession.getAddress(), ioSession.getPort(), hexStr);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+    }
+}
\ No newline at end of file
diff --git a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/server/BeiboGrainV1ServerEngine.java b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/server/BeiboGrainV1ServerEngine.java
new file mode 100644
index 0000000..8b14e90
--- /dev/null
+++ b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/server/BeiboGrainV1ServerEngine.java
@@ -0,0 +1,110 @@
+package com.ld.igds.protocol.beibo.grainv1.server;
+
+import com.ld.igds.util.BytesUtil;
+import com.ld.io.api.*;
+import com.ld.io.netty.NettyServer;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @Desc: 璐濆崥绮儏鍗忚-涓插彛鏈嶅姟鍣ㄥ鎴风
+ * @author: czt
+ * @update-time: 2023/09/27
+ */
+@Slf4j
+@Service
+public class BeiboGrainV1ServerEngine {
+
+    public static final Integer PORT = 9311;
+
+    @Autowired
+    private BeiboGrainV1MessageConsumer defaultMessageConsumer;
+    @Autowired
+    private BeiboGrainV1SessionListener defaultSessionListener;
+    // 蹇冭烦鎻愪緵
+    private static HeartbeatProvider heartbeatProvider = new BeiboGrainV1HeartbeatImpl();
+
+    private IoSessionQuery sessionQuery;
+
+    public void start(Integer port) {
+        IoServerOption ioServerOption = new IoServerOption();
+
+        if (null != port) {
+            ioServerOption.setPort(port);
+        } else {
+            ioServerOption.setPort(PORT);
+        }
+        ioServerOption.setSplitDecoderType(SplitByteDecoderType.NO_LIMIT);
+//        //纭缁撳熬鏍囧織
+//        ioServerOption.setDelimiter();
+
+        // 閰嶇疆绯荤粺蹇冭烦闂撮殧
+        ioServerOption.setReaderIdleTime(5 * 60);
+
+        NettyServer ioServer = new NettyServer(ioServerOption, defaultMessageConsumer, defaultSessionListener, heartbeatProvider);
+        ioServer.startup();
+
+        sessionQuery = ioServer.getSessionQuery();
+
+
+        log.info("* ");
+        log.info("* ========================");
+        log.info("* ");
+        log.info("* [GRAIN-SERVER锛欱EIBO_GRAIN,PORT={}]", PORT);
+        log.info("* ");
+        log.info("* ========================");
+        log.info("* ");
+
+        System.out.println("* ========================");
+        System.out.println("* ");
+        System.out.println("* [GRAIN-SERVER锛欱EIBO_GRAIN,PORT={}]" + port);
+        System.out.println("* ");
+        System.out.println("* ========================");
+    }
+
+    public IoSessionQuery getSessionQuery() {
+        return sessionQuery;
+    }
+
+    /**
+     * 鍙戦�佷俊鎭�
+     *
+     * @param ip
+     * @param port
+     * @param msg
+     * @return
+     */
+    public InvokeResult push(String ip, int port, byte[] msg) {
+        IoSessionQuery sessionFactory = getSessionQuery();
+        List<IoSession> sessions = sessionFactory.getAllSession();
+        IoSession session = null;
+        for (IoSession ioSession : sessions) {
+            if (BeiboGrainV1ServerUtils.getServerKey(ip, port).equals(ioSession.getBusinessKey())) {
+                session = ioSession;
+                break;
+            }
+        }
+        if (null == session) {
+            return InvokeResult.CHANNEL_CLOSED;
+        }
+        return session.invoke(msg);
+    }
+
+    /**
+     * 鐩存帴浣跨敤鍐呭瓨鐨凷ession鎵ц
+     */
+    public InvokeResult pushByMin(String hexStr) {
+
+        IoSession session = BeiboGrainV1ServerUtils.getSession();
+
+        if (null == session) {
+            return InvokeResult.CHANNEL_CLOSED;
+        }
+        byte[] msg = BytesUtil.hexStrToBytes(hexStr);
+        return session.invoke(msg);
+    }
+
+}
\ No newline at end of file
diff --git a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/server/BeiboGrainV1ServerUtils.java b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/server/BeiboGrainV1ServerUtils.java
new file mode 100644
index 0000000..a7b5f73
--- /dev/null
+++ b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/server/BeiboGrainV1ServerUtils.java
@@ -0,0 +1,65 @@
+package com.ld.igds.protocol.beibo.grainv1.server;
+
+
+import com.ld.igds.util.BytesUtil;
+import com.ld.io.api.IoSession;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 宸ュ叿绫�
+ *
+ * @author vince
+ */
+public class BeiboGrainV1ServerUtils {
+
+
+    /**
+     * 璁板綍姣忎釜杩炴帴鐨勬渶鍚庝竴娆′俊鎭椂闂� key = 杩炴帴鐨凨YE锛宒ata =褰撳墠鏃堕棿鎴�
+     */
+    public static Map<String, Long> contextMapHeart = new HashMap<>();
+
+    public static Map<String, IoSession> contextIoSession = new HashMap<>();
+
+
+    public static int HEART_BEAT_TIME = 30;//蹇冭烦闂撮殧鏃堕棿
+
+    /**
+     * 閽堝鏃犵嚎绮儏涓绘満鐨勯粯璁D閰嶇疆
+     */
+    public static String DEFAULT_MAC_ID = "6550";
+
+    /**
+     * 鐢熸垚TCP杩炴帴鐨凨EY
+     *
+     * @param ip
+     * @param port
+     * @return
+     */
+    public static String getServerKey(String ip, Integer port) {
+        return ip + ":" + port;
+    }
+
+
+    /**
+     * 娣诲姞鏈�鏂板績璺虫椂闂存埑
+     *
+     * @param session
+     */
+    public static void addHeartBeat(IoSession session) {
+        contextMapHeart.put(getServerKey(session.getAddress(), session.getPort()), System.currentTimeMillis());
+    }
+
+    public static Long getHearBeat(IoSession session) {
+        return contextMapHeart.get(getServerKey(session.getAddress(), session.getPort()));
+    }
+
+    public static void addSession(IoSession session) {
+        contextIoSession.put(DEFAULT_MAC_ID, session);
+    }
+
+    public static IoSession getSession() {
+        return contextIoSession.get(DEFAULT_MAC_ID);
+    }
+}
diff --git a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/server/BeiboGrainV1SessionListener.java b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/server/BeiboGrainV1SessionListener.java
new file mode 100644
index 0000000..6a759cb
--- /dev/null
+++ b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/server/BeiboGrainV1SessionListener.java
@@ -0,0 +1,61 @@
+package com.ld.igds.protocol.beibo.grainv1.server;
+
+import com.ld.igds.common.CoreSerService;
+import com.ld.igds.constant.Constant;
+import com.ld.igds.models.DeviceSer;
+import com.ld.igds.util.ContextUtil;
+import com.ld.io.api.IoSession;
+import com.ld.io.api.IoSessionListener;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ */
+@Slf4j
+@Service
+public class BeiboGrainV1SessionListener implements IoSessionListener {
+
+    @Autowired
+    private CoreSerService coreSerService;
+    /**
+     * 璁惧鍒涘缓鍦ㄧ嚎锛岄渶瑕佹敞鎰忓綋鍓嶄娇鐢ㄤ富鏈烘ā寮忥紝涓绘満涓婄嚎榛樿鎵�鏈夌浉鍚孲N閰嶇疆鐨勫垎鏈哄叏閮ㄤ笂绾�
+     *
+     * @param session
+     */
+    @Override
+    public void onCreate(IoSession session) {
+
+        //娣诲姞鍒板唴瀛�
+        BeiboGrainV1ServerUtils.addSession(session);
+
+        log.info("++++鏂板缓杩炴帴++++-IP={}锛孭ORT={}", session.getAddress(), session.getPort());
+
+        // 娣诲姞鑷畾涔変笟鍔D
+        session.setBusinessKey(BeiboGrainV1ServerUtils.getServerKey(session.getAddress(), session.getPort()));
+
+        //椤圭洰閲囩敤鏃犵嚎涓绘満妯″紡锛岀洿鎺ヨ幏鍙栭粯璁よ澶�
+        DeviceSer deviceSer = coreSerService.getCacheSerBySn(ContextUtil.getDefaultCompanyId(), BeiboGrainV1ServerUtils.DEFAULT_MAC_ID);
+        if (null == deviceSer) return;
+        coreSerService.onlineBySn(session.getAddress(), session.getPort(), deviceSer.getSn(), Constant.YN_Y);
+        //鏇存柊缂撳瓨
+        coreSerService.refreshCache(deviceSer.getCompanyId());
+    }
+
+    /**
+     * 娉ㄦ剰锛屽綋鍓嶉噰鐢ㄤ富鏈烘ā寮忥紝涓绘満绂荤嚎鎵�鏈夌浉鍚孲N閰嶇疆鐨勫垎鏈哄叏閮ㄧ绾�
+     *
+     * @param session
+     */
+    @Override
+    public void onDestroy(IoSession session) {
+        log.info("----杩炴帴鏂紑-----IP={}锛孭ORT={}", session.getAddress(), session.getPort());
+
+        //椤圭洰閲囩敤鏃犵嚎涓绘満妯″紡锛岀洿鎺ヨ幏鍙栭粯璁よ澶�
+        DeviceSer deviceSer = coreSerService.getCacheSer(ContextUtil.getDefaultCompanyId(), BeiboGrainV1ServerUtils.DEFAULT_MAC_ID);
+
+        if (null == deviceSer) return;
+
+    }
+}
diff --git a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/util/BeiboGrainServerUtils.java b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/util/BeiboGrainServerUtils.java
similarity index 84%
rename from igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/util/BeiboGrainServerUtils.java
rename to igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/util/BeiboGrainServerUtils.java
index 4380b66..281c048 100644
--- a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/util/BeiboGrainServerUtils.java
+++ b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/util/BeiboGrainServerUtils.java
@@ -1,4 +1,4 @@
-package com.ld.igds.protocol.beibo.grain.util;
+package com.ld.igds.protocol.beibo.grainv1.util;
 
 /**
  * 宸ュ叿绫�
diff --git a/igds-protocol-zldz/src/main/java/com/ld/igds/protocol/zldz/task/CommandReSendService.java b/igds-protocol-zldz/src/main/java/com/ld/igds/protocol/zldz/task/CommandReSendService.java
index 018f342..831de3d 100644
--- a/igds-protocol-zldz/src/main/java/com/ld/igds/protocol/zldz/task/CommandReSendService.java
+++ b/igds-protocol-zldz/src/main/java/com/ld/igds/protocol/zldz/task/CommandReSendService.java
@@ -8,7 +8,6 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.ExecutorService;
diff --git a/igds-web/src/main/resources/READ-INFO.properties b/igds-web/src/main/resources/READ-INFO.properties
index 1904cac..e9bc34a 100644
--- a/igds-web/src/main/resources/READ-INFO.properties
+++ b/igds-web/src/main/resources/READ-INFO.properties
@@ -9,4 +9,5 @@
 # 9307 ---制氮机控制网关协议
 # 9308 ---气象站对外TCP协议
 # 9309 ---邦海智能纯粮情协议
-# 9310 ---邦海智能控制柜协议
\ No newline at end of file
+# 9310 ---邦海智能控制柜协议
+# 9311 ---贝博粮情客户端协议
\ No newline at end of file

--
Gitblit v1.9.3