From 94a6e4e4bc39153e64f8599e626475c4ce5bdb88 Mon Sep 17 00:00:00 2001
From: rain <167982779@qq.com>
Date: Tue, 16 Jul 2024 13:49:01 +0800
Subject: [PATCH] 修改喊话功能的重新喊话和音频展示接口,新增缩略图展示接口
---
src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java | 107 +++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 86 insertions(+), 21 deletions(-)
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 a90846f..52da471 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
@@ -9,6 +9,7 @@
import com.dji.sample.component.oss.model.OssConfiguration;
import com.dji.sample.component.oss.service.impl.OssServiceContext;
import com.dji.sample.manage.model.enums.DeviceDomainEnum;
+import com.dji.sample.summarize.model.entity.FlyInfo;
import com.dji.sample.wayline.dao.IWaylineFileMapper;
import com.dji.sample.wayline.model.dto.KmzFileProperties;
import com.dji.sample.wayline.model.dto.WaylineFileDTO;
@@ -28,7 +29,6 @@
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
-import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
@@ -64,10 +64,10 @@
new LambdaQueryWrapper<WaylineFileEntity>()
.eq(WaylineFileEntity::getWorkspaceId, workspaceId)
.eq(param.isFavorited(), WaylineFileEntity::getFavorited, param.isFavorited())
- .and(param.getTemplateType() != null, wrapper -> {
- for (Integer type : param.getTemplateType()) {
- wrapper.like(WaylineFileEntity::getTemplateTypes, type).or();
- }
+ .and(param.getTemplateType() != null, wrapper -> {
+ for (Integer type : param.getTemplateType()) {
+ wrapper.like(WaylineFileEntity::getTemplateTypes, type).or();
+ }
})
// There is a risk of SQL injection
.last(StringUtils.hasText(param.getOrderBy()), " order by " + param.getOrderBy()));
@@ -82,13 +82,20 @@
}
@Override
+ public String getPatchesId(String waylineId) {
+ WaylineFileEntity entity = mapper.selectOne(new LambdaQueryWrapper<WaylineFileEntity>()
+ .eq(WaylineFileEntity::getWaylineId, waylineId));
+ return entity.getPatchesId();
+ }
+
+ @Override
public Optional<WaylineFileDTO> getWaylineByWaylineId(String workspaceId, String waylineId) {
return Optional.ofNullable(
this.entityConvertToDTO(
mapper.selectOne(
new LambdaQueryWrapper<WaylineFileEntity>()
- .eq(WaylineFileEntity::getWorkspaceId, workspaceId)
- .eq(WaylineFileEntity::getWaylineId, waylineId))));
+ .eq(WaylineFileEntity::getWorkspaceId, workspaceId)
+ .eq(WaylineFileEntity::getWaylineId, waylineId))));
}
@Override
@@ -102,6 +109,28 @@
@Override
public Integer saveWaylineFile(String workspaceId, WaylineFileDTO metadata) {
+ 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) {
+ throw new RuntimeException("文件" + metadata.getObjectKey() +
+ " 在空间中不存在[" + OssConfiguration.bucket + "].");
+ }
+ file.setSign(DigestUtils.md5DigestAsHex(object));
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ int insertId = mapper.insert(file);
+ return insertId > 0 ? file.getId() : insertId;
+ }
+
+ @Override
+ public Integer saveWaylineFiles(String workspaceId, WaylineFileDTO metadata, String patchesId) {
+ metadata.setPatchesId(patchesId);
WaylineFileEntity file = this.dtoConvertToEntity(metadata);
file.setWaylineId(UUID.randomUUID().toString());
file.setWorkspaceId(workspaceId);
@@ -138,8 +167,8 @@
@Override
public List<String> getDuplicateNames(String workspaceId, List<String> names) {
return mapper.selectList(new LambdaQueryWrapper<WaylineFileEntity>()
- .eq(WaylineFileEntity::getWorkspaceId, workspaceId)
- .in(WaylineFileEntity::getName, names))
+ .eq(WaylineFileEntity::getWorkspaceId, workspaceId)
+ .in(WaylineFileEntity::getName, names))
.stream()
.map(WaylineFileEntity::getName)
.collect(Collectors.toList());
@@ -153,8 +182,8 @@
}
WaylineFileDTO wayline = waylineOpt.get();
boolean isDel = mapper.delete(new LambdaUpdateWrapper<WaylineFileEntity>()
- .eq(WaylineFileEntity::getWorkspaceId, workspaceId)
- .eq(WaylineFileEntity::getWaylineId, waylineId))
+ .eq(WaylineFileEntity::getWorkspaceId, workspaceId)
+ .eq(WaylineFileEntity::getWaylineId, waylineId))
> 0;
if (!isDel) {
return false;
@@ -163,33 +192,62 @@
}
@Override
- public void importKmzFile(MultipartFile file, String workspaceId, String creator) {
+ public String importKmzFile(MultipartFile file, String workspaceId, String creator, String patchesId, String spotInFreckle) {
+ Optional<WaylineFileDTO> waylineFileOpt = validKmzFile(file);
+ if (waylineFileOpt.isEmpty()) {
+ throw new RuntimeException("文件格式错误");
+ }
+ String back = null;
+ try {
+ WaylineFileDTO waylineFile = waylineFileOpt.get();
+ waylineFile.setWaylineId(workspaceId);
+ waylineFile.setUsername(creator);
+ waylineFile.setSpotInFreckle(spotInFreckle);
+ back = ossService.putObject(OssConfiguration.bucket, waylineFile.getObjectKey(), file.getInputStream());
+ if (back==null) {
+ this.saveWaylineFiles(workspaceId, waylineFile, patchesId);
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return back;
+ }
+
+ @Override
+ public WaylineFileDTO importKmzFileBack(MultipartFile file, String workspaceId, String creator) {
+ WaylineFileDTO waylineFile = null;
Optional<WaylineFileDTO> waylineFileOpt = validKmzFile(file);
if (waylineFileOpt.isEmpty()) {
throw new RuntimeException("文件格式错误");
}
try {
- WaylineFileDTO waylineFile = waylineFileOpt.get();
+ waylineFile = waylineFileOpt.get();
waylineFile.setWaylineId(workspaceId);
waylineFile.setUsername(creator);
-
ossService.putObject(OssConfiguration.bucket, waylineFile.getObjectKey(), file.getInputStream());
this.saveWaylineFile(workspaceId, waylineFile);
+
} catch (IOException e) {
e.printStackTrace();
}
+ return waylineFile;
}
@Override
- public List<WaylineListDTO> waylineList(String workspaceId,String droneName) {
+ public WaylineFileEntity selectByName(String name) {
+ return mapper.selectOne(new LambdaQueryWrapper<WaylineFileEntity>().eq(WaylineFileEntity::getName, name));
+ }
+
+ @Override
+ public List<WaylineListDTO> waylineList(String workspaceId, String droneName) {
LambdaQueryChainWrapper<WaylineFileEntity> wrapper =
new LambdaQueryChainWrapper<>(mapper).eq(WaylineFileEntity::getWorkspaceId, workspaceId);
- if (StringUtils.hasText(droneName)){
- wrapper.like(WaylineFileEntity::getName,droneName);
+ if (StringUtils.hasText(droneName)) {
+ wrapper.like(WaylineFileEntity::getName, droneName);
}
- return wrapper.list().stream().map(r -> WaylineListDTO.builder().waylineFileId(r.getWaylineId()).name(r.getName()).build())
+ return wrapper.list().stream().map(r -> WaylineListDTO.builder().waylineFileId(r.getWaylineId()).name(r.getName()).build())
.collect(Collectors.toList());
}
@@ -233,7 +291,7 @@
return Optional.of(WaylineFileDTO.builder()
.droneModelKey(String.format("%s-%s-%s", DeviceDomainEnum.SUB_DEVICE.getVal(), type, subType))
- .payloadModelKeys(List.of(String.format("%s-%s-%s",DeviceDomainEnum.PAYLOAD.getVal(), payloadType, payloadSubType)))
+ .payloadModelKeys(List.of(String.format("%s-%s-%s", DeviceDomainEnum.PAYLOAD.getVal(), payloadType, payloadSubType)))
// .objectKey(OssConfiguration.objectDirPrefix + File.separator + filename)
.objectKey(OssConfiguration.objectDirPrefix + "/" + filename)
.name(filename.substring(0, filename.lastIndexOf(WAYLINE_FILE_SUFFIX)))
@@ -247,8 +305,10 @@
}
return Optional.empty();
}
+
/**
* Convert database entity objects into wayline data transfer object.
+ *
* @param entity
* @return
*/
@@ -260,6 +320,7 @@
.droneModelKey(entity.getDroneModelKey())
.favorited(entity.getFavorited())
.name(entity.getName())
+ .patchesId(entity.getPatchesId())
.payloadModelKeys(entity.getPayloadModelKeys() != null ?
Arrays.asList(entity.getPayloadModelKeys().split(",")) : null)
.templateTypes(Arrays.stream(entity.getTemplateTypes().split(","))
@@ -276,6 +337,7 @@
/**
* Convert the received wayline object into a database entity object.
+ *
* @param file
* @return
*/
@@ -294,14 +356,17 @@
.collect(Collectors.joining(",")))
.favorited(file.getFavorited())
.sign(file.getSign())
+ .patchesId(file.getPatchesId())
+ .spotInFreckle(file.getSpotInFreckle())
.build();
}
return builder.build();
}
+
@Override
public int updateWayline(WaylineFileEntity entity) {
- return mapper.update(entity,new LambdaQueryWrapper<WaylineFileEntity>()
- .eq(WaylineFileEntity::getWaylineId,entity.getWaylineId()));
+ return mapper.update(entity, new LambdaQueryWrapper<WaylineFileEntity>()
+ .eq(WaylineFileEntity::getWaylineId, entity.getWaylineId()));
}
}
--
Gitblit v1.9.3