From fa67baf45a7f92ce1705cef48538f62c80c159b9 Mon Sep 17 00:00:00 2001
From: zhanzhiqin <895896009@qq.com>
Date: 星期五, 05 八月 2022 16:20:26 +0800
Subject: [PATCH] 大气设备

---
 dao/src/main/resources/mapper/AirEquipmentMapper.xml                                                                      |   36 +++++--
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirDataService.java                                               |   52 ++++++++++
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentService.java                                          |    4 
 ximon-admin/src/main/resources/application-local.yml                                                                      |    2 
 ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/AirDataProcessor.java                          |   10 -
 ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereHeartbeatReportInnerFrame.java |   26 +----
 ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereModifiedDataReqInnerFrame.java  |   10 +-
 dao/src/main/java/com/sandu/ximon/dao/domain/AirEquipment.java                                                            |  132 +++++++++++++++++++++++--
 ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/AtmoFunctionCode.java                              |    4 
 ximon-admin/src/test/java/com/sandu/ximon/admin/AdminApplicationTests.java                                                |   10 +
 10 files changed, 221 insertions(+), 65 deletions(-)

diff --git a/dao/src/main/java/com/sandu/ximon/dao/domain/AirEquipment.java b/dao/src/main/java/com/sandu/ximon/dao/domain/AirEquipment.java
index 81a4963..482ae23 100644
--- a/dao/src/main/java/com/sandu/ximon/dao/domain/AirEquipment.java
+++ b/dao/src/main/java/com/sandu/ximon/dao/domain/AirEquipment.java
@@ -4,43 +4,147 @@
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-
 import java.io.Serializable;
 import java.time.LocalDateTime;
-
 import lombok.Data;
 
 /**
  * 澶ф皵璁惧
- *
  * @TableName air_equipment
  */
-@TableName(value = "air_equipment")
+@TableName(value ="air_equipment")
 @Data
 public class AirEquipment implements Serializable {
     /**
-     *
+     * 
      */
     @TableId(type = IdType.AUTO)
     private Long id;
 
     /**
-     * 鎺ュ叆鏃堕棿
-     */
-    private LocalDateTime createTime;
-
-    /**
-     * MAC鍦板潃
+     * MAC鍦板潃鐏潌
      */
     private String mac;
 
     /**
-     * 澶ф皵mac
+     * MAC鍦板潃澶ф皵
      */
     private String airMac;
 
-    @TableField(exist = false)
-    private Integer state;
+    /**
+     * 璁惧鍨嬪彿
+     */
+    private String deviceType;
+
+    /**
+     * 妯″潡棰勭儹鐘舵�佹爣蹇�
+     */
+    private String moduleWarmUpStatusFlag;
+
+    /**
+     * 娓╁害鍊�
+     */
+    private Integer temperature;
+
+    /**
+     * 婀垮害鍊�
+     */
+    private Integer humidity;
+
+    /**
+     * 椋庨��
+     */
+    private Integer windSpeed;
+
+    /**
+     * 椋庡悜
+     */
+    private Integer windDirection;
+
+    /**
+     * 椋庡姏
+     */
+    private Integer windPower;
+
+    /**
+     * 澶ф皵鍘�
+     */
+    private Integer pressure;
+
+    /**
+     * 鍏夊己
+     */
+    private Integer lightIntensity;
+
+    /**
+     * 鍣煶
+     */
+    private Integer noise;
+
+    /**
+     * pm25
+     */
+    private Integer pm25;
+
+    /**
+     * PM10
+     */
+    private Integer pm10;
+
+    /**
+     * 鎬绘偓娴绮掔墿TSP
+     */
+    private Integer tsp;
+
+    /**
+     * 闆ㄩ噺
+     */
+    private Integer rain;
+
+    /**
+     * SO2浜屾哀鍖栫~鐩稿鍊�
+     */
+    private Integer so2;
+
+    /**
+     * 鐢查啗鐩稿鍊�
+     */
+    private Integer ech2o;
+
+    /**
+     * NO2浜屾哀鍖栨爱
+     */
+    private Integer no2;
+
+    /**
+     * TVOC
+     */
+    private Integer tvoc;
+
+    /**
+     * CO涓�姘у寲纰�
+     */
+    private Integer co;
+
+    /**
+     * 浜屾哀鍖栫⒊
+     */
+    private Integer co2;
+
+    /**
+     * O3鑷哀
+     */
+    private Integer o3;
+
+    /**
+     * F姘熷寲鐗�
+     */
+    private Integer fluoride;
+
+    /**
+     * 鎺ュ叆鏃堕棿
+     */
+    private LocalDateTime createTime;
 
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
diff --git a/dao/src/main/resources/mapper/AirEquipmentMapper.xml b/dao/src/main/resources/mapper/AirEquipmentMapper.xml
index 1b3f150..e0a3474 100644
--- a/dao/src/main/resources/mapper/AirEquipmentMapper.xml
+++ b/dao/src/main/resources/mapper/AirEquipmentMapper.xml
@@ -5,17 +5,33 @@
 <mapper namespace="com.sandu.ximon.dao.mapper.AirEquipmentMapper">
 
     <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.AirEquipment">
-        <id property="id" column="id" jdbcType="BIGINT"/>
-        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
-        <result property="mac" column="mac" jdbcType="VARCHAR"/>
-        <result property="airMac" column="air_mac" jdbcType="VARCHAR"/>
+            <id property="id" column="id" jdbcType="BIGINT"/>
+            <result property="mac" column="mac" jdbcType="VARCHAR"/>
+            <result property="airMac" column="air_mac" jdbcType="VARCHAR"/>
+            <result property="deviceType" column="device_type" jdbcType="VARCHAR"/>
+            <result property="moduleWarmUpStatusFlag" column="module_warm_up_status_flag" jdbcType="VARCHAR"/>
+            <result property="temperature" column="temperature" jdbcType="INTEGER"/>
+            <result property="humidity" column="humidity" jdbcType="INTEGER"/>
+            <result property="windSpeed" column="wind_speed" jdbcType="INTEGER"/>
+            <result property="windDirection" column="wind_direction" jdbcType="INTEGER"/>
+            <result property="windPower" column="wind_power" jdbcType="INTEGER"/>
+            <result property="pressure" column="pressure" jdbcType="INTEGER"/>
+            <result property="lightIntensity" column="light_intensity" jdbcType="INTEGER"/>
+            <result property="noise" column="noise" jdbcType="INTEGER"/>
+            <result property="pm25" column="pm25" jdbcType="INTEGER"/>
+            <result property="pm10" column="PM10" jdbcType="INTEGER"/>
+            <result property="tsp" column="tsp" jdbcType="INTEGER"/>
+            <result property="rain" column="rain" jdbcType="INTEGER"/>
+            <result property="so2" column="so2" jdbcType="INTEGER"/>
+            <result property="ech2o" column="ech2o" jdbcType="INTEGER"/>
+            <result property="no2" column="no2" jdbcType="INTEGER"/>
+            <result property="tvoc" column="tvoc" jdbcType="INTEGER"/>
+            <result property="co" column="co" jdbcType="INTEGER"/>
+            <result property="co2" column="co2" jdbcType="INTEGER"/>
+            <result property="o3" column="o3" jdbcType="INTEGER"/>
+            <result property="fluoride" column="fluoride" jdbcType="INTEGER"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
     </resultMap>
-
-    <sql id="Base_Column_List">
-        id,belong_to,equipment_state,
-        create_time,user_id,light_pole_id,
-        mac
-    </sql>
 
     <select id="listAirEquipmentByIds" resultType="com.sandu.ximon.dao.bo.AirEquipmentBo">
         SELECT
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/AirDataProcessor.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/AirDataProcessor.java
index f7a88ea..d68ed88 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/AirDataProcessor.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/AirDataProcessor.java
@@ -35,12 +35,10 @@
         if (A5AtmosphereReportEnum.HeartBeat_Data.getCode().equals(functionCode)) {
             log.info("蹇冭烦鐩稿簲鈥斺�斿ぇ姘旀暟鎹�");
             A5AtmosphereHeartbeatReportInnerFrame heartbeatReportInnerFrame = new A5AtmosphereHeartbeatReportInnerFrame().transformFrame(frame.getPayload());
-            log.info(heartbeatReportInnerFrame.toString());
-
-            SpringContextHolder.getBean(AirDataService.class).saveReportData(deviceName, heartbeatReportInnerFrame.getHeartBeatDataPackage());
-
-//            SpringContextHolder.getBean(LightService.class).saveLight(deviceName,heartbeatReportInnerFrame.getHeartBeatDataPackage());
-
+            if(heartbeatReportInnerFrame != null){
+                log.info(heartbeatReportInnerFrame.toString());
+                SpringContextHolder.getBean(AirDataService.class).saveReportData(deviceName, heartbeatReportInnerFrame.getHeartBeatDataPackage());
+            }
         } else if (A5AtmosphereReportEnum.HeartBeat_Data_Nong_Geng.getCode().equals(functionCode)) {
             log.info("蹇冭烦鐩稿簲鈥斺�斿ぇ姘旀暟鎹�(鍐滆��)");
             A5AtmosphereNewHeartbeatReportInnerFrame heartbeatReportInnerFrame = new A5AtmosphereNewHeartbeatReportInnerFrame().transformFrame(frame.getPayload());
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereHeartbeatReportInnerFrame.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereHeartbeatReportInnerFrame.java
index 64ad2f8..b3d019a 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereHeartbeatReportInnerFrame.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5AtmosphereHeartbeatReportInnerFrame.java
@@ -27,10 +27,11 @@
     @Override
     public A5AtmosphereHeartbeatReportInnerFrame transformFrame(String hex) {
         //  闀垮害涓嶄竴鑷存椂锛岃繑鍥瀗ull
-        //TODO
-        if (StrUtil.isBlank(hex)) {
+        if (StrUtil.isBlank(hex) || hex.length() < 26 || hex.substring(18).length() % 8 != 0) {
+            System.out.println("鏁版嵁鏍¢獙寮傚父锛�");
             return null;
         }
+
         // MQTT閫氫俊鏂瑰紡(1)
         setConnectType(hex.substring(0, 2));
         //  鍔熻兘鐮�(1)
@@ -132,11 +133,8 @@
             }
 
             //璁惧鍨嬪彿
-            Integer type = 0;
             this.deviceType = hex.substring(0, 4);
-            if (this.deviceType.equals(DeviceType.SENSOR_V1.getType())) {
-                type = 1;
-            }
+
             //妯″潡棰勭儹鐘舵�佹爣蹇�
             this.moduleWarmUpStatusFlag = hex.substring(4, 6);
 
@@ -206,7 +204,7 @@
                             }
                         } else if ("00".equals(sub.substring(4, 6))) {
                             //360搴︽椋庡悜浠�
-                            this.windDirection = parseVal(sub, 4, 8) * .1 + "鈩�";
+                            this.windDirection = parseVal(sub, 4, 8) * .1 + "搴�";
                         }
                         break;
                     //椋庡姏
@@ -287,18 +285,4 @@
         }
     }
 
-    public enum DeviceType {
-
-        SENSOR_V1("0101");
-
-        private String type;
-
-        DeviceType(String type) {
-            this.type = type;
-        }
-
-        public String getType() {
-            return type;
-        }
-    }
 }
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereModifiedDataReqInnerFrame.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereModifiedDataReqInnerFrame.java
index c37c8a4..690a160 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereModifiedDataReqInnerFrame.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/request/AtmosphereModifiedDataReqInnerFrame.java
@@ -1,5 +1,6 @@
 package com.sandu.ximon.admin.manager.iot.frame.inner.request;
 
+import com.sandu.common.execption.BusinessException;
 import com.sandu.ximon.admin.manager.iot.frame.inner.IRequestInnerFrame;
 import com.sandu.ximon.admin.manager.iot.rrpc.enums.AtmoFunctionCode;
 import com.sandu.ximon.admin.manager.iot.rrpc.enums.MQTTConnectTypeEnum;
@@ -84,11 +85,10 @@
                 functionCode = AtmoFunctionCode.Setting_Data_Correction_windDirection.getCode();
                 //TODO
                 break;
-            //璁剧疆鏁版嵁淇鍊�-椋庡姏
-            case "椋庡姏":
-                functionCode = AtmoFunctionCode.Setting_Data_Correction_windPower.getCode();
-                //TODO
-                break;
+//            //璁剧疆鏁版嵁淇鍊�-椋庡姏
+//            case "椋庡姏":
+//                functionCode = AtmoFunctionCode.Setting_Data_Correction_windPower.getCode();
+//                throw new BusinessException("椋庡姏涓嶉渶瑕佽缃暟鎹慨姝e�硷紒");
             //璁剧疆鏁版嵁淇鍊�-姘斿帇
             case "姘斿帇":
                 functionCode = AtmoFunctionCode.Setting_Data_Correction_airPressure.getCode();
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/AtmoFunctionCode.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/AtmoFunctionCode.java
index 79377f7..9dfc3bb 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/AtmoFunctionCode.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/AtmoFunctionCode.java
@@ -19,8 +19,8 @@
     Reboot("10"),
     //  璁剧疆蹇冭烦鍖呴棿闅�
     SettingHeartBeatTime("11"),
-    //璁剧疆鍦板潃
-    SettingAddress("12"),
+//    //璁剧疆鍦板潃
+//    SettingAddress("12"),
     //浼犳劅鍣ㄥ姛鑳藉紑鍏�
     SensorSwitch("13"),
     //璁剧疆鏁版嵁淇鍊�-娓╁害
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirDataService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirDataService.java
index 26a1e9b..1c1f6b5 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirDataService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirDataService.java
@@ -52,7 +52,57 @@
         AirEquipment airEquipment = new AirEquipment();
         airEquipment.setId(airData.getId());
         airEquipment.setMac(airData.getDeviceMac());
-//        airEquipment.setCreateTime(airData.getCreateTime());
+        airEquipment.setDeviceType(heartBeatDataPackage.getDeviceType());
+        airEquipment.setModuleWarmUpStatusFlag(heartBeatDataPackage.getModuleWarmUpStatusFlag());
+        //娓╁害浼犳劅鍣�
+        airEquipment.setTemperature(heartBeatDataPackage.getTemperature() != null ? 1 : 0);
+        //婀垮害浼犳劅鍣�
+        airEquipment.setHumidity(heartBeatDataPackage.getHumidity() != null ? 1 : 0);
+        //椋庨�熶紶鎰熷櫒
+        airEquipment.setWindSpeed(heartBeatDataPackage.getWindSpeed() != null ? 1 : 0);
+        //椋庡悜浼犳劅鍣�
+        if (heartBeatDataPackage.getWindDirection() == null) {
+            airEquipment.setWindDirection(0);
+        } else if (heartBeatDataPackage.getWindDirection().contains("搴�")) {
+            //360搴︿紶鎰熷櫒
+            airEquipment.setWindDirection(2);
+        } else {
+            //鍏悜浠紶鎰熷櫒
+            airEquipment.setWindDirection(1);
+        }
+        //椋庡姏浼犳劅鍣�
+        airEquipment.setWindPower(heartBeatDataPackage.getWindPower() != null ? 1 : 0);
+        //姘斿帇浼犳劅鍣�
+        airEquipment.setPressure(heartBeatDataPackage.getPressure() != null ? 1 : 0);
+        //鍏夊己浼犳劅鍣�
+        airEquipment.setLightIntensity(heartBeatDataPackage.getLightIntensity() != null ? 1 : 0);
+        //鍣煶浼犳劅鍣�
+        airEquipment.setNoise(heartBeatDataPackage.getNoise() != null ? 1 : 0);
+        //PM25浼犳劅鍣�
+        airEquipment.setPm25(heartBeatDataPackage.getPm25() != null ? 1 : 0);
+        //PM10浼犳劅鍣�
+        airEquipment.setPm10(heartBeatDataPackage.getPm10() != null ? 1 : 0);
+        //TSP浼犳劅鍣�
+        airEquipment.setTsp(heartBeatDataPackage.getTsp() != null ? 1 : 0);
+        //闆ㄩ噺浼犳劅鍣�
+        airEquipment.setRain(heartBeatDataPackage.getRain() != null ? 1 : 0);
+        //SO2浼犳劅鍣�
+        airEquipment.setSo2(heartBeatDataPackage.getSo2() != null ? 1 : 0);
+        //鐢查啗浼犳劅鍣�
+        airEquipment.setEch2o(heartBeatDataPackage.getEch2o() != null ? 1 : 0);
+        //NO2浼犳劅鍣�
+        airEquipment.setNo2(heartBeatDataPackage.getNo2() != null ? 1 : 0);
+        //TVOC浼犳劅鍣�
+        airEquipment.setTvoc(heartBeatDataPackage.getTvoc() != null ? 1 : 0);
+        //CO浼犳劅鍣�
+        airEquipment.setCo(heartBeatDataPackage.getCo() != null ? 1 : 0);
+        //CO2浼犳劅鍣�
+        airEquipment.setCo2(heartBeatDataPackage.getCo2() != null ? 1 : 0);
+        //03浼犳劅鍣�
+        airEquipment.setO3(heartBeatDataPackage.getO3() != null ? 1 : 0);
+        //姘熷寲鐗╀紶鎰熷櫒
+        airEquipment.setFluoride(heartBeatDataPackage.getFluoride() != null ? 1 : 0);
+
         airEquipmentService.addAirEquipment(airEquipment);
 
         //瀛樼紦瀛樺績璺冲寘
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentService.java
index c299c65..a80c145 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AirEquipmentService.java
@@ -75,9 +75,7 @@
      */
     public void addAirEquipment(AirEquipment airEquipment) {
         AirEquipment one = getOne(Wrappers.lambdaQuery(AirEquipment.class).eq(AirEquipment::getMac, airEquipment.getMac()));
-//        //瀛樺偍璁惧鐘舵�佸埌缂撳瓨
-//        RedisUtils.getBean().set(AtmoFunctionCode.AIR_EQUIPMENT_STATE.getCode() + airEquipment.getMac()
-//                , 1, 300L);
+
         if (one == null) {
             save(airEquipment);
             /**
diff --git a/ximon-admin/src/main/resources/application-local.yml b/ximon-admin/src/main/resources/application-local.yml
index cd0b9a2..7010a04 100644
--- a/ximon-admin/src/main/resources/application-local.yml
+++ b/ximon-admin/src/main/resources/application-local.yml
@@ -39,7 +39,7 @@
     enable: true
 
 listenter:
-  isOpen: false
+  isOpen: true
 
 minio:
   endpoint: 47.106.172.9
diff --git a/ximon-admin/src/test/java/com/sandu/ximon/admin/AdminApplicationTests.java b/ximon-admin/src/test/java/com/sandu/ximon/admin/AdminApplicationTests.java
index b0c042e..1c5d775 100644
--- a/ximon-admin/src/test/java/com/sandu/ximon/admin/AdminApplicationTests.java
+++ b/ximon-admin/src/test/java/com/sandu/ximon/admin/AdminApplicationTests.java
@@ -36,7 +36,8 @@
         System.out.println(strings);
     }
 
-    public static void main(String[] args) {
+    @Test
+    void jisuan() {
         BigDecimal value1 = new BigDecimal("1");
         BigDecimal value2 = new BigDecimal("10");
         String value;
@@ -95,7 +96,7 @@
         }
 
         System.out.println("....................................");
-        int a = Integer.valueOf((int) (subtract * 100)/100);
+        int a = Integer.valueOf((int) (subtract * 100) / 100);
         System.out.println(z);
 
         if (subtract > 0) {
@@ -105,7 +106,12 @@
             value = hex10To16(-a + 32768);
             System.out.println(value);
         }
+    }
 
+    public static void main(String[] args) {
+        String hex = "sssssssss";
+        System.out.println(hex.substring(6));
+        System.out.println(hex.substring(6).length() % 8);
 
     }
 

--
Gitblit v1.9.3