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.

195 lines
4.1 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 Long alt;
/** 速度 (km/h) */
@Excel(name = "速度 (km/h)")
private Long speed;
/** 起始时间 (如: K+00:40:00) */
@Excel(name = "起始时间 (如: K+00:40:00)")
private String startTime;
/** 转弯角度 (用于计算转弯半径) */
@Excel(name = "转弯角度 (用于计算转弯半径)")
private Long turnAngle;
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(Long alt)
{
this.alt = alt;
}
public Long getAlt()
{
return alt;
}
public void setSpeed(Long speed)
{
this.speed = speed;
}
public Long getSpeed()
{
return speed;
}
public void setStartTime(String startTime)
{
this.startTime = startTime;
}
public String getStartTime()
{
return startTime;
}
public void setTurnAngle(Long turnAngle)
{
this.turnAngle = turnAngle;
}
public Long getTurnAngle()
{
return turnAngle;
}
@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())
.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.doubleValue());
// 重力加速度 g
double g = 9.8;
// 计算半径
double radius = (v_mps * v_mps) / (g * Math.tan(radians));
return radius;
}
}