提交航线管理逻辑和接口

This commit is contained in:
高大 2026-01-24 11:16:18 +08:00
parent 762a21e46f
commit 5a7f2fe825
8 changed files with 303 additions and 14 deletions

View File

@ -22,6 +22,11 @@
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common-core</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>

View File

@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RequestHeader;
/**
* 航线服务
*
* @author ruoyi
* @author 拓恒
* @date 2026-01-17
*/
@FeignClient(contextId = "remoteAirlineService", value = ServiceNameConstants.AIRLINE_SERVICE, fallbackFactory = RemoteAirlineFallbackFactory.class)
@ -22,10 +22,11 @@ public interface RemoteAirlineService
/**
* 根据ID查询航线信息
*
* @param id 航线ID
* @param groupId 航线ID
* @param source 请求来源
* @return 结果
*/
@GetMapping("/airline/temp/{id}")
R<AirlineTempVO> getAirlineById(@PathVariable("id") String id, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
// TODO
@GetMapping("/airline/{groupId}")
R<AirlineTempVO> getAirlineByGroupId(@PathVariable("groupId") String groupId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
}

View File

@ -0,0 +1,78 @@
package com.ruoyi.airline.api.domain;
/**
* 航线航点VO
*
* @author 拓恒
* @date 2026-01-17
*/
import lombok.Data;
import java.io.Serializable;
@Data
public class AirLinePointVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 序号
*/
private Integer id;
/**
* 动作id
*/
private Integer command;
/**
* 经纬度 +-180
*/
private String lat;
/**
* 经纬度 +-90
*/
private String lon;
/**
* 高度
*/
private Integer alt;
/**
* 悬停时间s
*/
private String loiterTime;
/**
* 相机俯仰角
*/
private String cameraPitch;
/**
* 相机滚动角
*/
private String cameraRoll;
/**
* 相机偏航角
*/
private String cameraYaw;
/**
* 挂载控制 1 相机
*/
private Integer sessionControl;
/**
* 相机指令 1 拍照
*/
private Integer shootCommand;
/**
* 绝对变焦 目前 1-10
*/
private Integer zoomAbsolute;
/***
* 转动方向 -1逆时针 1相对机场方向 硬件定义的
*/
private Integer rotateDirection;
}

View File

@ -0,0 +1,68 @@
package com.ruoyi.airline.api.domain;
import lombok.Data;
/**
* 航线数据VO
* Controller 层视图对象用于返回给前端的数据结构
*
* @author ruoyi
* @date 2026-01-17
*/
@Data
public class AirlineDataVO {
/**
* 主键ID
*/
private Long id;
/**
* 航班号
*/
private String flightNumber;
/**
* 起飞城市
*/
private String departureCity;
/**
* 到达城市
*/
private String arrivalCity;
/**
* 空气速度
*/
private Double airspeed;
/**
* 速度
*/
private Double velocity;
/**
* 垂直速度
*/
private Double vspeed;
/**
* 水平速度
*/
private Double hspeed;
@Override
public String toString() {
return "AirlineDataVO{" +
"id=" + id +
", flightNumber='" + flightNumber + '\'' +
", departureCity='" + departureCity + '\'' +
", arrivalCity='" + arrivalCity + '\'' +
", airspeed=" + airspeed +
", velocity=" + velocity +
", vspeed=" + vspeed +
", hspeed=" + hspeed +
'}';
}
}

View File

@ -0,0 +1,36 @@
package com.ruoyi.airline.api.domain;
import com.ruoyi.common.core.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 航线分组明细
*
* @author 拓恒
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AirlineFileGroupInfoVO extends BaseEntity {
/**
* id,主键用于order by 排序
*/
private Long id;
/**
* 用户ID
*/
private Long groupId;
AirlineFileVO airlineFileVO;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("groupId", getGroupId())
.append("airlineFileVO", airlineFileVO.toString())
.toString();
}
}

View File

@ -0,0 +1,40 @@
package com.ruoyi.airline.api.domain;
import com.ruoyi.common.core.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 航线分组
*
* @author 拓恒
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AirlineFileGroupVO extends BaseEntity {
/**
* 用户ID
*/
private Long groupId;
/**
* 分组名称
*/
private String groupName;
/**
* 用户ID分组自带用户归属 后期权限都是基于用户ID进行
*/
private Long userId;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("groupId", getGroupId())
.append("groupName", getGroupName())
.append("userId", getUserId())
.toString();
}
}

View File

@ -0,0 +1,69 @@
package com.ruoyi.airline.api.domain;
import lombok.Data;
import java.util.List;
/**
* 航线文件VO
* Controller 层视图对象用于返回给前端的数据结构
*
* @author 拓恒
* @date 2026-01-17
*/
@Data
public class AirlineFileVO {
/**
* 主键ID
*/
private Long id;
/**
* 用户ID
*/
private Long userId;
/**
* 文件名称
*/
private String fileName;
/**
* waypoint文件地址
*/
private String fileUrl;
/**
* 原始航线url
*/
private String origFileUrl;
/**
* 航线类型1,航点航线;2,指点航线;3,指面航线
*/
private Integer type;
/**
* 航线点列表
*/
private List<AirLinePointVO> linePointDtoList;
/**
* 1 启用 0 停用
*/
private Integer status;
/**
* kmz航线的全局高度
*/
private Integer djiRthAltitude;
}

View File

@ -1,8 +1,7 @@
package com.ruoyi.airline.api.factory;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.airline.api.RemoteAirlineService;
import com.ruoyi.airline.api.domain.AirlineTempVO;
import com.ruoyi.common.core.domain.R;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
@ -23,13 +22,6 @@ public class RemoteAirlineFallbackFactory implements FallbackFactory<RemoteAirli
public RemoteAirlineService create(Throwable throwable)
{
log.error("航线服务调用失败:{}", throwable.getMessage());
return new RemoteAirlineService()
{
@Override
public R<AirlineTempVO> getAirlineById(String id, String source)
{
return R.fail("获取航线信息失败:" + throwable.getMessage());
}
};
return (id, source) -> R.fail("获取航线信息失败:" + throwable.getMessage());
}
}