ard-admin/src/main/java/com/ard/web/controller/route/UavRouteController.java
@@ -27,9 +27,10 @@ */ @ApiOperation("编辑kmz文件") @PreAuthorize("@ss.hasPermi('route:kmz:updateKmz')") @PostMapping("/updateKmz") public AjaxResult updateKmz(@RequestBody UavRouteReq uavRouteReq) { return success(routeService.updateKmz(uavRouteReq)); @PostMapping("/updateKmz/{fileName}") public AjaxResult updateKmz(@RequestBody UavRouteReq uavRouteReq, @PathVariable("fileName") String fileName){ return success(routeService.updateKmz(uavRouteReq,fileName)); } /** @@ -38,7 +39,8 @@ @ApiOperation("生成kmz文件") @PreAuthorize("@ss.hasPermi('route:kmz:buildKmz')") @PostMapping("/buildKmz/{fileName}") public AjaxResult buildKmz(@RequestBody UavRouteReq uavRouteReq,@PathVariable("fileName") String fileName){ public AjaxResult buildKmz(@RequestBody UavRouteReq uavRouteReq, @PathVariable("fileName") String fileName){ return success(routeService.buildKmz(uavRouteReq,fileName)); } ard-route/src/main/java/com/ard/route/mapper/ArdRouteInformationMapper.java
@@ -60,4 +60,12 @@ */ public int deleteArdRouteInformationByIds(String[] ids); /** * 根据文件名称查询航线信息 * * @param fileName 文件名称 * @return 结果 */ public ArdRouteInformation selectArdRouteInformationByName(String fileName); } ard-route/src/main/java/com/ard/route/service/IArdRouteInformationService.java
@@ -70,4 +70,12 @@ */ public MinioUploadResult uploadArdRouteInformation(MultipartFile file); /** * 根据文件名称查询航线信息 * * @param name 文件 * @return 结果 */ public ArdRouteInformation selectArdRouteInformationByName(String name); } ard-route/src/main/java/com/ard/route/service/UavRouteService.java
@@ -11,7 +11,7 @@ /** * 编辑kmz文件 */ public String updateKmz(UavRouteReq uavRouteReq); public String updateKmz(UavRouteReq uavRouteReq,String fileName); /** * 生成kmz文件(带航点) @@ -21,6 +21,6 @@ /** * 解析kmz文件 */ KmzInfoVO parseKmz(String file) throws IOException; public KmzInfoVO parseKmz(String file) throws IOException; } ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInformationServiceImpl.java
@@ -132,4 +132,15 @@ } } /** * 根据文件名称查询航线信息 * * @param name 文件名称 * @return 结果 */ @Override public ArdRouteInformation selectArdRouteInformationByName(String name) { return ardRouteInformationMapper.selectArdRouteInformationByName(name); } } ard-route/src/main/java/com/ard/route/service/impl/UavRouteServiceImpl.java
@@ -65,11 +65,20 @@ */ private static final String XML_HEADER = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; /** * 编辑kmz文件 */ @Override public String updateKmz(UavRouteReq uavRouteReq) { // TODO 替换本地文件路径!!! File file = FileUtil.file("/Users/songjian/Project/IdeaProjects/dj-uav/file/kmz/航线kmz文件.kmz"); try (ArchiveInputStream archiveInputStream = new ZipArchiveInputStream(FileUtil.getInputStream(file))) { public String updateKmz(UavRouteReq uavRouteReq,String fileName){ // 校验修改的文件是否存在 ArdRouteInformation routeInformation = ardRouteInformationService.selectArdRouteInformationByName(fileName); if ( routeInformation == null ){ return "修改航线文件失败,请检查文件是否存在"; } // 获取文件 String minioUrl = routeInformation.getMinioUpPath(); try (InputStream inputStream = ossService.getObject(kmzPath,minioUrl); ArchiveInputStream archiveInputStream = new ZipArchiveInputStream(inputStream)){ ArchiveEntry entry; KmlInfo kmlInfo = new KmlInfo(); KmlInfo wpmlInfo = new KmlInfo(); @@ -85,9 +94,12 @@ this.handleRouteUpdate(wpmlInfo, uavRouteReq, FileTypeConstants.WPML, kmlParams); } } return RouteFileUtils.buildKmz("更新航线kmz文件", kmlInfo, wpmlInfo, kmzPath); // 删除minio的文件 // 插入修改好的minio文件 return RouteFileUtils.buildKmz("更新航线kmz文件111111", kmlInfo, wpmlInfo, kmzPath); } catch (Exception e) { e.printStackTrace(); return "更新航线kmz文件失败"; } } @@ -133,6 +145,9 @@ } } /** * 生成kmz文件(带航点) */ @Override public String buildKmz(UavRouteReq uavRouteReq, String fileName) { KmlParams kmlParams = new KmlParams(); @@ -223,11 +238,14 @@ } } /** * 解析kmz文件 */ @Override public KmzInfoVO parseKmz(String fileUrl) throws IOException { KmzInfoVO kmzInfoVO = new KmzInfoVO(); File file = FileUtils.downloadUrlToTempFile(fileUrl); try (ArchiveInputStream archiveInputStream = new ZipArchiveInputStream(FileUtil.getInputStream(file))) { try (InputStream inputStream = ossService.getObject(kmzPath,fileUrl); ArchiveInputStream archiveInputStream = new ZipArchiveInputStream(inputStream)){ ArchiveEntry entry; while (!Objects.isNull(entry = archiveInputStream.getNextEntry())) { String name = entry.getName(); @@ -238,9 +256,27 @@ } } return kmzInfoVO; } catch (Exception e) { }catch (Exception e) { e.printStackTrace(); } return null; // File file = FileUtils.downloadUrlToTempFile(fileUrl); // try (ArchiveInputStream archiveInputStream = new ZipArchiveInputStream(FileUtil.getInputStream(file))) { // ArchiveEntry entry; // while (!Objects.isNull(entry = archiveInputStream.getNextEntry())) { // String name = entry.getName(); // if (name.toLowerCase().endsWith(".kml")) { // kmzInfoVO.setKmlInfo(RouteFileUtils.parseKml(archiveInputStream)); // } else if (name.toLowerCase().endsWith(".wpml")) { // kmzInfoVO.setWpmlInfo(RouteFileUtils.parseKml(archiveInputStream)); // } // } // return kmzInfoVO; // } catch (Exception e) { // e.printStackTrace(); // } // return null; } } ard-route/src/main/resources/mapper/ArdRouteInformationMapper.xml
@@ -100,4 +100,9 @@ </foreach> </delete> <select id="selectArdRouteInformationByName" parameterType="String" resultMap="ArdRouteInformationResult"> <include refid="selectArdRouteInformationVo"/> where file_name = #{fileName} </select> </mapper>