Parcourir la source

2021/7/12 数据包解析

yinhao il y a 4 ans
Parent
commit
9318fd3b43

+ 1 - 1
huimv-smart-apiservice/src/main/java/com/huimv/apiservice/entity/YearPigBaseEntity.java

@@ -34,7 +34,7 @@ public class YearPigBaseEntity implements Serializable {
     private Integer dayAge;
 
     /**
-     * 牧场单元
+     * 牧场
      */
     private Integer farmId;
     /**

+ 1 - 1
huimv-smart-datacollection/src/main/java/com/huimv/datacollection/service/HandleDataPackageService.java

@@ -23,7 +23,7 @@ public interface HandleDataPackageService {
      * @param pigstyId
      * @param map
      */
-    void handleTemperature(IndoorEnvironmentEntity indoorEnvironmentEntity, Double value, Integer farmId, Integer pigstyId, Map<String, Double> map);
+    void handleTemperature(IndoorEnvironmentEntity indoorEnvironmentEntity, double value, Integer farmId, Integer pigstyId, Map<String, Double> map);
 
     /**
      * 湿度处理

+ 1 - 1
huimv-smart-datacollection/src/main/java/com/huimv/datacollection/service/IClientDataPacketService.java

@@ -15,7 +15,7 @@ public interface IClientDataPacketService {
      * @return
      * @throws ParseException
      */
-    void handleClientSendPacket(String clientMessage) throws ParseException;
+    String handleClientSendPacket(String clientMessage) throws ParseException;
 
     /**
      * 测试接口

+ 13 - 7
huimv-smart-datacollection/src/main/java/com/huimv/datacollection/service/impl/ClientDataPacketServiceImpl.java

@@ -37,11 +37,11 @@ public class ClientDataPacketServiceImpl implements IClientDataPacketService {
     private HandleDataPackageService handleDataPackageService;
 
     @Override
-    public void handleClientSendPacket(String clientMessageTxt) {
+    public String handleClientSendPacket(String clientMessageTxt) {
 
         if (clientMessageTxt == null || clientMessageTxt.isEmpty()) {
-            log.error("本地提交数据包为空.");
-            return;
+            log.error("本地提交数据包为空!");
+            return null;
         }
 
         String matcher = "[+]";
@@ -49,6 +49,11 @@ public class ClientDataPacketServiceImpl implements IClientDataPacketService {
         String cmd = clientMessageArray[2];
         log.info("本次执行命令>>" + cmd);
 
+
+        if (!cmd.equals(CmdEnum.TEMPERATURE.getTypeNum()) || !cmd.equals(CmdEnum.HUMIDITY.getTypeNum()) || !cmd.equals(CmdEnum.GAS.getTypeNum())) {
+            log.info("不是指定的命令类型!");
+            return null;
+        }
         DeviceDataEntity deviceDataEntity = new DeviceDataEntity();
         deviceDataEntity.setCmdHeader(clientMessageArray[0]);
         String jqId = clientMessageArray[1];
@@ -90,23 +95,24 @@ public class ClientDataPacketServiceImpl implements IClientDataPacketService {
             case 7:
                 indoorEnvironmentEntity.setType(1);
                 handleDataPackageService.handleTemperature(indoorEnvironmentEntity, value, farmId, pigstyId, map);
-                break;
+                return "hm+7+0+7+end";
             case 8:
                 indoorEnvironmentEntity.setType(2);
                 handleDataPackageService.handleHumidity(indoorEnvironmentEntity, value, farmId, pigstyId, map);
-                break;
+                return "hm+8+0+8+end";
             case 9:
                 indoorEnvironmentEntity.setType(3);
                 handleDataPackageService.handleGas(indoorEnvironmentEntity, value, farmId, pigstyId, map);
-                break;
+                return "hm+9+0+8+end";
             default:
                 break;
         }
+        return null;
     }
 
 
     @Override
-    public void interfaceTest(){
+    public void interfaceTest() {
         Map<String, Double> map = managementFeignService.selectByType((short) 1);
         System.out.println(map);
 

+ 2 - 1
huimv-smart-datacollection/src/main/java/com/huimv/datacollection/service/impl/HandleDataPackageServiceImpl.java

@@ -26,7 +26,7 @@ public class HandleDataPackageServiceImpl implements HandleDataPackageService {
     private ManagementFeignService managementFeignService;
 
     @Override
-    public void handleTemperature(IndoorEnvironmentEntity indoorEnvironmentEntity, Double value, Integer farmId, Integer pigstyId, Map<String, Double> map) {
+    public void handleTemperature(IndoorEnvironmentEntity indoorEnvironmentEntity, double value, Integer farmId, Integer pigstyId, Map<String, Double> map) {
         //获取室内阈值信息
         Double highTemp = map.get("高温");
         double highTempThreshold = highTemp == null ? 40.0 : highTemp;
@@ -46,6 +46,7 @@ public class HandleDataPackageServiceImpl implements HandleDataPackageService {
         managementFeignService.saveIndoorEnvironment(indoorEnvironmentEntity);
     }
 
+
     @Override
     public void handleHumidity(IndoorEnvironmentEntity indoorEnvironmentEntity, double value, Integer farmId, Integer pigstyId, Map<String, Double> map) {
         Double highHumidity = map.get("湿度过高");

+ 14 - 2
huimv-smart-datacollection/src/main/java/com/huimv/datacollection/tcp/ServerThread.java

@@ -1,7 +1,6 @@
 package com.huimv.datacollection.tcp;
 
 
-
 import com.huimv.datacollection.service.IClientDataPacketService;
 
 import java.io.*;
@@ -27,6 +26,7 @@ public class ServerThread extends Thread {
     @Override
     public void run() {
         InputStream inputStream = null;
+        OutputStream outputStream = null;
 
         try {
 
@@ -38,8 +38,14 @@ public class ServerThread extends Thread {
             packet = packet.trim();
             System.out.println(packet);
             // 处理数据包
-            iClientDataPacketService.handleClientSendPacket(packet);
+            String backPackage = iClientDataPacketService.handleClientSendPacket(packet);
+            System.out.println(backPackage);
 
+            if (backPackage != null) {
+                outputStream = socket.getOutputStream();
+                outputStream.write(backPackage.getBytes());
+                outputStream.flush();
+            }
 
         } catch (IOException | ParseException e) {
             e.printStackTrace();
@@ -49,6 +55,12 @@ public class ServerThread extends Thread {
                 if (socket != null) {
                     socket.close();
                 }
+                if (outputStream != null) {
+                    outputStream.close();
+                }
+                if (inputStream != null) {
+                    inputStream.close();
+                }
             } catch (IOException e) {
                 e.printStackTrace();
             }