From d4447ca99df2cfe978ca51790dd2891e9df0d492 Mon Sep 17 00:00:00 2001
From: rain <167982779@qq.com>
Date: Thu, 25 Jul 2024 16:19:05 +0800
Subject: [PATCH] 修改人工拍照图片保存,新增面状航线保存、修改接口,图斑文件上传格式修改
---
src/main/java/com/dji/sample/patches/service/impl/GetPatchesServiceImpl.java | 63 +++++-----
src/main/java/com/dji/sample/patches/xml/mode/XMLTemplateModel.java | 6
src/main/java/com/dji/sample/patches/config/pojo/PatchesConfigPojo.java | 14 ++
src/main/java/com/dji/sample/wayline/plane/param/CreateWaylineParam.java | 2
src/main/java/com/dji/sample/media/model/MediaFileNailEntity.java | 4
src/main/java/com/dji/sample/patches/xml/utils/CreateWaylineFileUtils.java | 4
src/main/resources/application-prod.yml | 6 +
src/main/java/com/dji/sample/patches/controller/PatchesController.java | 2
src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java | 47 ++++---
src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java | 37 ++++++
src/main/resources/application-dev.yml | 13 +
src/main/java/com/dji/sample/patches/utils/ShapeFileUtil.java | 78 ++++++++----
src/main/java/com/dji/sample/patches/utils/TimerUtil.java | 3
src/main/java/com/dji/sample/wayline/plane/controller/CreateWayLineController.java | 67 +++++++++--
src/main/java/com/dji/sample/wayline/service/IWaylineFileService.java | 2
15 files changed, 243 insertions(+), 105 deletions(-)
diff --git a/src/main/java/com/dji/sample/media/model/MediaFileNailEntity.java b/src/main/java/com/dji/sample/media/model/MediaFileNailEntity.java
index 63940e1..3d1f6be 100644
--- a/src/main/java/com/dji/sample/media/model/MediaFileNailEntity.java
+++ b/src/main/java/com/dji/sample/media/model/MediaFileNailEntity.java
@@ -69,4 +69,8 @@
@TableField("job_name")
private String jobName;
+
+ @TableField(value = "drone_data", typeHandler = FastjsonTypeHandler.class)
+ private Object dronedata;
+
}
diff --git a/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java b/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java
index fee7a2c..8233451 100644
--- a/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java
+++ b/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java
@@ -116,25 +116,24 @@
MediaFileEntity fileEntity = this.fileUploadConvertToEntity(file);
fileEntity.setWorkspaceId(workspaceId);
fileEntity.setFileId(UUID.randomUUID().toString());
- int count=mapper.insert(fileEntity);
- String url = pojo.getEndpoint() + "/" + pojo.getBucket() + file.getObjectKey();
- updateStatue(file.getName());
- if (!file.getObjectKey().endsWith(".mp4")){
- File file1 = TbFjServiceImpl.downloadFile(url);
- saveNailFile(workspaceId,file,file1);
- Object data = ImgUtil.getInfo(file1);
- fileEntity.setDroneData(data);
- file1.delete();
- }
- else {
- File file1 = TbFjServiceImpl.downloadFile(url);
- saveNailFile(workspaceId,file,file1);
- file1.delete();
- }
- return count;
+ int count = mapper.insert(fileEntity);
+ String url = pojo.getEndpoint() + "/" + pojo.getBucket() + file.getObjectKey();
+ if (file.getObjectKey().endsWith(".jpeg")) {
+ File file1 = TbFjServiceImpl.downloadFile(url);
+ Object data = ImgUtil.getInfo(file1);
+ fileEntity.setDroneData(data);
+ saveNailFile(workspaceId, file, file1,data);
+ count = mapper.insert(fileEntity);
+ file1.delete();
+ }
+ if (file.getObjectKey().endsWith(".mp4")) {
+ saveNailFile(workspaceId, file, null,null);
+ }
+ return count;
}
- public void saveNailFile(String workspaceId,FileUploadDTO file,File file1) throws IOException {
+ public void saveNailFile(String workspaceId, FileUploadDTO file, File file1,Object data) throws IOException {
+ updateStatue(file.getName());
boolean endsWith = file.getObjectKey().endsWith(".mp4");
if (endsWith) {
MediaFileNailEntity nailEntity = this.fileUploadConvertToNailEntity((file));
@@ -145,6 +144,7 @@
File nailFile = new File(ImgZipUtil.compressImage(file1, 50).toURI());
MediaFileNailEntity nailEntity = this.fileUploadConvertToNailEntity(file);
nailEntity.setIsOriginal(false);
+ nailEntity.setDronedata(data);
nailEntity.setWorkspaceId(workspaceId);
nailEntity.setFileName("nail" + file.getName());
nailEntity.setObjectKey("/nail" + file.getPath() + "/" + file.getName());
@@ -152,6 +152,7 @@
String nailName = nailEntity.getObjectKey();
nailEntity.setFileId(UUID.randomUUID().toString());
uploadFile(pojo.getEndpoint(), pojo.getAccessKey(), pojo.getSecretKey(), pojo.getBucket(), nailName, nailFile, "image/jpeg");
+ uploadFile("http://139.196.74.78:9000", "sxkj", "sxkj2024", "cloud-bucket", nailName, nailFile, "image/jpeg");
nailMapper.insert(nailEntity);
}
}
@@ -169,6 +170,7 @@
}
}
}
+
@Override
public Object mediaInfo(String filename) {
String name = filename;
@@ -426,12 +428,13 @@
// 下载并压缩文件到本地目录
String localSaveDir = "/data/software/minio-data/zip-bucket/"; // 修改为你想保存的本地目录
downloader.downloadAndZipFolders(jobIds, localSaveDir);
- } catch (Exception e) {
+ } catch (Exception e) {
e.printStackTrace();
- return ResponseResult.error("下载失败"+e.getMessage());
+ return ResponseResult.error("下载失败" + e.getMessage());
}
return ResponseResult.success("下载成功");
}
+
@Override
public List<String> getUniqueFilePaths(List<String> jobIds) {
return mapper.selectList(
@@ -442,6 +445,7 @@
.distinct()
.collect(Collectors.toList());
}
+
@Override
public List<MediaFileDTO> getFilesByWorkspaceAndJobId(String workspaceId, String jobId) {
return mapper.selectList(new LambdaQueryWrapper<MediaFileEntity>()
@@ -580,6 +584,7 @@
return builder.build();
}
+
public static void uploadFile(String endpoint, String accessKey, String secretKey, String bucketName, String objectName, File file, String type) {
try {
// 创建MinIO客户端实例
@@ -804,6 +809,7 @@
e.printStackTrace();
}
}
+
@Override
public PaginationData<MediaFileEntity> getJobId(int pageNum, int pageSize, String workspaceId) {
List<MediaFileEntity> allRecords = new ArrayList<>();
@@ -858,8 +864,6 @@
}
-
-
@Override
public PaginationData<MediaFileEntity> getPhotoByJobId(int pageNum, int pageSize, String workspaceId, String jobId) {
@@ -897,7 +901,6 @@
return new PaginationData<>(pagedUniqueFiles, pagination);
}
-
public List<MediaFileEntity> getMedia(String jobId) {
diff --git a/src/main/java/com/dji/sample/patches/config/pojo/PatchesConfigPojo.java b/src/main/java/com/dji/sample/patches/config/pojo/PatchesConfigPojo.java
index e54b51f..14e0092 100644
--- a/src/main/java/com/dji/sample/patches/config/pojo/PatchesConfigPojo.java
+++ b/src/main/java/com/dji/sample/patches/config/pojo/PatchesConfigPojo.java
@@ -23,13 +23,27 @@
private String destKMZFile;
@Value("${patches.url.path.kmz.sourceDir}")
private String sourceDir;
+ @Value("${patches.url.path.kmz.planeKmzFile}")
+ private String planeKMZFile;
@Value("${patches.xml.temple.template}")
private String template;
@Value("${patches.xml.temple.waylines}")
private String waylines;
+
+ @Value("${patches.xml.temple.planeTemplate}")
+ private String planeTemplate;
+ @Value("${patches.xml.temple.planeWaylines}")
+ private String planeWaylines;
+
+
@Value("${patches.xml.target.template}")
private String targetTemplate;
@Value("${patches.xml.target.waylines}")
private String targetWaylines;
+ @Value("${patches.xml.target.planeTemplate}")
+ private String planeTargetTemplate;
+ @Value("${patches.xml.target.planeWaylines}")
+ private String planeTargetWaylines;
+
}
diff --git a/src/main/java/com/dji/sample/patches/controller/PatchesController.java b/src/main/java/com/dji/sample/patches/controller/PatchesController.java
index 4482c90..5ca1931 100644
--- a/src/main/java/com/dji/sample/patches/controller/PatchesController.java
+++ b/src/main/java/com/dji/sample/patches/controller/PatchesController.java
@@ -140,7 +140,7 @@
public ResponseResult patchesToWayline(@RequestBody List<LotInfo> lotInfos,
@RequestParam String waylineName,
@RequestParam String workspaceId,
- @RequestParam String patchesId,
+ @RequestParam (required = false) String patchesId,
@RequestParam double lat,
@RequestParam double lon,
@RequestParam(defaultValue = "1",required = false) String isTemp,
diff --git a/src/main/java/com/dji/sample/patches/service/impl/GetPatchesServiceImpl.java b/src/main/java/com/dji/sample/patches/service/impl/GetPatchesServiceImpl.java
index dc69a73..846be5a 100644
--- a/src/main/java/com/dji/sample/patches/service/impl/GetPatchesServiceImpl.java
+++ b/src/main/java/com/dji/sample/patches/service/impl/GetPatchesServiceImpl.java
@@ -95,36 +95,37 @@
@Override
public PaginationData getPhoto(PatchesParam param, String dkbh) {
- LotInfo lotInfo = getLotinfoToDb(dkbh);
- int statue = lotInfo.getIsPush();
-
- if (statue == 1) {
- List<MediaFileMarkEntity> allResults = markMapper.selectList(
- new LambdaQueryWrapper<MediaFileMarkEntity>()
- .like(MediaFileMarkEntity::getFileName, "%" + dkbh + "~" + "%"));
-
- // 去重处理
- Map<String, MediaFileMarkEntity> uniqueFileMap = new LinkedHashMap<>();
- List<MediaFileMarkEntity> uniqueResults = allResults.stream()
- .filter(mediaFile -> uniqueFileMap.putIfAbsent(mediaFile.getFileName(), mediaFile) == null)
- .collect(Collectors.toList());
-
- // 计算分页信息
- int total = uniqueResults.size();
- int start = (param.getPage() - 1) * param.getPageSize();
- int end = Math.min(start + param.getPageSize(), total);
-
- // 获取当前页的结果
- List<MediaFileMarkEntity> pageResults = uniqueResults.subList(start, end);
-
- // 创建临时的 Page 对象
- Page<MediaFileMarkEntity> resultPage = new Page<>(param.getPage(), param.getPageSize());
- resultPage.setRecords(pageResults);
- resultPage.setTotal(total);
-
- // 返回分页数据
- return new PaginationData<>(pageResults, new Pagination(resultPage));
- } else {
+// LotInfo lotInfo = getLotinfoToDb(dkbh);
+// int statue = lotInfo.getIsPush();
+//
+// if (statue == 1) {
+// List<MediaFileMarkEntity> allResults = markMapper.selectList(
+// new LambdaQueryWrapper<MediaFileMarkEntity>()
+// .like(MediaFileMarkEntity::getFileName, "%" + dkbh + "~" + "%"));
+//
+// // 去重处理
+// Map<String, MediaFileMarkEntity> uniqueFileMap = new LinkedHashMap<>();
+// List<MediaFileMarkEntity> uniqueResults = allResults.stream()
+// .filter(mediaFile -> uniqueFileMap.putIfAbsent(mediaFile.getFileName(), mediaFile) == null)
+// .collect(Collectors.toList());
+//
+// // 计算分页信息
+// int total = uniqueResults.size();
+// int start = (param.getPage() - 1) * param.getPageSize();
+// int end = Math.min(start + param.getPageSize(), total);
+//
+// // 获取当前页的结果
+// List<MediaFileMarkEntity> pageResults = uniqueResults.subList(start, end);
+//
+// // 创建临时的 Page 对象
+// Page<MediaFileMarkEntity> resultPage = new Page<>(param.getPage(), param.getPageSize());
+// resultPage.setRecords(pageResults);
+// resultPage.setTotal(total);
+//
+// // 返回分页数据
+// return new PaginationData<>(pageResults, new Pagination(resultPage));
+// }
+// else {
List<MediaFileEntity> allResults = fileMapper.selectList(
new LambdaQueryWrapper<MediaFileEntity>()
.like(MediaFileEntity::getFileName, "%" + dkbh + "~" + "%"));
@@ -151,7 +152,7 @@
// 返回分页数据
return new PaginationData<>(pageResults, new Pagination(resultPage));
}
- }
+// }
diff --git a/src/main/java/com/dji/sample/patches/utils/ShapeFileUtil.java b/src/main/java/com/dji/sample/patches/utils/ShapeFileUtil.java
index 218745b..58501cc 100644
--- a/src/main/java/com/dji/sample/patches/utils/ShapeFileUtil.java
+++ b/src/main/java/com/dji/sample/patches/utils/ShapeFileUtil.java
@@ -22,6 +22,9 @@
import java.io.StringWriter;
import java.util.*;
+import static com.dji.sample.patches.utils.TimerUtil.getNowDay;
+import static com.dji.sample.patches.utils.TimerUtil.getNowTimeName;
+
public class ShapeFileUtil {
//将文件解压
@@ -69,37 +72,60 @@
FeatureJSON fjson = new FeatureJSON();
JSONObject geoJsonObject = new JSONObject();
geoJsonObject.put("type", "FeatureCollection");
- // 获取FeatureCollection
- FeatureCollection collection = getFeatureCollectionByShpFile(zipFile);
+ // 获取FeatureCollection
+ FeatureCollection collection = getFeatureCollectionByShpFile(zipFile);
- FeatureIterator iterator = collection.features();
- //遍历feature转为json对象
- while (iterator.hasNext()) {
- ShpDTO shpDTO = new ShpDTO();
- SimpleFeature feature = (SimpleFeature) iterator.next();
- StringWriter writer = new StringWriter();
- fjson.writeFeature(feature, writer);
- String temp = writer.toString();
- byte[] b = temp.getBytes("iso8859-1");
- temp = new String(b, "gbk");
- JSONObject json = JSONObject.parseObject(temp);
- shpDTO.setDKFW(json.getJSONObject("geometry").get("coordinates").toString());
- shpDTO.setGEO(json.getJSONObject("geometry").get("type").toString());
- shpDTO.setXZQDM(json.getJSONObject("properties").get("XZQDM").toString());
+ FeatureIterator iterator = collection.features();
+ //遍历feature转为json对象
+ while (iterator.hasNext()) {
+ ShpDTO shpDTO = new ShpDTO();
+ SimpleFeature feature = (SimpleFeature) iterator.next();
+ StringWriter writer = new StringWriter();
+ fjson.writeFeature(feature, writer);
+ String temp = writer.toString();
+ byte[] b = temp.getBytes("iso8859-1");
+ temp = new String(b, "gbk");
+ JSONObject json = JSONObject.parseObject(temp);
+ shpDTO.setDKFW(json.getJSONObject("geometry").getString("coordinates"));
+
+ if ((json.getJSONObject("geometry").get("type")) != null) {
+ shpDTO.setGEO(json.getJSONObject("geometry").getString("type"));
+ }
+
+ if ((json.getJSONObject("properties").get("XZQDM")) != null) {
+ shpDTO.setXZQDM(json.getJSONObject("properties").getString("XZQDM"));
+ }
+ if ((json.getJSONObject("properties").getDouble("XZB")) != null &&
+ json.getJSONObject("properties").getDouble("YZB") != null) {
double[] xy = getLongitudeLatitude(CoordinateSystemUtil.pointCGCStoWGS(
- json.getJSONObject("properties").getDouble("XZB"),
- json.getJSONObject("properties").getDouble("YZB")));
+ json.getJSONObject("properties").getDouble("XZB"),
+ json.getJSONObject("properties").getDouble("YZB")));
shpDTO.setXZB(xy[0]);
shpDTO.setYZB(xy[1]);
- shpDTO.setDKBH(json.getJSONObject("properties").getString("JCBH"));
- shpDTO.setJCMJ(json.getJSONObject("properties").getDouble("JCMC"));
- shpDTO.setTBLX(json.getJSONObject("properties").getString("TBLX"));
- shpDTO.setDDTC(json.getJSONObject("properties").getString("DDTC"));
- shpDTO.setHSX(json.getJSONObject("properties").getString("HSX"));
- shpDTO.setJCLX(json.getJSONObject("properties").getString("JCLX"));
- dtoList.add(shpDTO);
}
- iterator.close();
+ if ((json.getJSONObject("properties").getString("JCBH") != null)) {
+ shpDTO.setDKBH(json.getJSONObject("properties").getString("JCBH"));
+ }else {
+ shpDTO.setDKBH(getNowDay());
+ }
+ if (json.getJSONObject("properties").getDouble("JCMC") != null) {
+ shpDTO.setJCMJ(json.getJSONObject("properties").getDouble("JCMC"));
+ }
+ if (json.getJSONObject("properties").getString("TBLX") != null) {
+ shpDTO.setTBLX(json.getJSONObject("properties").getString("TBLX"));
+ }
+ if (json.getJSONObject("properties").getString("DDTC") != null) {
+ shpDTO.setDDTC(json.getJSONObject("properties").getString("DDTC"));
+ }
+ if (json.getJSONObject("properties").getString("HSX") != null) {
+ shpDTO.setHSX(json.getJSONObject("properties").getString("HSX"));
+ }
+ if (json.getJSONObject("properties").getString("JCLX") != null) {
+ shpDTO.setJCLX(json.getJSONObject("properties").getString("JCLX"));
+ }
+ dtoList.add(shpDTO);
+ }
+ iterator.close();
return dtoList;
}
diff --git a/src/main/java/com/dji/sample/patches/utils/TimerUtil.java b/src/main/java/com/dji/sample/patches/utils/TimerUtil.java
index ea616f4..005ea33 100644
--- a/src/main/java/com/dji/sample/patches/utils/TimerUtil.java
+++ b/src/main/java/com/dji/sample/patches/utils/TimerUtil.java
@@ -660,7 +660,6 @@
public static String getNowTimeName() {
LocalDateTime currentTime = LocalDateTime.now();
-
// 格式化时间,生成当前时间
return "云飞行计划" + currentTime.format(DateTimeFormatter.ofPattern("MMddHHmmssSS"));
}
@@ -669,6 +668,6 @@
LocalDateTime currentTime = LocalDateTime.now();
// 格式化时间,生成当前时间
- return "云飞行计划" + currentTime.format(DateTimeFormatter.ofPattern("MMdd"));
+ return currentTime.format(DateTimeFormatter.ofPattern("MMddHHmmssSSS"));
}
}
diff --git a/src/main/java/com/dji/sample/patches/xml/mode/XMLTemplateModel.java b/src/main/java/com/dji/sample/patches/xml/mode/XMLTemplateModel.java
index 5ea5c10..9ef5203 100644
--- a/src/main/java/com/dji/sample/patches/xml/mode/XMLTemplateModel.java
+++ b/src/main/java/com/dji/sample/patches/xml/mode/XMLTemplateModel.java
@@ -231,8 +231,8 @@
XMLTemplateModel xmlModel = XMLTemplateModel.initPolygon(param);
//生成航线文件
- CreateWaylineFileUtils.createWaylineFileByPolygon(xmlModel, "src\\main\\resources\\template\\template-polygon.xml", "src\\main\\resources\\template\\wpmz2\\template.xml");
- CreateWaylineFileUtils.createWaylineFileByPolygon(xmlModel, "src\\main\\resources\\template\\waylines-polygon.xml", "src\\main\\resources\\template\\wpmz2\\waylines.xml");
+ CreateWaylineFileUtils.createWaylineFileByPolygon(xmlModel, "src\\main\\resources\\template\\template-polygon.xml", "src\\main\\resources\\template\\wpmz\\template.kml");
+ CreateWaylineFileUtils.createWaylineFileByPolygon(xmlModel, "src\\main\\resources\\template\\waylines-polygon.xml", "src\\main\\resources\\template\\wpmz\\waylines.wpml");
}
//新建点航线测试
@@ -261,7 +261,7 @@
// XMLTemplateModel xmlModel = XMLTemplateModel.init(coordinates, list);
//
// //生成航线文件
-// CreateWaylineFileUtils.createWaylineFile(xmlModel, "src\\main\\resources\\template\\template.xml", "src\\main\\resources\\template\\wpmz\\template.xml", "src\\main\\resources\\template\\waylines.xml", "src\\main\\resources\\template\\wpmz\\waylines.xml");
+// CreateWaylineFileUtils.createWaylineFile(xmlModel, "src\\main\\resources\\template\\template.kml", "src\\main\\resources\\template\\wpmz\\template.kml", "src\\main\\resources\\template\\waylines.wpml", "src\\main\\resources\\template\\wpmz\\waylines.wpml");
//
//
// }
diff --git a/src/main/java/com/dji/sample/patches/xml/utils/CreateWaylineFileUtils.java b/src/main/java/com/dji/sample/patches/xml/utils/CreateWaylineFileUtils.java
index 34c06ce..20fa4dc 100644
--- a/src/main/java/com/dji/sample/patches/xml/utils/CreateWaylineFileUtils.java
+++ b/src/main/java/com/dji/sample/patches/xml/utils/CreateWaylineFileUtils.java
@@ -23,8 +23,8 @@
*/
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");
-// xml2XmlDoc(xmlModel, "home\\drone\\server\\template\\waylines.xml", "home\\drone\\server\\template\\wpmz\\waylines.wpml");
+// xml2XmlDoc(xmlModel, "home\\drone\\server\\template\\template.kml", "home\\drone\\server\\template\\wpmz\\template.kml");
+// xml2XmlDoc(xmlModel, "home\\drone\\server\\template\\waylines.wpml", "home\\drone\\server\\template\\wpmz\\waylines.wpml");
xml2XmlDoc(xmlModel, templeFilePath, targetTempleFilePath);
xml2XmlDoc(xmlModel, waylineFilePath, targetWaylineFilePath);
diff --git a/src/main/java/com/dji/sample/wayline/plane/controller/CreateWayLineController.java b/src/main/java/com/dji/sample/wayline/plane/controller/CreateWayLineController.java
index cc4d021..d52356e 100644
--- a/src/main/java/com/dji/sample/wayline/plane/controller/CreateWayLineController.java
+++ b/src/main/java/com/dji/sample/wayline/plane/controller/CreateWayLineController.java
@@ -1,11 +1,25 @@
package com.dji.sample.wayline.plane.controller;
+import com.dji.sample.common.model.CustomClaim;
import com.dji.sample.common.model.ResponseResult;
+import com.dji.sample.patches.config.pojo.PatchesConfigPojo;
+import com.dji.sample.patches.utils.MultipartFileTOFileUtil;
+import com.dji.sample.patches.utils.TimerUtil;
+import com.dji.sample.patches.utils.ZipUtil;
import com.dji.sample.patches.xml.mode.XMLTemplateModel;
import com.dji.sample.patches.xml.utils.CreateWaylineFileUtils;
import com.dji.sample.wayline.plane.PlaneCourseUtils;
import com.dji.sample.wayline.plane.param.CreateWaylineParam;
+import com.dji.sample.wayline.service.IWaylineFileService;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.File;
+import java.io.IOException;
+
+import static com.dji.sample.component.AuthInterceptor.TOKEN_CLAIM;
/**
* @Author AIX
@@ -15,25 +29,54 @@
@RestController
@RequestMapping("/wayline/plane/createWayline")
public class CreateWayLineController {
+ @Autowired
+ private PatchesConfigPojo patchesConfigPojo;
+ @Autowired
+ private IWaylineFileService waylineFileService;
@PostMapping("/createPoints")
public ResponseResult createPoints(@RequestBody CreateWaylineParam param) {
return ResponseResult.success(PlaneCourseUtils.createWaylinePoints(param));
}
- @PostMapping("/saveWayLineFile")
- public ResponseResult saveWayLineFile(@RequestBody CreateWaylineParam param) {
- // 初始化模板对象
+ @PostMapping("/{workspace_id}/saveWayLineFile")
+ public ResponseResult saveWayLineFile(@PathVariable(name = "workspace_id") String workspaceId,
+ @RequestBody CreateWaylineParam param,
+ HttpServletRequest request
+ ) throws IOException {
+ CustomClaim customClaim = (CustomClaim) request.getAttribute(TOKEN_CLAIM);
+ String creator = customClaim.getUsername();
+// 初始化模板对象
XMLTemplateModel xmlModel = XMLTemplateModel.initPolygon(param);
-
- //生成航线文件
- CreateWaylineFileUtils.createWaylineFileByPolygon(xmlModel, "src\\main\\resources\\template\\template-polygon.xml", "src\\main\\resources\\template\\wpmz2\\template.xml");
- CreateWaylineFileUtils.createWaylineFileByPolygon(xmlModel, "src\\main\\resources\\template\\waylines-polygon.xml", "src\\main\\resources\\template\\wpmz2\\waylines.xml");
-
- //kmz、上传航线库
-
+// 生成航线文件
+ CreateWaylineFileUtils.createWaylineFileByPolygon(xmlModel, patchesConfigPojo.getPlaneTemplate(), patchesConfigPojo.getPlaneTargetTemplate());
+ CreateWaylineFileUtils.createWaylineFileByPolygon(xmlModel, patchesConfigPojo.getPlaneWaylines(), patchesConfigPojo.getPlaneTargetWaylines());
+// kmz、上传航线库
+ String destKMZFile = patchesConfigPojo.getPlaneKMZFile() + param.getWaylineName() + ".kmz"; // 输出的KMZ文件路径
+ ZipUtil.zipFolder(patchesConfigPojo.getSourceDir(), destKMZFile);
+ MultipartFile multipartFile = MultipartFileTOFileUtil.convert(new File(destKMZFile));
+ waylineFileService.importKmzFile(multipartFile, workspaceId, creator, null, "1");
return ResponseResult.success();
-
}
-}
+ @PutMapping("/{workspace_id}/updateWayLineFile/{id}")
+ public ResponseResult updateWayLineFile(@PathVariable(name = "workspace_id") String workspaceId,
+ @PathVariable(name = "id") String id,
+ @RequestBody CreateWaylineParam param,
+ HttpServletRequest request) throws IOException {
+ CustomClaim customClaim = (CustomClaim) request.getAttribute(TOKEN_CLAIM);
+ String creator = customClaim.getUsername();
+ String newName = param.getWaylineName() + TimerUtil.getNowDay();
+// 初始化模板对象
+ XMLTemplateModel xmlModel = XMLTemplateModel.initPolygon(param);
+// 生成航线文件
+ CreateWaylineFileUtils.createWaylineFileByPolygon(xmlModel, patchesConfigPojo.getPlaneTemplate(), patchesConfigPojo.getPlaneTargetTemplate());
+ CreateWaylineFileUtils.createWaylineFileByPolygon(xmlModel, patchesConfigPojo.getPlaneWaylines(), patchesConfigPojo.getPlaneTargetWaylines());
+// kmz、上传航线库
+ String destKMZFile = patchesConfigPojo.getPlaneKMZFile() + newName + ".kmz"; // 输出的KMZ文件路径
+ ZipUtil.zipFolder(patchesConfigPojo.getSourceDir(), destKMZFile);
+ MultipartFile multipartFile = MultipartFileTOFileUtil.convert(new File(destKMZFile));
+ waylineFileService.importPlaneKmzFile(multipartFile, workspaceId, creator, newName, id);
+ return ResponseResult.success();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/dji/sample/wayline/plane/param/CreateWaylineParam.java b/src/main/java/com/dji/sample/wayline/plane/param/CreateWaylineParam.java
index fb56509..a5bb6b5 100644
--- a/src/main/java/com/dji/sample/wayline/plane/param/CreateWaylineParam.java
+++ b/src/main/java/com/dji/sample/wayline/plane/param/CreateWaylineParam.java
@@ -61,4 +61,6 @@
*/
private PayloadInfo payloadInfo;
+
+ private String waylineName;
}
diff --git a/src/main/java/com/dji/sample/wayline/service/IWaylineFileService.java b/src/main/java/com/dji/sample/wayline/service/IWaylineFileService.java
index c3bf119..1f1d401 100644
--- a/src/main/java/com/dji/sample/wayline/service/IWaylineFileService.java
+++ b/src/main/java/com/dji/sample/wayline/service/IWaylineFileService.java
@@ -99,7 +99,7 @@
*/
WaylineFileDTO importKmzFileBack (MultipartFile file, String workspaceId, String creator);
WaylineFileEntity selectByName(String name);
-
+ WaylineFileDTO importPlaneKmzFile (MultipartFile file, String workspaceId, String creator,String newName,String id);
List<WaylineListDTO> waylineList(String workspaceId,String droneName);
int updateWayline(WaylineFileEntity entity);
diff --git a/src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java b/src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java
index 96f433a..e5d31c4 100644
--- a/src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java
+++ b/src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java
@@ -138,7 +138,6 @@
WaylineFileEntity file = this.dtoConvertToEntity(metadata);
file.setWaylineId(UUID.randomUUID().toString());
file.setWorkspaceId(workspaceId);
-
if (!StringUtils.hasText(file.getSign())) {
try (InputStream object = ossService.getObject(OssConfiguration.bucket, metadata.getObjectKey())) {
if (object.available() == 0) {
@@ -153,6 +152,23 @@
int insertId = mapper.insert(file);
return insertId > 0 ? file.getId() : insertId;
}
+
+ public Integer updateWaylineFile(String workspaceId, String newName, String id) {
+ String objectKey = "/" + newName;
+ LambdaUpdateWrapper<WaylineFileEntity> updateWrapper = new LambdaUpdateWrapper<>();
+ updateWrapper.eq(WaylineFileEntity::getWaylineId, id)
+ .eq(WaylineFileEntity::getWorkspaceId, workspaceId)
+ .set(WaylineFileEntity::getObjectKey, objectKey);
+
+ // 使用 mapper 执行更新操作
+ boolean updated = mapper.update(null, updateWrapper) > 0;
+ if (!updated) {
+ throw new RuntimeException("更新 objectKey 失败");
+ }
+
+ return updated ? 1 : 0; // 返回更新结果
+ }
+
@Override
public Integer saveWaylineFiles(String workspaceId, WaylineFileDTO metadata, String patchesId,String isTemp) {
@@ -261,6 +277,25 @@
}
return waylineFile;
}
+ @Override
+ public WaylineFileDTO importPlaneKmzFile(MultipartFile file, String workspaceId, String creator,String newName,String id) {
+ WaylineFileDTO waylineFile = null;
+ Optional<WaylineFileDTO> waylineFileOpt = validKmzFile(file);
+ if (waylineFileOpt.isEmpty()) {
+ throw new RuntimeException("文件格式错误");
+ }
+
+ try {
+ waylineFile = waylineFileOpt.get();
+ waylineFile.setWaylineId(workspaceId);
+ waylineFile.setUsername(creator);
+ ossService.putObject(OssConfiguration.bucket, waylineFile.getObjectKey(), file.getInputStream());
+ this.updateWaylineFile(workspaceId,newName,id);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return waylineFile;
+ }
@Override
public WaylineFileEntity selectByName(String name) {
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 27d6186..fdfb5c6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -85,10 +85,10 @@
oss:
enable: true
provider: minio
- endpoint: http://139.196.74.78:9000
- external-endpoint: http://139.196.74.78:9000
- access-key: sxkj
- secret-key: sxkj2024
+ endpoint: http://dev.jxpskj.com:9000
+ external-endpoint: http://dev.jxpskj.com:9000
+ access-key: pskj
+ secret-key: pskj@2021
bucket: cloud-bucket
expire: 3600
region: us-east-1
@@ -102,15 +102,20 @@
unzip: src/main/resources/tmp/
kmz:
destKMZFile: src/main/resources/template/kmz/
+ planeKmzFile: src/main/resources/template/kmz2/
sourceDir: src/main/resources/template/wpmz/
xml:
temple:
template: src/main/resources/template/template.xml
waylines: src/main/resources/template/waylines.xml
+ planeTemplate: src/main/resources/template/template-polygon.xml
+ planeWaylines: src/main/resources/template/waylines-polygon.xml
target:
template: src/main/resources/template/wpmz/template.kml
waylines: src/main/resources/template/wpmz/waylines.wpml
+ planeTemplate: src/main/resources/template/wpmz/template.kml
+ planeWaylines: src/main/resources/template/wpmz/waylines.wpml
db:
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index dccf65f..7d291a2 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -113,15 +113,21 @@
unzip: /home/drone/server/temp/
kmz:
destKMZFile: /home/drone/server/template/kmz/
+ planeKmzFile: /home/drone/server/template/kmz2/
sourceDir: /home/drone/server/template/wpmz/
#解析图斑航线模板的地址
xml:
temple:
template: /home/drone/server/template/template.xml
waylines: /home/drone/server/template/waylines.xml
+ planeTemplate: /home/drone/server/template/template-polygon.xml
+ planeWaylines: /home/drone/server/template/waylines-polygon.xml
target:
template: /home/drone/server/template/wpmz/template.kml
waylines: /home/drone/server/template/wpmz/waylines.wpml
+ planeTemplate: /home/drone/server/template/wpmz/template.kml
+ planeWaylines: /home/drone/server/template/wpmz/waylines.wpml
+
db:
sqlite:
--
Gitblit v1.9.3