From aba19deb5b221d28396b14f99440c06b123049b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?= Date: Wed, 11 Feb 2026 13:33:47 +0800 Subject: [PATCH] xx --- .../model/TuohengRealTimeData.java | 9 ++++ .../device/service/impl/TuohengService.java | 42 ++++++++++++++++++- 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/ruoyi/device/domain/impl/tuohengmqtt/model/TuohengRealTimeData.java b/src/main/java/com/ruoyi/device/domain/impl/tuohengmqtt/model/TuohengRealTimeData.java index f6df1e5..5eba0c1 100644 --- a/src/main/java/com/ruoyi/device/domain/impl/tuohengmqtt/model/TuohengRealTimeData.java +++ b/src/main/java/com/ruoyi/device/domain/impl/tuohengmqtt/model/TuohengRealTimeData.java @@ -20,6 +20,9 @@ public class TuohengRealTimeData { @JsonProperty("nestCharger") private TuohengResponse nestCharger; + @JsonProperty("nestDoor") + private TuohengResponse nestDoor; + @Data public static class TuohengResponse { @JsonProperty("msg") @@ -157,4 +160,10 @@ public class TuohengRealTimeData { @JsonProperty("voltage") private String voltage; } + + @Data + public static class TuohengDoorData { + @JsonProperty("status") + private Integer status; // 1=开仓, 2=关仓 + } } diff --git a/src/main/java/com/ruoyi/device/service/impl/TuohengService.java b/src/main/java/com/ruoyi/device/service/impl/TuohengService.java index 7342229..b0aa632 100644 --- a/src/main/java/com/ruoyi/device/service/impl/TuohengService.java +++ b/src/main/java/com/ruoyi/device/service/impl/TuohengService.java @@ -117,6 +117,9 @@ public class TuohengService { // 同步无人机开关机状态 syncDronePowerState(deviceSn, data); + // 同步舱门状态 + syncCoverStateFromRealTimeData(deviceSn, data); + } catch (Exception e) { log.error("处理实时数据失败", e); } @@ -334,7 +337,44 @@ public class TuohengService { } /** - * 同步舱门状态 + * 从 realTime/data 主题同步舱门状态 + */ + private void syncCoverStateFromRealTimeData(String deviceSn, TuohengRealTimeData data) { + try { + if (data == null || data.getNestDoor() == null || data.getNestDoor().getData() == null) { + return; + } + + Integer status = data.getNestDoor().getData().getStatus(); + if (status == null) { + return; + } + + log.info("【状态同步】收到舱门状态: sn={}, status={}", deviceSn, status); + + // 根据 status 值更新舱门状态 + // 1 = 开仓, 2 = 关仓 + CoverState coverState; + if (status == 1) { + coverState = CoverState.OPENED; + log.info("【状态同步】同步舱门开启状态: sn={}, status={}", deviceSn, status); + } else if (status == 2) { + coverState = CoverState.CLOSED; + log.info("【状态同步】同步舱门关闭状态: sn={}, status={}", deviceSn, status); + } else { + log.warn("未知的舱门状态值: sn={}, status={}", deviceSn, status); + return; + } + + stateManager.setCoverState(deviceSn, coverState); + + } catch (Exception e) { + log.error("同步舱门状态失败: sn={}", deviceSn, e); + } + } + + /** + * 同步舱门状态(从 realTime/basic 主题,已废弃) */ private void syncCoverState(String deviceSn, com.ruoyi.device.domain.impl.tuohengmqtt.model.RealTimeBasicData data) { try {