From 88df056bdc10636973c4c2da01f34947f05dff36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Wed, 12 Feb 2025 11:18:25 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87TCP=E9=80=9A=E4=BF=A1?= =?UTF-8?q?=E9=87=87=E7=94=A8json=EF=BC=8C=E5=A4=84=E7=90=86=E4=B8=89?= =?UTF-8?q?=E7=A7=8D=E4=B8=8D=E5=90=8C=E7=B1=BB=E5=9E=8B=E7=9A=84json?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qyft/gd/device/common/constant/TcpMessageType.java | 16 ++++++++++++++++ .../qyft/gd/device/handler/DeviceMessageHandler.java | 17 ++++++++++++----- .../com/qyft/gd/device/service/DeviceAlarmService.java | 9 +++++++++ .../qyft/gd/device/service/DeviceFeedbackService.java | 9 +++++++++ .../com/qyft/gd/device/service/DeviceStateService.java | 3 +++ 5 files changed, 49 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/qyft/gd/device/common/constant/TcpMessageType.java create mode 100644 src/main/java/com/qyft/gd/device/service/DeviceAlarmService.java create mode 100644 src/main/java/com/qyft/gd/device/service/DeviceFeedbackService.java diff --git a/src/main/java/com/qyft/gd/device/common/constant/TcpMessageType.java b/src/main/java/com/qyft/gd/device/common/constant/TcpMessageType.java new file mode 100644 index 0000000..8625a9f --- /dev/null +++ b/src/main/java/com/qyft/gd/device/common/constant/TcpMessageType.java @@ -0,0 +1,16 @@ +package com.qyft.gd.device.common.constant; + +public class TcpMessageType { + /** + * 设备状态 + */ + public static final String STATUS = "status"; + /** + * 设备报警 + */ + public static final String ALARM = "alarm"; + /** + * 设备指令反馈 + */ + public static final String FEEDBACK = "feedback"; +} diff --git a/src/main/java/com/qyft/gd/device/handler/DeviceMessageHandler.java b/src/main/java/com/qyft/gd/device/handler/DeviceMessageHandler.java index 29f6b7b..aece38f 100644 --- a/src/main/java/com/qyft/gd/device/handler/DeviceMessageHandler.java +++ b/src/main/java/com/qyft/gd/device/handler/DeviceMessageHandler.java @@ -2,6 +2,7 @@ package com.qyft.gd.device.handler; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; +import com.qyft.gd.device.common.constant.TcpMessageType; import com.qyft.gd.device.model.bo.DeviceStatus; import com.qyft.gd.device.service.DeviceStateService; import io.netty.channel.ChannelHandler; @@ -25,13 +26,19 @@ public class DeviceMessageHandler extends SimpleChannelInboundHandler { try { // 解析 JSON JSONObject json = JSONUtil.parseObj(msg); - DeviceStatus deviceStatus = json.toBean(DeviceStatus.class); - // 更新设备状态 - deviceStateService.updateDeviceStatus(deviceStatus); + String type = json.getStr("type"); - log.info("设备状态已更新: {}", json.toStringPretty()); + if(TcpMessageType.STATUS.equals(type)){//设备状态 + DeviceStatus deviceStatus = json.toBean(DeviceStatus.class); + deviceStateService.updateDeviceStatus(deviceStatus); // 更新设备状态 + log.info("设备状态已更新: {}", json.toStringPretty()); + }else if(TcpMessageType.ALARM.equals(type)){//设备报警 + + }else if(TcpMessageType.FEEDBACK.equals(type)){//设备指令反馈 + + } } catch (Exception e) { - log.error("设备状态更新错误: {}, error: {}", msg, e.getMessage(), e); + log.error("TCP数据处理错误: {}, error: {}", msg, e.getMessage(), e); } } } \ No newline at end of file diff --git a/src/main/java/com/qyft/gd/device/service/DeviceAlarmService.java b/src/main/java/com/qyft/gd/device/service/DeviceAlarmService.java new file mode 100644 index 0000000..52ac042 --- /dev/null +++ b/src/main/java/com/qyft/gd/device/service/DeviceAlarmService.java @@ -0,0 +1,9 @@ +package com.qyft.gd.device.service; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class DeviceAlarmService { +} diff --git a/src/main/java/com/qyft/gd/device/service/DeviceFeedbackService.java b/src/main/java/com/qyft/gd/device/service/DeviceFeedbackService.java new file mode 100644 index 0000000..4668bd0 --- /dev/null +++ b/src/main/java/com/qyft/gd/device/service/DeviceFeedbackService.java @@ -0,0 +1,9 @@ +package com.qyft.gd.device.service; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class DeviceFeedbackService { +} diff --git a/src/main/java/com/qyft/gd/device/service/DeviceStateService.java b/src/main/java/com/qyft/gd/device/service/DeviceStateService.java index cb598c9..4305217 100644 --- a/src/main/java/com/qyft/gd/device/service/DeviceStateService.java +++ b/src/main/java/com/qyft/gd/device/service/DeviceStateService.java @@ -16,6 +16,9 @@ public class DeviceStateService { } } + /** + * 获取设备状态 + */ public DeviceStatus getDeviceStatus() { synchronized (deviceStatus) { return BeanUtil.copyProperties(deviceStatus, DeviceStatus.class);