From 35b2b961e0e85ccf9c350bcb0c5e49dd171a57a1 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Thu, 20 Mar 2025 14:13:01 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0gps=E5=92=8C=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=B6=88=E6=81=AF=E7=9A=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/mqtt/CommonData.java | 6 ++++ .../xymanager_framework/mqtt/GPSHandler.java | 36 +++++++++++++++++++ .../mqtt/MessageHandler.java | 10 ++++++ .../xymanager_framework/mqtt/PullHandler.java | 3 +- .../mqtt/StatusHandler.java | 36 +++++++++++++++++++ .../mqtt/WeatherHandler.java | 3 +- 6 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 xymanager_framework/src/main/java/com/shxy/xymanager_framework/mqtt/GPSHandler.java create mode 100644 xymanager_framework/src/main/java/com/shxy/xymanager_framework/mqtt/StatusHandler.java diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/model/mqtt/CommonData.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/model/mqtt/CommonData.java index bcc083e..e1e547b 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/model/mqtt/CommonData.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/model/mqtt/CommonData.java @@ -42,4 +42,10 @@ public class CommonData { Integer type; Integer number; PullAndAngleMonitoring dataList; + Integer positioningSystemInfo; + Double gwLongitude; + Double gwLatitude; + Float signal; + Float batteryVoltage; + Float remainingBatteryPower; } diff --git a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/mqtt/GPSHandler.java b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/mqtt/GPSHandler.java new file mode 100644 index 0000000..7278cc9 --- /dev/null +++ b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/mqtt/GPSHandler.java @@ -0,0 +1,36 @@ +package com.shxy.xymanager_framework.mqtt; + +import com.shxy.xymanager_common.entity.TerminalPositions; +import com.shxy.xymanager_common.entity.Terminals; +import com.shxy.xymanager_common.model.mqtt.CommonData; +import com.shxy.xymanager_dao.dao.TerminalPositionsMapper; +import com.shxy.xymanager_service.service.TerminalExtService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +@Slf4j +public class GPSHandler { + + @Resource + TerminalExtService terminalExtService; + @Resource + TerminalPositionsMapper terminalPositionsMapper; + + public void handleUpload(CommonData data, String deviceId) throws Exception { + Terminals term = terminalExtService.getByCmdid(deviceId); + if (term == null) { + log.error("mqtt收到LongitudeAndLatitudeInfo,但是该装置" + deviceId + "不存在"); + return; + } + log.info("mqtt消息LongitudeAndLatitudeInfo " + deviceId + " " + data.getGwLatitude() + "," + data.getGwLongitude()); + TerminalPositions record = terminalPositionsMapper.selectByPrimaryKey(term.getId()); + if (record != null) { + record.setLatitude(data.getGwLatitude()); + record.setLongitude(data.getGwLongitude()); + terminalPositionsMapper.updateByPrimaryKey(record); + } + } +} diff --git a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/mqtt/MessageHandler.java b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/mqtt/MessageHandler.java index c5df0de..eecd4be 100644 --- a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/mqtt/MessageHandler.java +++ b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/mqtt/MessageHandler.java @@ -20,6 +20,10 @@ public class MessageHandler { WeatherHandler weatherHandler; @Resource PullHandler pullHandler; + @Resource + GPSHandler gpsHandler; + @Resource + StatusHandler statusHandler; public void process(MessageUpload msg) throws Exception { if (!CollectionUtils.isEmpty(msg.getDevices())) { @@ -57,6 +61,12 @@ public class MessageHandler { case "PullAndAngleMonitoring": pullHandler.handleUpload(data, deviceId); break; + case "LongitudeAndLatitudeInfo": + gpsHandler.handleUpload(data, deviceId); + break; + case "StatusMonitoring": + statusHandler.handleUpload(data, deviceId); + break; default: throw new ApiException(service.getServiceId() + "暂时无法处理"); } diff --git a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/mqtt/PullHandler.java b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/mqtt/PullHandler.java index 4fa6e98..d6fd94a 100644 --- a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/mqtt/PullHandler.java +++ b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/mqtt/PullHandler.java @@ -29,7 +29,7 @@ public class PullHandler { public void handleUpload(CommonData data, String deviceId) throws Exception { Terminals term = terminalExtService.getByCmdid(deviceId); if (term == null) { - log.error("mqtt收到拉力,但是该装置" + deviceId + "不存在"); + log.error("mqtt收到PullAndAngleMonitoring,但是该装置" + deviceId + "不存在"); return; } PullAndAngleMonitoring dataList = data.getDataList(); @@ -37,6 +37,7 @@ public class PullHandler { throw new ApiException("拉力dataList内容是空的"); } String time = dataList.getTime().replace("T", "").replace("Z", ""); + log.info("mqtt消息PullAndAngleMonitoring " + deviceId + " " + time); Date dTime = DateUtil.parse(time, "yyyyMMddHHmmss"); long updateTime = dTime.getTime() / 1000; diff --git a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/mqtt/StatusHandler.java b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/mqtt/StatusHandler.java new file mode 100644 index 0000000..0fd942e --- /dev/null +++ b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/mqtt/StatusHandler.java @@ -0,0 +1,36 @@ +package com.shxy.xymanager_framework.mqtt; + +import com.shxy.xymanager_common.entity.TerminalStatus; +import com.shxy.xymanager_common.entity.Terminals; +import com.shxy.xymanager_common.model.mqtt.CommonData; +import com.shxy.xymanager_dao.dao.TerminalStatusDao; +import com.shxy.xymanager_service.service.TerminalExtService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +@Slf4j +public class StatusHandler { + + @Resource + TerminalExtService terminalExtService; + @Resource + TerminalStatusDao terminalStatusDao; + + public void handleUpload(CommonData data, String deviceId) throws Exception { + Terminals term = terminalExtService.getByCmdid(deviceId); + if (term == null) { + log.error("mqtt收到StatusMonitoring,但是该装置" + deviceId + "不存在"); + return; + } + log.info("mqtt消息StatusMonitoring " + deviceId + " " + data.getBatteryVoltage() + "," + data.getRemainingBatteryPower()); + TerminalStatus record = terminalStatusDao.selectByPrimaryKey(term.getId()); + if (record != null) { + record.setBatteryVoltage(data.getBatteryVoltage()); + record.setBatteryCapacity(data.getRemainingBatteryPower()); + terminalStatusDao.updateByPrimaryKey(record); + } + } +} diff --git a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/mqtt/WeatherHandler.java b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/mqtt/WeatherHandler.java index 416d4c9..67d03ec 100644 --- a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/mqtt/WeatherHandler.java +++ b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/mqtt/WeatherHandler.java @@ -27,10 +27,11 @@ public class WeatherHandler { public void handleUpload(CommonData data, String deviceId) throws Exception { Terminals term = terminalExtService.getByCmdid(deviceId); if (term == null) { - log.error("mqtt收到天气,但是该装置" + deviceId + "不存在"); + log.error("mqtt收到WeatherMonitoring,但是该装置" + deviceId + "不存在"); return; } String time = data.getTime().replace("T", "").replace("Z", ""); + log.info("mqtt消息WeatherMonitoring " + deviceId + " " + time); Date dTime = DateUtil.parse(time, "yyyyMMddHHmmss"); long updateTime = dTime.getTime() / 1000;