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

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;
}
}