From 0bdc6a56f0f3a6250b28ad1b7b7ad9b2d5e843cf Mon Sep 17 00:00:00 2001 From: menghao <1584479611@qq.com> Date: Thu, 22 Jan 2026 09:04:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=88=AA=E7=BA=BF=E6=97=B6?= =?UTF-8?q?=E8=88=AA=E7=82=B9=E7=9A=84id=E8=8E=B7=E5=8F=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E3=80=81=E8=88=AA=E7=BA=BF=E5=AE=9E=E4=BD=93=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-druid.yml | 2 +- .../com/ruoyi/system/domain/RouteWaypoints.java | 21 ++++++ .../main/java/com/ruoyi/system/domain/Routes.java | 82 ++++++++++++---------- .../system/service/impl/RoutesServiceImpl.java | 26 ++++++- .../main/resources/mapper/system/RoutesMapper.xml | 7 +- 5 files changed, 94 insertions(+), 44 deletions(-) diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml index 1eac54a..037db5c 100644 --- a/ruoyi-admin/src/main/resources/application-druid.yml +++ b/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 # 从库数据源 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/RouteWaypoints.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/RouteWaypoints.java index 0b4c76b..f8349fc 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/RouteWaypoints.java +++ b/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; + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/Routes.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/Routes.java index b934ac7..d1055b2 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/Routes.java +++ b/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 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 getWaypoints() { + return waypoints; + } + + public void setWaypoints(List 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(); } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RoutesServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RoutesServiceImpl.java index 13295dd..93b1ded 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RoutesServiceImpl.java +++ b/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 waypointList = routes.getWaypoints(); + + if (waypointList != null && !waypointList.isEmpty()) + { + for (RouteWaypoints waypoint : waypointList) + { + // 将刚生成的航线 ID 绑定到每个航点上 + waypoint.setRouteId(routes.getId()); + // 调用航点 Service,触发seq字段的自动递增逻辑 + routeWaypointsService.insertRouteWaypoints(waypoint); + } + } + return route; } /** diff --git a/ruoyi-system/src/main/resources/mapper/system/RoutesMapper.xml b/ruoyi-system/src/main/resources/mapper/system/RoutesMapper.xml index 934bfb1..e51edf9 100644 --- a/ruoyi-system/src/main/resources/mapper/system/RoutesMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/RoutesMapper.xml @@ -10,11 +10,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - select id, scenario_id, platform_id, call_sign, attributes, waypoints from routes + select id, scenario_id, platform_id, call_sign, attributes from routes @@ -40,14 +38,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" platform_id, call_sign, attributes, - waypoints, #{scenarioId}, #{platformId}, #{callSign}, #{attributes}, - #{waypoints}, @@ -58,7 +54,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" platform_id = #{platformId}, call_sign = #{callSign}, attributes = #{attributes}, - waypoints = #{waypoints}, where id = #{id}