package com.ruoyi.device.controller; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.controller.BaseController; 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.enums.DroneCurrentStatusEnum; import com.ruoyi.device.api.enums.DroneMissionStatusEnum; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.web.bind.annotation.*; /** * 无人机飞控Controller * * @author ruoyi * @date 2026-02-04 */ @Tag(name = "无人机飞控管理", description = "无人机飞控相关接口") @RestController @RequestMapping("/drone") public class AircraftFlyController extends BaseController { /** * 无人机飞控命令 * * @param request 飞控命令请求 * @return 结果 */ @Operation(summary = "无人机飞控命令", description = "发送飞控命令控制无人机的飞行动作,包括前进、后退、左移、右移、左旋、右旋、上升、下降、返航、急停等") @PostMapping("/flight-control") public R flightControl(@RequestBody DroneFlightControlRequest request) { // TODO: 实现飞控命令逻辑 return R.ok(); } /** * 无人机实时信息展示 * * @param taskId 任务ID * @return 实时信息 */ @Operation(summary = "无人机实时信息展示", description = "根据任务ID获取无人机的实时飞行信息,包括速度、高度、姿态角等") @GetMapping("/realtime-info/{taskId}") public R getRealtimeInfo( @Parameter(description = "任务ID", required = true, example = "1") @PathVariable("taskId") Long taskId) { // TODO: 实现获取实时信息逻辑 DroneRealtimeInfoVO vo = new DroneRealtimeInfoVO(); vo.setClimbSpeed(0); vo.setCruiseSpeed(0); vo.setDistanceToAirport(0); vo.setAltitude(0); vo.setPitch(0); vo.setYaw(0); vo.setGimbalPitch(0); vo.setGimbalYaw(0); vo.setMissionStatus(DroneMissionStatusEnum.IDLE); return R.ok(vo); } /** * 无人机当前状态查询 * * @param dockId 机场ID * @return 当前状态 */ @Operation(summary = "无人机当前状态查询", description = "根据机场ID查询无人机的当前飞行状态") @GetMapping("/current-status/{dockId}") public R getCurrentStatus( @Parameter(description = "机场ID", required = true, example = "1") @PathVariable("dockId") Long dockId) { // TODO: 实现查询当前状态逻辑 DroneCurrentStatusVO vo = new DroneCurrentStatusVO(); vo.setDockId(dockId); vo.setCurrentStatus(DroneCurrentStatusEnum.HOVERING); return R.ok(vo); } /** * 无人机起飞接口 * * @param dockId 机场ID * @return 起飞响应(任务ID和任务状态) */ @Operation(summary = "无人机起飞", description = "控制指定机场的无人机执行起飞操作,返回任务ID和当前任务状态") @PostMapping("/takeoff/{dockId}") public R takeoff( @Parameter(description = "机场ID", required = true, example = "1") @PathVariable("dockId") Long dockId) { // TODO: 实现起飞逻辑 DroneTakeoffResponseVO vo = new DroneTakeoffResponseVO(); vo.setTaskId(1L); vo.setMissionStatus(DroneMissionStatusEnum.TAKING_OFF); return R.ok(vo); } }