From 013c5f28422defd9b47abbe17a827be693872a26 Mon Sep 17 00:00:00 2001
From: jiazx0107@163.com <jiazx0107@163.com>
Date: 星期四, 04 一月 2024 14:39:26 +0800
Subject: [PATCH] 调整优化正来电子粮情协议

---
 src/main/java/com/fzzy/protocol/zldz/server/SessionListener.java          |   33 ++-
 src/main/java/com/fzzy/protocol/zldz/analysis/AnalysisTH.java             |   18 +-
 src/main/java/com/fzzy/protocol/zldz/service/ZldzGatewayGrainService.java |   47 +++++
 src/main/java/com/fzzy/protocol/zldz/analysis/AnalysisGrain.java          |  149 +++++++++++++++++-
 src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1128.java          |   78 +++++++++
 src/main/java/com/fzzy/protocol/ProtocolScheduled.java                    |   85 ++++++++++
 src/main/java/com/fzzy/protocol/data/THDto.java                           |   31 +--
 src/main/java/com/fzzy/protocol/zldz/server/HeartbeatProviderImpl.java    |    2 
 8 files changed, 394 insertions(+), 49 deletions(-)

diff --git a/src/main/java/com/fzzy/protocol/ProtocolScheduled.java b/src/main/java/com/fzzy/protocol/ProtocolScheduled.java
new file mode 100644
index 0000000..fb171da
--- /dev/null
+++ b/src/main/java/com/fzzy/protocol/ProtocolScheduled.java
@@ -0,0 +1,85 @@
+package com.fzzy.protocol;
+
+import com.fzzy.api.data.GatewayDeviceProtocol;
+import com.fzzy.gateway.GatewayUtils;
+import com.fzzy.gateway.data.BaseReqData;
+import com.fzzy.gateway.entity.GatewayDevice;
+import com.fzzy.protocol.zldz.service.ZldzGatewayGrainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.Collection;
+import java.util.Date;
+
+
+/**
+ * 鍗忚鐩稿叧鐨勫畾鏃跺櫒锛屽叏灞�瀹氭椂鍣紝鍖呭惈鎵�鏈夌殑鍗忚锛岄�昏緫澶勭悊鏄惁鎵ц
+ */
+@Slf4j
+@Component(ProtocolScheduled.BEAN_ID)
+public class ProtocolScheduled {
+
+    public static final String BEAN_ID = "protocol.Scheduled";
+
+
+    @Resource
+    private ZldzGatewayGrainService zldzGatewayGrainService;
+
+
+    /**
+     * 浠�6-19鐐规瘡灏忔椂鎵ц涓�娆�
+     * cron = "0 0 6-19 * * ? *"
+     */
+    @Scheduled(cron = "0 0 6-19 * * ? ")
+    public void scheduled() {
+
+        Date cur = new Date();
+
+        log.info("--------------绯荤粺鎵ц瀹氭椂鏁版嵁鍚屾鎿嶄綔--------------");
+
+        //姝f潵鐢靛瓙鍗忚-瀹氭椂浠诲姟
+        this.scheduledZldz(cur);
+
+
+    }
+
+    /**
+     * 姝f潵鐢靛瓙瀹氭椂浠诲姟
+     *
+     * @param cur
+     */
+    private void scheduledZldz(Date cur) {
+
+        //鑾峰彇璁惧鍒楄〃
+        Collection<GatewayDevice> list = GatewayUtils.allCacheDevice();
+
+        try {
+            BaseReqData reqData;
+            for (GatewayDevice device : list) {
+
+                if (null == device.getSyncProtocol()) continue;
+
+                if (!GatewayDeviceProtocol.GRAIN_FZZY_ZLDZ_WEB.getCode().equals(device.getSyncProtocol())) {
+                    continue;
+                }
+
+                reqData = new BaseReqData();
+                reqData.setDeviceId(device.getDeviceId());
+                reqData.setProductId(device.getProductId());
+                reqData.setDeviceName(device.getDeviceName());
+                reqData.setDevice(device);
+
+                zldzGatewayGrainService.syncGrainTh(reqData);
+
+                Thread.sleep(500);
+            }
+
+        } catch (Exception e) {
+
+        }
+    }
+
+
+}
diff --git a/src/main/java/com/fzzy/protocol/data/THDto.java b/src/main/java/com/fzzy/protocol/data/THDto.java
index 894a9d6..5a936e9 100644
--- a/src/main/java/com/fzzy/protocol/data/THDto.java
+++ b/src/main/java/com/fzzy/protocol/data/THDto.java
@@ -8,32 +8,31 @@
 
 /**
  * 涓氬姟鏁版嵁锛氱伯椋熸俯搴︽箍搴︾粺璁′俊鎭�
- * 
- * @author Andy
  *
+ * @author Andy
  */
 @Data
 public class THDto implements Serializable {
 
-	
-	private static final long serialVersionUID = 1L;
 
-	private String serId;//鎵�灞炲垎鏈�
+    private static final long serialVersionUID = 1L;
 
-	private String thAddr = "1";//鎵�灞為�氶亾
+    private String serId;//鎵�灞炲垎鏈�
 
-	@PropertyDef(label = "鎵�灞炰粨搴�", description = "浠撳簱缂栧彿")
-	private String depotId;
+    private String thAddr = "1";//鎵�灞為�氶亾
 
-	@PropertyDef(label = "浠撳唴娓╁害", description = "鍗曚綅鈩�")
-	private Double tempIn;
+    @PropertyDef(label = "鎵�灞炰粨搴�", description = "浠撳簱缂栧彿")
+    private String depotId;
 
-	@PropertyDef(label = "浠撳唴婀垮害", description = "鍗曚綅%RH")
-	private Double humidityIn;
-	
-	@PropertyDef(label = "鎺ユ敹鏃堕棿")
-	private Date receiveDate = new Date();
+    @PropertyDef(label = "浠撳唴娓╁害", description = "鍗曚綅鈩�")
+    private Double tempIn;
 
-	private String remark;
+    @PropertyDef(label = "浠撳唴婀垮害", description = "鍗曚綅%RH")
+    private Double humidityIn;
+
+    @PropertyDef(label = "鎺ユ敹鏃堕棿")
+    private Date receiveDate = new Date();
+
+    private String remark;
 
 }
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 d2b07b1..a497bde 100644
--- a/src/main/java/com/fzzy/protocol/zldz/analysis/AnalysisGrain.java
+++ b/src/main/java/com/fzzy/protocol/zldz/analysis/AnalysisGrain.java
@@ -1,11 +1,22 @@
 package com.fzzy.protocol.zldz.analysis;
 
+import com.alibaba.fastjson.JSONObject;
+import com.fzzy.api.data.GatewayDeviceType;
 import com.fzzy.api.utils.BytesUtil;
 import com.fzzy.api.utils.ContextUtil;
+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.WeatherWebDto;
 import com.fzzy.gateway.entity.GatewayDevice;
+import com.fzzy.gateway.hx2023.ScConstant;
+import com.fzzy.gateway.hx2023.data.*;
 import com.fzzy.io.request.BaseRequest;
 import com.fzzy.protocol.ProtocolUtils;
+import com.fzzy.protocol.bhzn.v0.cmd.ReMessageBuilder;
+import com.fzzy.protocol.data.THDto;
 import com.fzzy.protocol.zldz.data.ReMessage;
 import com.fzzy.protocol.zldz.service.ZldzGatewayGrainService;
 import lombok.extern.slf4j.Slf4j;
@@ -33,6 +44,10 @@
 
     @Resource
     private ZldzGatewayGrainService zldzGatewayGrainService;
+
+    @Resource
+    private GatewayRemoteManager gatewayRemoteManager;
+
 
     public static Map<String, Map<String, String>> contextMap = new HashMap<>();
 
@@ -249,8 +264,6 @@
             // 澶囩敤鍊�
             if (tempValue == ERROR_CHECK_TAG) {
                 tempValue = ProtocolUtils.ERROR_TEMP;
-
-
                 //楠岃瘉鏄笉鏄敟褰粨琛ュ伩鍊�
                 curLay = (i % layMax) + 1;
                 curRoot = (i / layMax) + 1;
@@ -298,9 +311,7 @@
      * @param packetMap
      * @param sumPackets
      */
-    private void analysisStep1(ReMessage msg,
-                               GatewayDevice device, BaseReqData reqData,
-                               Map<String, String> packetMap, int sumPackets) {
+    private void analysisStep1(ReMessage msg, GatewayDevice device, BaseReqData reqData, Map<String, String> packetMap, int sumPackets) {
         // 鑾峰彇瀹屾暣鐨勭伯鎯呭寘淇℃伅
         String strPoints = "";
         for (int i = 1; i <= sumPackets; i++) {
@@ -343,7 +354,7 @@
 
 
         // 灏嗛泦鍚堣В鏋愭垚鍧愭爣鏁版嵁
-        addPoint1(temps, msg, device, reqData);
+        addPoint1(temps, device, reqData, cableX, cableY, cableZ);
     }
 
     private String buildCurKey(ReMessage msg, int curPacket) {
@@ -360,11 +371,131 @@
      * @param temps
      * @throws Exception
      */
-    private void addPoint1(List<Double> temps, ReMessage msg,
-                           GatewayDevice device, BaseReqData reqData) {
-        //TODO
+    private void addPoint1(List<Double> temps, GatewayDevice device, BaseReqData reqData, int cableX, int cableY, int cableZ) {
+
+        //鏁版嵁灏佽
+        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();
+
+
+        double max = ReMessageBuilder.MAX_TEMP, min = ReMessageBuilder.MIN_TEMP, sumT = 0.0, sumNum = cableX * cableY * cableZ;
+
+        List<GrainTemp> temperature = new ArrayList<>();
+        //鏍瑰彿
+        int cableNum = 1, position = 0;
+
+        double curTemp;
+        int x = 0, y = 0, z = 0;
+        for (int i = 0; i < temps.size(); i++) {
+            curTemp = temps.get(i);
+            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 + ""));
+
+            //姹傛渶澶ф渶灏忓��
+            if (curTemp < -900) {
+                sumNum--;
+            } else {
+                sumT += curTemp;
+                if (curTemp > max) {
+                    max = curTemp;
+                }
+                if (curTemp < min) {
+                    min = curTemp;
+                }
+            }
+        }
+
+        if (sumNum == 0) {
+            sumNum = 1;
+            log.warn("---褰撳墠绮儏閲囬泦寮傚父--");
+        }
+        //杩囨护姣旇緝鐢ㄧ殑鏈�澶ф渶灏忓��
+        if (max == ReMessageBuilder.MAX_TEMP) {
+            max = 0.0;
+        }
+        if (min == ReMessageBuilder.MIN_TEMP) {
+            min = 0.0;
+        }
+
+        outPut.setTemperature(temperature);
+        outPut.setAvgTemperature(NumberUtil.keepPrecision((sumT / sumNum), 1) + "");
+        outPut.setMinTemperature(min + "");
+        outPut.setMaxTemperature(min + "");
+        List<GrainTH> ths = new ArrayList<>();
+
+
+        THDto thDto = ProtocolUtils.getCacheTh(device.getDeviceId());
+        if (null == thDto) thDto = new THDto();
+
+        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());
+
+        //绯荤粺姘旇薄绔欎俊鎭�
+        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());
+            return;
+        }
+        reportService.reportGrainData(reqData);
+    }
+
+
     /**
      * 鍦嗙瓛浠撹В鏋愭楠�
      *
diff --git a/src/main/java/com/fzzy/protocol/zldz/analysis/AnalysisTH.java b/src/main/java/com/fzzy/protocol/zldz/analysis/AnalysisTH.java
index beb890b..4b3f8c8 100644
--- a/src/main/java/com/fzzy/protocol/zldz/analysis/AnalysisTH.java
+++ b/src/main/java/com/fzzy/protocol/zldz/analysis/AnalysisTH.java
@@ -27,11 +27,11 @@
      * 瑙f瀽浠撳簱娓╂箍搴︿俊鎭紝灏嗕俊鎭斁鍦ㄧ紦瀛樹腑锛屼互渚跨伯鎯呬娇鐢�
      *
      * @param msg
-     * @param ser
+     * @param device
      */
-    public void analysis8828(ReMessage msg, GatewayDevice ser) {
+    public void analysis8828(ReMessage msg, GatewayDevice device) {
 
-        log.debug("-----------analysis8828------------{}.{}", ser.getIp(), ser.getPort());
+        log.debug("-----------analysis8828------------{}.{}", device.getIp(), device.getPort());
 
         String content = msg.getBody().getContent();
 
@@ -55,8 +55,8 @@
             t = BytesUtil.hexToInt("FF" + temp);
         }
         if (t == ERROR_TH_TAG) {
-            log.error("{}娓╂箍搴﹁В鏋愬紓甯革紝鍘熷洜锛氭病鏈夋娴嬪埌浼犳劅鍣�", ser.getDeviceName());
-            th.setRemark(ser.getDeviceName() + "娓╂箍搴﹁В鏋愬紓甯革紝鍘熷洜锛氭病鏈夋娴嬪埌浼犳劅鍣�");
+            log.error("{}娓╂箍搴﹁В鏋愬紓甯革紝鍘熷洜锛氭病鏈夋娴嬪埌浼犳劅鍣�", device.getDeviceName());
+            th.setRemark(device.getDeviceName() + "娓╂箍搴﹁В鏋愬紓甯革紝鍘熷洜锛氭病鏈夋娴嬪埌浼犳劅鍣�");
         } else {
             th.setTempIn(Double.valueOf(t));
         }
@@ -70,17 +70,17 @@
             h = BytesUtil.hexToInt("FF" + temp);
         }
         if (h == ERROR_TH_TAG) {
-            log.error("{}娓╂箍搴﹁В鏋愬紓甯革紝鍘熷洜锛氭病鏈夋娴嬪埌浼犳劅鍣�", ser.getDeviceName());
-            th.setRemark(ser.getDeviceName() + "娓╂箍搴﹁В鏋愬紓甯革紝鍘熷洜锛氭病鏈夋娴嬪埌浼犳劅鍣�");
+            log.error("{}娓╂箍搴﹁В鏋愬紓甯革紝鍘熷洜锛氭病鏈夋娴嬪埌浼犳劅鍣�", device.getDeviceName());
+            th.setRemark(device.getDeviceName() + "娓╂箍搴﹁В鏋愬紓甯革紝鍘熷洜锛氭病鏈夋娴嬪埌浼犳劅鍣�");
         } else {
             th.setHumidityIn(Double.valueOf(h));
         }
 
-        th.setSerId(ser.getId());
+        th.setSerId(device.getDeviceId());
         th.setThAddr(thAddr + "");
 
         //瀛樻斁缂撳瓨
-        ProtocolUtils.addTh2Map(ser.getDeviceId(), th);
+        ProtocolUtils.addTh2Map(device.getDeviceId(), th);
 
         log.info("浠撴俯浠撴箍瑙f瀽瀹屾垚={}", th);
     }
diff --git a/src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1128.java b/src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1128.java
new file mode 100644
index 0000000..d5e4200
--- /dev/null
+++ b/src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1128.java
@@ -0,0 +1,78 @@
+package com.fzzy.protocol.zldz.cmd;
+
+
+import com.fzzy.api.data.ApiCommonDevice;
+import com.fzzy.api.utils.BytesUtil;
+import com.fzzy.gateway.data.BaseReqData;
+import com.fzzy.gateway.entity.GatewayDevice;
+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 CommandBuilder1128 extends CommandBuilder {
+
+
+    private final static CommandBuilder1128 instance = new CommandBuilder1128();
+
+    private CommandBuilder1128() {
+    }
+
+    public static CommandBuilder1128 getInstance() {
+        return instance;
+    }
+
+    public Message buildMessage(BaseReqData reqData, ApiCommonDevice commonDevice) {
+
+        Message message = new Message();
+
+        message.setBegin(ZldzServerUtil.MSG_START);
+
+        // 璋冩暣Message澶撮儴淇℃伅
+        buildHeader(message, reqData, commonDevice);
+
+        //鍖呭ご鏍¢獙
+        buildCrc8(message);
+
+        // 鍒涘缓娑堟伅浣�
+        buildBody(message, reqData);
+
+        // 娣诲姞鏍¢獙
+        buildCrc16(message);
+
+        message.setEnd(ZldzServerUtil.MSG_END);
+
+        // 鐢熸垚鏁翠綋鍛戒护淇℃伅鍜孊Yte淇℃伅
+        build(message);
+
+        return message;
+    }
+
+    public void buildHeader(Message message, BaseReqData reqData, ApiCommonDevice commonDevice) {
+
+        GatewayDevice device = reqData.getDevice();
+        String hexCompanyId = BytesUtil.getTargetId(commonDevice.getOrgId(), true);
+        hexCompanyId = BytesUtil.tran_LH(hexCompanyId);
+
+        message.setSourceId(hexCompanyId);
+        message.setSendId(hexCompanyId);
+        message.setCompanyId(hexCompanyId);
+
+        message.setTargetId(BytesUtil.tran_LH(BytesUtil.getTargetId(device.getDeviceSn(), true)));
+        message.setMessageType(BytesUtil.tran_LH(ZldzServerUtil.MSG_TYPE_1128));
+    }
+
+
+    public void buildBody(Message message, BaseReqData reqData) {
+        GatewayDevice device = reqData.getDevice();
+        MessageBody body = new MessageBody();
+        body.setLength(2);
+        body.setContent(BytesUtil.tran_LH(BytesUtil.getTargetId(device.getThAddr(), true)));
+        message.setBody(body);
+    }
+
+}
diff --git a/src/main/java/com/fzzy/protocol/zldz/server/HeartbeatProviderImpl.java b/src/main/java/com/fzzy/protocol/zldz/server/HeartbeatProviderImpl.java
index 4785ebf..cd24f6e 100644
--- a/src/main/java/com/fzzy/protocol/zldz/server/HeartbeatProviderImpl.java
+++ b/src/main/java/com/fzzy/protocol/zldz/server/HeartbeatProviderImpl.java
@@ -17,7 +17,7 @@
     @Override
     public byte[] provide(IoSession session) {
 
-        log.debug("========绯荤粺寮�濮嬫墽琛屽績璺�=========={}---{}", session.getCompanyId(), session.getBusinessKey());
+        log.debug("========绯荤粺寮�濮嬫墽琛屽績璺�=========-{}", session.getBusinessKey());
 
         return null;
     }
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 edb2881..43d283f 100644
--- a/src/main/java/com/fzzy/protocol/zldz/server/SessionListener.java
+++ b/src/main/java/com/fzzy/protocol/zldz/server/SessionListener.java
@@ -35,21 +35,25 @@
         Constant.updateCacheOnline(session.getAddress(), session.getPort());
 
 
-        /***********************璁惧涓婄嚎鍚庝富鍔ㄨ幏鍙栭厤缃俊鎭�******************/
+        try {
+            /***********************璁惧涓婄嚎鍚庝富鍔ㄨ幏鍙栭厤缃俊鎭�******************/
 
-        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();
+            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);
+        } catch (Exception e) {
+            log.error("骞冲彴------->>鍒嗘満---璁惧涓婄嚎锛岃嚜鍔ㄥ彂閫佽澶囬厤缃俊鎭姹傚懡浠ゅけ璐�--{}", session.getAddress());
         }
-        log.info("骞冲彴------->>鍒嗘満---璁惧涓婄嚎锛岃嚜鍔ㄥ彂閫佽澶囬厤缃俊鎭姹傚懡浠�--{}",message);
     }
 
     /**
@@ -69,8 +73,9 @@
         if (null == gatewayDeviceService) {
             gatewayDeviceService = SpringUtil.getBean(GatewayDeviceService.class);
         }
-
         gatewayDeviceService.OfflineByCommonDevice(commonDevice);
 
+        //韪㈠嚭杩炴帴
+        session.destroy();
     }
 }
diff --git a/src/main/java/com/fzzy/protocol/zldz/service/ZldzGatewayGrainService.java b/src/main/java/com/fzzy/protocol/zldz/service/ZldzGatewayGrainService.java
index 7f2350e..168052f 100644
--- a/src/main/java/com/fzzy/protocol/zldz/service/ZldzGatewayGrainService.java
+++ b/src/main/java/com/fzzy/protocol/zldz/service/ZldzGatewayGrainService.java
@@ -92,8 +92,55 @@
 
     @Override
     public BaseResp syncGrainTh(BaseReqData reqData) {
+
         BaseResp resp = new BaseResp();
 
+        GatewayDevice device = reqData.getDevice();
+
+        //鑾峰彇杩炴帴涓殑璁惧淇℃伅
+        ApiCommonDevice apiCommonDevice = Constant.getCommonDeviceCache(device.getDeviceSn());
+
+        if (null == apiCommonDevice) {
+            resp.setCode(500);
+            resp.setMsg("绯荤粺鏈幏鍙栧埌涓嬭杩炴帴璁惧淇℃伅锛屾棤娉曟墽琛�");
+            log.error("----------------绯荤粺鏈幏鍙栧埌涓嬭杩炴帴璁惧淇℃伅,鏃犳硶鎵ц---------");
+            return resp;
+        }
+
+        if (Constant.YN_N.equals(apiCommonDevice.getStatus())) {
+            resp.setCode(500);
+            resp.setMsg("涓嬭璁惧涓嶅湪绾�---鏃犳硶鎵ц----" + device.getDeviceName());
+            log.error("涓嬭璁惧涓嶅湪绾�---鏃犳硶鎵ц----" + device.getDeviceName());
+            return resp;
+        }
+
+        device.setIp(apiCommonDevice.getIp());
+        device.setPort(apiCommonDevice.getPort());
+
+        reqData.setDevice(device);
+
+        try {
+            //鐢熸垚娓╁害鍛戒护
+            Message message = CommandBuilder1128.getInstance().getInstance().buildMessage(reqData, apiCommonDevice);
+
+            log.error("骞冲彴------>>>>鎺у埗鏌滐細鍙戦�佹俯婀垮害妫�娴嬪懡浠�-{}", message);
+            // 鍙戦�佸懡浠�
+            InvokeResult result = ZldzServerEngine.push(apiCommonDevice.getIp(), apiCommonDevice.getPort(), message.getByteMsg());
+
+            // 灏佽杩斿洖淇℃伅
+            if (!InvokeResult.SUCCESS.getCode().equals(result.getCode())) {
+                log.error("骞冲彴------>>>>鎺у埗鏌滐細鍙戦�佹俯婀垮害妫�娴嬪懡浠�-澶辫触{}", result.getMessage());
+                resp.setCode(500);
+                resp.setMsg("骞冲彴------>>>>鎺у埗鏌滐細鍙戦�佹俯婀垮害妫�娴嬪懡浠�-澶辫触锛�" + result.getMessage());
+            }
+
+        } catch (Exception e) {
+            log.error("娓╂箍搴︽娴嬪紓甯革細{}", e);
+            resp.setCode(500);
+            resp.setMsg("骞冲彴------>>>>鎺у埗鏌滐細鍙戦�佹俯婀垮害妫�娴嬪懡浠わ細" + e.getMessage());
+            return resp;
+        }
+        
         return resp;
     }
 

--
Gitblit v1.9.3