From 3ac29039b9455ce70862a84c7532f0869c74ffa3 Mon Sep 17 00:00:00 2001 From: tianyuan <2861334240@qq.com> Date: Sun, 30 Nov 2025 21:15:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9mqtt=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../water/config/MqttInboundConfig.java | 2 +- .../water/model/WaterMakerSensorData.java | 13 +++--- .../water/model/WaterSupplySensorData.java | 3 +- .../water/service/MqttSensorReceiver.java | 42 ++++++++++--------- 4 files changed, 31 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/campus/water/config/MqttInboundConfig.java b/src/main/java/com/campus/water/config/MqttInboundConfig.java index 62b7381..eacbac3 100644 --- a/src/main/java/com/campus/water/config/MqttInboundConfig.java +++ b/src/main/java/com/campus/water/config/MqttInboundConfig.java @@ -1,5 +1,5 @@ package com.campus.water.config; - +import com.campus.water.config.MqttConfig;//编译器问题 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.integration.mqtt.inbound.MqttPahoMessageDrivenChannelAdapter; diff --git a/src/main/java/com/campus/water/model/WaterMakerSensorData.java b/src/main/java/com/campus/water/model/WaterMakerSensorData.java index aa4c0d1..3487585 100644 --- a/src/main/java/com/campus/water/model/WaterMakerSensorData.java +++ b/src/main/java/com/campus/water/model/WaterMakerSensorData.java @@ -10,14 +10,15 @@ import java.time.LocalDateTime; @Data public class WaterMakerSensorData { private String deviceId; // 设备唯一ID(如WM001) - private Double tdsValue; // TDS值(水质指标) - private Double waterFlow; // 水流量(L/min) - private Double waterPressure; // 水压(MPa) + private Double tdsValue1; // TDS值(水质指标) + private Double tdsValue2; + private Double tdsValue3; + private Double waterFlow1; // 水流量(L/min) + private Double waterFlow2; + private Double waterPress; // 水压(MPa) private Integer filterLife; // 滤芯寿命(%) private Boolean leakage; // 是否漏水(true=漏水,false=正常) - private Double temperature; // 水温(℃) - private Double humidity; // 环境湿度(%RH) private String waterQuality; // 水质等级(合格/不合格) private String status; // 设备状态(normal=正常,error=异常) - private LocalDateTime timestamp; // 数据采集时间戳 + private LocalDateTime recordTime; // 数据采集时间戳 } \ No newline at end of file diff --git a/src/main/java/com/campus/water/model/WaterSupplySensorData.java b/src/main/java/com/campus/water/model/WaterSupplySensorData.java index bf8ec47..6741d3b 100644 --- a/src/main/java/com/campus/water/model/WaterSupplySensorData.java +++ b/src/main/java/com/campus/water/model/WaterSupplySensorData.java @@ -11,10 +11,9 @@ import java.time.LocalDateTime; public class WaterSupplySensorData { private String deviceId; // 设备唯一ID(如WS001) private Double waterFlow; // 水流量(L/min) - private Double waterPressure; // 水压(MPa) + private Double waterPress; // 水压(MPa) private Double waterLevel; // 水位(%) private Double temperature; // 水温(℃) - private Double humidity; // 环境湿度(%RH) private String status; // 设备状态(normal=正常,error=异常) private LocalDateTime timestamp; // 数据采集时间戳 } \ No newline at end of file diff --git a/src/main/java/com/campus/water/service/MqttSensorReceiver.java b/src/main/java/com/campus/water/service/MqttSensorReceiver.java index c8af40e..880cf3e 100644 --- a/src/main/java/com/campus/water/service/MqttSensorReceiver.java +++ b/src/main/java/com/campus/water/service/MqttSensorReceiver.java @@ -86,16 +86,17 @@ public class MqttSensorReceiver { // 2. 模型对象转换为JPA实体(持久化到数据库) WaterMakerRealtimeData entity = new WaterMakerRealtimeData(); entity.setDeviceId(sensorData.getDeviceId()); - entity.setTdsValue(sensorData.getTdsValue()); - entity.setWaterFlow(sensorData.getWaterFlow()); - entity.setWaterPressure(sensorData.getWaterPressure()); + entity.setTdsValue1(sensorData.getTdsValue1()); + entity.setTdsValue2(sensorData.getTdsValue2()); + entity.setTdsValue3(sensorData.getTdsValue3()); + entity.setWaterFlow1(sensorData.getWaterFlow1()); + entity.setWaterFlow2(sensorData.getWaterFlow2()); + entity.setWaterPress(sensorData.getWaterPress()); entity.setFilterLife(sensorData.getFilterLife()); entity.setLeakage(sensorData.getLeakage() ? 1 : 0); // 数据库存储:1=漏水,0=正常 - entity.setTemperature(sensorData.getTemperature()); - entity.setHumidity(sensorData.getHumidity()); entity.setWaterQuality(sensorData.getWaterQuality()); entity.setStatus(WaterMakerRealtimeData.DeviceStatus.valueOf(sensorData.getStatus().toUpperCase())); - entity.setTimestamp(sensorData.getTimestamp()); + entity.setRecordTime(sensorData.getRecordTime()); entity.setCreatedTime(LocalDateTime.now()); // 3. 持久化到数据库(JPA save() 自动实现CRUD) @@ -113,20 +114,22 @@ public class MqttSensorReceiver { Alert alert = new Alert(); alert.setDeviceId(sensorData.getDeviceId()); alert.setAlertType("WATER_MAKER_ABNORMAL"); // 告警类型(枚举规范) - alert.setAlertLevel(Alert.AlertLevel.CRITICAL); // 告警级别(严重) + alert.setAlertLevel(Alert.AlertLevel.critical); // 告警级别(严重) alert.setAlertMessage(String.format( "制水机异常 - 设备ID:%s,TDS值:%.2f,滤芯寿命:%d%%,漏水状态:%s", sensorData.getDeviceId(), - sensorData.getTdsValue(), + sensorData.getTdsValue1(), + sensorData.getTdsValue2(), + sensorData.getTdsValue3(), sensorData.getFilterLife(), sensorData.getLeakage() ? "是" : "否" )); - alert.setStatus(Alert.AlertStatus.PENDING); // 告警状态(未处理) - alert.setTimestamp(sensorData.getTimestamp()); - alert.setCreateTime(LocalDateTime.now()); + alert.setStatus(Alert.AlertStatus.pending); // 告警状态(未处理) + alert.setTimestamp(sensorData.getRecordTime()); + alert.setCreatedTime(LocalDateTime.now()); alertRepo.save(alert); - log.warn("制水机告警记录持久化成功 | 告警ID:{} | 设备ID:{}", alert.getId(), sensorData.getDeviceId()); + log.warn("制水机告警记录持久化成功 | 告警ID:{} | 设备ID:{}", alert.getAlertId(), sensorData.getDeviceId()); // 2. 同时持久化状态数据(便于后续追溯) handleWaterMakerState(payload); @@ -141,13 +144,12 @@ public class MqttSensorReceiver { WaterSupplyRealtimeData entity = new WaterSupplyRealtimeData(); entity.setDeviceId(sensorData.getDeviceId()); entity.setWaterFlow(sensorData.getWaterFlow()); - entity.setWaterPressure(sensorData.getWaterPressure()); + entity.setWaterPress(sensorData.getWaterPress()); entity.setWaterLevel(sensorData.getWaterLevel()); entity.setTemperature(sensorData.getTemperature()); - entity.setHumidity(sensorData.getHumidity()); entity.setStatus(WaterSupplyRealtimeData.DeviceStatus.valueOf(sensorData.getStatus().toUpperCase())); entity.setTimestamp(sensorData.getTimestamp()); - entity.setCreatedTime(LocalDateTime.now()); + waterSupplyRepo.save(entity); log.info("供水机状态数据持久化成功 | 设备ID:{}", sensorData.getDeviceId()); @@ -163,19 +165,19 @@ public class MqttSensorReceiver { Alert alert = new Alert(); alert.setDeviceId(sensorData.getDeviceId()); alert.setAlertType("WATER_SUPPLY_ABNORMAL"); - alert.setAlertLevel(Alert.AlertLevel.ERROR); + alert.setAlertLevel(Alert.AlertLevel.error); alert.setAlertMessage(String.format( "供水机异常 - 设备ID:%s,水压:%.2fMPa,水位:%.2f%%", sensorData.getDeviceId(), - sensorData.getWaterPressure(), + sensorData.getWaterPress(), sensorData.getWaterLevel() )); - alert.setStatus(Alert.AlertStatus.PENDING); + alert.setStatus(Alert.AlertStatus.pending); alert.setTimestamp(sensorData.getTimestamp()); - alert.setCreateTime(LocalDateTime.now()); + alert.setCreatedTime(LocalDateTime.now()); alertRepo.save(alert); - log.warn("供水机告警记录持久化成功 | 告警ID:{} | 设备ID:{}", alert.getId(), sensorData.getDeviceId()); + log.warn("供水机告警记录持久化成功 | 告警ID:{} | 设备ID:{}", alert.getAlertId(), sensorData.getDeviceId()); // 2. 同时持久化状态数据 handleWaterSupplyState(payload); -- 2.34.1