ard-admin/src/main/java/com/ard/web/controller/route/ArdRouteFileController.java
@@ -25,7 +25,7 @@ * @author xia * @date 2025-10-18 */ @Api(tags = "文件") //@Api(tags = "文件") @RestController @RequestMapping("/route/file") public class ArdRouteFileController extends BaseController { @@ -36,8 +36,8 @@ /** * 查询文件列表 */ @ApiOperation("查询文件列表") @PreAuthorize("@ss.hasPermi('route:file:list')") //@ApiOperation("查询文件列表") //@PreAuthorize("@ss.hasPermi('route:file:list')") @GetMapping("/list") public TableDataInfo list(ArdRouteFile ardRouteFile) { startPage(); @@ -48,8 +48,8 @@ /** * 导出文件列表 */ @ApiOperation("导出文件列表") @PreAuthorize("@ss.hasPermi('route:file:export')") //@ApiOperation("导出文件列表") //@PreAuthorize("@ss.hasPermi('route:file:export')") @Log(title = "文件", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, ArdRouteFile ardRouteFile) { @@ -61,8 +61,8 @@ /** * 获取文件详细信息 */ @ApiOperation("获取文件详细信息") @PreAuthorize("@ss.hasPermi('route:file:query')") //@ApiOperation("获取文件详细信息") //@PreAuthorize("@ss.hasPermi('route:file:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") String id) { return success(ardRouteFileService.selectArdRouteFileById(id)); @@ -71,8 +71,8 @@ /** * 新增文件 */ @ApiOperation("新增文件") @PreAuthorize("@ss.hasPermi('route:file:add')") //@ApiOperation("新增文件") //@PreAuthorize("@ss.hasPermi('route:file:add')") @Log(title = "文件", businessType = BusinessType.INSERT) //@PostMapping("/addFile/{folderId}") @PostMapping("/addFile") @@ -88,8 +88,8 @@ /** * 修改文件 */ @ApiOperation("修改文件") @PreAuthorize("@ss.hasPermi('route:file:edit')") //@ApiOperation("修改文件") //@PreAuthorize("@ss.hasPermi('route:file:edit')") @Log(title = "文件", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody ArdRouteFile ardRouteFile) { @@ -100,8 +100,8 @@ /** * 删除文件 */ @ApiOperation("删除文件") @PreAuthorize("@ss.hasPermi('route:file:remove')") //@ApiOperation("删除文件") //@PreAuthorize("@ss.hasPermi('route:file:remove')") @Log(title = "文件", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable String[] ids) { ard-admin/src/main/java/com/ard/web/controller/route/ArdRouteFolderController.java
@@ -26,12 +26,12 @@ import com.ard.route.service.IArdRouteFolderService; /** * 文件夹Controller * 分组Controller * * @author xia * @date 2025-10-18 */ @Api(tags = "文件夹") @Api(tags = "分组管理") @RestController @RequestMapping("/route/folder") public class ArdRouteFolderController extends BaseController { @@ -40,9 +40,9 @@ private IArdRouteFolderService ardRouteFolderService; /** * 查询文件夹列表 * 查询分组列表 */ @ApiOperation("查询文件夹列表") @ApiOperation("查询分组列表") //@PreAuthorize("@ss.hasPermi('route:folder:list')") @GetMapping("/list") public TableDataInfo list(ArdRouteFolder ardRouteFolder) { @@ -52,22 +52,22 @@ } /** * 导出文件夹列表 * 导出分组列表 */ @ApiOperation("导出文件夹列表") @ApiOperation("导出分组列表") //@PreAuthorize("@ss.hasPermi('route:folder:export')") @Log(title = "文件夹", businessType = BusinessType.EXPORT) @Log(title = "分组", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, ArdRouteFolder ardRouteFolder) { List<ArdRouteFolder> list = ardRouteFolderService.selectArdRouteFolderList(ardRouteFolder); ExcelUtil<ArdRouteFolder> util = new ExcelUtil<ArdRouteFolder>(ArdRouteFolder.class); util.exportExcel(response, list, "文件夹数据"); util.exportExcel(response, list, "分组数据"); } /** * 获取文件夹详细信息 * 获取分组详细信息 */ @ApiOperation("获取文件夹详细信息") @ApiOperation("获取分组详细信息") //@PreAuthorize("@ss.hasPermi('route:folder:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") String id) { @@ -75,11 +75,11 @@ } /** * 新增文件夹 * 新增分组 */ @ApiOperation("新增文件夹") @ApiOperation("新增分组") //@PreAuthorize("@ss.hasPermi('route:folder:add')") @Log(title = "文件夹", businessType = BusinessType.INSERT) @Log(title = "分组", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody ArdRouteFolder ardRouteFolder) { ardRouteFolder.setCreateBy(getUsername()); @@ -87,11 +87,11 @@ } /** * 修改文件夹 * 修改分组 */ @ApiOperation("修改文件夹") @ApiOperation("修改分组") //@PreAuthorize("@ss.hasPermi('route:folder:edit')") @Log(title = "文件夹", businessType = BusinessType.UPDATE) @Log(title = "分组", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody ArdRouteFolder ardRouteFolder) { ardRouteFolder.setUpdateBy(getUsername()); @@ -99,19 +99,19 @@ } /** * 删除文件夹 * 删除分组 */ @ApiOperation("删除文件夹") @ApiOperation("删除分组") //@PreAuthorize("@ss.hasPermi('route:folder:remove')") @Log(title = "文件夹", businessType = BusinessType.DELETE) @Log(title = "分组", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable String[] ids) { try { Map<String, Integer> result = ardRouteFolderService.deleteArdRouteFolderByIds(ids); if (!result.isEmpty()) { return AjaxResult.success("删除成功.文件夹删除" + result.get("folder") + "文件删除" + result.get("file")); return AjaxResult.success("删除成功.分组删除" + result.get("folder") + "文件删除" + result.get("file")); } else { return AjaxResult.success("没有删除文件夹信息。"); return AjaxResult.success("没有删除分组信息。"); } } catch(Exception e){ return AjaxResult.error(e.getMessage()); ard-route/src/main/java/com/ard/route/domain/RoutePointReq.java
@@ -5,6 +5,9 @@ import java.io.Serializable; import java.util.List; /** * 航点列表实体类 */ @Data public class RoutePointReq implements Serializable { @@ -36,17 +39,17 @@ /** * 航点偏航角 */ private WaypointHeadingReq waypointHeadingReq; private WaypointHeadingReq waypointHeadingReq; // 用不上 /** * 航点转弯模式 */ private WaypointTurnReq waypointTurnReq; private WaypointTurnReq waypointTurnReq; // 用不上 /** * 航点云台俯仰角 */ private Double gimbalPitchAngle; private Double gimbalPitchAngle; // 用不上 /** * 航点动作列表 ard-route/src/main/java/com/ard/route/domain/UavRouteReq.java
@@ -83,12 +83,12 @@ /** * 全局偏航角模式 */ private WaypointHeadingReq waypointHeadingReq; private WaypointHeadingReq waypointHeadingReq; // 用不上 /** * 全局航点转弯模式 */ private WaypointTurnReq waypointTurnReq; private WaypointTurnReq waypointTurnReq; // 用不上 /** * 云台俯仰角控制模式 @@ -110,11 +110,37 @@ /** * 建图航拍、倾斜摄影、航带飞行模板参数 */ private MappingTypeReq mappingTypeReq; private MappingTypeReq mappingTypeReq; // 用不上 /** * 航线初始动作列表 */ private List<PointActionReq> startActionList; /** * 全局航线速度 */ private Double globalTransitionalSpeed; /** * 飞向首航点模式 * safely:安全模式 * pointToPoint:倾斜飞行模式 */ private String flyToWaylineMode; /** * 航点类型 * coordinateTurn:协调转弯,不过点,提前转弯 * toPointAndStopWithDiscontinuityCurvature:直线飞行,飞行器到点停 * toPointAndStopWithContinuityCurvature:曲线飞行,飞行器到点停 * toPointAndPassWithContinuityCurvature:曲线飞行,飞行器过点不停 */ private String globalWaypointTurnMode; /** * 飞行器偏航角模式 */ private String mappingHeadingMode; } ard-route/src/main/java/com/ard/route/domain/route/ArdRouteFolder.java
@@ -7,7 +7,7 @@ import lombok.Data; /** * 文件夹对象 ard_route_folder * 分组对象 ard_route_folder * * @author xia * @date 2025-10-18 @@ -28,6 +28,6 @@ @Excel(name = "序列号") private Integer serialNumber; private List<ArdRouteFile> ardRouteFileLs; private List<ArdRouteInformation> ardRouteInformationLs; } ard-route/src/main/java/com/ard/route/domain/route/ArdRouteInformation.java
@@ -39,6 +39,9 @@ @Excel(name = "Minio文件路径") private String minioUpPath; /** 分组ID */ private String folderId; /** 飞行器 */ private String aircraft; ard-route/src/main/java/com/ard/route/mapper/ArdRouteFolderMapper.java
@@ -4,7 +4,7 @@ import com.ard.route.domain.route.ArdRouteFolder; /** * 文件夹Mapper接口 * 分组Mapper接口 * * @author xia * @date 2025-10-18 @@ -12,47 +12,47 @@ public interface ArdRouteFolderMapper { /** * 查询文件夹 * 查询分组 * * @param id 文件夹主键 * @return 文件夹 * @param id 分组主键 * @return 分组 */ public ArdRouteFolder selectArdRouteFolderById(String id); /** * 查询文件夹列表 * 查询分组列表 * * @param ardRouteFolder 文件夹 * @return 文件夹集合 * @param ardRouteFolder 分组 * @return 分组集合 */ public List<ArdRouteFolder> selectArdRouteFolderList(ArdRouteFolder ardRouteFolder); /** * 新增文件夹 * 新增分组 * * @param ardRouteFolder 文件夹 * @param ardRouteFolder 分组 * @return 结果 */ public int insertArdRouteFolder(ArdRouteFolder ardRouteFolder); /** * 修改文件夹 * 修改分组 * * @param ardRouteFolder 文件夹 * @param ardRouteFolder 分组 * @return 结果 */ public int updateArdRouteFolder(ArdRouteFolder ardRouteFolder); /** * 删除文件夹 * 删除分组 * * @param id 文件夹主键 * @param id 分组主键 * @return 结果 */ public int deleteArdRouteFolderById(String id); /** * 批量删除文件夹 * 批量删除分组 * * @param ids 需要删除的数据主键集合 * @return 结果 ard-route/src/main/java/com/ard/route/mapper/ArdRouteInformationMapper.java
@@ -68,4 +68,12 @@ */ public ArdRouteInformation selectArdRouteInformationByName(String fileName); /** * 根据所属分组ID,删除信息 * * @param folderIds 所属文件夹ID * @return 结果 */ public int deleteRouteInformationByFolderIds(String[] folderIds); } ard-route/src/main/java/com/ard/route/service/IArdRouteFolderService.java
@@ -6,7 +6,7 @@ import com.ard.route.domain.route.ArdRouteFolder; /** * 文件夹Service接口 * 分组Service接口 * * @author xia * @date 2025-10-18 @@ -14,49 +14,49 @@ public interface IArdRouteFolderService { /** * 查询文件夹 * 查询分组 * * @param id 文件夹主键 * @return 文件夹 * @param id 分组主键 * @return 分组 */ public ArdRouteFolder selectArdRouteFolderById(String id); /** * 查询文件夹列表 * 查询分组列表 * * @param ardRouteFolder 文件夹 * @return 文件夹集合 * @param ardRouteFolder 分组 * @return 分组集合 */ public List<ArdRouteFolder> selectArdRouteFolderList(ArdRouteFolder ardRouteFolder); /** * 新增文件夹 * 新增分组 * * @param ardRouteFolder 文件夹 * @param ardRouteFolder 分组 * @return 结果 */ public int insertArdRouteFolder(ArdRouteFolder ardRouteFolder); /** * 修改文件夹 * 修改分组 * * @param ardRouteFolder 文件夹 * @param ardRouteFolder 分组 * @return 结果 */ public int updateArdRouteFolder(ArdRouteFolder ardRouteFolder); /** * 批量删除文件夹 * 批量删除分组 * * @param ids 需要删除的文件夹主键集合 * @param ids 需要删除的分组主键集合 * @return 结果 */ public Map<String, Integer> deleteArdRouteFolderByIds(String[] ids); /** * 删除文件夹信息 * 删除分组信息 * * @param id 文件夹主键 * @param id 分组主键 * @return 结果 */ public int deleteArdRouteFolderById(String id); ard-route/src/main/java/com/ard/route/service/impl/ArdRouteFolderServiceImpl.java
@@ -9,7 +9,9 @@ import com.ard.common.utils.DateUtils; import com.ard.common.utils.uuid.IdUtils; import com.ard.route.domain.route.ArdRouteFile; import com.ard.route.domain.route.ArdRouteInformation; import com.ard.route.mapper.ArdRouteFileMapper; import com.ard.route.mapper.ArdRouteInformationMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ard.route.mapper.ArdRouteFolderMapper; @@ -30,33 +32,35 @@ private ArdRouteFolderMapper ardRouteFolderMapper; @Autowired private ArdRouteFileMapper ardRouteFileMapper; private ArdRouteInformationMapper ardRouteInformationMapper; /** * 查询文件夹 * 查询分组 * * @param id 文件夹主键 * @return 文件夹 * @param id 分组主键 * @return 分组 */ @Override public ArdRouteFolder selectArdRouteFolderById(String id) { ArdRouteFolder ardRouteFolder = ardRouteFolderMapper.selectArdRouteFolderById(id); ardRouteFolder.setArdRouteFileLs(getArdRouteFiles(id)); ArdRouteInformation ardRouteInformation = new ArdRouteInformation(); ardRouteInformation.setFolderId(id); ardRouteFolder.setArdRouteInformationLs(ardRouteInformationMapper.selectArdRouteInformationList(ardRouteInformation)); return ardRouteFolder; } /** * 查询文件夹列表 * 查询分组列表 * * @param ardRouteFolder 文件夹 * @return 文件夹 * @param ardRouteFolder 分组 * @return 分组 */ @Override @DataScope(deptAlias = "d", userAlias = "u") public List<ArdRouteFolder> selectArdRouteFolderList(ArdRouteFolder ardRouteFolder) { List<ArdRouteFolder> list = ardRouteFolderMapper.selectArdRouteFolderList(ardRouteFolder); for (ArdRouteFolder routeFolder : list) { routeFolder.setArdRouteFileLs(getArdRouteFiles(routeFolder.getId())); routeFolder.setArdRouteInformationLs(getArdRouteInformation(routeFolder.getId())); } return list; } @@ -64,16 +68,16 @@ /** * 查询文件列表 */ private List<ArdRouteFile> getArdRouteFiles(String folderId) { ArdRouteFile ardRouteFile = new ArdRouteFile(); ardRouteFile.setFolderId(folderId); return ardRouteFileMapper.selectArdRouteFileList(ardRouteFile); private List<ArdRouteInformation> getArdRouteInformation(String folderId) { ArdRouteInformation ardRouteInformation = new ArdRouteInformation(); ardRouteInformation.setFolderId(folderId); return ardRouteInformationMapper.selectArdRouteInformationList(ardRouteInformation); } /** * 新增文件夹 * 新增分组 * * @param ardRouteFolder 文件夹 * @param ardRouteFolder 分组 * @return 结果 */ @Override @@ -87,46 +91,46 @@ } /** * 修改文件夹 * 修改分组 * * @param ardRouteFolder 文件夹 * @param ardRouteFolder 分组 * @return 结果 */ @Override public int updateArdRouteFolder(ArdRouteFolder ardRouteFolder) { // 不能修改默认文件夹 // 不能修改默认分组 if ("0".equals(ardRouteFolder.getId())) { throw new RuntimeException("不能修改默认文件夹"); throw new RuntimeException("不能修改默认分组"); } ardRouteFolder.setUpdateTime(DateUtils.getNowDate()); return ardRouteFolderMapper.updateArdRouteFolder(ardRouteFolder); } /** * 批量删除文件夹 * 批量删除分组 * * @param ids 需要删除的文件夹主键 * @param ids 需要删除的分组主键 * @return 结果 */ @Override @Transactional(rollbackFor = Exception.class) public Map<String, Integer> deleteArdRouteFolderByIds(String[] ids) { // 检查是否包含默认文件夹,不能删除默认文件夹 // 检查是否包含默认分组,不能删除默认分组 for (String id : ids) { if ("0".equals(id)) { throw new RuntimeException("不能删除默认文件夹"); throw new RuntimeException("不能删除默认分组"); } } Map<String, Integer> result = new HashMap<>(); try { // 先删除文件 int fileCount = ardRouteFileMapper.deleteRouteFileByFolderIds(ids); result.put("file", fileCount); // 先删除航线信息 int informationCount = ardRouteInformationMapper.deleteRouteInformationByFolderIds(ids); result.put("informationCount", informationCount); // 再删除文件夹 // 再删除分组 int folderCount = ardRouteFolderMapper.deleteArdRouteFolderByIds(ids); result.put("folder", folderCount); result.put("folderCount", folderCount); return result; } catch (Exception e) { @@ -135,9 +139,9 @@ } /** * 删除文件夹信息 * 删除分组信息 * * @param id 文件夹主键 * @param id 分组主键 * @return 结果 */ @Override ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInformationServiceImpl.java
@@ -70,9 +70,8 @@ public String insertArdRouteInformation(ArdRouteInformation ardRouteInformation) { ardRouteInformation.setId(IdUtils.simpleUUID()); ardRouteInformation.setCreateTime(DateUtils.getNowDate()); if (ardRouteInformation.getUavRouteReq() != null){ if (ardRouteInformation.getFolderId() == null){ ardRouteInformation.setFolderId("0"); } KmzResultVo kmzResult = routeService.buildKmz(ardRouteInformation.getUavRouteReq(), ardRouteInformation.getFileName()); // 将KmzResult中的信息设置到ardRouteInformation中 @@ -139,7 +138,7 @@ information.setMinioUpPath(extractFilePath(url)); information.setUpPath(url); information.setUpFileSize((double) file.getSize()); insertArdRouteInformation(information); insertRouteInformation(information); return MinioUploadResult.builder() .url(url) .newFileName(FileUtils.getName(url)) @@ -161,4 +160,13 @@ return ardRouteInformationMapper.selectArdRouteInformationByName(name); } /** * 数据新增航线信息 */ private void insertRouteInformation(ArdRouteInformation ardRouteInformation){ ardRouteInformation.setId(IdUtils.simpleUUID()); ardRouteInformation.setCreateTime(DateUtils.getNowDate()); ardRouteInformationMapper.insertArdRouteInformation(ardRouteInformation); } } ard-route/src/main/java/com/ard/route/service/impl/UavRouteServiceImpl.java
@@ -17,6 +17,7 @@ import com.ard.route.enums.kml.ExitOnRCLostEnums; import com.ard.route.service.IArdRouteInformationService; import com.ard.route.util.FileUtils; import com.ard.route.util.InitializationUtils; import com.ard.route.util.RouteFileUtils; import com.ard.route.service.UavRouteService; import com.thoughtworks.xstream.XStream; @@ -53,6 +54,8 @@ @Resource private IArdRouteInformationService ardRouteInformationService; InitializationUtils init = new InitializationUtils(); /** * 编辑kmz文件 @@ -139,6 +142,8 @@ */ @Override public KmzResultVo buildKmz(UavRouteReq uavRouteReq, String fileName) { // 赋值默认参数 init.initialization(uavRouteReq); KmlParams kmlParams = new KmlParams(); BeanUtils.copyProperties(uavRouteReq, kmlParams); kmlParams.setRoutePointList(BeanUtil.copyToList(uavRouteReq.getRoutePointList(), RoutePointInfo.class)); ard-route/src/main/java/com/ard/route/util/InitializationUtils.java
New file @@ -0,0 +1,62 @@ package com.ard.route.util; import com.ard.route.domain.*; /** * 初始化数据 * 测试数据 */ public class InitializationUtils { private static final Double CHANSI_H20 = 23.76237623; private static final String WAYPOINT_TURN_MODE_DEFAULT = "toPointAndStopWithDiscontinuityCurvature"; /** * 初始化KMZ 默认数据 */ public UavRouteReq initialization(UavRouteReq uavRouteReq){ uavRouteReq.setTemplateType("waypoint"); // 起始点默认航线第一个点 uavRouteReq.setTakeOffRefPoint( uavRouteReq.getRoutePointList().get(0).getLatitude() + "," + uavRouteReq.getRoutePointList().get(0).getLongitude() + "," + "0"); //uavRouteReq.setDroneType(89); uavRouteReq.setSubDroneType(0); uavRouteReq.setPayloadType(43); uavRouteReq.setPayloadPosition(0); uavRouteReq.setImageFormat("wide"); uavRouteReq.setFinishAction("goHome"); uavRouteReq.setExitOnRcLostAction("goBack"); //uavRouteReq.setGlobalHeight(100.0); //uavRouteReq.setAutoFlightSpeed(5.0); WaypointHeadingReq waypointHeadingReq = new WaypointHeadingReq(); waypointHeadingReq.setWaypointHeadingMode("followWayline"); uavRouteReq.setWaypointHeadingReq(waypointHeadingReq); WaypointTurnReq waypointTurnReq = new WaypointTurnReq(); if (uavRouteReq.getGlobalWaypointTurnMode() != null){ waypointTurnReq.setWaypointTurnMode(uavRouteReq.getGlobalWaypointTurnMode()); }else { waypointTurnReq.setWaypointTurnMode("toPointAndStopWithDiscontinuityCurvature"); } uavRouteReq.setWaypointTurnReq(waypointTurnReq); uavRouteReq.setGimbalPitchMode("usePointSetting"); //buildZoom(uavRouteReq); return uavRouteReq; } /** * 变焦动作加工 */ private UavRouteReq buildZoom(UavRouteReq uavRouteReq){ for (RoutePointReq routePointReq : uavRouteReq.getRoutePointList()) { for (ActionGroupReq actionGroupReq : routePointReq.getActionGroupList()) { for (PointActionReq action : actionGroupReq.getActions()) { if (action.getZoom() != null){ action.setZoom(action.getZoom() * CHANSI_H20); } } } } return uavRouteReq; } } ard-route/src/main/resources/mapper/ArdRouteInformationMapper.xml
@@ -11,6 +11,7 @@ <result property="upPath" column="up_path" /> <result property="minioUpPath" column="minio_up_path" /> <result property="upFileSize" column="up_file_size" /> <result property="folderId" column="folder_id" /> <result property="aircraft" column="aircraft" /> <result property="aircraftModel" column="aircraft_model" /> <result property="createBy" column="create_by" /> @@ -26,6 +27,7 @@ up_path, minio_up_path, up_file_size, folder_id, aircraft, aircraft_model, create_by, @@ -58,6 +60,7 @@ <if test="upPath != null">up_path,</if> <if test="minioUpPath != null">minio_up_path,</if> <if test="upFileSize != null">up_file_size,</if> <if test="folderId != null">folder_id,</if> <if test="aircraft != null">aircraft,</if> <if test="aircraftModel != null">aircraft_model,</if> <if test="createBy != null">create_by,</if> @@ -72,6 +75,7 @@ <if test="upPath != null">#{upPath},</if> <if test="minioUpPath != null">#{minioUpPath},</if> <if test="upFileSize != null">#{upFileSize},</if> <if test="folderId != null">#{folderId},</if> <if test="aircraft != null">#{aircraft},</if> <if test="aircraftModel != null">#{aircraftModel},</if> <if test="createBy != null">#{createBy},</if> @@ -89,6 +93,7 @@ <if test="upPath != null">up_path = #{upPath},</if> <if test="minioUpPath != null">minio_up_path = #{minioUpPath},</if> <if test="upFileSize != null">up_file_size = #{upFileSize},</if> <if test="folderId != null">folder_id = #{folderId},</if> <if test="aircraft != null">aircraft = #{aircraft},</if> <if test="aircraftModel != null">aircraft_model = #{aircraftModel},</if> <if test="createBy != null">create_by = #{createBy},</if> @@ -115,4 +120,11 @@ where file_name = #{fileName} </select> <delete id="deleteRouteInformationByFolderIds" parameterType="String"> delete from ard_route_information where folder_id in <foreach item="folderId" collection="array" open="(" separator="," close=")"> #{folderId} </foreach> </delete> </mapper>