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()); }