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