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