ard-admin/src/main/java/com/ard/web/controller/route/ArdRouteInfoController.java
@@ -143,9 +143,10 @@ * 开始航线 */ @ApiOperation("开始航线") @PostMapping("/routeBegins/{boxSn}") public AjaxResult routeBegins(@PathVariable("boxSn") String boxSn) { ardRouteInfoService.routeBegins(boxSn); @PostMapping("/routeBegins/{id}/{boxSn}") public AjaxResult routeBegins(@PathVariable("id") String id, @PathVariable("boxSn") String boxSn) { ardRouteInfoService.routeBegins(id,boxSn); return AjaxResult.success(); } ard-admin/src/main/java/com/ard/web/controller/work/ArdServerInfoController.java
@@ -51,6 +51,18 @@ } /** * 查询服务器管理列表 */ @ApiOperation("查询服务器管理列表") @PreAuthorize("@ss.hasPermi('work:server:listNo')") @GetMapping("/listNo") public TableDataInfo listNo(ArdServerInfo ardServerInfo) { startPage(); List<ArdServerInfo> list = ardServerInfoService.selectArdServerInfoListNo(ardServerInfo); return getDataTable(list); } /** * 导出服务器管理列表 */ @ApiOperation("导出服务器管理列表") ard-route/src/main/java/com/ard/route/domain/route/ArdRouteInfo.java
@@ -29,10 +29,6 @@ @Excel(name = "文件路径") private String path; // /** 文件路径1 */ // @Excel(name = "文件路径1") // private String path1; /** 分组ID */ @Excel(name = "分组ID") private String groupId; @@ -50,7 +46,7 @@ private String payload; /** * 是否只读 是否只读 * 是否只读 * 0:否 * 1:是 */ @@ -66,6 +62,14 @@ private String orderByTime; /** * 是否循环 isLoop * 0:否 * 1:是 */ @Excel(name = "是否循环") private String isLoop; /** * 生成kmz文件实体类 */ private UavRouteReq uavRouteReq; ard-route/src/main/java/com/ard/route/service/IArdRouteInfoService.java
@@ -114,7 +114,7 @@ * @param boxSn 云盒SN编号 * @return 结果 */ public Boolean routeBegins(String boxSn); public Boolean routeBegins(String id, String boxSn); /** * 暂停航线 ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInfoServiceImpl.java
@@ -25,8 +25,10 @@ import com.ard.route.mapper.ArdRouteInfoMapper; import com.ard.route.service.IArdRouteInfoService; import com.ard.route.service.UavRouteService; import com.ard.work.domain.cache.UavTelemetryDataCache; import com.ard.work.domain.cache.UavWaylineCache; import com.ard.work.domain.dto.state.PointData; import com.ard.work.domain.dto.telemetry.TelemetryData; import com.ard.work.domain.dto.wayline.*; import com.ard.work.service.ITyService; import org.slf4j.Logger; @@ -86,17 +88,20 @@ throw new RuntimeException(e); } // 主逻辑优化 double altitudeOffset = getDoublePoint(ardRouteInfo.getUavRouteReq().getTakeOffRefPoint(), "alt"); // 如果参考起飞点不为空,将每个航点高度进行加工。 if (ardRouteInfo.getUavRouteReq().getTakeOffRefPoint() != null){ for (RoutePointReq routePointReq : ardRouteInfo.getUavRouteReq().getRoutePointList()) { // 调整航点高度 adjustRoutePointHeight(routePointReq, altitudeOffset); double altitudeOffset = getDoublePoint(ardRouteInfo.getUavRouteReq().getTakeOffRefPoint(), "alt"); for (RoutePointReq routePointReq : ardRouteInfo.getUavRouteReq().getRoutePointList()) { // 调整每个航点高度 adjustRoutePointHeight(routePointReq, altitudeOffset); } } return ardRouteInfo; } // 提取航点高度调整逻辑到方法中 private void adjustRoutePointHeight(RoutePointReq routePointReq, double altitudeOffset) { routePointReq.setHeight(routePointReq.getHeight() + altitudeOffset); } @@ -234,6 +239,9 @@ */ @Override public int deleteArdRouteInfoById(String id) { // 删除航线(kmz)文件 ArdRouteInfo information = ardRouteInfoMapper.selectArdRouteInfoById(id); delOssService(information); return ardRouteInfoMapper.deleteArdRouteInfoById(id); } @@ -332,7 +340,6 @@ /** * 上传航线到边缘服务器 * * ardNoflyDto * @return 结果 */ @@ -346,6 +353,34 @@ } catch (IOException | ClassNotFoundException e) { throw new RuntimeException(e); } // 获取第一个点 double firstPointLng = route.getUavRouteReq().getRoutePointList().get(0).getLongitude(); double firstPointLat = route.getUavRouteReq().getRoutePointList().get(0).getLatitude(); // 获取最后一个点 double lastPointLng = route.getUavRouteReq().getRoutePointList().get(route.getUavRouteReq().getRoutePointList().size()-1).getLongitude(); double lastPointLat = route.getUavRouteReq().getRoutePointList().get(route.getUavRouteReq().getRoutePointList().size()-1).getLatitude(); // 无人机遥测数据,用于校验真实起飞点和第一个点是否在禁飞区 TelemetryData telemetryData = UavTelemetryDataCache.get(boxSn); double telemetryDataLng = 0; double telemetryDataLat = 0; if (telemetryData != null){ telemetryDataLng = telemetryData.getLng(); telemetryDataLat = telemetryData.getLat(); } ArdNoflyDto dto1 = new ArdNoflyDto(); dto1.setCurrent(new Vertex(telemetryDataLng,telemetryDataLat)); dto1.setTarget(new Vertex(firstPointLng,firstPointLat)); verifyNoFlyZone(dto1); ArdNoflyDto dto2 = new ArdNoflyDto(); dto2.setCurrent(new Vertex(lastPointLng,lastPointLat)); dto2.setTarget(new Vertex(telemetryDataLng,telemetryDataLat)); verifyNoFlyZone(dto2); // 判断禁飞区 arrayWithinNoFlyZone(route.getUavRouteReq().getRoutePointList()); // 1.2通过minio获取航线信息 @@ -369,7 +404,12 @@ * @return 结果 */ @Override public Boolean routeBegins(String boxSn) { public Boolean routeBegins(String id,String boxSn) { ArdRouteInfo route = ardRouteInfoMapper.selectArdRouteInfoById(id); // 判断是否循环航线 if ("1".equals(route.getIsLoop())) { deleteArdRouteInfoById(id); } WayLineBeginDTO wayLineBeginDTO = new WayLineBeginDTO(boxSn); tyService.wayLineBegin(wayLineBeginDTO); return true; ard-route/src/main/resources/mapper/ArdRouteInfoMapper.xml
@@ -8,7 +8,6 @@ <result property="id" column="id" /> <result property="name" column="name" /> <result property="path" column="path" /> <!-- <result property="path1" column="path1" />--> <result property="groupId" column="group_id" /> <result property="type" column="type" /> <result property="aircraft" column="aircraft" /> @@ -20,13 +19,13 @@ <result property="updateBy" column="update_by" /> <result property="updateTime" column="update_time" /> <result property="pointCount" column="point_count" /> <result property="isLoop" column="is_loop" /> </resultMap> <sql id="selectArdRouteInfoVo"> select id, name, path, <!-- path1,--> group_id, type, aircraft, @@ -37,7 +36,8 @@ create_time, update_by, update_time, point_count point_count, is_loop from ard_route_info </sql> @@ -50,6 +50,7 @@ <if test="type != null and type != ''"> and type = #{type}</if> <if test="path != null and path != ''"> and path = #{path}</if> <if test="groupId != null"> and group_id = #{groupId}</if> <if test="isLoop != null"> and is_loop = #{isLoop}</if> </where> <if test="orderByTime == null and orderByTime == ''"> ORDER BY update_time DESC @@ -71,7 +72,6 @@ <if test="id != null">id,</if> <if test="name != null">name,</if> <if test="path != null">path,</if> <!-- <if test="path1 != null">path1,</if>--> <if test="groupId != null">group_id,</if> <if test="type != null">type,</if> <if test="aircraft != null">aircraft,</if> @@ -83,12 +83,12 @@ <if test="updateBy != null">update_by,</if> <if test="updateTime != null">update_time,</if> <if test="pointCount != null">point_count,</if> <if test="isLoop != null">is_loop,</if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="id != null">#{id},</if> <if test="name != null">#{name},</if> <if test="path != null">#{path},</if> <!-- <if test="path1 != null">#{path1},</if>--> <if test="groupId != null">#{groupId},</if> <if test="type != null">#{type},</if> <if test="aircraft != null">#{aircraft},</if> @@ -100,6 +100,7 @@ <if test="updateBy != null">#{updateBy},</if> <if test="updateTime != null">#{updateTime},</if> <if test="pointCount != null">#{pointCount},</if> <if test="isLoop != null">#{isLoop},</if> </trim> </insert> @@ -108,7 +109,6 @@ <trim prefix="SET" suffixOverrides=","> <if test="name != null">name = #{name},</if> <if test="path != null">path = #{path},</if> <!-- <if test="path1 != null">path1 = #{path1},</if>--> <if test="groupId != null">group_id = #{groupId},</if> <if test="type != null">type = #{type},</if> <if test="aircraft != null">aircraft = #{aircraft},</if> @@ -120,6 +120,7 @@ <if test="updateBy != null">update_by = #{updateBy},</if> <if test="updateTime != null">update_time = #{updateTime},</if> <if test="pointCount != null">point_count = #{pointCount},</if> <if test="isLoop != null">is_loop = #{isLoop},</if> </trim> where id = #{id} </update> @@ -148,7 +149,7 @@ </delete> <select id="selectArdRouteInfoByGroupId" parameterType="String" resultMap="ArdRouteInfoResult"> select id,name,path,group_id,type,aircraft,payload,read_only,create_by,create_time,update_by,update_time,point_count from ard_route_info select id,name,path,group_id,type,aircraft,payload,read_only,create_by,create_time,update_by,update_time,point_count,is_loop from ard_route_info <where> <if test="groupId != null "> and group_id = #{groupId}</if> </where> ard-work/src/main/java/com/ard/work/service/IArdServerInfoService.java
@@ -28,6 +28,8 @@ */ public List<ArdServerInfo> selectArdServerInfoList(ArdServerInfo ardServerInfo); public List<ArdServerInfo> selectArdServerInfoListNo(ArdServerInfo ardServerInfo); /** * 新增服务器管理 * ard-work/src/main/java/com/ard/work/service/impl/ArdServerInfoServiceImpl.java
@@ -5,9 +5,11 @@ import com.ard.work.component.forest.TyClient; import com.ard.work.component.netty.TyTcpClientManager; import com.ard.work.domain.dto.TokenDTO; import com.ard.work.domain.entity.ArdDroneInfo; import com.ard.work.domain.entity.ArdServerInfo; import com.ard.work.domain.receiver.AccessTokenReceiver; import com.ard.work.domain.receiver.TyHttpCommonReceiver; import com.ard.work.mapper.ArdDroneInfoMapper; import com.ard.work.mapper.ArdServerInfoMapper; import com.ard.work.service.IArdServerInfoService; import com.dtflys.forest.exceptions.ForestRuntimeException; @@ -30,11 +32,16 @@ public class ArdServerInfoServiceImpl implements IArdServerInfoService { @Resource private ArdServerInfoMapper ardServerInfoMapper; @Resource private TyClient tyClient; @Resource private ArdServerInfoMapper ardServerInfoMapper; @Resource private TyTcpClientManager tyTcpClientManager; @Resource private ArdDroneInfoMapper ArdDroneInfoMapper; /** * 查询服务器管理 @@ -59,6 +66,24 @@ return ardServerInfoMapper.selectArdServerInfoList(ardServerInfo); } @Override @DataScope(deptAlias = "d", userAlias = "u") public List<ArdServerInfo> selectArdServerInfoListNo(ArdServerInfo ardServerInfo) { // List<ArdDroneInfo> ardDroneInfos = ArdDroneInfoMapper.selectArdDroneList(new ArdDroneInfo()); // for (ArdDroneInfo ardDroneInfo : ardDroneInfos) { // ardDroneInfo.getBoxSn(); // } // List<ArdServerInfo> servers = ardServerInfoMapper.selectArdServerInfoList(ardServerInfo); // for (ArdServerInfo server : servers) { // for (ArdDroneInfo ardDroneInfo : server.getArdDroneInfoList()) { // ardDroneInfo.getBoxSn(); // } // } return ardServerInfoMapper.selectArdServerInfoList(ardServerInfo); } /** * 新增服务器管理 *