diff --git a/src/main/java/com/ruoyi/device/controller/AircraftFlyController.java b/src/main/java/com/ruoyi/device/controller/AircraftFlyController.java index 5377ccf..fb7cc13 100644 --- a/src/main/java/com/ruoyi/device/controller/AircraftFlyController.java +++ b/src/main/java/com/ruoyi/device/controller/AircraftFlyController.java @@ -6,6 +6,7 @@ import com.ruoyi.device.api.domain.DroneCurrentStatusVO; import com.ruoyi.device.api.domain.DroneFlightControlRequest; import com.ruoyi.device.api.domain.DroneRealtimeInfoVO; import com.ruoyi.device.api.domain.DroneTakeoffResponseVO; +import com.ruoyi.device.api.domain.MachineStateVO; import com.ruoyi.device.api.enums.DroneCurrentStatusEnum; import com.ruoyi.device.api.enums.DroneMissionStatusEnum; import com.ruoyi.device.domain.impl.machine.MachineCommandManager; @@ -34,6 +35,9 @@ public class AircraftFlyController extends BaseController { @Autowired private MachineCommandManager machineCommandManager; + + @Autowired + private com.ruoyi.device.domain.impl.machine.statemachine.MachineStateManager machineStateManager; /** * 无人机飞控命令 * @@ -145,4 +149,39 @@ public class AircraftFlyController extends BaseController return R.fail("开机命令执行异常: " + e.getMessage()); } } + + /** + * 查询无人机状态 + * + * @param sn 设备SN号 + * @return 状态信息 + */ + @Operation(summary = "查询无人机状态", description = "根据设备SN号查询无人机的实时状态信息") + @GetMapping("/machine-state/{sn}") + public R getMachineState( + @Parameter(description = "设备SN号", required = true, example = "TH001") + @PathVariable("sn") String sn) + { + log.info("查询无人机状态: sn={}", sn); + + try { + // 从 MachineStateManager 获取状态 + com.ruoyi.device.domain.impl.machine.state.MachineStates states = machineStateManager.getStates(sn); + + // 转换为 VO 对象 + MachineStateVO vo = new MachineStateVO(); + vo.setSn(sn); + vo.setDroneState(states.getDroneState().name()); + vo.setAirportState(states.getAirportState().name()); + vo.setCoverState(states.getCoverState().name()); + vo.setDrcState(states.getDrcState().name()); + vo.setDebugModeState(states.getDebugModeState().name()); + + log.info("查询到状态: sn={}, vo={}", sn, vo); + return R.ok(vo); + } catch (Exception e) { + log.error("查询无人机状态异常: sn={}", sn, e); + return R.fail("查询状态失败: " + e.getMessage()); + } + } } \ No newline at end of file