From 35ac0122ac2727673c8c96fcffbd298b02375b85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?= Date: Sat, 14 Mar 2026 10:06:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=8A=B6=E6=80=81=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/TuohengBufferDeviceImpl.java | 33 +++++++++---------- 1 file changed, 15 insertions(+), 18 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 b082b66..46d8bc5 100644 --- a/src/main/java/com/ruoyi/device/service/impl/TuohengBufferDeviceImpl.java +++ b/src/main/java/com/ruoyi/device/service/impl/TuohengBufferDeviceImpl.java @@ -328,31 +328,28 @@ public class TuohengBufferDeviceImpl implements IBufferDeviceService { log.info("无人机MODE值: {}", mode); - // 通过 MachineStateManager 获取舱门状态;只通过舱门状态判断是否作业 + // 通过 MachineStateManager 获取舱门状态 MachineStates machineStates = machineStateManager.getStates(dto.getSnNumber()); CoverState coverState = machineStates.getCoverState(); log.info("机场舱门状态(从MachineStateManager): {}", coverState); - if(coverState == CoverState.OPENED){ - dockStatus = "WORKING"; //只通过舱门状态判断是否作业 - log.info("无人机处于auto模式且舱门打开,设置机场状态为 WORKING"); + // 先判断MODE是否为飞行模式 + boolean isFlyingMode = "auto".equalsIgnoreCase(mode) || + "guided".equalsIgnoreCase(mode) || + "loiter".equalsIgnoreCase(mode) || + "rtl".equalsIgnoreCase(mode); + + if (isFlyingMode) { + dockStatus = "WORKING"; + log.info("无人机处于{}模式,设置机场状态为 WORKING", mode); + } else if (coverState == CoverState.OPENED) { + dockStatus = "WORKING"; + log.info("舱门打开,设置机场状态为 WORKING"); + } else { + log.info("无人机处于{}模式且舱门关闭,设置机场状态为 IDLE", mode); } -// -// // WORKING状态需要同时满足:mode=="auto" 且舱门打开 -// if ("auto".equalsIgnoreCase(mode) && -// coverState == CoverState.OPENED) { -// dockStatus = "WORKING"; // auto模式且舱门打开表示正在执行任务 -// log.info("无人机处于auto模式且舱门打开,设置机场状态为 WORKING"); -// } else { -// if ("auto".equalsIgnoreCase(mode) && -// coverState != CoverState.OPENED) { -// log.info("无人机处于auto模式但舱门未打开(coverState={}), 设置机场状态为 IDLE", coverState); -// } else { -// log.info("无人机处于{}模式,设置机场状态为 IDLE", mode); -// } -// } } catch (Exception e) { log.warn("获取无人机mode或舱门状态失败,默认设置为IDLE: {}", e.getMessage()); }