You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
244 lines
5.5 KiB
244 lines
5.5 KiB
package com.ruoyi.system.domain;
|
|
|
|
import java.math.BigDecimal;
|
|
import org.apache.commons.lang3.builder.ToStringBuilder;
|
|
import org.apache.commons.lang3.builder.ToStringStyle;
|
|
import com.ruoyi.common.annotation.Excel;
|
|
import com.ruoyi.common.core.domain.BaseEntity;
|
|
|
|
/**
|
|
* 航线具体航点明细对象 route_waypoints
|
|
*
|
|
* @author ruoyi
|
|
* @date 2026-01-21
|
|
*/
|
|
public class RouteWaypoints extends BaseEntity
|
|
{
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
/** 航点ID */
|
|
private Long id;
|
|
|
|
/** 所属航线ID (关联 routes.id) */
|
|
@Excel(name = "所属航线ID (关联 routes.id)")
|
|
private Long routeId;
|
|
|
|
/** 航点名称 (如: WP1) */
|
|
@Excel(name = "航点名称 (如: WP1)")
|
|
private String name;
|
|
|
|
/** 航点顺序 (从1开始递增) */
|
|
@Excel(name = "航点顺序 (从1开始递增)")
|
|
private Long seq;
|
|
|
|
/** 纬度 */
|
|
@Excel(name = "纬度")
|
|
private BigDecimal lat;
|
|
|
|
/** 经度 */
|
|
@Excel(name = "经度")
|
|
private BigDecimal lng;
|
|
|
|
/** 高度 (米) */
|
|
@Excel(name = "高度 (米)")
|
|
private Double alt;
|
|
|
|
/** 速度 (km/h) */
|
|
@Excel(name = "速度 (km/h)")
|
|
private Double speed;
|
|
|
|
/** 起始时间 (如: K+00:40:00) */
|
|
@Excel(name = "起始时间 (如: K+00:40:00)")
|
|
private String startTime;
|
|
|
|
/** 转弯角度 (用于计算转弯半径) */
|
|
@Excel(name = "转弯角度 (用于计算转弯半径)")
|
|
private Double turnAngle;
|
|
|
|
/** 航点类型: normal-普通, hold_circle-圆形盘旋, hold_ellipse-椭圆盘旋 */
|
|
@Excel(name = "航点类型")
|
|
private String pointType;
|
|
|
|
/** 盘旋参数JSON: 圆(radius,clockwise) 椭圆(semiMajor,semiMinor,headingDeg,clockwise) */
|
|
@Excel(name = "盘旋参数")
|
|
private String holdParams;
|
|
|
|
/** 航点标签文字大小(px),用于地图显示 */
|
|
private Integer labelFontSize;
|
|
|
|
/** 航点标签文字颜色(如 #333333),用于地图显示 */
|
|
private String labelColor;
|
|
|
|
public void setId(Long id)
|
|
{
|
|
this.id = id;
|
|
}
|
|
|
|
public Long getId()
|
|
{
|
|
return id;
|
|
}
|
|
|
|
public void setRouteId(Long routeId)
|
|
{
|
|
this.routeId = routeId;
|
|
}
|
|
|
|
public Long getRouteId()
|
|
{
|
|
return routeId;
|
|
}
|
|
|
|
public void setName(String name)
|
|
{
|
|
this.name = name;
|
|
}
|
|
|
|
public String getName()
|
|
{
|
|
return name;
|
|
}
|
|
|
|
public void setSeq(Long seq)
|
|
{
|
|
this.seq = seq;
|
|
}
|
|
|
|
public Long getSeq()
|
|
{
|
|
return seq;
|
|
}
|
|
|
|
public void setLat(BigDecimal lat)
|
|
{
|
|
this.lat = lat;
|
|
}
|
|
|
|
public BigDecimal getLat()
|
|
{
|
|
return lat;
|
|
}
|
|
|
|
public void setLng(BigDecimal lng)
|
|
{
|
|
this.lng = lng;
|
|
}
|
|
|
|
public BigDecimal getLng()
|
|
{
|
|
return lng;
|
|
}
|
|
|
|
public void setAlt(Double alt)
|
|
{
|
|
this.alt = alt;
|
|
}
|
|
|
|
public Double getAlt()
|
|
{
|
|
return alt;
|
|
}
|
|
|
|
public void setSpeed(Double speed)
|
|
{
|
|
this.speed = speed;
|
|
}
|
|
|
|
public Double getSpeed()
|
|
{
|
|
return speed;
|
|
}
|
|
|
|
public void setStartTime(String startTime)
|
|
{
|
|
this.startTime = startTime;
|
|
}
|
|
|
|
public String getStartTime()
|
|
{
|
|
return startTime;
|
|
}
|
|
|
|
public void setTurnAngle(Double turnAngle)
|
|
{
|
|
this.turnAngle = turnAngle;
|
|
}
|
|
|
|
public Double getTurnAngle()
|
|
{
|
|
return turnAngle;
|
|
}
|
|
|
|
public void setPointType(String pointType) {
|
|
this.pointType = pointType;
|
|
}
|
|
|
|
public String getPointType() {
|
|
return pointType;
|
|
}
|
|
|
|
public void setHoldParams(String holdParams) {
|
|
this.holdParams = holdParams;
|
|
}
|
|
|
|
public String getHoldParams() {
|
|
return holdParams;
|
|
}
|
|
|
|
public void setLabelFontSize(Integer labelFontSize) {
|
|
this.labelFontSize = labelFontSize;
|
|
}
|
|
|
|
public Integer getLabelFontSize() {
|
|
return labelFontSize;
|
|
}
|
|
|
|
public void setLabelColor(String labelColor) {
|
|
this.labelColor = labelColor;
|
|
}
|
|
|
|
public String getLabelColor() {
|
|
return labelColor;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
|
.append("id", getId())
|
|
.append("routeId", getRouteId())
|
|
.append("name", getName())
|
|
.append("seq", getSeq())
|
|
.append("lat", getLat())
|
|
.append("lng", getLng())
|
|
.append("alt", getAlt())
|
|
.append("speed", getSpeed())
|
|
.append("startTime", getStartTime())
|
|
.append("turnAngle", getTurnAngle())
|
|
.append("pointType", getPointType())
|
|
.append("holdParams", getHoldParams())
|
|
.append("labelFontSize", getLabelFontSize())
|
|
.append("labelColor", getLabelColor())
|
|
.toString();
|
|
}
|
|
|
|
/** * 获取转弯半径 (该字段不在数据库中,仅用于逻辑计算)
|
|
* 公式: R = V^2 / (g * tan(θ))
|
|
*/
|
|
public Double getTurnRadius()
|
|
{
|
|
// 安全校验:如果角度为0、速度为null,半径视为0
|
|
if (this.turnAngle == null || this.turnAngle == 0 || this.speed == null) {
|
|
return 0.0;
|
|
}
|
|
// 单位换算:速度从 km/h 转为 m/s
|
|
double v_mps = this.speed / 3.6;
|
|
// 单位换算:角度从 度(Degree) 转为 弧度(Radians)
|
|
double radians = Math.toRadians(this.turnAngle);
|
|
// 重力加速度 g
|
|
double g = 9.8;
|
|
// 计算半径
|
|
double radius = (v_mps * v_mps) / (g * Math.tan(radians));
|
|
|
|
return radius;
|
|
}
|
|
}
|
|
|