104 lines
3.7 KiB
Java
104 lines
3.7 KiB
Java
|
|
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<Void> flightControl(@RequestBody DroneFlightControlRequest request)
|
|||
|
|
{
|
|||
|
|
// TODO: 实现飞控命令逻辑
|
|||
|
|
return R.ok();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 无人机实时信息展示
|
|||
|
|
*
|
|||
|
|
* @param taskId 任务ID
|
|||
|
|
* @return 实时信息
|
|||
|
|
*/
|
|||
|
|
@Operation(summary = "无人机实时信息展示", description = "根据任务ID获取无人机的实时飞行信息,包括速度、高度、姿态角等")
|
|||
|
|
@GetMapping("/realtime-info/{taskId}")
|
|||
|
|
public R<DroneRealtimeInfoVO> 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<DroneCurrentStatusVO> 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<DroneTakeoffResponseVO> 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);
|
|||
|
|
}
|
|||
|
|
}
|