From ebaaa34038ebda73630c9ab82465c5f76692b5c2 Mon Sep 17 00:00:00 2001
From: jiazx0107@163.com <jiazx0107@163.com>
Date: 星期二, 05 十二月 2023 00:01:48 +0800
Subject: [PATCH] 提交粮情协议2,完成

---
 /dev/null                                                          |   37 ---------
 src/main/java/com/fzzy/protocol/fzzy/server/SessionListener.java   |    4 
 src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisService.java |    2 
 src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisGrain.java   |  154 +++++++++++++++++++++++++++++++++++++-
 src/main/java/com/fzzy/protocol/fzzy/server/MsgConsumer.java       |   14 +-
 src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisSystem.java  |    2 
 6 files changed, 158 insertions(+), 55 deletions(-)

diff --git a/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncGrainImpl.java b/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncGrainImpl.java
deleted file mode 100644
index 100dce2..0000000
--- a/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncGrainImpl.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.fzzy.gateway.hx2023.service;
-
-import com.fzzy.api.data.GatewayDeviceProtocol;
-import com.fzzy.gateway.api.GatewaySyncGranService;
-import com.fzzy.gateway.data.BaseResp;
-import com.fzzy.gateway.data.BaseReqData;
-import com.fzzy.gateway.entity.GatewayDevice;
-import com.fzzy.gateway.hx2023.data.*;
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang.StringUtils;
-import org.springframework.stereotype.Service;
-
-/**
- * 缃戝叧涓庣伯鎯呭垎鏈洪�氳鍜岃В鏋�
- */
-@Slf4j
-@Data
-@Service
-public class HxGatewaySyncGrainImpl implements GatewaySyncGranService {
-
-
-    @Override
-    public String getGrainProtocol() {
-        return GatewayDeviceProtocol.DEVICE_TEST.getCode();
-    }
-
-
-    @Override
-    public BaseResp syncGrain(BaseReqData reqData) {
-
-       return new BaseResp();
-    }
-
-
-}
-
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 6e02d70..017002e 100644
--- a/src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisGrain.java
+++ b/src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisGrain.java
@@ -2,7 +2,17 @@
 
 import com.alibaba.fastjson.JSONObject;
 import com.fzzy.api.data.ApiCommonDevice;
+import com.fzzy.api.data.GatewayDeviceType;
+import com.fzzy.api.utils.NumberUtil;
+import com.fzzy.gateway.GatewayUtils;
+import com.fzzy.gateway.api.GatewayDeviceReportService;
+import com.fzzy.gateway.api.GatewayRemoteManager;
 import com.fzzy.gateway.data.BaseReqData;
+import com.fzzy.gateway.data.BaseResp;
+import com.fzzy.gateway.data.WeatherWebDto;
+import com.fzzy.gateway.entity.GatewayDevice;
+import com.fzzy.gateway.hx2023.ScConstant;
+import com.fzzy.gateway.hx2023.data.*;
 import com.fzzy.protocol.fzzy.builder.SimpleCommandBuilder;
 import com.fzzy.protocol.fzzy.cmd.BaseRemoteImpl;
 import com.fzzy.protocol.fzzy.data.ReMessage;
@@ -10,7 +20,12 @@
 import com.fzzy.protocol.fzzy.resp.Response2102;
 import com.fzzy.protocol.fzzy.server.ServerUtils;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * 绮儏瑙f瀽
@@ -20,6 +35,9 @@
 @Slf4j
 @Component(AnalysisGrain.BEAN_ID)
 public class AnalysisGrain extends BaseRemoteImpl {
+
+    @Resource
+    private GatewayRemoteManager gatewayRemoteManager;
 
     public static final String BEAN_ID = "fzzy.analysisGrain";
 
@@ -48,14 +66,16 @@
 
             Response2102 response = JSONObject.parseObject(reMessage.getContent(), Response2102.class);
 
-            String depotId = response.getHouseId();
-
-            //鑾峰彇璇锋眰淇℃伅
-            BaseReqData reqData = ServerUtils.getSyncReq(depotId);
-
 
             //绮儏瑙f瀽
-            log.info("鎺у埗鏌�--->骞冲彴绮儏淇℃伅--{}", response);
+            log.info("鎺у埗鏌�--->骞冲彴锛屾帹鍔ㄧ殑绮儏淇℃伅--{}", response);
+
+            //绮儏灏佽鍜屽鐞�
+            if (StringUtils.isEmpty(response.getLayerPerCircle())) {
+                buildBizInfo1(response);
+            } else {
+                buildBizInfo2(response);
+            }
 
 
         } catch (Exception e) {
@@ -65,6 +85,128 @@
         }
     }
 
+    private void buildBizInfo2(Response2102 response) {
+        //TODO 绛掍粨鐨勫皝瑁呰В鏋愬緟澶勭悊
+    }
+
+    //淇℃伅璋冩暣灏佽
+    private void buildBizInfo1(Response2102 response) {
+        String depotId = response.getHouseId();
+
+        //鑾峰彇璇锋眰淇℃伅
+        BaseReqData reqData = ServerUtils.getSyncReq(depotId);
+
+        if (null == reqData) {
+            log.error("--绮儏灏佽瑙f瀽锛屾湭鑾峰彇鍒拌姹傜浉鍏冲弬鏁�----");
+            return;
+        }
+
+
+        int cableZ = Integer.valueOf(response.getLay());
+        int cableY = Integer.valueOf(response.getRow());
+        int cableX = Integer.valueOf(response.getCol());
+
+        GatewayDevice device = reqData.getDevice();
+
+        //鏁版嵁灏佽
+        GrainData grain = new GrainData();
+        grain.setMessageId(ScConstant.getMessageId());
+        grain.setDeviceId(device.getDeviceId());
+        grain.setTimestamp(System.currentTimeMillis() + "");
+
+        ClientHeaders headers = new ClientHeaders();
+        headers.setDeviceName(device.getDeviceName());
+        headers.setProductId(device.getProductId());
+        headers.setOrgId(device.getOrgId());
+        headers.setMsgId(reqData.getMessageId());
+        grain.setHeaders(headers);
+
+        GrainOutPut outPut = new GrainOutPut();
+
+        outPut.setAvgTemperature(response.getTAvg() + "");
+        outPut.setMinTemperature(response.getTMin() + "");
+        outPut.setMaxTemperature(response.getTMax() + "");
+
+
+        List<GrainTemp> temperature = new ArrayList<>();
+        //鏍瑰彿
+        int cableNum = 1, position = 0;
+
+        double curTemp = response.getTMin();
+        String[] attr = response.getPoints().split(",");
+        int x = 0, y = 0, z = 0;
+        for (int i = 0; i < attr.length; i++) {
+            curTemp = Double.valueOf(attr[i]);
+
+            if (curTemp < -900) {
+                curTemp = ERROR_CHECK_TAG;
+            }
+
+            //鏁版嵁浼樺寲
+            if (curTemp > 35) {
+                curTemp = response.getTAvg();
+            }
+
+            position = i;
+            z = i % cableZ + 1;
+            x = i / (cableZ * cableY);
+            y = x * (cableZ * cableY);
+            y = (i - y) / cableZ;
+            //鏍瑰彿
+            cableNum = (i / cableZ) + 1;
+
+            temperature.add(new GrainTemp(cableNum + "", z + "", curTemp + "", position + ""));
+        }
+
+        outPut.setTemperature(temperature);
+
+        grain.setOutput(com.alibaba.fastjson2.JSONObject.toJSONString(outPut));
+
+
+        GatewayDevice gatewayDeviceWeather = GatewayUtils.getCacheByDeviceTypeOne(GatewayDeviceType.TYPE_09.getCode());
+
+
+        //绯荤粺姘旇薄绔欎俊鎭�
+        WeatherWebDto weather = WeatherWebDto.contextMap.get("default");
+
+        //姘旇薄淇℃伅
+        GrainWeather weatherStation = new GrainWeather();
+        weatherStation.setMessageId(ScConstant.getMessageId());
+        weatherStation.setMessgeId(weatherStation.getMessageId());
+
+        if (null != gatewayDeviceWeather) {
+            weatherStation.setId(gatewayDeviceWeather.getDeviceId());
+        } else {
+            weatherStation.setId(device.getDeviceId());
+        }
+        weatherStation.setAirPressure(weather.getPressure());
+        weatherStation.setHumidity(weather.getHumidity());
+        weatherStation.setPm(weather.getAir_pm25());
+        weatherStation.setRadiation("0");
+        weatherStation.setRainfallAmount(weather.getWea());
+        weatherStation.setTemperature(weather.getTem());
+        weatherStation.setWindDirection(weather.getWin());
+        weatherStation.setWindPower(weather.getWin_meter());
+        weatherStation.setWindSpeed(weather.getWin_speed());
+        grain.setWeatherStation(JSONObject.toJSONString(weatherStation));
+
+
+        //灏佽濂界殑鏁版嵁
+        log.info("---绮儏鏈烘灏佽瀹屾垚----寮�濮嬫墽琛屾帹閫�");
+
+        reqData.setData(JSONObject.toJSONString(grain));
+        doPushGrain(reqData);
+    }
+
+    private void doPushGrain(BaseReqData reqData) {
+
+        GatewayDeviceReportService reportService = gatewayRemoteManager.getDeviceReportService(reqData.getDevice().getPushProtocol());
+        if (null == reportService) {
+            log.error("------------绮儏鎺ㄩ�佸け璐ワ紝绯荤粺涓嶅瓨鍦ㄥ綋鍓嶅崗璁墽琛岀被----{}", reqData.getDevice().getDeviceName());
+        }
+        reportService.reportGrainData(reqData);
+    }
+
     private void returnMsg(ApiCommonDevice ser) {
         //鍏堝洖澶嶆帶鍒舵煖
         SimpleCommandBuilder commandBuilder = SimpleCommandBuilder.getInstance();
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 e270adf..30fe028 100644
--- a/src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisService.java
+++ b/src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisService.java
@@ -46,14 +46,12 @@
                 return;
             }
 
-
             //鎵ц鐨勫垎鏈轰俊鎭�
             ApiCommonDevice commonDevice = Constant.getCommonDeviceCache(message.getSn());
             if (null == commonDevice) {
                 log.warn("鎺у埗鏌�------>>>骞冲彴锛氬綋鍓嶇粍缁囩紪鐮�={}锛屽垎鏈篒D={}锛岀郴缁熸病鏈夎幏鍙栧埌鍒嗘満淇℃伅锛屾姤鏂囨棤娉曡繘琛岃В鏋�", message.getCompanyId(), message.getIedId());
                 return;
             }
-
 
             //鏍规嵁鎺ュ彛缂栧彿杩涜瑙f瀽璺敱
             switch (message.getFunctionId()) {
diff --git a/src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisSystem.java b/src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisSystem.java
index 91db1bd..3a5a27f 100644
--- a/src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisSystem.java
+++ b/src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisSystem.java
@@ -49,7 +49,7 @@
         SendMessage message = commandBuilder.buildMessage(reMessage, ServerUtils.FUNCTION_1001, response);
         send(message);
 
-        log.info("鎺у埗鏌�----->>>骞冲彴锛氭帶鍒舵煖涓婄嚎鐧婚檰鎴愬姛-IP={},PORT={}", reMessage.getIp(), reMessage.getPort());
+        log.info("鎺у埗鏌�----->>>骞冲彴锛屾帶鍒舵煖鐧婚檰瑙f瀽瀹屾垚-鎶ユ枃-{}", reMessage);
     }
 
     public void analysis1003(ReMessage reMessage, ApiCommonDevice ser) {
diff --git a/src/main/java/com/fzzy/protocol/fzzy/server/MsgConsumer.java b/src/main/java/com/fzzy/protocol/fzzy/server/MsgConsumer.java
index 7da3623..037dfee 100644
--- a/src/main/java/com/fzzy/protocol/fzzy/server/MsgConsumer.java
+++ b/src/main/java/com/fzzy/protocol/fzzy/server/MsgConsumer.java
@@ -43,19 +43,19 @@
             reMessage.setStrMsg(message);
             session.setCompanyId("0000");
 
-            log.info("鎺у埗鏌�------>>>>骞冲彴锛欼P={}锛孭ORT={}锛宮essage={}", reMessage.getIp(), reMessage.getPort(), message);
+            log.debug("鎺у埗鏌滃埌---->>>>骞冲彴锛屾湭瑙f瀽淇℃伅锛欼P={}锛孭ORT={}锛宮essage={}", reMessage.getIp(), reMessage.getPort(), message);
+
+            //璋冪敤瑙f瀽鎺ュ彛寮�濮嬭В鏋�
+            if (null == analysisService) {
+                analysisService = (AnalysisService) SpringUtil.getBean(AnalysisService.BEAN_ID);
+            }
+            analysisService.analysis(reMessage);
 
         } catch (Exception e) {
             log.error("鎺у埗鏌�------>>>>骞冲彴锛氭敹鍒版姤鏂囪В鏋愬紓甯革細{}", e.getMessage());
             e.printStackTrace();
         }
 
-        //璋冪敤瑙f瀽鎺ュ彛寮�濮嬭В鏋�
-        if (null == analysisService) {
-            analysisService = (AnalysisService) SpringUtil.getBean(AnalysisService.BEAN_ID);
-        }
-
-        analysisService.analysis(reMessage);
     }
 
 }
diff --git a/src/main/java/com/fzzy/protocol/fzzy/server/SessionListener.java b/src/main/java/com/fzzy/protocol/fzzy/server/SessionListener.java
index 7c30842..0c0f766 100644
--- a/src/main/java/com/fzzy/protocol/fzzy/server/SessionListener.java
+++ b/src/main/java/com/fzzy/protocol/fzzy/server/SessionListener.java
@@ -10,7 +10,7 @@
     @Override
     public void onCreate(IoSession session) {
 
-        log.info("++++FZZY-鎺у埗鏌滀笂绾�++++-IP={}锛孭ORT={}", session.getAddress(), session.getPort());
+        log.info("++++FZZY-鎺у埗涓崗璁湁鏂拌澶囪繛鎺�++++-IP={}锛孭ORT={}", session.getAddress(), session.getPort());
 
         // 娣诲姞鑷畾涔変笟鍔D
         session.setBusinessKey(ServerUtils.getServerKey(session.getAddress(), session.getPort()));
@@ -19,6 +19,6 @@
 
     @Override
     public void onDestroy(IoSession session) {
-        log.info("----FZZY-鎺у埗鏌滅绾�-----IP={}锛孭ORT={}", session.getAddress(), session.getPort());
+        log.info("----FZZY-鎺у埗涓崗璁湁璁惧绂荤嚎-----IP={}锛孭ORT={}", session.getAddress(), session.getPort());
     }
 }

--
Gitblit v1.9.3