From 3db92a6fff18c1591b298fa0bf8085dfcbdb6747 Mon Sep 17 00:00:00 2001
From: rain <167982779@qq.com>
Date: Sat, 06 Jul 2024 15:08:11 +0800
Subject: [PATCH] 修改智能航线规划,修改南昌机场和西安机场人工接管时图片绑定图斑问题
---
src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java | 74 +++++++++++++++++++++---------------
1 files changed, 43 insertions(+), 31 deletions(-)
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 00b0753..7429d24 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
@@ -457,9 +457,7 @@
public void updateMediaFileNames(String jobId) {
// 查询符合条件的数据
List<MediaFileEntity> mediaFiles = mapper.selectList(new LambdaQueryWrapper<MediaFileEntity>()
- .eq(MediaFileEntity::getJobId, jobId)
-// .eq(MediaFileMarkEntity::getIsadd, 0)
- );
+ .eq(MediaFileEntity::getJobId, jobId));
boolean allContainTilde = mediaFiles.stream().allMatch(file -> file.getFileName().contains("~"));
boolean noneContainTilde = mediaFiles.stream().noneMatch(file -> file.getFileName().contains("~"));
@@ -512,22 +510,28 @@
closestFileOpt.ifPresent(closestFile -> {
String closestName = closestFile.getFileName();
int startIndex = closestName.indexOf("V");
- if (closestName.contains("W")) {
- startIndex = closestName.indexOf("W");
- }
- if (closestName.contains("Z")) {
- startIndex = closestName.indexOf("Z");
+ if (startIndex == -1) startIndex = closestName.indexOf("W");
+ if (startIndex == -1) startIndex = closestName.indexOf("Z");
+ if (startIndex == -1) startIndex = closestName.indexOf("T");
+ if (startIndex == -1) {
+ return;
}
int endIndex = closestName.indexOf(".", startIndex);
+ if (endIndex == -1) {
+ return;
+ }
String replacement = closestName.substring(startIndex, endIndex);
int currentStartIndex = currentName.indexOf("V");
- if (currentName.contains("W")) {
- currentStartIndex = closestName.indexOf("W");
- }
- if (currentName.contains("Z")) {
- currentStartIndex = closestName.indexOf("Z");
+ if (currentStartIndex == -1) currentStartIndex = currentName.indexOf("W");
+ if (currentStartIndex == -1) currentStartIndex = currentName.indexOf("Z");
+ if (currentStartIndex == -1) currentStartIndex = currentName.indexOf("T");
+ if (currentStartIndex == -1) {
+ return;
}
int currentEndIndex = currentName.indexOf(".", currentStartIndex);
+ if (currentEndIndex == -1) {
+ return;
+ }
String newName = currentName.substring(0, currentStartIndex)
+ replacement
+ currentName.substring(currentEndIndex);
@@ -540,13 +544,10 @@
@Override
public void updateMarkMediaFileNames(String jobId) {
try {
-
-
// 查询符合条件的数据
List<MediaFileMarkEntity> mediaFiles = markMapper.selectList(new LambdaQueryWrapper<MediaFileMarkEntity>()
- .eq(MediaFileMarkEntity::getJobId, jobId)
-// .eq(MediaFileMarkEntity::getIsadd, 0)
- );
+ .eq(MediaFileMarkEntity::getJobId, jobId));
+
// 判断所有 fileName 是否都包含 '~' 或者都不包含 '~'
boolean allContainTilde = mediaFiles.stream().allMatch(file -> file.getFileName().contains("~"));
boolean noneContainTilde = mediaFiles.stream().noneMatch(file -> file.getFileName().contains("~"));
@@ -557,9 +558,9 @@
file.setIsadd(1);
updateById(file.getId(), file);
});
- return;
-
+ return;
}
+
// 筛选出name字段不包含'~'的数据
List<MediaFileMarkEntity> filteredFiles = mediaFiles.stream()
.filter(file -> !file.getFileName().contains("~"))
@@ -569,6 +570,7 @@
String currentName = currentFile.getFileName();
Map<String, Object> currentMetadata = JSON.parseObject(JSON.toJSONString(currentFile.getMetadata()), Map.class);
Long currentCreatedTime = (Long) currentMetadata.get("createdTime");
+
// 找到metadata中的createdTime小于当前数据的createdTime且最接近的那条数据
Optional<MediaFileMarkEntity> closestFileOpt = mediaFiles.stream()
.filter(file -> {
@@ -584,6 +586,7 @@
Long time2 = (Long) metadata2.get("createdTime");
return Long.compare(currentCreatedTime - time1, currentCreatedTime - time2);
});
+
if (closestFileOpt.isEmpty()) {
// 找不到小于的文件,尝试找大于且最接近的文件
closestFileOpt = mediaFiles.stream()
@@ -601,26 +604,34 @@
return Long.compare(time1 - currentCreatedTime, time2 - currentCreatedTime);
});
}
+
// 提取并替换name字段
closestFileOpt.ifPresent(closestFile -> {
String closestName = closestFile.getFileName();
int startIndex = closestName.indexOf("V");
- if (closestName.contains("W")) {
- startIndex = closestName.indexOf("W");
- }
- if (closestName.contains("Z")) {
- startIndex = closestName.indexOf("Z");
+ if (startIndex == -1) startIndex = closestName.indexOf("W");
+ if (startIndex == -1) startIndex = closestName.indexOf("Z");
+ if (startIndex == -1) startIndex = closestName.indexOf("T");
+ if (startIndex == -1) {
+ return;
}
int endIndex = closestName.indexOf(".", startIndex);
- String replacement = closestName.substring(startIndex, endIndex);
- int currentStartIndex = currentName.indexOf("V");
- if (currentName.contains("W")) {
- currentStartIndex = closestName.indexOf("W");
+ if (endIndex == -1) {
+ return;
}
- if (currentName.contains("Z")) {
- currentStartIndex = closestName.indexOf("Z");
+ String replacement = closestName.substring(startIndex, endIndex);
+
+ int currentStartIndex = currentName.indexOf("V");
+ if (currentStartIndex == -1) currentStartIndex = currentName.indexOf("W");
+ if (currentStartIndex == -1) currentStartIndex = currentName.indexOf("Z");
+ if (currentStartIndex == -1) currentStartIndex = currentName.indexOf("T");
+ if (currentStartIndex == -1) {
+ return;
}
int currentEndIndex = currentName.indexOf(".", currentStartIndex);
+ if (currentEndIndex == -1) {
+ return;
+ }
String newName = currentName.substring(0, currentStartIndex)
+ replacement
+ currentName.substring(currentEndIndex);
@@ -633,6 +644,7 @@
}
}
+
public void updateById(Integer id, MediaFileMarkEntity entity) {
entity.setIsadd(1);
UpdateWrapper<MediaFileMarkEntity> updateWrapper = new UpdateWrapper<>();
--
Gitblit v1.9.3