| src/main/java/com/dji/sample/patches/config/pojo/PatchesConfigPojo.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/com/dji/sample/patches/service/impl/ShpToDataSourceServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/com/dji/sample/patches/utils/MultipartFileTOFileUtil.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/com/dji/sample/patches/xml/utils/CreateWaylineFileUtils.java | ●●●●● patch | view | raw | blame | history | |
| src/main/resources/application-dev.yml | ●●●●● patch | view | raw | blame | history | |
| src/main/resources/application-prod.yml | ●●●●● patch | view | raw | blame | history |
src/main/java/com/dji/sample/patches/config/pojo/PatchesConfigPojo.java
New file @@ -0,0 +1,36 @@ package com.dji.sample.patches.config.pojo; import lombok.Data; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/4/11 11:04 */ @Configuration @Data public class PatchesConfigPojo { @Value("${patches.url.path.unzip}") private String unzip; @Value("${patches.url.path.kmz.destKMZFile}") private String destKMZFile; @Value("${patches.url.path.kmz.sourceDir}") private String sourceDir; @Value("${patches.xml.temple.template}") private String template; @Value("${patches.xml.temple.waylines}") private String waylines; @Value("${patches.xml.target.template}") private String targetTemplate; @Value("${patches.xml.target.waylines}") private String targetWaylines; } src/main/java/com/dji/sample/patches/service/impl/ShpToDataSourceServiceImpl.java
@@ -1,5 +1,6 @@ package com.dji.sample.patches.service.impl; import com.dji.sample.patches.config.pojo.PatchesConfigPojo; import com.dji.sample.patches.dao.ShpToDataSourceMapper; import com.dji.sample.patches.model.entity.LotInfo; import com.dji.sample.patches.service.ShpToDataSourceService; @@ -15,10 +16,12 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.UUID; import static com.dji.sample.patches.utils.FormatConversionUtil.getCentros; import static com.dji.sample.patches.utils.MultipartFileTOFileUtil.convert; import static com.dji.sample.patches.utils.ZipUtil.*; @@ -32,18 +35,21 @@ @Autowired private IWaylineFileService service; String head = POLYGON; @Value("${Patches.url.path.kmz.sourceDir}") String sourceDir ; @Value("${Patches.url.path.kmz.destKMZFile}") String outkmz; MultipartFile multipartFile; private String head = POLYGON; @Value("${patches.url.path.kmz.sourceDir}") private String sourceDir; @Value("${patches.url.path.kmz.destKMZFile}") private String outkmz; private MultipartFile multipartFile; String json; public MultipartFile insertGeo(MultipartFile file, String workspaceId,String waylineName, double airportLat, double airportLon) throws Exception { @Autowired private PatchesConfigPojo patchesConfigPojo; public MultipartFile insertGeo(MultipartFile file, String workspaceId, String waylineName, double airportLat, double airportLon) throws Exception { List<LotInfo> list = new ArrayList<>(); MultipartFileTOFileUtil multipartFileTOFileUtil = new MultipartFileTOFileUtil(); File file1 = multipartFileTOFileUtil.multipartFile2File(file); File file1 = MultipartFileTOFileUtil.multipartFile2File(file, patchesConfigPojo.getUnzip()); List<String> s = ShapeFileUtil.shpToGeoJson(file1); String[] arr1 = FormatConversionUtil.formatConversion(s); for (int i = 0; i < arr1.length; i++) { @@ -58,23 +64,23 @@ lotInfo.setDkfw(json); lotInfo.setDkbh("dkbh" + i); list.add(lotInfo); String strs=getCentros(list); String end =strs.replaceAll("\\(","").replaceAll(", NaN\\)",""); String[] points=end.split(","); String strs = getCentros(list); String end = strs.replaceAll("\\(", "").replaceAll(", NaN\\)", ""); String[] points = end.split(","); lotInfo.setXzb(Double.valueOf(points[0])); lotInfo.setYzb(Double.valueOf(points[1])); mapper.insert(lotInfo); } Coordinate[] coordinates = GeoToolsUtil.getRoutePointOrder(list, airportLat, airportLon); XMLTemplateModel xmlModel = XMLTemplateModel.init(coordinates, list); CreateWaylineFileUtils.createWaylineFile(xmlModel); CreateWaylineFileUtils.createWaylineFile(xmlModel,patchesConfigPojo.getWaylines(),patchesConfigPojo.getWaylines(),patchesConfigPojo.getWaylines(),patchesConfigPojo.getWaylines()); // 压缩文件夹中的内容 String destKMZFile = outkmz+waylineName+".kmz"; // 输出的KMZ文件路径 String destKMZFile = outkmz + waylineName + ".kmz"; // 输出的KMZ文件路径 zipFolder(sourceDir, destKMZFile); multipartFile = convert(new File(destKMZFile)); return multipartFile; } } } src/main/java/com/dji/sample/patches/utils/MultipartFileTOFileUtil.java
@@ -1,25 +1,28 @@ package com.dji.sample.patches.utils; import org.apache.http.entity.ContentType; import org.apache.tomcat.util.http.fileupload.FileItem; import com.dji.sample.patches.config.pojo.PatchesConfigPojo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; import org.springframework.mock.web.MockMultipartFile; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.commons.CommonsMultipartFile; import java.io.*; import java.util.UUID; public class MultipartFileTOFileUtil { @Value("${Patches.url.path.unzip}") String url; //MultiparFile转File public File multipartFile2File(MultipartFile multipartFile) { /** * MultiparFile转File * @param multipartFile * @param unzipPath * @return */ public static File multipartFile2File(MultipartFile multipartFile, String unzipPath) { String tmpFileDir = null; // 创建临时文件 String randomFileName = UUID.randomUUID().toString(); tmpFileDir = url+ randomFileName; tmpFileDir = unzipPath + randomFileName; File file = new File(tmpFileDir); InputStream inputStream = null; FileOutputStream outputStream = null; src/main/java/com/dji/sample/patches/xml/utils/CreateWaylineFileUtils.java
@@ -18,20 +18,11 @@ @Slf4j public class CreateWaylineFileUtils { @Value("${xml.temple.template}") static String templeFilePath; @Value("${xml.temple.waylines}") static String waylineFilePath; @Value("${xml.target.template}") static String targetTempleFilePath; @Value("${xml.target.waylines}") static String targetWaylineFilePath; /** * 生成航线文件 * @param xmlModel */ public static void createWaylineFile(XMLTemplateModel xmlModel) { public static void createWaylineFile(XMLTemplateModel xmlModel,String templeFilePath,String targetTempleFilePath,String waylineFilePath,String targetWaylineFilePath) { // xml2XmlDoc(xmlModel, "home\\drone\\server\\template\\template.xml", "home\\drone\\server\\template\\wpmz\\template.kml"); @@ -52,12 +43,12 @@ Writer out = null; try { // 将模板文件路径拆分为文件夹路径和文件名称 String tempLetDir = templetFilePath.substring(0, templetFilePath.lastIndexOf("\\")); String tempLetDir = templetFilePath.substring(0, templetFilePath.lastIndexOf("/")); // 注意:templetFilePath.lastIndexOf("/")中,有的文件分隔符为:\ 要注意文件路径的分隔符 String templetName = templetFilePath.substring(templetFilePath.lastIndexOf("\\") + 1); String templetName = templetFilePath.substring(templetFilePath.lastIndexOf("/") + 1); // 将目标文件保存路径拆分为文件夹路径和文件名称 String targetDir = targetFilePath.substring(0, targetFilePath.lastIndexOf("\\")); String targetName = targetFilePath.substring(targetFilePath.lastIndexOf("\\") + 1); String targetDir = targetFilePath.substring(0, targetFilePath.lastIndexOf("/")); String targetName = targetFilePath.substring(targetFilePath.lastIndexOf("/") + 1); Configuration configuration = new Configuration(); configuration.setDefaultEncoding(String.valueOf(StandardCharsets.UTF_8)); // 如果目标文件目录不存在创建 src/main/resources/application-dev.yml
@@ -87,18 +87,18 @@ out-net-file-address: http://dev.jxpskj.com:9000 #图斑的解压地址和图斑文件转航线文件的地址 Patches: patches: url: path: unzip: D:\\tmp\\ kmz: destKMZFile: src\\main\\resources\\template\\kmz\\ sourceDir: src\\main\\resources\\template\\wpmz\\ destKMZFile: src/main/resources/template/kmz/ sourceDir: src/main/resources/template/wpmz/ xml: temple: template: src\\main\\resources\\template\\template.xml waylines: src\\main\\resources\\template\\waylines.xml target: template: src\\main\\resources\\template\\wpmz\\template.kml waylines: src\\main\\resources\\template\\wpmz\\waylines.wpml xml: temple: template: src/main/resources/template/template.xml waylines: src/main/resources/template/waylines.xml target: template: src/main/resources/template/wpmz/template.kml waylines: src/main/resources/template/wpmz/waylines.wpml src/main/resources/application-prod.yml
@@ -90,7 +90,7 @@ out-net-file-address: http://dev.jxpskj.com:9000 #图斑的解压地址和图斑文件转航线文件的地址 Patches: patches: url: path: unzip: /home/drone/server/temp/