批量导入项目节点
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
package com.sdm.common.entity.req.data;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 子节点文件夹信息
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "子节点文件夹信息")
|
||||
public class BatchChildDirNodeInfo {
|
||||
|
||||
@Schema(description = "节点的业务UUID", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "节点UUID不能为空")
|
||||
private String uuId;
|
||||
|
||||
@Schema(description = "父节点UUID(第一层可为空,表示挂在系统根目录下)")
|
||||
private String parentUuId;
|
||||
|
||||
@Schema(description = "UUID所属类型:node,task,run,performance", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "UUID类型不能为空")
|
||||
private String uuIdOwnType;
|
||||
|
||||
@Schema(description = "文件夹名称(如果不传则使用uuid作为名称)")
|
||||
private String dirName;
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.sdm.common.entity.req.data;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 批量创建文件夹单项 - 表示一组父子节点的创建信息
|
||||
* <p>
|
||||
* 示例:
|
||||
* <pre>
|
||||
* {
|
||||
* "parentDirNodeInfo": {"uuId": "proj-001", "uuIdOwnType": "project", "dirName": "项目A"},
|
||||
* "childDirNodeInfos": [
|
||||
* {"uuId": "task-001", "parentUuId": "proj-001", "uuIdOwnType": "task", "dirName": "任务1"},
|
||||
* {"uuId": "task-002", "parentUuId": "proj-001", "uuIdOwnType": "task", "dirName": "任务2"}
|
||||
* ]
|
||||
* }
|
||||
* </pre>
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "批量创建文件夹单项")
|
||||
public class BatchCreateDirItem {
|
||||
|
||||
@Schema(description = "父节点信息(第一层为项目节点,也需要创建)", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "父节点信息不能为空")
|
||||
@Valid
|
||||
private DirNodeInfo parentDirNodeInfo;
|
||||
|
||||
@Schema(description = "子节点文件夹信息列表")
|
||||
@Valid
|
||||
private List<DirNodeInfo> childDirNodeInfos;
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
package com.sdm.common.entity.req.data;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 批量创建文件夹请求 - 支持多级树形结构批量创建
|
||||
*<p>
|
||||
* [
|
||||
* {
|
||||
* // 第一个 Item:定义项目根节点,并横向创建两个任务
|
||||
* "parentDirNodeInfo": {
|
||||
* "uuId": "proj-协同-001",
|
||||
* "parentUuId": null,
|
||||
* "uuIdOwnType": "project",
|
||||
* "dirName": "2026年度协同设计项目"
|
||||
* },
|
||||
* "childDirNodeInfos": [
|
||||
* {
|
||||
* "uuId": "task-101",
|
||||
* "parentUuId": "proj-协同-001",
|
||||
* "uuIdOwnType": "task",
|
||||
* "dirName": "任务1:前端界面开发"
|
||||
* },
|
||||
* {
|
||||
* "uuId": "task-102",
|
||||
* "parentUuId": "proj-协同-001",
|
||||
* "uuIdOwnType": "task",
|
||||
* "dirName": "任务2:后端接口实现"
|
||||
* }
|
||||
* ]
|
||||
* },
|
||||
* {
|
||||
* // 第二个 Item:针对“任务1”进一步纵向创建其子目录
|
||||
* "parentDirNodeInfo": {
|
||||
* "uuId": "task-101",
|
||||
* "parentUuId": "proj-协同-001",
|
||||
* "uuIdOwnType": "task",
|
||||
* "dirName": "任务1:前端界面开发"
|
||||
* },
|
||||
* "childDirNodeInfos": [
|
||||
* {
|
||||
* "uuId": "run-201",
|
||||
* "parentUuId": "task-101",
|
||||
* "uuIdOwnType": "run",
|
||||
* "dirName": "UI原型评审"
|
||||
* },
|
||||
* {
|
||||
* "uuId": "run-202",
|
||||
* "parentUuId": "task-101",
|
||||
* "uuIdOwnType": "run",
|
||||
* "dirName": "交互逻辑验证"
|
||||
* }
|
||||
* ]
|
||||
* }
|
||||
* ]
|
||||
*</p>
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "批量创建文件夹请求")
|
||||
public class BatchCreateDirReq {
|
||||
|
||||
@Schema(description = "批量创建项列表", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "创建项列表不能为空")
|
||||
@Valid
|
||||
private List<BatchCreateDirItem> items;
|
||||
|
||||
@Schema(description = "文件夹类型DirType:1 知识库文件夹,2 项目节点文件夹,3 头像库文件夹,4 仿真参数库文件夹,5 训练模型文件夹",
|
||||
requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "文件夹类型不能为空")
|
||||
private Integer dirType;
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.sdm.common.entity.req.data;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 目录节点信息(统一表示父节点和子节点)
|
||||
* <p>
|
||||
* 示例:
|
||||
* <pre>
|
||||
* - 项目节点:{uuId="proj-001", parentUuId=null, uuIdOwnType="project", dirName="项目A"}
|
||||
* - 任务节点:{uuId="task-001", parentUuId="proj-001", uuIdOwnType="task", dirName="任务1"}
|
||||
* - 运行节点:{uuId="run-001", parentUuId="task-001", uuIdOwnType="run", dirName="运行1"}
|
||||
* </pre>
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "目录节点信息")
|
||||
public class DirNodeInfo {
|
||||
|
||||
@Schema(description = "节点的业务UUID", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "节点UUID不能为空")
|
||||
private String uuId;
|
||||
|
||||
@Schema(description = "父节点UUID(第一层项目节点的parentUuId为空)")
|
||||
private String parentUuId;
|
||||
|
||||
@Schema(description = "UUID所属类型: project, task, run, performance", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "UUID类型不能为空")
|
||||
private String uuIdOwnType;
|
||||
|
||||
@Schema(description = "文件夹名称(不传则使用uuid作为名称)")
|
||||
private String dirName;
|
||||
}
|
||||
@@ -44,6 +44,19 @@ public class DataClientFeignClientImpl implements IDataFeignClient {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public SdmResponse<List<Long>> batchCreateDir(BatchCreateDirReq req) {
|
||||
SdmResponse<List<Long>> response;
|
||||
try {
|
||||
response = dataClient.batchCreateDir(req);
|
||||
log.info("批量创建文件夹响应:"+ response);
|
||||
return response;
|
||||
} catch (Exception e) {
|
||||
log.error("批量创建文件夹失败", e);
|
||||
return SdmResponse.failed("批量创建文件夹失败");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public SdmResponse<PageDataResp<List<FileMetadataInfoResp>>> queryDir(QueryDirReq req) {
|
||||
SdmResponse<PageDataResp<List<FileMetadataInfoResp>>> response;
|
||||
|
||||
@@ -27,6 +27,9 @@ public interface IDataFeignClient {
|
||||
@PostMapping("/data/createDir")
|
||||
SdmResponse createDir(@RequestBody @Validated CreateDirReq req);
|
||||
|
||||
@PostMapping("/data/batchCreateDir")
|
||||
SdmResponse<List<Long>> batchCreateDir(@RequestBody @Validated BatchCreateDirReq req);
|
||||
|
||||
@PostMapping("/data/queryDir")
|
||||
SdmResponse<PageDataResp<List<FileMetadataInfoResp>>> queryDir(@RequestBody @Validated QueryDirReq req);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user