From c8a4f3f8327b4a2290d719503211adb8845e6fd8 Mon Sep 17 00:00:00 2001
From: vince <757871790@qq.com>
Date: 星期二, 19 十二月 2023 14:37:08 +0800
Subject: [PATCH] 优化代码,增加仓温仓湿度

---
 src/main/java/com/fzzy/gateway/hx2023/data/GrainTH.java                     |   35 +++++++++++++++++
 src/main/java/com/fzzy/gateway/hx2023/data/GrainData.java                   |    2 +
 src/main/java/com/fzzy/gateway/hx2023/data/GrainOutPut.java                 |    2 +
 src/main/java/com/fzzy/protocol/bhzn/analysis/AnalysisService.java          |   20 ++++++----
 src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisGrain.java            |    4 ++
 src/main/java/com/fzzy/gateway/GatewayUtils.java                            |    9 ++++
 src/main/java/com/fzzy/protocol/fzzy/service/FzzyGatewayGrainService.java   |    2 
 src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java |    4 ++
 src/main/java/com/fzzy/api/Constant.java                                    |   24 +++++++++--
 src/main/java/com/fzzy/protocol/bhzn/service/Bhzn2GatewayGrainService.java  |    2 
 src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisService.java          |    2 
 src/main/java/com/fzzy/api/data/GatewayDeviceProtocol.java                  |    4 +-
 src/main/java/com/fzzy/protocol/bhzn/server/BhznGrainV2ServerEngine.java    |    3 -
 13 files changed, 93 insertions(+), 20 deletions(-)

diff --git a/src/main/java/com/fzzy/api/Constant.java b/src/main/java/com/fzzy/api/Constant.java
index 78701d7..3d0c911 100644
--- a/src/main/java/com/fzzy/api/Constant.java
+++ b/src/main/java/com/fzzy/api/Constant.java
@@ -1,6 +1,8 @@
 package com.fzzy.api;
 
+import com.alibaba.fastjson.JSON;
 import com.fzzy.api.data.ApiCommonDevice;
+import lombok.extern.slf4j.Slf4j;
 
 import java.util.Date;
 import java.util.HashMap;
@@ -9,6 +11,7 @@
 /**
  * 鍏ㄥ眬闈欐�佺被
  */
+@Slf4j
 public class Constant {
 
 
@@ -322,6 +325,7 @@
 
     public static ApiCommonDevice getCommonDeviceCache(String sn) {
         if (null == sn) return null;
+        log.info("鍦ㄧ嚎璁惧锛�" + JSON.toJSONString(contextDeviceMap));
         return contextDeviceMap.get(sn);
     }
 
@@ -329,13 +333,22 @@
         if (null == ip) return null;
 
         if (contextDeviceMap.isEmpty()) return null;
-
+        log.info("鍦ㄧ嚎璁惧锛�" + JSON.toJSONString(contextDeviceMap));
         for (ApiCommonDevice device : contextDeviceMap.values()) {
-            if (ip.equals(device)) return device;
+            if (ip.equals(device.getIp())) return device;
         }
         return null;
     }
+    public static ApiCommonDevice getCommonDeviceCacheBySn(String sn) {
+        if (null == sn) return null;
 
+        if (contextDeviceMap.isEmpty()) return null;
+        log.info("鍦ㄧ嚎璁惧锛�" + JSON.toJSONString(contextDeviceMap));
+        for (ApiCommonDevice device : contextDeviceMap.values()) {
+            if (sn.equals(device.getSn())) return device;
+        }
+        return null;
+    }
     public static ApiCommonDevice updateCacheOnline(String ip, Integer port) {
         ApiCommonDevice device = getCommonDeviceCacheByIp(ip);
 
@@ -348,7 +361,8 @@
         device.setCode("SUCCESS");
         device.setMsg("璁惧涓婄嚎");
         device.setOnlineTime(new Date());
-        contextDeviceMap.put(device.getSn(), device);
+        contextDeviceMap.put(device.getIp(), device);
+        log.info("璁惧涓婄嚎锛�" + ip);
         return device;
     }
 
@@ -363,12 +377,12 @@
         device.setStatus(Constant.YN_N);
         device.setCode("ERROR");
         device.setMsg("璁惧绂荤嚎");
-        contextDeviceMap.put(device.getSn(), device);
+        contextDeviceMap.put(device.getIp(), device);
 
         return device;
     }
 
     public static void updateCache(ApiCommonDevice device) {
-        contextDeviceMap.put(device.getSn(), device);
+        contextDeviceMap.put(device.getIp(), device);
     }
 }
diff --git a/src/main/java/com/fzzy/api/data/GatewayDeviceProtocol.java b/src/main/java/com/fzzy/api/data/GatewayDeviceProtocol.java
index 1cd7427..a1c2fc8 100644
--- a/src/main/java/com/fzzy/api/data/GatewayDeviceProtocol.java
+++ b/src/main/java/com/fzzy/api/data/GatewayDeviceProtocol.java
@@ -13,8 +13,8 @@
 
     TCP_FZZY_V3("TCP_FZZY_V3", "绮儏-椋庢鑷磋繙鎺у埗鏌滃崗璁甐3"),
     GRAIN_FZZY_IGDS_V40("GRAIN_FZZY_IGDS_V40", "绮儏-椋庢鑷磋繙绯荤粺V40"),
-    GRAIN_FZZY_BHZN_WEB("GRAIN_FZZY_BHZN_WEB", "绮儏-FZZY-閭︽捣鏅鸿兘缃戝彛鍗忚"),
-    GRAIN_FZZY_ZLDZ_WEB("GRAIN_FZZY_ZLDZ_WEB", "绮儏-FZZY-姝f潵鐢靛瓙缃戝彛鍗忚"),
+    GRAIN_FZZY_BHZN_WEB("GRAIN_FZZY_BHZN_WEB", "绮儏-FZZY-BHZN鍙e崗璁�"),
+    GRAIN_FZZY_ZLDZ_WEB("GRAIN_FZZY_ZLDZ_WEB", "绮儏-FZZY-ZLDZ缃戝彛鍗忚"),
     DEVICE_WEIGHT_HTTP("DEVICE_WEIGHT_HTTP", "鍦扮-HTTP鍗忚"),
     DEVICE_WEIGHT_TCP_YH("DEVICE_WEIGHT_TCP_YH", "鍦扮-鑰�鍗嶵CP鍗忚"),
     DEVICE_IDCARD_HTTP("DEVICE_IDCARD_HTTP", "韬唤璇�-HTTP鍗忚"),
diff --git a/src/main/java/com/fzzy/gateway/GatewayUtils.java b/src/main/java/com/fzzy/gateway/GatewayUtils.java
index 076834c..8abd2bf 100644
--- a/src/main/java/com/fzzy/gateway/GatewayUtils.java
+++ b/src/main/java/com/fzzy/gateway/GatewayUtils.java
@@ -59,6 +59,15 @@
 
         return null;
     }
+    public static GatewayDevice getCacheByDeviceSIp(String ip) {
+        Collection<GatewayDevice> list = allCacheDevice();
+        if (null == list || list.isEmpty()) return null;
+
+        for (GatewayDevice device : list) {
+            if (ip.equals(device.getIp())) return device;
+        }
+        return null;
+    }
 
     /**
      * 閽堝涓�涓�氳鍒嗘満瀵瑰涓粨鎯呭喌
diff --git a/src/main/java/com/fzzy/gateway/hx2023/data/GrainData.java b/src/main/java/com/fzzy/gateway/hx2023/data/GrainData.java
index c12e6e3..9c9dcd0 100644
--- a/src/main/java/com/fzzy/gateway/hx2023/data/GrainData.java
+++ b/src/main/java/com/fzzy/gateway/hx2023/data/GrainData.java
@@ -25,4 +25,6 @@
 
     private String weatherStation;
 
+
+
 }
diff --git a/src/main/java/com/fzzy/gateway/hx2023/data/GrainOutPut.java b/src/main/java/com/fzzy/gateway/hx2023/data/GrainOutPut.java
index 565fef1..b902384 100644
--- a/src/main/java/com/fzzy/gateway/hx2023/data/GrainOutPut.java
+++ b/src/main/java/com/fzzy/gateway/hx2023/data/GrainOutPut.java
@@ -36,7 +36,9 @@
 
     private String maxZ = "0";
 
+    private List<GrainTH> temperatureAndhumidity;
 
     private List<GrainTemp> temperature;
 
+
 }
diff --git a/src/main/java/com/fzzy/gateway/hx2023/data/GrainTH.java b/src/main/java/com/fzzy/gateway/hx2023/data/GrainTH.java
new file mode 100644
index 0000000..2cabdfb
--- /dev/null
+++ b/src/main/java/com/fzzy/gateway/hx2023/data/GrainTH.java
@@ -0,0 +1,35 @@
+package com.fzzy.gateway.hx2023.data;
+
+import lombok.Data;
+
+/**
+ * 绮儏淇℃伅璇︾粏
+ */
+@Data
+public class GrainTH {
+
+    //鏍瑰彿
+    private String cableNum;
+
+    //灞傚彿
+    private String layerNumber;
+
+    //娓╁害鍊�
+    private String temperature;
+
+    //娓╁害鍊�
+    private String humidity;
+
+    //绱㈠紩锛屼粠0寮�濮�
+    private String position;
+
+
+    public GrainTH() {
+    }
+
+    public GrainTH(String temperature, String humidity ,String position) {
+        this.humidity = humidity;
+        this.temperature = temperature;
+        this.position = position;
+    }
+}
diff --git a/src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java b/src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java
index c7efde7..705d6a6 100644
--- a/src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java
+++ b/src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java
@@ -343,6 +343,10 @@
         }
 
         outPut.setTemperature(temperature);
+        List<GrainTH> ths = new ArrayList<>();
+
+        ths.add(new GrainTH(weather.getTem()!=null?weather.getTem()+"":"",weather.getHumidity()!=null?weather.getHumidity()+"":"","1"));
+        outPut.setTemperatureAndhumidity(ths);
 
         grain.setOutput(JSONObject.toJSONString(outPut));
 
diff --git a/src/main/java/com/fzzy/protocol/bhzn/analysis/AnalysisService.java b/src/main/java/com/fzzy/protocol/bhzn/analysis/AnalysisService.java
index fb8b9ba..9f804ac 100644
--- a/src/main/java/com/fzzy/protocol/bhzn/analysis/AnalysisService.java
+++ b/src/main/java/com/fzzy/protocol/bhzn/analysis/AnalysisService.java
@@ -98,21 +98,22 @@
     private void analysisGrain(IoMessage message) {
         try {
 
+            //鏍规嵁鍒嗘満SN鑾峰彇璁惧閰嶇疆淇℃伅
+            GatewayDevice gatewayDevice = GatewayUtils.getCacheByDeviceSn(message.getAddr());
+            if (null == gatewayDevice) {
+                replayGrain(message);
+                log.error("涓绘満-------->>骞冲彴锛岃В鏋愮伯鎯呭け璐ワ紝鏈幏鍙栧埌绯荤粺璁惧閰嶇疆淇℃伅锛�" + message.getAddr());
+                return;
+            }
             //鏍规嵁鍒嗘満鍦板潃鑾峰彇鍒嗘満淇℃伅
-            ApiCommonDevice commonDevice = Constant.getCommonDeviceCache(message.getAddr());
+            ApiCommonDevice commonDevice = Constant.getCommonDeviceCache(message.getIp());
             if (commonDevice == null) {
                 replayGrain(message);
                 log.error("涓绘満-------->>骞冲彴锛岃В鏋愮伯鎯呭け璐ワ紝鏈幏鍙栧埌绯荤粺绮儏涓绘満閰嶇疆锛�" + message.getAddr());
                 return;
             }
 
-            //鏍规嵁鍒嗘満SN鑾峰彇璁惧閰嶇疆淇℃伅
-            GatewayDevice gatewayDevice = GatewayUtils.getCacheByDeviceSn(commonDevice.getSn());
-            if (null == gatewayDevice) {
-                replayGrain(message);
-                log.error("涓绘満-------->>骞冲彴锛岃В鏋愮伯鎯呭け璐ワ紝鏈幏鍙栧埌绯荤粺璁惧閰嶇疆淇℃伅锛�" + message.getAddr());
-                return;
-            }
+
 
             //鑾峰彇璇锋眰淇℃伅
             BaseReqData reqData = ProtocolUtils.getSyncReq(gatewayDevice.getDepotIdSys());
@@ -323,7 +324,10 @@
         outPut.setAvgTemperature(NumberUtil.keepPrecision((sumT / sumNum), 1) + "");
         outPut.setMinTemperature(min + "");
         outPut.setMaxTemperature(min + "");
+        List<GrainTH> ths = new ArrayList<>();
 
+        ths.add(new GrainTH(thDto.getTempIn()!=null?thDto.getTempIn()+"":"",thDto.getHumidityIn()!=null?thDto.getHumidityIn()+"":"","1"));
+        outPut.setTemperatureAndhumidity(ths);
         grain.setOutput(JSONObject.toJSONString(outPut));
 
         GatewayDevice gatewayDeviceWeather = GatewayUtils.getCacheByDeviceTypeOne(GatewayDeviceType.TYPE_09.getCode());
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 3f827bf..3148d4f 100644
--- a/src/main/java/com/fzzy/protocol/bhzn/server/BhznGrainV2ServerEngine.java
+++ b/src/main/java/com/fzzy/protocol/bhzn/server/BhznGrainV2ServerEngine.java
@@ -46,9 +46,8 @@
         // 閰嶇疆绯荤粺蹇冭烦闂撮殧
         ioServerOption.setReaderIdleTime(5 * 60);
 
-        NettyServer ioServer = new NettyServer(ioServerOption, messageConsume, ioSessionListener, heartbeatProvider);
+        ioServer = new NettyServer(ioServerOption, messageConsume, ioSessionListener, heartbeatProvider);
         ioServer.startup();
-
 
         log.info("* ");
         log.info("* ========================");
diff --git a/src/main/java/com/fzzy/protocol/bhzn/service/Bhzn2GatewayGrainService.java b/src/main/java/com/fzzy/protocol/bhzn/service/Bhzn2GatewayGrainService.java
index 76d3852..bfca5c7 100644
--- a/src/main/java/com/fzzy/protocol/bhzn/service/Bhzn2GatewayGrainService.java
+++ b/src/main/java/com/fzzy/protocol/bhzn/service/Bhzn2GatewayGrainService.java
@@ -38,7 +38,7 @@
         GatewayDevice device = reqData.getDevice();
 
         //鑾峰彇杩炴帴涓殑璁惧淇℃伅
-        ApiCommonDevice apiCommonDevice = Constant.getCommonDeviceCache(device.getDeviceSn());
+        ApiCommonDevice apiCommonDevice = Constant.getCommonDeviceCache(device.getIp());
 
         if (null == apiCommonDevice) {
             resp.setCode(500);
diff --git a/src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisGrain.java b/src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisGrain.java
index 0c8346d..fb85434 100644
--- a/src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisGrain.java
+++ b/src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisGrain.java
@@ -159,7 +159,11 @@
         }
 
         outPut.setTemperature(temperature);
+        List<GrainTH> ths = new ArrayList<>();
 
+        ths.add(new GrainTH(response.getTIn()!=null?response.getTIn()+"":"",response.getHIn()!=null?response.getHIn()+"":"","1"));
+        outPut.setTemperatureAndhumidity(ths);
+        //grain.setOutput(JSONObject.toJSONString(outPut));
         grain.setOutput(com.alibaba.fastjson2.JSONObject.toJSONString(outPut));
 
 
diff --git a/src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisService.java b/src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisService.java
index 30fe028..efe9af8 100644
--- a/src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisService.java
+++ b/src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisService.java
@@ -47,7 +47,7 @@
             }
 
             //鎵ц鐨勫垎鏈轰俊鎭�
-            ApiCommonDevice commonDevice = Constant.getCommonDeviceCache(message.getSn());
+            ApiCommonDevice commonDevice = Constant.getCommonDeviceCacheBySn(message.getSn());
             if (null == commonDevice) {
                 log.warn("鎺у埗鏌�------>>>骞冲彴锛氬綋鍓嶇粍缁囩紪鐮�={}锛屽垎鏈篒D={}锛岀郴缁熸病鏈夎幏鍙栧埌鍒嗘満淇℃伅锛屾姤鏂囨棤娉曡繘琛岃В鏋�", message.getCompanyId(), message.getIedId());
                 return;
diff --git a/src/main/java/com/fzzy/protocol/fzzy/service/FzzyGatewayGrainService.java b/src/main/java/com/fzzy/protocol/fzzy/service/FzzyGatewayGrainService.java
index bf7e2c3..1e328e5 100644
--- a/src/main/java/com/fzzy/protocol/fzzy/service/FzzyGatewayGrainService.java
+++ b/src/main/java/com/fzzy/protocol/fzzy/service/FzzyGatewayGrainService.java
@@ -36,7 +36,7 @@
         GatewayDevice device = reqData.getDevice();
 
         //鑾峰彇杩炴帴涓殑璁惧淇℃伅
-        ApiCommonDevice apiCommonDevice = Constant.getCommonDeviceCache(device.getDeviceSn());
+        ApiCommonDevice apiCommonDevice = Constant.getCommonDeviceCache(device.getIp());
 
         if (null == apiCommonDevice) {
             resp.setCode(500);

--
Gitblit v1.9.3