From 384dac68a3d1e80ed3b7d676bad4a3ac1e8e984f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?= Date: Fri, 6 Feb 2026 11:09:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=97=A0=E4=BA=BA=E6=9C=BA?= =?UTF-8?q?=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/TuohengBufferDeviceImpl.java | 56 +++++++++---------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/ruoyi/device/service/impl/TuohengBufferDeviceImpl.java b/src/main/java/com/ruoyi/device/service/impl/TuohengBufferDeviceImpl.java index 8fbc8aa..b347912 100644 --- a/src/main/java/com/ruoyi/device/service/impl/TuohengBufferDeviceImpl.java +++ b/src/main/java/com/ruoyi/device/service/impl/TuohengBufferDeviceImpl.java @@ -350,34 +350,32 @@ public class TuohengBufferDeviceImpl implements IBufferDeviceService { .orElse(""); log.info("无人机 MODE 值: {}", mode); - // 判断逻辑 - if ("auto".equalsIgnoreCase(mode)) { - // mode == "auto" 表示正在执行任务 - dto.setAircraftStatus("IN_MISSION"); - log.info("无人机处于 auto 模式,设置状态: IN_MISSION"); - } else { - // mode != "auto",根据 tsingal 和 nest_door_status 判断 + // 获取 tsingal(图传信号强度,用于判断开关机) + Integer tsingal = aircraftTelemetry.get(TuohengDeviceTelemetry.TSINGAL) + .map(TelemetryValue::getValue) + .orElse(0); + log.info("无人机 TSINGAL 值: {}", tsingal); - // 获取 tsingal(图传信号强度,用于判断开关机) - Integer tsingal = aircraftTelemetry.get(TuohengDeviceTelemetry.TSINGAL) + boolean isPowerOn = tsingal > 60; // tsingal > 60 表示开机 + log.info("无人机开关机状态: {}", isPowerOn ? "开机" : "关机"); + + // 获取 nest_door_status(舱门状态) + Integer doorStatus = null; + if (dockTelemetry != null) { + doorStatus = dockTelemetry.get(TuohengDeviceTelemetry.NEST_DOOR_STATUS) .map(TelemetryValue::getValue) - .orElse(0); - log.info("无人机 TSINGAL 值: {}", tsingal); + .orElse(null); + log.info("机场舱门状态: {}", doorStatus); + } - boolean isPowerOn = tsingal > 60; // tsingal > 60 表示开机 - log.info("无人机开关机状态: {}", isPowerOn ? "开机" : "关机"); - - // 获取 nest_door_status(舱门状态) - Integer doorStatus = null; - if (dockTelemetry != null) { - doorStatus = dockTelemetry.get(TuohengDeviceTelemetry.NEST_DOOR_STATUS) - .map(TelemetryValue::getValue) - .orElse(null); - log.info("机场舱门状态: {}", doorStatus); - } - - // 根据舱门状态和开关机状态判断 - String aircraftStatus; + // 判断逻辑:IN_MISSION 需要同时满足 mode=="auto" 且舱门打开 + String aircraftStatus; + if ("auto".equalsIgnoreCase(mode) && doorStatus != null && doorStatus == 0) { + // mode == "auto" 且舱门打开,表示正在执行任务 + aircraftStatus = "IN_MISSION"; + log.info("无人机处于 auto 模式且舱门打开,设置状态: IN_MISSION"); + } else { + // 其他情况,根据 tsingal 和 nest_door_status 判断 if (doorStatus != null && doorStatus == 1) { // 舱门关闭(舱内) if (isPowerOn) { @@ -388,10 +386,10 @@ public class TuohengBufferDeviceImpl implements IBufferDeviceService { log.info("舱门关闭 + 关机 → POWER_OFF_IN_CABIN"); } } else if (doorStatus != null && doorStatus == 0) { - // 舱门打开(舱外) + // 舱门打开(舱外),但不是 auto 模式 if (isPowerOn) { aircraftStatus = "POWER_ON_OUT_CABIN"; - log.info("舱门打开 + 开机 → POWER_ON_OUT_CABIN"); + log.info("舱门打开 + 开机(非auto模式) → POWER_ON_OUT_CABIN"); } else { aircraftStatus = "POWER_OFF_OUT_CABIN"; log.info("舱门打开 + 关机 → POWER_OFF_OUT_CABIN"); @@ -406,10 +404,10 @@ public class TuohengBufferDeviceImpl implements IBufferDeviceService { log.warn("无法获取舱门状态,默认设置: POWER_OFF_IN_CABIN"); } } - - dto.setAircraftStatus(aircraftStatus); } + dto.setAircraftStatus(aircraftStatus); + // 设置作业架次 - 暂时设置为0,拓恒设备可能没有这个数据 dto.setMissionCount(0); log.info("设置作业架次: 0 (拓恒设备暂无此数据)");