Commit b9627cfc by gdj

增加航线文件批量删除和批量移动接口。

parent 92342333
......@@ -4,6 +4,7 @@ import com.dji.sample.common.model.CustomClaim;
import com.dji.sample.wayline.model.dto.WaylineFileDTO;
import com.dji.sample.wayline.model.dto.WaylineFileTreeVO;
import com.dji.sample.wayline.model.param.WaylineSearchParam;
import com.dji.sample.wayline.model.param.WaylineUpdateParentParam;
import com.dji.sample.wayline.service.IWaylineFileService;
import com.dji.sdk.cloudapi.device.DeviceEnum;
import com.dji.sdk.cloudapi.wayline.*;
......@@ -11,6 +12,7 @@ import com.dji.sdk.cloudapi.wayline.api.IHttpWaylineService;
import com.dji.sdk.common.HttpResultResponse;
import com.dji.sdk.common.PaginationData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
......@@ -22,6 +24,8 @@ import javax.validation.constraints.Size;
import java.io.IOException;
import java.net.URL;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
......@@ -242,6 +246,20 @@ public class WaylineFileController implements IHttpWaylineService {
}
/**
* batch update parentId
* @param workspaceId
* @return
*/
@PostMapping(PREFIX + "/workspaces/{workspace_id}/updateParentBatch")
public HttpResultResponse updateParentBatch(@PathVariable("workspace_id") String workspaceId,
@RequestBody WaylineUpdateParentParam waylineUpdateParentParam) {
waylineFileService.updateParentIdBatch(waylineUpdateParentParam.getWaylineIds(), waylineUpdateParentParam.getParentId());
return HttpResultResponse.success();
}
/**
* get directory tree
* @param workspaceId
* @return
......@@ -256,6 +274,23 @@ public class WaylineFileController implements IHttpWaylineService {
}
/**
* Delete the wayline file in the workspace according to the wayline id.
* @param workspaceId
* @param ids
* @param waylineIds
* @return
*/
@DeleteMapping(PREFIX + "/workspaces/{workspace_id}/waylines/deleteBtach")
public HttpResultResponse deleteWaylineBatch(@PathVariable(name = "workspace_id") String workspaceId,
String ids,
String waylineIds) {
List<String> idList = StringUtils.hasText(ids) ? Arrays.asList(ids.split(",")) : new ArrayList<>();
List<String> waylineIdList = StringUtils.hasText(waylineIds) ? Arrays.asList(waylineIds.split(",")) : new ArrayList<>();
boolean isDel = waylineFileService.deleteBatchByIdOrWaylineId(workspaceId, idList, waylineIdList);
return isDel ? HttpResultResponse.success() : HttpResultResponse.error("Failed to delete wayline.");
}
/**
* Query the basic data of the wayline file according to the query conditions.
* The query condition field in pilot is fixed.
* @param request
......
package com.dji.sample.wayline.model.param;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @author guan
*/
@Data
public class WaylineUpdateParentParam implements Serializable {
@JsonProperty("wayline_id_list")
private List<String> waylineIdList;
@JsonProperty("id_list")
private List<String> idList;
@JsonProperty("ids")
private String ids;
@JsonProperty("wayline_ids")
private String waylineIds;
@JsonProperty("parent_id")
private String parentId;
}
......@@ -79,6 +79,14 @@ public interface IWaylineFileService extends IService<WaylineFileEntity> {
Boolean deleteByWaylineId(String workspaceId, String waylineId);
/**
* Delete the wayline file based on the wayline id.
* @param workspaceId
* @param ids
* @param waylineIds
*/
Boolean deleteBatchByIdOrWaylineId(String workspaceId, List<String> ids, List<String> waylineIds);
/**
* Import kmz wayline file.
* @param file
* @param workspaceId
......@@ -124,6 +132,22 @@ public interface IWaylineFileService extends IService<WaylineFileEntity> {
boolean updateParentId(String waylineFileId, String parentId);
/**
* batch update file parentId
* @param waylineFileIds
* @param parentId
* @return
*/
boolean updateParentIdBatch(String waylineFileIds, String parentId);
/**
* batch update file parentId
* @param waylineFileIds
* @param parentId
* @return
*/
boolean updateParentIdBatch(List<String> waylineFileIds, String parentId);
/**
* del waylineFile with child
* @param workspaceId
* @param waylineFileId
......
......@@ -201,6 +201,40 @@ public class WaylineFileServiceImpl extends ServiceImpl<IWaylineFileMapper, Wayl
return ossService.deleteObject(OssConfiguration.bucket, wayline.getObjectKey());
}
/**
* Delete the wayline file based on the wayline id.
* @param workspaceId
* @param ids
* @param waylineIds
*/
@Override
public Boolean deleteBatchByIdOrWaylineId(String workspaceId, List<String> ids, List<String> waylineIds) {
LambdaQueryWrapper<WaylineFileEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(WaylineFileEntity::getWorkspaceId, workspaceId);
if (!CollectionUtils.isEmpty(ids)) {
wrapper.in(WaylineFileEntity::getId, ids);
} else if (!CollectionUtils.isEmpty(waylineIds)) {
wrapper.in(WaylineFileEntity::getWaylineId, waylineIds);
} else {
return false;
}
List<WaylineFileEntity> list = this.list(wrapper);
if (CollectionUtils.isEmpty(list)) {
return false;
}
List<Integer> dbIds = list.stream().map(WaylineFileEntity::getId).collect(Collectors.toList());
boolean remove = this.removeByIds(dbIds);
return remove;
}
@Override
public void importKmzFile(MultipartFile file, String workspaceId, String creator) {
importKmzFile(file, workspaceId, creator, null);
......@@ -544,6 +578,63 @@ public class WaylineFileServiceImpl extends ServiceImpl<IWaylineFileMapper, Wayl
@Transactional(rollbackFor = Exception.class)
@Override
public boolean updateParentIdBatch(String waylineFileIds, String parentId) {
List<String> waylineFileIdList = Arrays.asList(waylineFileIds.split(","));
return updateParentIdBatch(waylineFileIdList, parentId);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean updateParentIdBatch(List<String> waylineFileIdList, String parentId) {
// 查询数据库
List<String> allWaylineFileIdList = new ArrayList<>(waylineFileIdList);
allWaylineFileIdList.add(parentId);
LambdaQueryWrapper<WaylineFileEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(WaylineFileEntity::getWaylineId, allWaylineFileIdList);
List<WaylineFileEntity> waylineFileEntity = this.mapper.selectList(lambdaQueryWrapper);
List<WaylineFileEntity> updateEntityList = new ArrayList<>();
WaylineFileEntity parentEntity = new WaylineFileEntity();
for (WaylineFileEntity item : waylineFileEntity) {
if (waylineFileIdList.contains(item.getWaylineId())) {
updateEntityList.add(item);
}
if (item.getWaylineId().equals(parentId)) {
parentEntity = item;
}
}
LambdaUpdateWrapper<WaylineFileEntity> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.in(WaylineFileEntity::getWaylineId, waylineFileIdList);
updateWrapper.set(WaylineFileEntity::getParentId, parentId);
if (StringUtils.hasText(parentId) && !"0".equals(parentId)) {
updateWrapper.set(WaylineFileEntity::getAncestors, (parentEntity.getAncestors() + StringPool.COMMA + parentId));
} else {
updateWrapper.set(WaylineFileEntity::getAncestors, "0");
}
boolean result1 = this.update(updateWrapper);
// 修改 子节点数据
for (String waylineFileId : waylineFileIdList) {
// todo 只允许修改叶子节点
LambdaUpdateWrapper<WaylineFileEntity> updateChildWrapper = new LambdaUpdateWrapper<>();
updateChildWrapper.eq(WaylineFileEntity::getParentId, waylineFileId);
if (StringUtils.hasText(parentId) && !"0".equals(parentId)) {
updateChildWrapper.set(WaylineFileEntity::getAncestors, (parentEntity.getAncestors() + StringPool.COMMA + parentId + StringPool.COMMA + waylineFileId));
} else {
updateChildWrapper.set(WaylineFileEntity::getAncestors, ("0" + StringPool.COMMA + waylineFileId));
}
boolean result2 = this.update(updateChildWrapper);
}
return result1;
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean deleteDirectory(String workspaceId, String waylineFileId) {
int delete1 = this.mapper.delete(new LambdaQueryWrapper<WaylineFileEntity>().eq(WaylineFileEntity::getWaylineId, waylineFileId));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment