xieb
2024-04-11 06344d06ee31d3cad0616b66d10d750f0f15e238
图斑配置
5 files modified
1 files added
134 ■■■■■ changed files
src/main/java/com/dji/sample/patches/config/pojo/PatchesConfigPojo.java 36 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/service/impl/ShpToDataSourceServiceImpl.java 36 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/utils/MultipartFileTOFileUtil.java 21 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/utils/CreateWaylineFileUtils.java 19 ●●●● patch | view | raw | blame | history
src/main/resources/application-dev.yml 20 ●●●● patch | view | raw | blame | history
src/main/resources/application-prod.yml 2 ●●● 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/