Commit 744cfdef by gdj

wayline航线增加文件夹结构。

parent 15078c7f
......@@ -2,6 +2,7 @@ package com.dji.sample.wayline.controller;
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.service.IWaylineFileService;
import com.dji.sdk.cloudapi.device.DeviceEnum;
import com.dji.sdk.cloudapi.wayline.*;
......@@ -9,10 +10,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.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
......@@ -168,4 +166,110 @@ public class WaylineFileController implements IHttpWaylineService {
return isMark ? HttpResultResponse.success() : HttpResultResponse.error();
}
/**
* Import kmz wayline files with parentId.
* @param file
* @return
*/
@PostMapping("${url.wayline.prefix}${url.wayline.version}/workspaces/{workspace_id}/waylines/file/uploadWithParentId")
public HttpResultResponse importKmzFileWithParentId(HttpServletRequest request, MultipartFile file,
@RequestParam(name = "parent_id", required = false) String parentId) {
if (Objects.isNull(file)) {
return HttpResultResponse.error("No file received.");
}
CustomClaim customClaim = (CustomClaim)request.getAttribute(TOKEN_CLAIM);
String workspaceId = customClaim.getWorkspaceId();
String creator = customClaim.getUsername();
waylineFileService.importKmzFile(file, workspaceId, creator, parentId);
return HttpResultResponse.success();
}
/**
* add new directory
* @param workspaceId
* @param waylineFileDTO
* @return
*/
@PostMapping(PREFIX + "/workspaces/{workspace_id}/addDirectory")
public HttpResultResponse addDirectory(@PathVariable("workspace_id") String workspaceId,
@RequestBody WaylineFileDTO waylineFileDTO) {
Integer addDirId = waylineFileService.addDirectory(workspaceId, waylineFileDTO);
return addDirId > 0 ? HttpResultResponse.success() : HttpResultResponse.error();
}
/**
* get directory tree
* @param workspaceId
* @return
*/
@GetMapping(PREFIX + "/workspaces/{workspace_id}/getDirectoryTree")
public HttpResultResponse getDirectoryTree(@PathVariable("workspace_id") String workspaceId) {
List<WaylineFileTreeVO> treeVOS = waylineFileService.getDirectoryTree(workspaceId);
return HttpResultResponse.success(treeVOS);
}
/**
* get directory tree
* @param workspaceId
* @return
*/
@GetMapping(PREFIX + "/workspaces/{workspace_id}/getWaylineFileTree")
public HttpResultResponse getWaylineFileTree(@PathVariable("workspace_id") String workspaceId,
@RequestParam(name = "waylineFileId") String id) {
List<WaylineFileTreeVO> treeVOS = waylineFileService.getWaylineFileTree(workspaceId, id);
return HttpResultResponse.success(treeVOS);
}
/**
* get directory tree
* @param workspaceId
* @return
*/
@PostMapping(PREFIX + "/workspaces/{workspace_id}/updateParent")
public HttpResultResponse updateParent(@PathVariable("workspace_id") String workspaceId,
@RequestBody WaylineFileDTO waylineFileDTO) {
waylineFileService.updateParentId(waylineFileDTO.getWaylineId(), waylineFileDTO.getParentId());
return HttpResultResponse.success();
}
/**
* get directory tree
* @param workspaceId
* @return
*/
@DeleteMapping(PREFIX + "/workspaces/{workspace_id}/deleteDirectory")
public HttpResultResponse deleteDirectory(@PathVariable("workspace_id") String workspaceId,
@RequestParam(name = "waylineFileId") String id) {
waylineFileService.deleteDirectory(workspaceId, id);
return HttpResultResponse.success();
}
/**
* Query the basic data of the wayline file according to the query conditions.
* The query condition field in pilot is fixed.
* @param request
* @param workspaceId
* @return
*/
@GetMapping(PREFIX + "/workspaces/{workspace_id}/getFileListByParentId")
public HttpResultResponse<PaginationData<GetWaylineListResponse>> getFileListByParentId(
@Valid GetWaylineListRequest request,
@PathVariable("workspace_id") String workspaceId,
@RequestParam(name = "parent_id", defaultValue = "0") String parentId,
HttpServletRequest req,
HttpServletResponse rsp) {
PaginationData<GetWaylineListResponse> data = waylineFileService.getWaylinesByParam(workspaceId, parentId, request);
return HttpResultResponse.success(data);
}
}
package com.dji.sample.wayline.model.dto;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
......@@ -37,7 +38,17 @@ public class WaylineFileDTO {
private String objectKey;
@JsonProperty("user_name")
@JsonAlias("username")
private String username;
private Long updateTime;
@JsonAlias("parentId")
private String parentId;
private String ancestors;
@JsonAlias("isDir")
private Integer isDir;
}
package com.dji.sample.wayline.model.dto;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author sean
* @version 0.3
* @date 2021/12/22
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class WaylineFileTreeVO {
private String name;
@JsonProperty("id")
private String waylineId;
private String droneModelKey;
private String sign;
private List<String> payloadModelKeys;
private Boolean favorited;
private List<Integer> templateTypes;
private String objectKey;
@JsonProperty("user_name")
@JsonAlias("username")
private String username;
private Long updateTime;
@JsonAlias("parentId")
private String parentId;
private String ancestors;
@JsonAlias("isDir")
private Integer isDir;
private List<WaylineFileTreeVO> children;
}
......@@ -59,4 +59,19 @@ public class WaylineFileEntity implements Serializable {
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
private Long updateTime;
@TableField("parent_id")
private String parentId;
@TableField("ancestors")
private String ancestors;
/**
* 0 file 1 dir
*/
@TableField("is_dir")
private Integer isDir;
// @TableLogic
@TableField("is_deleted")
private Boolean isDeleted;
}
package com.dji.sample.wayline.model.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import java.util.Arrays;
import java.util.Optional;
/**
* @author guan
* @version 9.23
* @date 2025/3/21
*/
public enum WaylineFileTypeEnum {
FILE(0, "file"),
DIRECTORY(1, "directory");
int val;
String type;
WaylineFileTypeEnum(int val, String type) {
this.val = val;
this.type = type;
}
@JsonValue
public int getVal() {
return val;
}
@JsonCreator(mode = JsonCreator.Mode.DELEGATING)
public static WaylineFileTypeEnum find(Integer val) {
return Arrays.stream(values()).filter(fileTypeEnum -> fileTypeEnum.val == val).findAny().get();
}
public static Optional<WaylineFileTypeEnum> find(String type) {
return Arrays.stream(values()).filter(fileTypeEnum -> fileTypeEnum.type.equals(type)).findAny();
}
}
package com.dji.sample.wayline.service;
import com.dji.sample.wayline.model.dto.WaylineFileDTO;
import com.dji.sample.wayline.model.dto.WaylineFileTreeVO;
import com.dji.sdk.cloudapi.wayline.GetWaylineListRequest;
import com.dji.sdk.cloudapi.wayline.GetWaylineListResponse;
import com.dji.sdk.common.PaginationData;
......@@ -82,4 +83,51 @@ public interface IWaylineFileService {
* @return
*/
void importKmzFile(MultipartFile file, String workspaceId, String creator);
/**
* Import kmz wayline file.
* @param file
* @param workspaceId
* @param creator
* @param fileParentId
* @return
*/
void importKmzFile(MultipartFile file, String workspaceId, String creator, String fileParentId);
/**
* add directory
* @param workspaceId
* @param waylineFileDTO
* @return
*/
Integer addDirectory(String workspaceId, WaylineFileDTO waylineFileDTO);
/**
* get directory tree
* @param workspaceId
*/
List<WaylineFileTreeVO> getDirectoryTree(String workspaceId);
/**
* get directory tree List<WaylineFileTreeVO> getDirectoryTree(String workspaceId);
* @param workspaceId
*/
List<WaylineFileTreeVO> getWaylineFileTree(String workspaceId, String waylineFileId);
/**
* update file parentId
* @param waylineFileId
* @param parentId
*/
boolean updateParentId(String waylineFileId, String parentId);
/**
* del waylineFile with child
* @param workspaceId
* @param waylineFileId
* @return
*/
boolean deleteDirectory(String workspaceId, String waylineFileId);
PaginationData<GetWaylineListResponse> getWaylinesByParam(String workspaceId, String parentId, GetWaylineListRequest param);
}
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