Browse Source

新增航线时航点的id获取逻辑、航线实体属性更改

master
menghao 2 months ago
parent
commit
0bdc6a56f0
  1. 2
      ruoyi-admin/src/main/resources/application-druid.yml
  2. 21
      ruoyi-system/src/main/java/com/ruoyi/system/domain/RouteWaypoints.java
  3. 82
      ruoyi-system/src/main/java/com/ruoyi/system/domain/Routes.java
  4. 26
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RoutesServiceImpl.java
  5. 7
      ruoyi-system/src/main/resources/mapper/system/RoutesMapper.xml

2
ruoyi-admin/src/main/resources/application-druid.yml

@ -6,7 +6,7 @@ spring:
druid:
# 主库数据源
master:
url: jdbc:mysql://localhost:3306/kj?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
url: jdbc:mysql://localhost:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
# 从库数据源

21
ruoyi-system/src/main/java/com/ruoyi/system/domain/RouteWaypoints.java

@ -170,4 +170,25 @@ public class RouteWaypoints extends BaseEntity
.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;
}
}

82
ruoyi-system/src/main/java/com/ruoyi/system/domain/Routes.java

@ -5,95 +5,105 @@ import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.List;
/**
* 实体部署与航线对象 routes
*
*
* @author ruoyi
* @date 2026-01-14
*/
public class Routes extends BaseEntity
{
public class Routes extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 路由ID */
/**
* 路由ID
*/
private Long id;
/** 归属方案ID */
/**
* 归属方案ID
*/
@Excel(name = "归属方案ID")
private Long scenarioId;
/** 使用的是库里哪个平台 (关联 platform_lib.id) */
/**
* 使用的是库里哪个平台 (关联 platform_lib.id)
*/
@Excel(name = "使用的是库里哪个平台 (关联 platform_lib.id)")
private Long platformId;
/** 名称 (如: 猎鹰01) */
/**
* 名称 (: 猎鹰01)
*/
@Excel(name = "名称 (如: 猎鹰01)")
private String callSign;
/** 实例属性JSON: 覆盖库里的默认值 (如当前初始油量, 挂载配置) */
/**
* 实例属性JSON: 覆盖库里的默认值 (如当前初始油量, 挂载配置)
*/
@Excel(name = "实例属性JSON: 覆盖库里的默认值 (如当前初始油量, 挂载配置)")
private String attributes;
/** 航点数据JSON数组: [{seq, k_offset, lat, lng, alt, speed, action...}] */
private List<RouteWaypoints> waypoints;
public void setId(Long id)
{
public void setId(Long id) {
this.id = id;
}
public Long getId()
{
public Long getId() {
return id;
}
public void setScenarioId(Long scenarioId)
{
public void setScenarioId(Long scenarioId) {
this.scenarioId = scenarioId;
}
public Long getScenarioId()
{
public Long getScenarioId() {
return scenarioId;
}
public void setPlatformId(Long platformId)
{
public void setPlatformId(Long platformId) {
this.platformId = platformId;
}
public Long getPlatformId()
{
public Long getPlatformId() {
return platformId;
}
public void setCallSign(String callSign)
{
public void setCallSign(String callSign) {
this.callSign = callSign;
}
public String getCallSign()
{
public String getCallSign() {
return callSign;
}
public void setAttributes(String attributes)
{
public void setAttributes(String attributes) {
this.attributes = attributes;
}
public String getAttributes()
{
public String getAttributes() {
return attributes;
}
public List<RouteWaypoints> getWaypoints() {
return waypoints;
}
public void setWaypoints(List<RouteWaypoints> waypoints) {
this.waypoints = waypoints;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("scenarioId", getScenarioId())
.append("platformId", getPlatformId())
.append("callSign", getCallSign())
.append("attributes", getAttributes())
.toString();
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("scenarioId", getScenarioId())
.append("platformId", getPlatformId())
.append("callSign", getCallSign())
.append("attributes", getAttributes())
.append("waypoints", getWaypoints())
.toString();
}
}

26
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RoutesServiceImpl.java

@ -1,11 +1,15 @@
package com.ruoyi.system.service.impl;
import java.util.List;
import com.ruoyi.system.domain.RouteWaypoints;
import com.ruoyi.system.service.IRouteWaypointsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.RoutesMapper;
import com.ruoyi.system.domain.Routes;
import com.ruoyi.system.service.IRoutesService;
import org.springframework.transaction.annotation.Transactional;
/**
* 实体部署与航线Service业务层处理
@ -19,6 +23,9 @@ public class RoutesServiceImpl implements IRoutesService
@Autowired
private RoutesMapper routesMapper;
@Autowired
private IRouteWaypointsService routeWaypointsService;
/**
* 查询实体部署与航线
*
@ -50,9 +57,26 @@ public class RoutesServiceImpl implements IRoutesService
* @return 结果
*/
@Override
@Transactional
public int insertRoutes(Routes routes)
{
return routesMapper.insertRoutes(routes);
// 保存航线主体,MyBatis 会回填自增 ID 到 routes.id
int route = routesMapper.insertRoutes(routes);
// 从 routes 对象中拿到刚才手动添加的 List
List<RouteWaypoints> waypointList = routes.getWaypoints();
if (waypointList != null && !waypointList.isEmpty())
{
for (RouteWaypoints waypoint : waypointList)
{
// 将刚生成的航线 ID 绑定到每个航点上
waypoint.setRouteId(routes.getId());
// 调用航点 Service,触发seq字段的自动递增逻辑
routeWaypointsService.insertRouteWaypoints(waypoint);
}
}
return route;
}
/**

7
ruoyi-system/src/main/resources/mapper/system/RoutesMapper.xml

@ -10,11 +10,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="platformId" column="platform_id" />
<result property="callSign" column="call_sign" />
<result property="attributes" column="attributes" />
<result property="waypoints" column="waypoints" />
</resultMap>
<sql id="selectRoutesVo">
select id, scenario_id, platform_id, call_sign, attributes, waypoints from routes
select id, scenario_id, platform_id, call_sign, attributes from routes
</sql>
<select id="selectRoutesList" parameterType="Routes" resultMap="RoutesResult">
@ -24,7 +23,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="platformId != null "> and platform_id = #{platformId}</if>
<if test="callSign != null and callSign != ''"> and call_sign = #{callSign}</if>
<if test="attributes != null and attributes != ''"> and attributes = #{attributes}</if>
<if test="waypoints != null and waypoints != ''"> and waypoints = #{waypoints}</if>
</where>
</select>
@ -40,14 +38,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="platformId != null">platform_id,</if>
<if test="callSign != null and callSign != ''">call_sign,</if>
<if test="attributes != null and attributes != ''">attributes,</if>
<if test="waypoints != null and waypoints != ''">waypoints,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="scenarioId != null">#{scenarioId},</if>
<if test="platformId != null">#{platformId},</if>
<if test="callSign != null and callSign != ''">#{callSign},</if>
<if test="attributes != null and attributes != ''">#{attributes},</if>
<if test="waypoints != null and waypoints != ''">#{waypoints},</if>
</trim>
</insert>
@ -58,7 +54,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="platformId != null">platform_id = #{platformId},</if>
<if test="callSign != null and callSign != ''">call_sign = #{callSign},</if>
<if test="attributes != null and attributes != ''">attributes = #{attributes},</if>
<if test="waypoints != null and waypoints != ''">waypoints = #{waypoints},</if>
</trim>
where id = #{id}
</update>

Loading…
Cancel
Save