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 e3803b9..83accd9 100644 --- a/src/main/java/com/ruoyi/device/service/impl/TuohengBufferDeviceImpl.java +++ b/src/main/java/com/ruoyi/device/service/impl/TuohengBufferDeviceImpl.java @@ -584,12 +584,16 @@ public class TuohengBufferDeviceImpl implements IBufferDeviceService { boolean isPowerOn = (droneState != null && droneState != DroneState.POWER_OFF && droneState != DroneState.UNKNOWN); log.info("无人机开关机状态: {}", isPowerOn ? "开机" : "关机"); - // 判断逻辑:舱门打开就是任务中 + // 判断逻辑:开仓且开机才是任务中 String aircraftStatus; - if (coverState == CoverState.OPENED) { - // 舱门打开,表示正在执行任务 + if (coverState == CoverState.OPENED && isPowerOn) { + // 舱门打开且开机,表示正在执行任务 aircraftStatus = "IN_MISSION"; - log.info("舱门打开,设置状态: IN_MISSION"); + log.info("舱门打开 + 开机 → IN_MISSION"); + } else if (coverState == CoverState.OPENED && !isPowerOn) { + // 舱门打开但关机 + aircraftStatus = "POWER_OFF_OUT_CABIN"; + log.info("舱门打开 + 关机 → POWER_OFF_OUT_CABIN"); } else if (coverState == CoverState.CLOSED) { // 舱门关闭(舱内),根据开关机状态判断 if (isPowerOn) { @@ -687,12 +691,16 @@ public class TuohengBufferDeviceImpl implements IBufferDeviceService { log.warn("机场SN为空,无法从MachineStateManager获取舱门状态"); } - // 判断逻辑:舱门打开就是任务中 + // 判断逻辑:开仓且开机才是任务中 String aircraftStatus; - if (coverState == CoverState.OPENED) { - // 舱门打开,表示正在执行任务 + if (coverState == CoverState.OPENED && isPowerOn) { + // 舱门打开且开机,表示正在执行任务 aircraftStatus = "IN_MISSION"; - log.info("舱门打开,设置状态: IN_MISSION"); + log.info("舱门打开 + 开机 → IN_MISSION"); + } else if (coverState == CoverState.OPENED && !isPowerOn) { + // 舱门打开但关机 + aircraftStatus = "POWER_OFF_OUT_CABIN"; + log.info("舱门打开 + 关机 → POWER_OFF_OUT_CABIN"); } else if (coverState == CoverState.CLOSED) { // 舱门关闭(舱内),根据开关机状态判断 if (isPowerOn) {