From 76b132b580185bfe74100621c1918fb260794b59 Mon Sep 17 00:00:00 2001 From: gulongcheng <474084054@qq.com> Date: Thu, 6 Nov 2025 16:18:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=80=BB=E8=A7=88=E4=BC=98?= =?UTF-8?q?=E5=8C=96=20=E4=BC=98=E5=8C=96=E6=96=87=E4=BB=B6=E6=A3=80?= =?UTF-8?q?=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/sdm/common/common/Constants.java | 36 ++- .../common/entity/req/data/CreateDirReq.java | 11 +- .../common/entity/req/project/DelNodeReq.java | 13 + .../entity/req/project/RenameNodeReq.java | 15 ++ ...ava => SimulationNodeFeignClientImpl.java} | 27 +- ...t.java => ISimulationNodeFeignClient.java} | 16 +- .../DataStorageAnalysisController.java | 16 +- .../data/model/entity/FileMetadataInfo.java | 15 +- .../sdm/data/model/entity/FileStorage.java | 14 +- .../com/sdm/data/model/req/DelDirReq.java | 6 + .../com/sdm/data/model/req/FileSearchReq.java | 32 ++- .../model/req/GetSimulationNodeTreeReq.java | 2 +- .../model/req/GetSimulationTaskFileReq.java | 11 +- .../sdm/data/model/req/QueryBigFileReq.java | 13 +- .../com/sdm/data/model/req/QueryDirReq.java | 4 +- .../com/sdm/data/model/req/RenameDirReq.java | 8 +- .../sdm/data/model/req/UploadFilesReq.java | 4 +- .../sdm/data/service/DataStorageAnalysis.java | 12 +- .../sdm/data/service/IDataFileService.java | 253 ++++++++++-------- .../service/impl/DataAnalysisServiceImpl.java | 51 ++-- .../service/impl/DataStorageAnalysisImpl.java | 45 ++-- .../impl/DimensionTemplateServiceImpl.java | 10 +- .../impl/MinioFileIDataFileServiceImpl.java | 136 ++++++---- .../controller/SimulationNodeController.java | 36 +-- .../SimulationProjectController.java | 47 ---- .../com/sdm/project/service/INodeService.java | 9 +- .../sdm/project/service/IProjectService.java | 2 - .../service/impl/DemandServiceImpl.java | 24 +- .../project/service/impl/NodeServiceImpl.java | 138 +++++----- .../service/impl/ProjectServiceImpl.java | 128 ++------- .../com/sdm/system/filter/AuthFilter.java | 21 +- 31 files changed, 623 insertions(+), 532 deletions(-) create mode 100644 common/src/main/java/com/sdm/common/entity/req/project/DelNodeReq.java create mode 100644 common/src/main/java/com/sdm/common/entity/req/project/RenameNodeReq.java rename common/src/main/java/com/sdm/common/feign/impl/project/{SimuluationNodeFeignClientImpl.java => SimulationNodeFeignClientImpl.java} (67%) rename common/src/main/java/com/sdm/common/feign/inter/project/{ISimuluationNodeFeignClient.java => ISimulationNodeFeignClient.java} (61%) diff --git a/common/src/main/java/com/sdm/common/common/Constants.java b/common/src/main/java/com/sdm/common/common/Constants.java index 4516db87..c802a444 100644 --- a/common/src/main/java/com/sdm/common/common/Constants.java +++ b/common/src/main/java/com/sdm/common/common/Constants.java @@ -50,8 +50,8 @@ public class Constants { } } - @Schema(description = "文件类型枚举") - public enum FileType { + @Schema(description = "文件业务类型枚举") + public enum FileBizType { /** * 模型文件 */ @@ -81,21 +81,33 @@ public class Constants { @Schema(description = "云图文件", example = "5") CLOUD_FILE(5), + /** + * 网格文件 + */ + @Schema(description = "网格文件", example = "6") + GRID_FILE(6), + + /** + * 计算过程文件 + */ + @Schema(description = "计算过程文件", example = "7") + COMPUTE_PROCESS_FILE(7), + /** * 项目文件 */ @Schema(description = "项目 文件", example = "6") - PROJECT_FILE(6), + PROJECT_FILE(101), /** * 学科文件 */ @Schema(description = "学科 文件", example = "7") - DISCIPLINE_MAJOR_FILE(7); + DISCIPLINE_MAJOR_FILE(102); int value; - FileType(int i) { + FileBizType(int i) { value = i; } @@ -181,4 +193,18 @@ public class Constants { return value; } } + + public enum NodeTypeEnum { + TASK("task"), + RUN("run"); + String value; + + NodeTypeEnum(String i) { + value = i; + } + + public String getValue() { + return value; + } + } } diff --git a/common/src/main/java/com/sdm/common/entity/req/data/CreateDirReq.java b/common/src/main/java/com/sdm/common/entity/req/data/CreateDirReq.java index d9901ab3..043aa376 100644 --- a/common/src/main/java/com/sdm/common/entity/req/data/CreateDirReq.java +++ b/common/src/main/java/com/sdm/common/entity/req/data/CreateDirReq.java @@ -1,6 +1,5 @@ package com.sdm.common.entity.req.data; -import com.sdm.common.common.Constants; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -24,10 +23,14 @@ public class CreateDirReq { private Integer type = 0; // 当前节点id - @Schema(description = "当前节点id") - private Long nodeId; + @Schema(description = "当前待创建节点uuid") + private String uuId; + + // 当前待创建节点uuid所属类型 + @Schema(description = "当前待创建节点uuid所属类型:node,task,run,performance") + private String uuIdOwnType; // 父节点id @Schema(description = "当前父节点id") - private Long parentNodeId; + private String parentUuId; } \ No newline at end of file diff --git a/common/src/main/java/com/sdm/common/entity/req/project/DelNodeReq.java b/common/src/main/java/com/sdm/common/entity/req/project/DelNodeReq.java new file mode 100644 index 00000000..a62fad60 --- /dev/null +++ b/common/src/main/java/com/sdm/common/entity/req/project/DelNodeReq.java @@ -0,0 +1,13 @@ +package com.sdm.common.entity.req.project; + +import lombok.Data; + +@Data +public class DelNodeReq { + private String uuid; + + /** + * uuid所属类型,例如:project, task, run + */ + private String uuidOwnType; +} diff --git a/common/src/main/java/com/sdm/common/entity/req/project/RenameNodeReq.java b/common/src/main/java/com/sdm/common/entity/req/project/RenameNodeReq.java new file mode 100644 index 00000000..060e0b61 --- /dev/null +++ b/common/src/main/java/com/sdm/common/entity/req/project/RenameNodeReq.java @@ -0,0 +1,15 @@ +package com.sdm.common.entity.req.project; + +import lombok.Data; + +@Data +public class RenameNodeReq { + private String uuid; + + /** + * uuid所属类型,例如:project, task, run + */ + private String uuidOwnType; + + private String newName; +} diff --git a/common/src/main/java/com/sdm/common/feign/impl/project/SimuluationNodeFeignClientImpl.java b/common/src/main/java/com/sdm/common/feign/impl/project/SimulationNodeFeignClientImpl.java similarity index 67% rename from common/src/main/java/com/sdm/common/feign/impl/project/SimuluationNodeFeignClientImpl.java rename to common/src/main/java/com/sdm/common/feign/impl/project/SimulationNodeFeignClientImpl.java index 776e73de..6dbacb41 100644 --- a/common/src/main/java/com/sdm/common/feign/impl/project/SimuluationNodeFeignClientImpl.java +++ b/common/src/main/java/com/sdm/common/feign/impl/project/SimulationNodeFeignClientImpl.java @@ -1,8 +1,10 @@ package com.sdm.common.feign.impl.project; import com.sdm.common.common.SdmResponse; +import com.sdm.common.entity.req.project.DelNodeReq; +import com.sdm.common.entity.req.project.RenameNodeReq; import com.sdm.common.entity.resp.AllNodeByProjectIdAndTypeResp; -import com.sdm.common.feign.inter.project.ISimuluationNodeFeignClient; +import com.sdm.common.feign.inter.project.ISimulationNodeFeignClient; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -11,9 +13,9 @@ import java.util.List; @Slf4j @Component -public class SimuluationNodeFeignClientImpl implements ISimuluationNodeFeignClient { +public class SimulationNodeFeignClientImpl implements ISimulationNodeFeignClient { @Autowired - ISimuluationNodeFeignClient ISimuluationNodeFeignClient; + ISimulationNodeFeignClient ISimulationNodeFeignClient; /** * 根据节点类型和节点ID获取所有节点信息 @@ -22,10 +24,10 @@ public class SimuluationNodeFeignClientImpl implements ISimuluationNodeFeignClie * @param nodeId 节点ID * @return SdmResponse> key 为节点id,value 为节点名称 */ - public SdmResponse> getAllNodeByNodeType(Long nodeId,String nodeType){ + public SdmResponse> getAllNodeByNodeType(Long nodeId, String nodeType) { SdmResponse> response; try { - response = ISimuluationNodeFeignClient.getAllNodeByNodeType(nodeId,nodeType); + response = ISimulationNodeFeignClient.getAllNodeByNodeType(nodeId, nodeType); if (!response.isSuccess() || response.getData() == null || response.getData().isEmpty()) { return SdmResponse.failed("获取节点信息失败"); } @@ -39,14 +41,14 @@ public class SimuluationNodeFeignClientImpl implements ISimuluationNodeFeignClie /** * 根据项目ID和节点类型获取所有节点信息 * - * @param chooseNodeId 项目ID + * @param uuid 项目ID * @param nextNodeType 下一级节点类型 * @return SdmResponse 节点信息 */ - public SdmResponse> getAllNodeByProjectIdAndType(Long chooseNodeId, String nextNodeType){ + public SdmResponse> getAllNodeByProjectIdAndType(String uuid, String nextNodeType) { SdmResponse> response; try { - response = ISimuluationNodeFeignClient.getAllNodeByProjectIdAndType(chooseNodeId,nextNodeType); + response = ISimulationNodeFeignClient.getAllNodeByProjectIdAndType(uuid, nextNodeType); if (!response.isSuccess() || response.getData() == null || response.getData().isEmpty()) { return SdmResponse.failed("获取节点信息失败"); } @@ -58,4 +60,13 @@ public class SimuluationNodeFeignClientImpl implements ISimuluationNodeFeignClie } + @Override + public SdmResponse renameNode(RenameNodeReq req) { + return ISimulationNodeFeignClient.renameNode(req); + } + + @Override + public SdmResponse delteNode(DelNodeReq req) { + return ISimulationNodeFeignClient.delteNode(req); + } } diff --git a/common/src/main/java/com/sdm/common/feign/inter/project/ISimuluationNodeFeignClient.java b/common/src/main/java/com/sdm/common/feign/inter/project/ISimulationNodeFeignClient.java similarity index 61% rename from common/src/main/java/com/sdm/common/feign/inter/project/ISimuluationNodeFeignClient.java rename to common/src/main/java/com/sdm/common/feign/inter/project/ISimulationNodeFeignClient.java index 6817b822..da09f9f5 100644 --- a/common/src/main/java/com/sdm/common/feign/inter/project/ISimuluationNodeFeignClient.java +++ b/common/src/main/java/com/sdm/common/feign/inter/project/ISimulationNodeFeignClient.java @@ -1,15 +1,20 @@ package com.sdm.common.feign.inter.project; import com.sdm.common.common.SdmResponse; +import com.sdm.common.entity.req.project.DelNodeReq; +import com.sdm.common.entity.req.project.RenameNodeReq; import com.sdm.common.entity.resp.AllNodeByProjectIdAndTypeResp; +import io.swagger.v3.oas.annotations.Operation; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; @FeignClient(name = "project") -public interface ISimuluationNodeFeignClient { +public interface ISimulationNodeFeignClient { /** * 根据节点类型获取所有节点 * @param nodeType 节点类型 @@ -21,11 +26,16 @@ public interface ISimuluationNodeFeignClient { /** * 根据项目ID和节点类型获取所有节点信息 * - * @param chooseNodeId 项目ID + * @param uuid 项目ID * @param nextNodeType 下一级节点类型 * @return SdmResponse> 节点信息 */ @GetMapping("/node/getAllNodeByProjectIdAndType") - SdmResponse> getAllNodeByProjectIdAndType(@RequestParam(value = "chooseNodeId") Long chooseNodeId, @RequestParam(value = "nextNodeType") String nextNodeType); + SdmResponse> getAllNodeByProjectIdAndType(@RequestParam(value = "chooseNodeId") String uuid, @RequestParam(value = "nextNodeType") String nextNodeType); + @PostMapping("/node/renameNode") + SdmResponse renameNode(@RequestBody RenameNodeReq req); + + @PostMapping("/node/delteNode") + public SdmResponse delteNode(@RequestBody DelNodeReq req); } diff --git a/data/src/main/java/com/sdm/data/controller/DataStorageAnalysisController.java b/data/src/main/java/com/sdm/data/controller/DataStorageAnalysisController.java index 869c5870..64dc1f73 100644 --- a/data/src/main/java/com/sdm/data/controller/DataStorageAnalysisController.java +++ b/data/src/main/java/com/sdm/data/controller/DataStorageAnalysisController.java @@ -2,6 +2,8 @@ package com.sdm.data.controller; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.sdm.common.common.SdmResponse; +import com.sdm.common.entity.resp.PageDataResp; +import com.sdm.data.model.entity.FileStorage; import com.sdm.data.model.req.AddUserQuotaEntity; import com.sdm.data.model.req.ListUserQuotaReq; import com.sdm.data.model.req.QueryBigFileReq; @@ -28,26 +30,26 @@ public class DataStorageAnalysisController { /** * 根据nodeId(项目nodeId)获取指定查询类型(queryNodeType)文件空间占用(近几个月、增量查询) - * 查询项目存储空间占用:项目nodeId+项目queryNodeType - * 查询学科存储空间占用:项目nodeId+学科queryNodeType + * 查询项目存储空间占用:项目Uuid+项目queryNodeType + * 查询学科存储空间占用:项目Uuid+学科queryNodeType * * @param queryNodeType 需要统计的节点类型 - * @param nodeId 节点id + * @param uuid 节点uuid * @return */ @GetMapping("/getNodeSizeByNodeType") @Operation(summary = "根据nodeId(项目nodeId)获取指定查询类型(queryNodeType)文件空间占用") public SdmResponse getNodeSizeByNodeType( @Parameter(description = "查询节点类型:project,discipline") @RequestParam(value = "queryNodeType", required = false) String queryNodeType, - @Parameter(description = "节点id:项目nodeId") @RequestParam(value = "nodeId", required = false) Long nodeId, + @Parameter(description = "节点id:项目Uuid") @RequestParam(value = "uuid", required = false) String uuid, @Parameter(description = "查询时间间隔(月)") @RequestParam(value = "intervalMonths", required = false) Integer intervalMonths, @Parameter(description = "增量查询指定的月:2025-06") @RequestParam(value = "targetYm", required = false) String targetYm ) { try { - if (ObjectUtils.isEmpty(queryNodeType) || ObjectUtils.isEmpty(nodeId)) { + if (ObjectUtils.isEmpty(queryNodeType) || ObjectUtils.isEmpty(uuid)) { return SdmResponse.success(); } - return dataStorageAnalysis.getNodeSizeByNodeType(queryNodeType, nodeId, intervalMonths, targetYm); + return dataStorageAnalysis.getNodeSizeByNodeType(queryNodeType, uuid, intervalMonths, targetYm); } catch (Exception e) { log.error("获取文件空间占用失败", e); return SdmResponse.failed("获取文件空间占用"); @@ -71,7 +73,7 @@ public class DataStorageAnalysisController { // 存储系统大文件筛选 @PostMapping("/listBigFile") @Operation(summary = "存储系统大文件筛选") - public SdmResponse listBigFile(@RequestBody QueryBigFileReq queryBigFileReq){ + public SdmResponse>> listBigFile(@RequestBody QueryBigFileReq queryBigFileReq){ return dataStorageAnalysis.listBigFile(queryBigFileReq); } diff --git a/data/src/main/java/com/sdm/data/model/entity/FileMetadataInfo.java b/data/src/main/java/com/sdm/data/model/entity/FileMetadataInfo.java index c65c59a8..f6b7644f 100644 --- a/data/src/main/java/com/sdm/data/model/entity/FileMetadataInfo.java +++ b/data/src/main/java/com/sdm/data/model/entity/FileMetadataInfo.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -38,7 +37,11 @@ public class FileMetadataInfo implements Serializable { @ApiModelProperty(value = "simulation_node关联的节点id") @TableField("nodeId") - private Long nodeId; + private String relatedResourceUuid; + + @ApiModelProperty(value = "关联对象类型(node,task,run,performance)") + @TableField("relatedResourceUuidOwnType") + private String relatedResourceUuidOwnType; @ApiModelProperty(value = "逻辑文件组ID(同一文件的所有版本共享一个ID)") @TableField("fileGroupId") @@ -126,14 +129,6 @@ public class FileMetadataInfo implements Serializable { @TableField("fileSize") private Long fileSize; - @ApiModelProperty(value = "任务ID") - @TableField("taskId") - private String taskId; - - @ApiModelProperty(value = "算列ID") - @TableField("runId") - private String runId; - @ApiModelProperty(value = "tag1") @TableField("tag1") private String tag1; diff --git a/data/src/main/java/com/sdm/data/model/entity/FileStorage.java b/data/src/main/java/com/sdm/data/model/entity/FileStorage.java index 4a92aed5..3f5151b8 100644 --- a/data/src/main/java/com/sdm/data/model/entity/FileStorage.java +++ b/data/src/main/java/com/sdm/data/model/entity/FileStorage.java @@ -53,9 +53,17 @@ public class FileStorage implements Serializable { @TableField("dirId") private Long dirId; - @ApiModelProperty(value = "文件类型(如txt、jpg、pdf)") - @TableField("fileType") - private String fileType; + @ApiModelProperty(value = "文件是否最新(0-否,1-是)") + @TableField("isLatest") + private Integer isLatest; + + @ApiModelProperty(value = "文件后缀(如txt、jpg、pdf)") + @TableField("fileSuffix") + private String fileSuffix; + + @ApiModelProperty(value = "文件业务类型(如模型文件、仿真报告、计算文件、曲线文件、云图文件)") + @TableField("fileBizType") + private String fileBizType; @ApiModelProperty(value = "文件大小(字节数,存储占用计算依据)") @TableField("fileSize") diff --git a/data/src/main/java/com/sdm/data/model/req/DelDirReq.java b/data/src/main/java/com/sdm/data/model/req/DelDirReq.java index 9aff30d6..03357c13 100644 --- a/data/src/main/java/com/sdm/data/model/req/DelDirReq.java +++ b/data/src/main/java/com/sdm/data/model/req/DelDirReq.java @@ -9,6 +9,12 @@ public class DelDirReq { @Schema(description = "删除的文件夹id", requiredMode = Schema.RequiredMode.REQUIRED) private Long delDirId; + @Schema(description = "删除的项目节点id", requiredMode = Schema.RequiredMode.REQUIRED) + private String delUuid; + + @Schema(description = "当前待删除节点uuid所属类型:node,task,run,performance") + private String delUuIdOwnType; + @Schema(description = "父路径") private String parentPath; diff --git a/data/src/main/java/com/sdm/data/model/req/FileSearchReq.java b/data/src/main/java/com/sdm/data/model/req/FileSearchReq.java index cd6dfcbd..aa38c84a 100644 --- a/data/src/main/java/com/sdm/data/model/req/FileSearchReq.java +++ b/data/src/main/java/com/sdm/data/model/req/FileSearchReq.java @@ -3,6 +3,8 @@ package com.sdm.data.model.req; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.time.LocalDateTime; + @Data @Schema(description = "文件搜索请求参数") public class FileSearchReq extends BaseReq { @@ -34,7 +36,7 @@ public class FileSearchReq extends BaseReq { * 父节点id */ @Schema(description = "父节点id") - private Long parentNodeId; + private String parentUuid; /** * 文件名称 @@ -43,4 +45,32 @@ public class FileSearchReq extends BaseReq { private String fileName; private Long createrId; + + @Schema(description = "文件后缀") + private String fileSuffix; + + /** + * 文件大小 + */ + @Schema(description = "文件大小") + private Long fileSize; + + /** + * 文件大小单位 + */ + @Schema(description = "文件大小单位") + private String fileSizeUnit; + + + @Schema(description = "文件创建时间") + private LocalDateTime createTime; + + @Schema(description = "文件业务类型(1:模型文件 2:仿真报告、3:计算文件、4:曲线文件、5:云图文件,6:网格文件,7:计算过程文件)") + private String fileBizType; + + /** + * 是否过滤空数据 + */ + @Schema(description = "是否过滤空数据") + private boolean filterEmptyData; } \ No newline at end of file diff --git a/data/src/main/java/com/sdm/data/model/req/GetSimulationNodeTreeReq.java b/data/src/main/java/com/sdm/data/model/req/GetSimulationNodeTreeReq.java index efa5cd08..694998d2 100644 --- a/data/src/main/java/com/sdm/data/model/req/GetSimulationNodeTreeReq.java +++ b/data/src/main/java/com/sdm/data/model/req/GetSimulationNodeTreeReq.java @@ -17,7 +17,7 @@ public class GetSimulationNodeTreeReq { * 选择的节点ID */ @Schema(description = "选择的节点ID,选中节点时,才同时传chooseNodeId和chooseNodeType") - private Long chooseNodeId; + private String chooseUuid; /** * 选择的节点类型 diff --git a/data/src/main/java/com/sdm/data/model/req/GetSimulationTaskFileReq.java b/data/src/main/java/com/sdm/data/model/req/GetSimulationTaskFileReq.java index 75b0046b..bcc29029 100644 --- a/data/src/main/java/com/sdm/data/model/req/GetSimulationTaskFileReq.java +++ b/data/src/main/java/com/sdm/data/model/req/GetSimulationTaskFileReq.java @@ -9,14 +9,11 @@ import java.time.LocalDateTime; @Data public class GetSimulationTaskFileReq extends BaseReq { - @Schema(description = "任务工况ID(simulationtTask的id)") - String taskId; + @Schema(description = "文件所属项目节点uuid") + private String uuid; - @Schema(description = "算列ID") - String runId; - - @Schema(description = "文件类型", implementation = Constants.FileType.class) - Integer fileType; + @Schema(description = "文件类型", implementation = Constants.FileBizType.class) + Integer fileBizType; @Schema(description = "文件名") private String fileName; diff --git a/data/src/main/java/com/sdm/data/model/req/QueryBigFileReq.java b/data/src/main/java/com/sdm/data/model/req/QueryBigFileReq.java index f6a3312d..99803aaa 100644 --- a/data/src/main/java/com/sdm/data/model/req/QueryBigFileReq.java +++ b/data/src/main/java/com/sdm/data/model/req/QueryBigFileReq.java @@ -1,5 +1,6 @@ package com.sdm.data.model.req; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.time.LocalDateTime; @@ -14,21 +15,31 @@ public class QueryBigFileReq extends BaseReq{ /** * 文件名称 */ + @Schema(description = "文件名称") private String fileName; /** * 文件创建时间 createTime */ + @Schema(description = "文件创建时间") private LocalDateTime createTime; /** * 文件大小 */ + @Schema(description = "文件大小") private Long fileSize; - /** * 文件大小单位 */ + @Schema(description = "文件大小单位") private String fileSizeUnit; + + @Schema(description = "文件后缀") + private String fileSuffix; + + @Schema(description = "文件业务类型(1:模型文件 2:仿真报告、3:计算文件、4:曲线文件、5:云图文件,6:网格文件,7:计算过程文件)") + private String fileBizType; + } diff --git a/data/src/main/java/com/sdm/data/model/req/QueryDirReq.java b/data/src/main/java/com/sdm/data/model/req/QueryDirReq.java index 081cbc6d..72e6464e 100644 --- a/data/src/main/java/com/sdm/data/model/req/QueryDirReq.java +++ b/data/src/main/java/com/sdm/data/model/req/QueryDirReq.java @@ -32,10 +32,10 @@ public class QueryDirReq extends BaseReq{ Long fileId; /** - * 节点ID + * 节点uuid */ @Schema(description = "节点ID") - Long nodeId; + String uuid; // 查询文件或文件夹 @Schema(description = "查询文件或文件夹: 1-文件夹,2-文件 不传查询全部 DataType ") diff --git a/data/src/main/java/com/sdm/data/model/req/RenameDirReq.java b/data/src/main/java/com/sdm/data/model/req/RenameDirReq.java index 3544c090..107aa0a7 100644 --- a/data/src/main/java/com/sdm/data/model/req/RenameDirReq.java +++ b/data/src/main/java/com/sdm/data/model/req/RenameDirReq.java @@ -7,9 +7,15 @@ import lombok.Data; @Data @Schema(description = "重命名文件夹请求参数") public class RenameDirReq { - @Schema(description = "文件夹id", requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(description = "待重命名文件夹id", requiredMode = Schema.RequiredMode.REQUIRED) private Long dirId; + @Schema(description = "待重命名节点id", requiredMode = Schema.RequiredMode.REQUIRED) + private String uuid; + + @Schema(description = "当前待重命名节点uuid所属类型:node,task,run,performance") + private String uuIdOwnType; + @Schema(description = "父路径", requiredMode = Schema.RequiredMode.REQUIRED) private String parentPath; diff --git a/data/src/main/java/com/sdm/data/model/req/UploadFilesReq.java b/data/src/main/java/com/sdm/data/model/req/UploadFilesReq.java index ab204396..03628a13 100644 --- a/data/src/main/java/com/sdm/data/model/req/UploadFilesReq.java +++ b/data/src/main/java/com/sdm/data/model/req/UploadFilesReq.java @@ -51,12 +51,12 @@ public class UploadFilesReq { private Long dirId; @Schema(description = "节点id") - private Long nodeId; + private String uuid; @Schema(description = "文件名") private String fileName; - @Schema(description = "文件类型 1:模型文件 2:仿真报告 3:计算文件 4:曲线文件 5:云图文件",implementation = Constants.FileType.class) + @Schema(description = "文件类型 1:模型文件 2:仿真报告 3:计算文件 4:曲线文件 5:云图文件",implementation = Constants.FileBizType.class) private Integer fileType; /** diff --git a/data/src/main/java/com/sdm/data/service/DataStorageAnalysis.java b/data/src/main/java/com/sdm/data/service/DataStorageAnalysis.java index c434d23c..91e3b3ec 100644 --- a/data/src/main/java/com/sdm/data/service/DataStorageAnalysis.java +++ b/data/src/main/java/com/sdm/data/service/DataStorageAnalysis.java @@ -1,6 +1,8 @@ package com.sdm.data.service; import com.sdm.common.common.SdmResponse; +import com.sdm.common.entity.resp.PageDataResp; +import com.sdm.data.model.entity.FileStorage; import com.sdm.data.model.req.AddUserQuotaEntity; import com.sdm.data.model.req.ListUserQuotaReq; import com.sdm.data.model.req.QueryBigFileReq; @@ -11,13 +13,13 @@ public interface DataStorageAnalysis { /** * 根据类型获取文件空间占用 * - * @param queryNodeType 节点类型(project,discipline) - * @param nodeId 节点id + * @param queryNodeType 节点类型(project,discipline) + * @param uuid 节点id * @param intervalMonths 查询时间间隔(月) - * @param targetYm 增量查询指定的月:2025-06 + * @param targetYm 增量查询指定的月:2025-06 * @return 文件总大小(字节) */ - SdmResponse getNodeSizeByNodeType(String queryNodeType, Long nodeId, Integer intervalMonths, String targetYm); + SdmResponse getNodeSizeByNodeType(String queryNodeType, String uuid, Integer intervalMonths, String targetYm); /** * 根据用户id获取用户的空间占用 @@ -31,7 +33,7 @@ public interface DataStorageAnalysis { /** * 存储系统大文件筛选 */ - SdmResponse listBigFile(QueryBigFileReq queryBigFileReq); + SdmResponse>> listBigFile(QueryBigFileReq queryBigFileReq); SdmResponse batchDeleteBigFile(List fileIds); diff --git a/data/src/main/java/com/sdm/data/service/IDataFileService.java b/data/src/main/java/com/sdm/data/service/IDataFileService.java index db4c4bb1..3438eba5 100644 --- a/data/src/main/java/com/sdm/data/service/IDataFileService.java +++ b/data/src/main/java/com/sdm/data/service/IDataFileService.java @@ -36,11 +36,62 @@ public interface IDataFileService { SdmResponse delDir(DelDirReq req); /** - * 递归删除数据文件 - * @param file 要删除的文件或目录 - * @return 删除是否成功 + * 查询文件夹下文件信息 + * 1、知识库根据filedid查询 + * 2、项目文件根据nodeId查询 + * @param req 查询目录请求参数 + * @return 目录信息响应 */ - boolean reverseDeleteDataFiles(File file); + SdmResponse queryDir(QueryDirReq req); + + /** + * 下一层级目录树查询 + * + * @param dirType + * @param parentDirId 父目录ID + * @return 目录内容列表响应 + */ + default SdmResponse> listDir(Integer dirType, Long parentDirId){ + return null; + } + + /** + * 重命名目录 + * @param filePath 目录路径 + * @param newName 新名称 + * @param type 类型 + * @return 重命名结果响应 + */ + SdmResponse renameDir(String filePath, String newName, Integer type); + + + /** + * 重命名目录(新版本) + * @param req 重命名目录请求参数 + * @return 重命名结果响应 + */ + default SdmResponse renameDirNew(RenameDirReq req){ + return null; + } + + + /** + * 上传文件 + * @param req 上传文件请求参数 + * @return 上传结果响应 + */ + SdmResponse uploadFiles(UploadFilesReq req); + + + /** + * 更新文件信息 + * 涉及更新文件版本号,支持历史文件版本的留存 + * @param req 更新文件请求参数 + * @return 更新结果响应 + */ + default SdmResponse updateFile(UpdateFileReq req){ + return null; + } /** * 删除文件 @@ -57,33 +108,13 @@ public interface IDataFileService { SdmResponse fileSearch(FileSearchReq req); /** - * 停止文件搜索 - * @return 操作结果响应 + * 重命名文件 + * @param req 重命名文件请求参数 + * @return 重命名结果响应 */ - SdmResponse fileSearchStop(); + SdmResponse renameFile(RenameFileReq req); - /** - * 获取文件基本信息 - * @param req 获取文件基本信息请求参数 - * @return 文件基本信息响应 - */ - SdmResponse getFileBaseInfo(GetFileBaseInfoReq req); - /** - * 查询文件夹下文件信息 - * 1、知识库根据filedid查询 - * 2、项目文件根据nodeId查询 - * @param req 查询目录请求参数 - * @return 目录信息响应 - */ - SdmResponse queryDir(QueryDirReq req); - - /** - * 查询文件权限值 - * @param req 查询文件权限值请求参数 - * @return 文件权限值响应 - */ - SdmResponse queryFilePermValue(QueryFilePermValueReq req); /** * 查询权限信息 @@ -92,19 +123,6 @@ public interface IDataFileService { */ SdmResponse queryPermission(QueryPermissionReq req); - /** - * 查询用户文件权限 - * @param req 查询用户文件权限请求参数 - * @return 用户文件权限响应 - */ - SdmResponse queryUserFilePermission(QueryUserFilePermissionReq req); - - /** - * 重命名文件 - * @param req 重命名文件请求参数 - * @return 重命名结果响应 - */ - SdmResponse renameFile(RenameFileReq req); /** * 更新权限信息 @@ -113,12 +131,6 @@ public interface IDataFileService { */ SdmResponse updatePermission(UpdatePermissionReq req); - /** - * 检查文件是否存在 - * @param path 文件路径 - * @return 文件存在性检查结果响应 - */ - SdmResponse fileExists(String path); /** * 初始化系统目录 @@ -127,28 +139,7 @@ public interface IDataFileService { */ boolean initSystemDirectory(String company); - /** - * 复制文件 - * @param req 复制文件请求参数 - * @return 复制结果响应 - */ - SdmResponse copyFile(CopyFileReq req); - /** - * 重命名目录 - * @param filePath 目录路径 - * @param newName 新名称 - * @param type 类型 - * @return 重命名结果响应 - */ - SdmResponse renameDir(String filePath, String newName, Integer type); - - /** - * 压缩文件 - * @param req 压缩文件请求参数 - * @return 压缩结果响应 - */ - SdmResponse zipFiles(ZipFilesReq req); /** * 下载文件 @@ -164,26 +155,7 @@ public interface IDataFileService { return null; } - /** - * 上传文件 - * @param req 上传文件请求参数 - * @return 上传结果响应 - */ - SdmResponse uploadFiles(UploadFilesReq req); - /** - * 添加下载记录 - * @param req 添加下载记录请求参数 - * @return 添加结果响应 - */ - SdmResponse downloadRecord(AddDownloadRecordReq req); - - /** - * 复制路由 - * @param req 复制路由请求参数 - * @return 复制结果响应 - */ - SdmResponse copyRoute(CopyRouteReq req); /** * 初始化所有系统目录 @@ -191,35 +163,9 @@ public interface IDataFileService { */ SdmResponse initSystemDirectoryAll(); - /** - * 目录树查询 - * - * @param dirType - * @param parentDirId 父目录ID - * @return 目录内容列表响应 - */ - default SdmResponse> listDir(Integer dirType, Long parentDirId){ - return null; - } - /** - * 重命名目录(新版本) - * @param req 重命名目录请求参数 - * @return 重命名结果响应 - */ - default SdmResponse renameDirNew(RenameDirReq req){ - return null; - } - /** - * 更新文件信息 - * 涉及更新文件版本号,支持历史文件版本的留存 - * @param req 更新文件请求参数 - * @return 更新结果响应 - */ - default SdmResponse updateFile(UpdateFileReq req){ - return null; - } + /** * 上传头像 @@ -258,8 +204,87 @@ public interface IDataFileService { return; } + /** + * 获取文件预览URL + * @param fileId 文件id + * @return 文件预览URL响应 + */ default SdmResponse getKKFileViewURLFromMinio(Long fileId){ return null; } + + + + /** + * 递归删除数据文件 + * @param file 要删除的文件或目录 + * @return 删除是否成功 + */ + boolean reverseDeleteDataFiles(File file); + + /** + * 停止文件搜索 + * @return 操作结果响应 + */ + SdmResponse fileSearchStop(); + + /** + * 获取文件基本信息 + * @param req 获取文件基本信息请求参数 + * @return 文件基本信息响应 + */ + SdmResponse getFileBaseInfo(GetFileBaseInfoReq req); + + + /** + * 检查文件是否存在 + * @param path 文件路径 + * @return 文件存在性检查结果响应 + */ + SdmResponse fileExists(String path); + + /** + * 添加下载记录 + * @param req 添加下载记录请求参数 + * @return 添加结果响应 + */ + SdmResponse downloadRecord(AddDownloadRecordReq req); + + /** + * 复制路由 + * @param req 复制路由请求参数 + * @return 复制结果响应 + */ + SdmResponse copyRoute(CopyRouteReq req); + + /** + * 查询文件权限值 + * @param req 查询文件权限值请求参数 + * @return 文件权限值响应 + */ + SdmResponse queryFilePermValue(QueryFilePermValueReq req); + + /** + * 查询用户文件权限 + * @param req 查询用户文件权限请求参数 + * @return 用户文件权限响应 + */ + SdmResponse queryUserFilePermission(QueryUserFilePermissionReq req); + + /** + * 复制文件 + * @param req 复制文件请求参数 + * @return 复制结果响应 + */ + SdmResponse copyFile(CopyFileReq req); + + /** + * 压缩文件 + * @param req 压缩文件请求参数 + * @return 压缩结果响应 + */ + SdmResponse zipFiles(ZipFilesReq req); + + } \ No newline at end of file diff --git a/data/src/main/java/com/sdm/data/service/impl/DataAnalysisServiceImpl.java b/data/src/main/java/com/sdm/data/service/impl/DataAnalysisServiceImpl.java index b8ec665e..e9899a2a 100644 --- a/data/src/main/java/com/sdm/data/service/impl/DataAnalysisServiceImpl.java +++ b/data/src/main/java/com/sdm/data/service/impl/DataAnalysisServiceImpl.java @@ -5,15 +5,20 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.sdm.common.common.SdmResponse; +import com.sdm.common.entity.resp.PageDataResp; import com.sdm.common.utils.FileSizeUtils; import com.sdm.common.utils.PageUtils; import com.sdm.data.model.entity.FileMetadataInfo; +import com.sdm.data.model.entity.FileStorage; import com.sdm.data.model.req.GetSimulationTaskFileReq; +import com.sdm.data.model.req.QueryBigFileReq; import com.sdm.data.model.resp.SimulationTaskResultCurveResp; +import com.sdm.data.service.DataStorageAnalysis; import com.sdm.data.service.IDataAnalysisService; import com.sdm.data.service.IFileMetadataInfoService; import com.sdm.data.service.IMinioService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -32,32 +37,42 @@ public class DataAnalysisServiceImpl implements IDataAnalysisService { @Autowired private IFileMetadataInfoService fileMetadataInfoService; + @Autowired + private DataStorageAnalysis dataStorageAnalysis; + @Autowired private IMinioService MinIOService; @Override public SdmResponse getSimulationTaskFile(GetSimulationTaskFileReq getSimulationTaskFileReq) { - PageHelper.startPage(getSimulationTaskFileReq.getCurrent(), getSimulationTaskFileReq.getSize()); - List simulationTaskFileMetadataInfos = fileMetadataInfoService.lambdaQuery() - .eq(ObjectUtils.isNotNull(getSimulationTaskFileReq.getRunId()), FileMetadataInfo::getRunId, getSimulationTaskFileReq.getRunId()) - .eq(ObjectUtils.isNotNull(getSimulationTaskFileReq.getTaskId()), FileMetadataInfo::getTaskId, getSimulationTaskFileReq.getTaskId()) - .eq(ObjectUtils.isNotNull(getSimulationTaskFileReq.getTag1()), FileMetadataInfo::getTag1, getSimulationTaskFileReq.getTag1()) - .eq(ObjectUtils.isNotNull(getSimulationTaskFileReq.getTag2()), FileMetadataInfo::getTag2, getSimulationTaskFileReq.getTag2()) - .eq(ObjectUtils.isNotNull(getSimulationTaskFileReq.getTag3()), FileMetadataInfo::getTag3, getSimulationTaskFileReq.getTag3()) - .eq(ObjectUtils.isNotNull(getSimulationTaskFileReq.getTag4()), FileMetadataInfo::getTag4, getSimulationTaskFileReq.getTag4()) - .eq(ObjectUtils.isNotNull(getSimulationTaskFileReq.getTag5()), FileMetadataInfo::getTag5, getSimulationTaskFileReq.getTag5()) - .eq(ObjectUtils.isNotNull(getSimulationTaskFileReq.getTag6()), FileMetadataInfo::getTag6, getSimulationTaskFileReq.getTag6()) - .eq(ObjectUtils.isNotNull(getSimulationTaskFileReq.getTag7()), FileMetadataInfo::getTag7, getSimulationTaskFileReq.getTag7()) - .eq(ObjectUtils.isNotNull(getSimulationTaskFileReq.getTag8()), FileMetadataInfo::getTag8, getSimulationTaskFileReq.getTag8()) - .eq(ObjectUtils.isNotNull(getSimulationTaskFileReq.getTag9()), FileMetadataInfo::getTag9, getSimulationTaskFileReq.getTag9()) - .eq(ObjectUtils.isNotNull(getSimulationTaskFileReq.getTag10()), FileMetadataInfo::getTag10, getSimulationTaskFileReq.getTag10()) - .eq(ObjectUtils.isNotNull(getSimulationTaskFileReq.getFileType()), FileMetadataInfo::getFileType, getSimulationTaskFileReq.getFileType()) - .like(ObjectUtils.isNotNull(getSimulationTaskFileReq.getFileName()), FileMetadataInfo::getOriginalName, getSimulationTaskFileReq.getFileName()) - .ge(ObjectUtils.isNotNull(getSimulationTaskFileReq.getStartTime()), FileMetadataInfo::getCreateTime, getSimulationTaskFileReq.getStartTime()) - .le(ObjectUtils.isNotNull(getSimulationTaskFileReq.getEndTime()), FileMetadataInfo::getCreateTime, getSimulationTaskFileReq.getEndTime()) + FileMetadataInfo fileMetadataInfo = fileMetadataInfoService.lambdaQuery().eq(FileMetadataInfo::getRelatedResourceUuid, getSimulationTaskFileReq.getUuid()).one(); + if(fileMetadataInfo == null) { + return SdmResponse.success(); + } + + QueryBigFileReq queryBigFileReq = new QueryBigFileReq(); + BeanUtils.copyProperties(getSimulationTaskFileReq, queryBigFileReq); + queryBigFileReq.setDirId(fileMetadataInfo.getId()); + SdmResponse>> searchResult = dataStorageAnalysis.listBigFile(queryBigFileReq); + PageDataResp> pageDataResp = searchResult.getData(); + List data = pageDataResp.getData(); + if(CollectionUtils.isEmpty(data)) { + return SdmResponse.success(); + } + List fileIdList = data.stream().map(FileStorage::getFileId).toList(); + + + + List simulationTaskFileMetadataInfos = fileMetadataInfoService + .lambdaQuery() + .in(FileMetadataInfo::getId, fileIdList) .list(); PageInfo pageInfo = new PageInfo<>(simulationTaskFileMetadataInfos); + pageInfo.setTotal(pageInfo.getTotal()); + pageInfo.setPageNum(pageInfo.getPageNum()); + pageInfo.setPages(pageInfo.getPages()); + List taskResultCurveResps = simulationTaskFileMetadataInfos.stream().map(simulationTaskFile -> { SimulationTaskResultCurveResp taskResultCurveResp = new SimulationTaskResultCurveResp(); diff --git a/data/src/main/java/com/sdm/data/service/impl/DataStorageAnalysisImpl.java b/data/src/main/java/com/sdm/data/service/impl/DataStorageAnalysisImpl.java index e6601f86..58c5f578 100644 --- a/data/src/main/java/com/sdm/data/service/impl/DataStorageAnalysisImpl.java +++ b/data/src/main/java/com/sdm/data/service/impl/DataStorageAnalysisImpl.java @@ -3,6 +3,7 @@ package com.sdm.data.service.impl; import com.alibaba.fastjson2.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.sdm.common.common.Constants; import com.sdm.common.common.SdmResponse; import com.sdm.common.common.ThreadLocalContext; import com.sdm.common.entity.req.system.UserListReq; @@ -11,7 +12,7 @@ import com.sdm.common.entity.resp.AllNodeByProjectIdAndTypeResp; import com.sdm.common.entity.resp.PageDataResp; import com.sdm.common.entity.resp.system.CIDUserResp; import com.sdm.common.utils.FileSizeUtils; -import com.sdm.common.feign.impl.project.SimuluationNodeFeignClientImpl; +import com.sdm.common.feign.impl.project.SimulationNodeFeignClientImpl; import com.sdm.common.feign.impl.system.SysUserFeignClientImpl; import com.sdm.common.utils.PageUtils; import com.sdm.data.model.dto.NodeSizeDTO; @@ -26,7 +27,6 @@ import com.sdm.data.model.req.QueryBigFileReq; import com.sdm.data.service.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; -import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -48,7 +48,7 @@ public class DataStorageAnalysisImpl implements DataStorageAnalysis { IFileStorageService fileStorageService; @Autowired - SimuluationNodeFeignClientImpl simuluationNodeFeignClient; + SimulationNodeFeignClientImpl simuluationNodeFeignClient; @Autowired SysUserFeignClientImpl sysUserFeignClient; @@ -59,8 +59,8 @@ public class DataStorageAnalysisImpl implements DataStorageAnalysis { @Autowired IFileStorageQuotaService fileStorageQuotaService; - public SdmResponse getNodeSizeByNodeType(String queryNodeType, Long nodeId, Integer intervalMonths, String targetYm) { - SdmResponse> response = simuluationNodeFeignClient.getAllNodeByProjectIdAndType(nodeId, queryNodeType); + public SdmResponse getNodeSizeByNodeType(String queryNodeType, String uuid, Integer intervalMonths, String targetYm) { + SdmResponse> response = simuluationNodeFeignClient.getAllNodeByProjectIdAndType(uuid, queryNodeType); if (!response.isSuccess()) { return SdmResponse.failed("获取节点信息失败"); } @@ -68,27 +68,27 @@ public class DataStorageAnalysisImpl implements DataStorageAnalysis { List nodeLists = response.getData(); - // nodeid1-学科1 nodeid2-学科1 转换成 valueToKeysMap: 学科1->[nodeid1,nodeid2] 学科2->[nodeid3,nodeid4] - Map> valueToKeysMap = nodeLists.stream() + // uuid1-学科1 uuid2-学科1 转换成 valueToKeysMap: 学科1->[uuid1,uuid2] 学科2->[uuid3,uuid4] + Map> nodeNameToUuidListMap = nodeLists.stream() .collect(Collectors.groupingBy( AllNodeByProjectIdAndTypeResp::getNodeName, - Collectors.mapping(AllNodeByProjectIdAndTypeResp::getId, Collectors.toList()) + Collectors.mapping(AllNodeByProjectIdAndTypeResp::getUuid, Collectors.toList()) )); List result = new ArrayList<>(); //nodeIds获取所有节点id: [nodeid1,nodeid2,nodeid3,nodeid4] - List nodeIds = nodeLists.stream().map(AllNodeByProjectIdAndTypeResp::getId).collect(Collectors.toList()); - if (ObjectUtils.isNotEmpty(nodeIds)) { - // nodeIdToNodeDirIdMap :获取nodeid->fileID映射 - Map nodeIdToNodeDirIdMap = fileMetadataInfoService.lambdaQuery().select(FileMetadataInfo::getId, FileMetadataInfo::getNodeId) - .in(FileMetadataInfo::getNodeId, nodeIds) - .list().stream().collect(Collectors.toMap(FileMetadataInfo::getNodeId, FileMetadataInfo::getId)); - if (CollectionUtils.isEmpty(nodeIdToNodeDirIdMap)) { + List uuids = nodeLists.stream().map(AllNodeByProjectIdAndTypeResp::getUuid).collect(Collectors.toList()); + if (ObjectUtils.isNotEmpty(uuids)) { + // uuidToDirIdMap :获取uuid->fileID映射 + Map uuidToDirIdMap = fileMetadataInfoService.lambdaQuery().select(FileMetadataInfo::getId, FileMetadataInfo::getRelatedResourceUuid) + .in(FileMetadataInfo::getRelatedResourceUuid, uuids) + .list().stream().collect(Collectors.toMap(FileMetadataInfo::getRelatedResourceUuid, FileMetadataInfo::getId)); + if (CollectionUtils.isEmpty(uuidToDirIdMap)) { return SdmResponse.failed("获取节点信息失败"); } - // fileMetadIds: nodeid对应的fileid结合 - List fileMetadIds = new ArrayList<>(nodeIdToNodeDirIdMap.values()); + // fileMetadIds: uuid对应的fileid结合 + List fileMetadIds = new ArrayList<>(uuidToDirIdMap.values()); // nodeSizeDTOS: 获取所有node节点目录空间 List nodeSizeDTOS = null; @@ -108,10 +108,10 @@ public class DataStorageAnalysisImpl implements DataStorageAnalysis { // nodeSizeDTOMaps: 节点的fileid --> filesize Map nodeSizeDTOMaps = nodeSizeDTOS.stream().collect(Collectors.toMap(NodeSizeDTO::getDirId, NodeSizeDTO::getTotalSize)); - valueToKeysMap.forEach((nodeName, nodeIdList) -> { + nodeNameToUuidListMap.forEach((nodeName, uuidList) -> { AtomicLong totalSize = new AtomicLong(); - nodeIdList.forEach(nodeid -> { - Long dirId = nodeIdToNodeDirIdMap.get(nodeid); + uuidList.forEach(uuidItem -> { + Long dirId = uuidToDirIdMap.get(uuidItem); Long filesize = nodeSizeDTOMaps.get(dirId); if (ObjectUtils.isNotEmpty(filesize)) { totalSize.addAndGet(filesize); @@ -165,7 +165,7 @@ public class DataStorageAnalysisImpl implements DataStorageAnalysis { } @Override - public SdmResponse listBigFile(QueryBigFileReq queryBigFileReq) { + public SdmResponse>> listBigFile(QueryBigFileReq queryBigFileReq) { // 将前端传入的 fileSize 和 fileSizeUnit 转换为字节(B) Long fileSizeInBytes = null; if (queryBigFileReq.getFileSize() != null && queryBigFileReq.getFileSizeUnit() != null) { @@ -174,7 +174,10 @@ public class DataStorageAnalysisImpl implements DataStorageAnalysis { PageHelper.startPage(queryBigFileReq.getCurrent(), queryBigFileReq.getSize()); List list = fileStorageService.lambdaQuery() + .eq(FileStorage::getIsLatest, Constants.FileIsLast.YES.getValue()) .eq(ObjectUtils.isNotEmpty(queryBigFileReq.getDirId()), FileStorage::getDirId, queryBigFileReq.getDirId()) + .eq(ObjectUtils.isNotEmpty(queryBigFileReq.getFileSuffix()), FileStorage::getFileSuffix, queryBigFileReq.getFileSuffix()) + .eq(ObjectUtils.isNotEmpty(queryBigFileReq.getFileBizType()), FileStorage::getFileBizType, queryBigFileReq.getFileBizType()) .like(ObjectUtils.isNotEmpty(queryBigFileReq.getFileName()), FileStorage::getFileName, queryBigFileReq.getFileName()) .gt(ObjectUtils.isNotEmpty(queryBigFileReq.getCreateTime()), FileStorage::getCreateTime, queryBigFileReq.getCreateTime()) .gt(ObjectUtils.isNotEmpty(fileSizeInBytes), FileStorage::getFileSize, fileSizeInBytes).list(); diff --git a/data/src/main/java/com/sdm/data/service/impl/DimensionTemplateServiceImpl.java b/data/src/main/java/com/sdm/data/service/impl/DimensionTemplateServiceImpl.java index aae1ea2b..6d45410f 100644 --- a/data/src/main/java/com/sdm/data/service/impl/DimensionTemplateServiceImpl.java +++ b/data/src/main/java/com/sdm/data/service/impl/DimensionTemplateServiceImpl.java @@ -4,7 +4,7 @@ import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.sdm.common.common.SdmResponse; import com.sdm.common.entity.resp.AllNodeByProjectIdAndTypeResp; -import com.sdm.common.feign.impl.project.SimuluationNodeFeignClientImpl; +import com.sdm.common.feign.impl.project.SimulationNodeFeignClientImpl; import com.sdm.data.model.entity.DimensionTemplate; import com.sdm.data.dao.DimensionTemplateMapper; import com.sdm.data.model.entity.DimensionTemplateHierarchy; @@ -37,7 +37,7 @@ public class DimensionTemplateServiceImpl extends ServiceImpl dimensionNodeTyepOrderList = dimensionTemplateHierarchyService.list(queryWrapper).stream().map(DimensionTemplateHierarchy::getDisplayName).toList(); - Long chooseNodeId = req.getChooseNodeId(); + String chooseUuid = req.getChooseUuid(); String chooseNodeType = req.getChooseNodeType(); - if(chooseNodeId==null){ + if(chooseUuid==null){ // 选中维度了,没有选节点,按照模版,展示模版的第一层节点数据 String rootNodeType = dimensionNodeTyepOrderList.get(0); SdmResponse> allNodeByNodeTypeResponse = simuluationNodeFeignClient.getAllNodeByNodeType(null,rootNodeType); @@ -169,7 +169,7 @@ public class DimensionTemplateServiceImpl extends ServiceImpl> allNodeByProjectIdAndType = simuluationNodeFeignClient.getAllNodeByProjectIdAndType(chooseNodeId, nextNodeType); + SdmResponse> allNodeByProjectIdAndType = simuluationNodeFeignClient.getAllNodeByProjectIdAndType(chooseUuid, nextNodeType); if(!allNodeByProjectIdAndType.isSuccess()){ return SdmResponse.success(); } diff --git a/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java b/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java index 3c2baead..cbaff4b3 100644 --- a/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java +++ b/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java @@ -10,13 +10,17 @@ import com.sdm.common.common.Constants; import com.sdm.common.common.SdmResponse; import com.sdm.common.common.ThreadLocalContext; import com.sdm.common.entity.req.data.CreateDirReq; +import com.sdm.common.entity.req.project.DelNodeReq; +import com.sdm.common.entity.req.project.RenameNodeReq; import com.sdm.common.entity.req.system.UserListReq; import com.sdm.common.entity.resp.PageDataResp; import com.sdm.common.entity.resp.system.CIDUserResp; +import com.sdm.common.feign.impl.project.SimulationNodeFeignClientImpl; import com.sdm.common.utils.PageUtils; import com.sdm.common.feign.impl.system.SysUserFeignClientImpl; import com.sdm.data.model.entity.FileMetadataExtension; import com.sdm.data.model.entity.FileMetadataInfo; +import com.sdm.data.model.entity.FileStorage; import com.sdm.data.model.entity.FileUserPermission; import com.sdm.data.model.req.*; import com.sdm.common.entity.resp.data.FileMetadataInfoResp; @@ -24,6 +28,7 @@ import com.sdm.data.model.resp.KKFileViewURLFromMinioResp; import com.sdm.data.service.*; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.assertj.core.util.DateUtil; import org.jetbrains.annotations.NotNull; import org.springframework.beans.BeanUtils; @@ -76,6 +81,13 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { @Autowired private IMinioService minioService; + @Autowired + SimulationNodeFeignClientImpl simulationNodeFeignClient; + + @Autowired + private DataStorageAnalysis dataStorageAnalysis; + + @Override public String getType() { return type; @@ -90,7 +102,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { try { // 处理根目录创建逻辑(知识库根目录创建逻辑和项目节点目录创建) - if (ObjectUtils.isNull(req.getParDirId()) && ObjectUtils.isNull(req.getParentNodeId())) { + if (ObjectUtils.isNull(req.getParDirId()) && ObjectUtils.isNull(req.getParentUuId())) { return createRootDir(req); } else { // 处理子目录创建逻辑 @@ -110,7 +122,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { */ public SdmResponse createRootDir(CreateDirReq req) { - if(ObjectUtils.isNull(req.getDirType())){ + if (ObjectUtils.isNull(req.getDirType())) { return SdmResponse.failed("请选择目录类型:1 知识库文件夹,2 项目节点文件夹,3 头像库文件夹,4 仿真参数库文件夹,5 训练模型文件夹"); } @@ -132,8 +144,9 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { Long rootDirId = rootDirMetadataInfo.getId(); String dirName = req.getDirName(); - String dirMinioObjectKey = getDirMinioObjectKey(rootDirMetadataInfo.getObjectKey()+dirName); - Long nodeId = req.getNodeId(); + String dirMinioObjectKey = getDirMinioObjectKey(rootDirMetadataInfo.getObjectKey() + dirName); + String uuId = req.getUuId(); + String uuIdOwnType = req.getUuIdOwnType(); try { // 检查目录是否已存在 @@ -145,7 +158,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { minioService.createDirectoryByObjectKey(dirMinioObjectKey); // 创建目录元数据并保存到数据库 - FileMetadataInfo dirInfo = createDirectoryMetadata(dirMinioObjectKey, dirName, false, rootDirId, nodeId,req.getDirType()); + FileMetadataInfo dirInfo = createDirectoryMetadata(dirMinioObjectKey, dirName, false, rootDirId, uuId, uuIdOwnType, req.getDirType()); fileMetadataInfoService.save(dirInfo); // 创建默认权限记录 @@ -172,8 +185,8 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { */ public SdmResponse createChildDir(CreateDirReq req) { Long parDirId = null; - if (req.getParentNodeId() != null) { - FileMetadataInfo node = fileMetadataInfoService.lambdaQuery().eq(FileMetadataInfo::getNodeId, req.getParentNodeId()).one(); + if (req.getParentUuId() != null) { + FileMetadataInfo node = fileMetadataInfoService.lambdaQuery().eq(FileMetadataInfo::getRelatedResourceUuid, req.getParentUuId()).one(); parDirId = node.getId(); } else { parDirId = req.getParDirId(); @@ -202,7 +215,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { minioService.createDirectoryByObjectKey(childDirMinioObjectKey); // 创建子目录元数据并保存到数据库 - FileMetadataInfo dirInfo = createDirectoryMetadata(childDirMinioObjectKey, req.getDirName(), false, parDirId, req.getNodeId(),parDirInfo.getDirType()); + FileMetadataInfo dirInfo = createDirectoryMetadata(childDirMinioObjectKey, req.getDirName(), false, parDirId, req.getUuId(), req.getUuIdOwnType(), parDirInfo.getDirType()); fileMetadataInfoService.save(dirInfo); // 创建默认权限记录 @@ -229,10 +242,13 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { * @param originalName 原始名称 * @param isRoot 是否为根目录 * @param parentId 父目录ID(根目录为null) - * @param nodeId 节点ID + * @param uuid 节点ID + * @param uuIdOwnType * @return 目录元数据对象 */ - private FileMetadataInfo createDirectoryMetadata(String minioObjectKey, String originalName, boolean isRoot, Long parentId, Long nodeId, Integer dirType) { + private FileMetadataInfo createDirectoryMetadata(String minioObjectKey, String originalName, + boolean isRoot, Long parentId, String uuid, + String uuIdOwnType, Integer dirType) { FileMetadataInfo dirInfo = new FileMetadataInfo(); dirInfo.setObjectKey(minioObjectKey); dirInfo.setBucketName(minioService.getBucketName()); @@ -243,8 +259,11 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { if (!isRoot && parentId != null) { dirInfo.setParentId(parentId); } - if (nodeId != null) { - dirInfo.setNodeId(nodeId); + if (uuid != null) { + dirInfo.setRelatedResourceUuid(uuid); + } + if (uuIdOwnType != null) { + dirInfo.setRelatedResourceUuidOwnType(uuIdOwnType); } return dirInfo; } @@ -285,7 +304,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { * @param directoryId 目录ID */ private void createDirectoryPermission(Long directoryId) { - if(StringUtils.hasText(ThreadLocalContext.getCommonHeader().getJobNumber())) { + if (StringUtils.hasText(ThreadLocalContext.getCommonHeader().getJobNumber())) { FileUserPermission permission = new FileUserPermission(); permission.setTFilemetaId(directoryId); permission.setPermission(Constants.FilePermission.ALL.getValue()); @@ -343,7 +362,13 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { @Transactional(rollbackFor = Exception.class) public SdmResponse delDir(DelDirReq req) { try { - FileMetadataInfo deleteDirMetadataInfo = fileMetadataInfoService.lambdaQuery().eq(FileMetadataInfo::getId, req.getDelDirId()).one(); + FileMetadataInfo deleteDirMetadataInfo = null; + if (req.getDelUuid() != null) { + deleteDirMetadataInfo = fileMetadataInfoService.lambdaQuery().eq(FileMetadataInfo::getRelatedResourceUuid, req.getDelUuid()).one(); + } else { + deleteDirMetadataInfo = fileMetadataInfoService.lambdaQuery().eq(FileMetadataInfo::getId, req.getDelDirId()).one(); + } + if (ObjectUtils.isNull(deleteDirMetadataInfo)) { return SdmResponse.failed("目录不存在"); } @@ -367,6 +392,13 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { // minio文件系统批量删除文件 minioService.deleteDirectoryRecursively(dirMinioObjectKey); + + if (ObjectUtils.isNotNull(req.getDelUuid()) && ObjectUtils.isNotNull(req.getDelUuIdOwnType())) { + DelNodeReq delNodeReq = new DelNodeReq(); + delNodeReq.setUuid(req.getDelUuid()); + delNodeReq.setUuidOwnType(req.getDelUuIdOwnType()); + simulationNodeFeignClient.delteNode(delNodeReq); + } } catch (Exception e) { log.error("删除目录失败", e); // 重新抛出异常,确保事务回滚 @@ -410,42 +442,41 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { @Override public SdmResponse fileSearch(FileSearchReq minioFileSearchReq) { - LambdaQueryWrapper fileMetadataInfoLambdaQuery = new LambdaQueryWrapper<>(); + FileMetadataInfo fileMetadataInfo = null; - String dirObjectKey = null; - - if (ObjectUtils.isNotNull(minioFileSearchReq.getParentNodeId())) { + if (ObjectUtils.isNotNull(minioFileSearchReq.getParentUuid())) { // 项目节点下搜索文件 - FileMetadataInfo nodeMetadataInfo = fileMetadataInfoService.lambdaQuery().eq(FileMetadataInfo::getNodeId, minioFileSearchReq.getParentNodeId()).one(); - if(nodeMetadataInfo != null){ - dirObjectKey = nodeMetadataInfo.getObjectKey(); - } - + fileMetadataInfo = fileMetadataInfoService.lambdaQuery().eq(FileMetadataInfo::getRelatedResourceUuid, minioFileSearchReq.getParentUuid()).one(); } else if (ObjectUtils.isNotNull(minioFileSearchReq.getParentDirId())) { // 知识库的文件查询 - FileMetadataInfo dirMetadataInfo = fileMetadataInfoService.getById(minioFileSearchReq.getParentDirId()); - if(dirMetadataInfo != null){ - dirObjectKey = dirMetadataInfo.getObjectKey(); - } + fileMetadataInfo = fileMetadataInfoService.getById(minioFileSearchReq.getParentDirId()); } - if(dirObjectKey == null){ - return SdmResponse.failed("历史目录不存在"); + if (fileMetadataInfo != null) { + return SdmResponse.success(); } + QueryBigFileReq queryBigFileReq = new QueryBigFileReq(); + BeanUtils.copyProperties(minioFileSearchReq, queryBigFileReq); + queryBigFileReq.setDirId(fileMetadataInfo.getId()); + SdmResponse>> searchResult = dataStorageAnalysis.listBigFile(queryBigFileReq); + PageDataResp> pageDataResp = searchResult.getData(); + List data = pageDataResp.getData(); + if(CollectionUtils.isEmpty(data)) { + return SdmResponse.success(); + } + List fileIdList = data.stream().map(FileStorage::getFileId).toList(); + + // 查询当前文件夹和子文件下的文件,使用 dirObjectKey% - fileMetadataInfoLambdaQuery.likeRight(ObjectUtils.isNotNull(dirObjectKey), FileMetadataInfo::getObjectKey, dirObjectKey) - .eq(ObjectUtils.isNotNull(minioFileSearchReq.getCreaterId()), FileMetadataInfo::getCreatorId, minioFileSearchReq.getCreaterId()) - .eq(FileMetadataInfo::getIsLatest, Constants.FileIsLast.YES.getValue()) - .like(ObjectUtils.isNotNull(minioFileSearchReq.getFileName()), FileMetadataInfo::getOriginalName, minioFileSearchReq.getFileName()); - - // 分页处理 - PageHelper.startPage(minioFileSearchReq.getCurrent(), minioFileSearchReq.getSize()); - + List files = fileMetadataInfoService.lambdaQuery().in(FileMetadataInfo::getId, fileIdList).list(); + PageDataResp> page = new PageDataResp<>(); + page.setData(files); + page.setTotal(pageDataResp.getTotal()); + page.setCurrentPage(pageDataResp.getCurrentPage()); + page.setPageSize(pageDataResp.getPageSize()); // 使用分页查询 - List list = fileMetadataInfoService.list(fileMetadataInfoLambdaQuery); - PageInfo page = new PageInfo<>(list); - return PageUtils.getJsonObjectSdmResponse(list, page); + return SdmResponse.success(page); } @Override @@ -471,9 +502,9 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { if (ObjectUtils.isNotEmpty(req.getFileId())) { // 知识库的文件查询 parentId = req.getFileId(); - } else if (ObjectUtils.isNotEmpty(req.getNodeId())) { + } else if (ObjectUtils.isNotEmpty(req.getUuid())) { // 项目节点文件查询 - FileMetadataInfo nodeMetadataInfo = fileMetadataInfoService.lambdaQuery().eq(FileMetadataInfo::getNodeId, req.getNodeId()).one(); + FileMetadataInfo nodeMetadataInfo = fileMetadataInfoService.lambdaQuery().eq(FileMetadataInfo::getRelatedResourceUuid, req.getUuid()).one(); if (nodeMetadataInfo == null) { // 项目节点未创建文件夹,返回空 return SdmResponse.success(); @@ -632,7 +663,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { minioService.createDirectoryByObjectKey(dirMinioObjectKey); // 创建目录元数据并保存到数据库 - FileMetadataInfo dirInfo = createDirectoryMetadata(dirMinioObjectKey, dirType.getDirName(), true, null, null,dirType.getValue()); + FileMetadataInfo dirInfo = createDirectoryMetadata(dirMinioObjectKey, dirType.getDirName(), true, null, null, null, dirType.getValue()); fileMetadataInfoService.save(dirInfo); } catch (Exception dbException) { log.error("创建根目录失败", dbException); @@ -697,6 +728,14 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { try { minioService.renameFile(oldDirMinioObjectKey, newDirMinioObjectKey); fileMetadataInfoService.lambdaUpdate().set(FileMetadataInfo::getObjectKey, newDirMinioObjectKey).set(FileMetadataInfo::getOriginalName, req.getNewName()).eq(FileMetadataInfo::getId, dirMetadataInfo.getId()).update(); + + if (ObjectUtils.isNotNull(req.getUuid()) && ObjectUtils.isNotNull(req.getUuIdOwnType())) { + RenameNodeReq renameNodeReq = new RenameNodeReq(); + renameNodeReq.setUuid(req.getUuid()); + renameNodeReq.setUuidOwnType(req.getUuIdOwnType()); + renameNodeReq.setNewName(req.getNewName()); + simulationNodeFeignClient.renameNode(renameNodeReq); + } return SdmResponse.success("重命名目录成功"); } catch (Exception e) { log.error("重命名目录失败", e); @@ -756,7 +795,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { FileMetadataInfo fileMetadataInfo = fileMetadataInfoService.lambdaQuery().eq(FileMetadataInfo::getId, fileId).one(); if (ObjectUtils.isEmpty(fileMetadataInfo)) { log.error("文件不存在"); - return null; + return null; } String fileObjectKey = fileMetadataInfo.getObjectKey(); @@ -768,9 +807,10 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { @Transactional(rollbackFor = Exception.class) public SdmResponse uploadFiles(UploadFilesReq req) { Long dirId = null; - if (req.getNodeId() != null) { - // 项目节点文件查询 - FileMetadataInfo nodeMetadataInfo = fileMetadataInfoService.lambdaQuery().eq(FileMetadataInfo::getNodeId, req.getNodeId()).one(); + String uuid = req.getUuid(); + + if (uuid != null) { + FileMetadataInfo nodeMetadataInfo = fileMetadataInfoService.lambdaQuery().eq(FileMetadataInfo::getRelatedResourceUuid, req.getUuid()).one(); dirId = nodeMetadataInfo.getId(); } else if (req.getDirId() != null) { dirId = req.getDirId(); @@ -861,7 +901,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { @Override public SdmResponse> listDir(Integer dirType, Long parentDirId) { try { - if(ObjectUtils.isNull(dirType)){ + if (ObjectUtils.isNull(dirType)) { return SdmResponse.failed("请选择目录类型:1 知识库文件夹,2 项目节点文件夹,3 头像库文件夹,4 仿真参数库文件夹,5 训练模型文件夹"); } diff --git a/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java b/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java index 52d477fd..9f49387d 100644 --- a/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java +++ b/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java @@ -1,8 +1,10 @@ package com.sdm.project.controller; import com.sdm.common.common.SdmResponse; +import com.sdm.common.entity.req.project.DelNodeReq; +import com.sdm.common.entity.req.project.RenameNodeReq; import com.sdm.common.entity.resp.AllNodeByProjectIdAndTypeResp; -import com.sdm.common.feign.inter.project.ISimuluationNodeFeignClient; +import com.sdm.common.feign.inter.project.ISimulationNodeFeignClient; import com.sdm.project.model.req.*; import com.sdm.project.service.INodeService; import io.swagger.v3.oas.annotations.Operation; @@ -19,7 +21,7 @@ import java.util.List; @RestController @RequestMapping("/node") @Tag(name = "项目、阶段节点管理", description = "项目、阶段节点管理相关接口") -public class SimulationNodeController implements ISimuluationNodeFeignClient { +public class SimulationNodeController implements ISimulationNodeFeignClient { @Resource private INodeService nodeService; @@ -60,18 +62,6 @@ public class SimulationNodeController implements ISimuluationNodeFeignClient { return nodeService.delete(req); } - -// /** -// * 操作节点(增、删、改) -// * -// * @param req -// * @return -// */ -// @PostMapping("/modify") -// public SdmResponse modify(@RequestBody @Validated SpdmNodeReq req) { -// return nodeService.modify(req); -// } - /** * 节点列表 * @@ -137,14 +127,14 @@ public class SimulationNodeController implements ISimuluationNodeFeignClient { /** * 根据项目ID和节点类型获取所有节点信息 * - * @param chooseNodeId 项目ID + * @param uuid 项目ID * @param nextNodeType 下一级节点类型 * @return SdmResponse> 节点信息 */ @GetMapping("/getAllNodeByProjectIdAndType") @Operation(summary = "根据项目ID和节点类型获取所有节点信息", description = "根据项目ID和节点类型获取所有节点信息") - public SdmResponse> getAllNodeByProjectIdAndType(@RequestParam(value = "chooseNodeId") Long chooseNodeId, @RequestParam(value = "nextNodeType") String nextNodeType) { - return nodeService.getAllNodeByProjectIdAndType(chooseNodeId, nextNodeType); + public SdmResponse> getAllNodeByProjectIdAndType(@RequestParam(value = "chooseNodeId") String uuid, @RequestParam(value = "nextNodeType") String nextNodeType) { + return nodeService.getAllNodeByProjectIdAndType(uuid, nextNodeType); } @@ -194,4 +184,16 @@ public class SimulationNodeController implements ISimuluationNodeFeignClient { return nodeService.getWorkstationReviewStatistics(req); } + @PostMapping("/renameNode") + @Operation(summary = "重命名node/task/run的名称", description = "重命名node/task/run的名称") + public SdmResponse renameNode(@RequestBody RenameNodeReq req) { + return nodeService.renameNode(req); + } + + @PostMapping("/delteNode") + @Operation(summary = "删除node/task/run", description = "删除node/task/run") + public SdmResponse delteNode(@RequestBody DelNodeReq req) { + return nodeService.delteNode(req); + } + } diff --git a/project/src/main/java/com/sdm/project/controller/SimulationProjectController.java b/project/src/main/java/com/sdm/project/controller/SimulationProjectController.java index 6c712194..24e2b7ca 100644 --- a/project/src/main/java/com/sdm/project/controller/SimulationProjectController.java +++ b/project/src/main/java/com/sdm/project/controller/SimulationProjectController.java @@ -23,18 +23,6 @@ public class SimulationProjectController { private IProjectService projectService; - /** - * 操作节点(增、删、改) - * - * @param req - * @return - */ -// @PostMapping("/modify") -// @Operation(summary = "新增修改删除任务、分析项", description = "新增修改删除任务、分析项") -// public SdmResponse modify(@RequestBody SpdmNodeReq req) { -// return projectService.modify(req); -// } - /** * 操作节点(增、删、改) * @@ -47,30 +35,6 @@ public class SimulationProjectController { return projectService.newModify(req); } - /** - * 新建节点 - * - * @param jsonObject - * @return - */ -// @PostMapping("/add") -// @Operation(summary = "新增任务、分析项", description = "新增任务分析项") -// public SdmResponse add(@RequestBody JSONObject jsonObject) { -// return projectService.add(jsonObject); -// } - - /** - * 修改节点 - * - * @param taskEditNodeReqList - * @return - */ -// @PostMapping(value = "/edit") -// @Operation(summary = "修改任务、分析项", description = "修改任务、分析项") -// SdmResponse edit(@RequestBody List taskEditNodeReqList) { -// return projectService.edit(taskEditNodeReqList); -// } - /** * 任务分析项树 * @@ -83,16 +47,5 @@ public class SimulationProjectController { return projectService.getTaskTree(req); } - /** - * 删除节点 - * - * @param req - * @return - */ -// @PostMapping("/delete") -// @Operation(summary = "删除任务、分析项", description = "删除任务、分析项") -// public SdmResponse delete(@RequestBody SpdmDeleteProjectReq req) { -// return projectService.delete(req); -// } } diff --git a/project/src/main/java/com/sdm/project/service/INodeService.java b/project/src/main/java/com/sdm/project/service/INodeService.java index 65f76bad..d0a10406 100644 --- a/project/src/main/java/com/sdm/project/service/INodeService.java +++ b/project/src/main/java/com/sdm/project/service/INodeService.java @@ -2,6 +2,8 @@ package com.sdm.project.service; import com.baomidou.mybatisplus.extension.service.IService; import com.sdm.common.common.SdmResponse; +import com.sdm.common.entity.req.project.DelNodeReq; +import com.sdm.common.entity.req.project.RenameNodeReq; import com.sdm.common.entity.resp.AllNodeByProjectIdAndTypeResp; import com.sdm.project.model.entity.SimulationNode; import com.sdm.project.model.req.*; @@ -28,7 +30,7 @@ public interface INodeService extends IService { SdmResponse> getAllNodeByBodeType(String nodeType, Long nodeId); - SdmResponse> getAllNodeByProjectIdAndType(Long chooseNodeId, String nextNodeType); + SdmResponse> getAllNodeByProjectIdAndType(String uuid, String nextNodeType); SdmResponse getUserGroupProjectStatistics(Long userGroupId, Long userId); @@ -42,4 +44,9 @@ public interface INodeService extends IService { // 工位评审通过统计查询 SdmResponse getWorkstationReviewStatistics(GetWorkstationApproveStatusReq req); + // 重命名node/task/run的名称 + SdmResponse renameNode(RenameNodeReq req); + + // 删除node/task/run + SdmResponse delteNode(DelNodeReq req); } diff --git a/project/src/main/java/com/sdm/project/service/IProjectService.java b/project/src/main/java/com/sdm/project/service/IProjectService.java index e929f9cc..a061be86 100644 --- a/project/src/main/java/com/sdm/project/service/IProjectService.java +++ b/project/src/main/java/com/sdm/project/service/IProjectService.java @@ -22,8 +22,6 @@ public interface IProjectService { SdmResponse modify(SpdmNodeReq req); -// SdmResponse list(ProjectNodeListReq req); - SdmResponse taskHandle(String taskId, Integer handleType); SdmResponse newModify(ModifyProjectNode req); diff --git a/project/src/main/java/com/sdm/project/service/impl/DemandServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/DemandServiceImpl.java index 5c9ba956..d17d72dc 100644 --- a/project/src/main/java/com/sdm/project/service/impl/DemandServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/DemandServiceImpl.java @@ -135,8 +135,8 @@ public class DemandServiceImpl extends BaseService implements IDemandService { } CreateDirReq createDirReq = new CreateDirReq(); - createDirReq.setNodeId(demandId); - createDirReq.setParentNodeId(null); + createDirReq.setUuId(uuid); + createDirReq.setParentUuId(null); createDirReq.setDirName(req.getDemandName()); createDirReq.setDirType(Constants.DirType.PROJECT_NODE_DIR.getValue()); log.info("创建需求时,调用创建文件夹的参数为:{}", createDirReq); @@ -448,8 +448,8 @@ public class DemandServiceImpl extends BaseService implements IDemandService { return SdmResponse.success(new ArrayList<>()); } - long parentId = getLastNodeId(taskNodeList.get(0)); - log.info("下发任务时,parentId为:{}", parentId); + String parentUuid = getLastNodeId(taskNodeList.get(0)); + log.info("下发任务时,parentId为:{}", parentUuid); String demandId = req.getDemandId(); List projectNodeMemberList = new ArrayList<>(); List projectNodeExtraList = new ArrayList<>(); @@ -538,7 +538,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService { ) )); for (TaskNode taskNode : taskNodeList) { - createDir(taskNode.getId(), parentId, taskNode.getNodeName()); + createDir(taskNode.getUuid(), parentUuid, taskNode.getNodeName()); } } if (CollectionUtils.isNotEmpty(projectNodeExtraList)) { @@ -581,8 +581,8 @@ public class DemandServiceImpl extends BaseService implements IDemandService { response = SdmResponse.failed("新增指标时,创建文件失败"); return response; } - createDir(taskNode.getId(), - ObjectUtils.isNotEmpty(taskNodePoMap.get(taskNode.getTaskId())) ? taskNodePoMap.get(taskNode.getTaskId()).getId() : taskNodeMap.get(taskNode.getTaskId()).getId(), + createDir(taskNode.getUuid(), + ObjectUtils.isNotEmpty(taskNodePoMap.get(taskNode.getTaskId())) ? taskNodePoMap.get(taskNode.getTaskId()).getUuid() : taskNodeMap.get(taskNode.getTaskId()).getUuid(), taskNode.getNodeName()); } @@ -598,7 +598,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService { return response; } - private long getLastNodeId(TaskNode taskNode) { + private String getLastNodeId(TaskNode taskNode) { // List tag1 = taskNode.getTag1(); // if (CollectionUtils.isNotEmpty(tag1)) { // tag1.get(tag1.size() - 1); @@ -615,7 +615,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService { throw new RuntimeException(e); } } - return projectMapper.getNodeListByNodeIdList(Collections.singletonList(lastNodeId)).get(0).getId(); + return projectMapper.getNodeListByNodeIdList(Collections.singletonList(lastNodeId)).get(0).getUuid(); } // @Override @@ -779,10 +779,10 @@ public class DemandServiceImpl extends BaseService implements IDemandService { // } - private void createDir(Long nodeId, Long parentNodeId, String dirName) { + private void createDir(String uuid, String parentUuid, String dirName) { CreateDirReq createDirReq = new CreateDirReq(); - createDirReq.setNodeId(nodeId); - createDirReq.setParentNodeId(parentNodeId); + createDirReq.setUuId(uuid); + createDirReq.setParentUuId(parentUuid); createDirReq.setDirName(dirName); log.info("下发任务调用创建文件夹的参数为:{}", createDirReq); // SdmResponse response = dataClientAPIClient.createDir(createDirReq); diff --git a/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java index b7d93af5..f5fcc8fa 100644 --- a/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java @@ -3,10 +3,14 @@ package com.sdm.project.service.impl; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.sdm.common.common.Constants; +import com.sdm.common.common.ResultCode; import com.sdm.common.common.SdmResponse; import com.sdm.common.common.ThreadLocalContext; import com.sdm.common.entity.constants.SystemConstants; +import com.sdm.common.entity.enums.NodeType; import com.sdm.common.entity.req.data.CreateDirReq; +import com.sdm.common.entity.req.project.DelNodeReq; +import com.sdm.common.entity.req.project.RenameNodeReq; import com.sdm.common.entity.req.system.UserQueryReq; import com.sdm.common.entity.resp.AllNodeByProjectIdAndTypeResp; import com.sdm.common.entity.resp.system.CIDUserResp; @@ -18,12 +22,17 @@ import com.sdm.project.dao.SimulationNodeMapper; import com.sdm.project.dao.SimulationProjectMapper; import com.sdm.project.model.bo.TaskNodeTag; import com.sdm.project.model.entity.SimulationNode; +import com.sdm.project.model.entity.SimulationRun; +import com.sdm.project.model.entity.SimulationTask; import com.sdm.project.model.po.PerformanceNodePo; import com.sdm.project.model.po.ProjectNodePo; import com.sdm.project.model.po.TaskNodePo; import com.sdm.project.model.req.*; import com.sdm.project.model.vo.*; import com.sdm.project.service.INodeService; +import com.sdm.project.service.IProjectService; +import com.sdm.project.service.ISimulationRunService; +import com.sdm.project.service.ISimulationTaskService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; @@ -54,12 +63,21 @@ public class NodeServiceImpl extends ServiceImpl idMap = new HashMap<>(); @@ -331,56 +349,15 @@ public class NodeServiceImpl extends ServiceImpl tag.getKey().equals(addNode.getNodeType())).findFirst(); -// if (tagOptional.isPresent()) { -// log.info("当前nodeType为:{},tag为:{}",addNode.getNodeType(),tagOptional.get().getValue()); -// try { -// setTagProperty(addNode,tagOptional.get().getValue(),addNode.getUuid()); -// } catch (Exception e) { -// throw new RuntimeException(e); -// } -// } -// } -// nodeManagerList = addNode.getMemberList(); -// if (StringUtils.isNoneBlank(nodeManagerList)) { -// for (String userId : nodeManagerList.split(",")) { -// SpdmNodeRelateMemberReq spdmNodeRelateMemberReq = new SpdmNodeRelateMemberReq(); -// spdmNodeRelateMemberReq.setNodeId(addNode.getUuid()); -// spdmNodeRelateMemberReq.setUserId(Integer.parseInt(userId)); -// spdmNodeRelateMemberReq.setCreateTime(curDateStr); -// spdmNodeRelateMemberReq.setCreator(jobNumber); -// allNodeManagerList.add(spdmNodeRelateMemberReq); -// } -// } -// extraList = addNode.getExtraList(); -// if (CollectionUtils.isNotEmpty(extraList)) { -// extraList.forEach(extra -> { -// extra.setNodeId(addNode.getUuid()); -// extra.setCreateTime(curDateStr); -// extra.setCreator(jobNumber); -// }); -// allExtraList.addAll(extraList); -// } -// } - - if (nodeMapper.addNodeBatch(addNodeList) <= 0) { return null; } Optional projectOptional = addNodeList.stream().filter(node -> SystemConstants.PROJECT_TAG.equals(node.getNodeType())).findFirst(); if (projectOptional.isPresent()) { SpdmProjectNodeEditReq projectNode = projectOptional.get(); - long projectNodeId = projectNode.getId(); + String uuid = projectNode.getUuid(); // 创建项目节点的文件夹 - createDir(projectNodeId, null, projectNode.getNodeName()); + createDir(uuid, null, projectNode.getNodeName()); } else { List projectNodePoList = mapper.queryNodeListByNodeId(addNodeList.get(0).getPid()); if (CollectionUtils.isEmpty(projectNodePoList)) { @@ -388,9 +365,9 @@ public class NodeServiceImpl extends ServiceImpl()); } -// spdmNodeMemberVoList.stream().map(SpdmNodeMemberVo::get) -// List memberList = new ArrayList<>(); -// HashSet memberSet = new HashSet(); -// if (CollectionUtils.isNotEmpty(spdmNodeMemberVoList)) { -// for (SpdmNodeMemberVo spdmNodeMemberVo : spdmNodeMemberVoList) { -// if (!memberSet.contains(spdmNodeMemberVo.getIdentity())) { -// memberList.add(spdmNodeMemberVo); -// } -// memberSet.add(spdmNodeMemberVo.getIdentity()); -// } -// } -// -// List taskNodePoList = nodeMapper.getTaskListByNodeIdList(allNodeIdList); -// if (CollectionUtils.isNotEmpty(taskNodePoList)) { -// List taskNodeMemberPoList = nodeMapper.getTaskMemberListByNodeIdList(taskNodePoList.stream().map(TaskNodePo::getUuid).toList()); -// if (CollectionUtils.isNotEmpty(taskNodeMemberPoList)) { -// for (TaskNodeMemberPo taskNodeMemberPo : taskNodeMemberPoList) { -// if (!memberSet.contains(taskNodeMemberPo.getIdentity())) { -// memberList.add(taskNodeMemberPo); -// } -// memberSet.add(taskNodeMemberPo.getIdentity()); -// } -// } -// } JSONObject jsonObject = new JSONObject(); jsonObject.put("data", userList.stream().skip((long) (req.getCurrent() - 1) * req.getSize()).limit(req.getSize()).toList()); return SdmResponse.success(jsonObject); @@ -629,10 +582,10 @@ public class NodeServiceImpl extends ServiceImpl> getAllNodeByProjectIdAndType(Long chooseNodeId, String nextNodeType) { - String ownRootNodeUuid = this.lambdaQuery().eq(SimulationNode::getId, chooseNodeId).one().getOwnRootNodeUuid(); + public SdmResponse> getAllNodeByProjectIdAndType(String uuid, String nextNodeType) { + String ownRootNodeUuid = this.lambdaQuery().eq(SimulationNode::getUuid, uuid).one().getOwnRootNodeUuid(); if (ownRootNodeUuid == null) { return SdmResponse.failed("未找到根节点uuid"); } @@ -932,4 +885,41 @@ public class NodeServiceImpl extends ServiceImpl deleteNodeList = new ArrayList<>(); + deleteNodeList.add(deleteNode); + + SpdmDeleteProjectReq spdmDeleteProjectReq = new SpdmDeleteProjectReq(); + spdmDeleteProjectReq.setDeleteNodeList(deleteNodeList); + + projectService.delete(spdmDeleteProjectReq); + return SdmResponse.success(); + } } diff --git a/project/src/main/java/com/sdm/project/service/impl/ProjectServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/ProjectServiceImpl.java index 613e5804..321fe6c2 100644 --- a/project/src/main/java/com/sdm/project/service/impl/ProjectServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/ProjectServiceImpl.java @@ -7,7 +7,6 @@ import com.sdm.common.common.ResultCode; import com.sdm.common.common.SdmResponse; import com.sdm.common.common.ThreadLocalContext; import com.sdm.common.entity.constants.SystemConstants; -import com.sdm.common.entity.constants.TagConstant; import com.sdm.common.entity.req.data.CreateDirReq; import com.sdm.common.feign.impl.data.DataClientFeignClientImpl; import com.sdm.common.service.BaseService; @@ -17,7 +16,6 @@ import com.sdm.project.dao.SimulationProjectMapper; import com.sdm.project.model.bo.*; import com.sdm.project.model.po.*; import com.sdm.project.model.req.*; -import com.sdm.project.model.vo.SpdmAnalysisTaskVo; import com.sdm.project.service.IProjectService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -29,7 +27,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; -import reactor.util.function.Tuple2; import java.text.SimpleDateFormat; import java.util.*; @@ -1275,43 +1272,6 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { } } -// private SdmResponse realUpdateSimulationTaskItems(TaskNodeTree taskNodeTree, String parentId, String tenantId) { -// SdmResponse response = SdmResponse.success(); -// if (CollectionUtils.isEmpty(taskNodeTree.getNodeList())) { -// response = SdmResponse.failed("节点不能为空"); -// } else { -// List projectNodeList = new ArrayList<>(); -// List projectNodeMemberList = new ArrayList<>(); -// List projectNodeExtraList = new ArrayList<>(); -// List taskNodeList = new ArrayList<>(); -// List taskNodeMemberList = new ArrayList<>(); -// List taskNodeExtraList = new ArrayList<>(); -// List projectNodePerformanceList = new ArrayList<>(); -// List projectNodePerformanceExtraList = new ArrayList<>(); -// for (TaskNode taskNode : taskNodeTree.getNodeList()) { -// traverseTaskNode(taskNode.getPid(), tenantId, VersionEnum.INITIAL.getCode(), taskNode, projectNodeList, projectNodeMemberList, projectNodeExtraList, taskNodeList, taskNodeMemberList, taskNodeExtraList, projectNodePerformanceList, projectNodePerformanceExtraList); -// } -// if (!projectNodeList.isEmpty() && mapper.batchUpdateSimulationNodes(projectNodeList) <= 0) { -// response = SdmResponse.failed("添加节点失败"); -// } else if (!projectNodeExtraList.isEmpty() && mapper.batchUpdateSimulationNodeExtra(projectNodeExtraList) <= 0) { -// response = SdmResponse.failed("添加节点附加属性失败"); -// } else if (!projectNodeExtraList.isEmpty() && mapper.batchUpdateSimulationNodeMember(projectNodeMemberList) <= 0) { -// response = SdmResponse.failed("添加节点成员属性失败"); -// } else if (!taskNodeList.isEmpty() && mapper.batchUpdateSimulationTask(taskNodeList) <= 0) { -// response = SdmResponse.failed("新增任务失败"); -// } else if (!taskNodeExtraList.isEmpty() && mapper.batchUpdateSimulationTaskExtra(taskNodeExtraList) <= 0) { -// response = SdmResponse.failed("新增任务附加属性失败"); -// } else if (!taskNodeExtraList.isEmpty() && mapper.batchUpdateSimulationTaskMember(taskNodeMemberList) <= 0) { -// response = SdmResponse.failed("新增任务成员属性失败"); -// } else if (!projectNodePerformanceList.isEmpty() && mapper.batchUpdateSimulationPerformance(projectNodePerformanceList) <= 0) { -// response = SdmResponse.failed("新增任务指标项失败"); -// } else if (!projectNodePerformanceExtraList.isEmpty() && mapper.batchUpdateSimulationPerformanceExtra(projectNodePerformanceExtraList) <= 0) { -// response = SdmResponse.failed("新增任务指标附加属性失败"); -// } -// } -// return response; -// } - private SdmResponse newRealAddSimulationTaskItems(TaskNodeTree taskNodeTree, String tenantId, List tagList) { String jobNumber = ThreadLocalContext.getCommonHeader().getJobNumber(); SdmResponse response = SdmResponse.success(); @@ -1327,16 +1287,11 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { List taskNodeExtraList = new ArrayList<>(); List projectNodePerformanceList = new ArrayList<>(); List projectNodePerformanceExtraList = new ArrayList<>(); -// List newAllProjectNodeList = new ArrayList<>(); -// List eachProjectNodeList = new ArrayList<>(); HashMap> idMap = new HashMap<>(); HashMap> taskIdMap = new HashMap<>(); for (TaskNode taskNode : taskNodeTree.getNodeList()) { currentTopNodeType = taskNode.getNodeType(); traverseTaskNode(taskNode.getPid(), tenantId, VersionEnum.INITIAL.getCode(), taskNode, projectNodeList, projectNodeMemberList, projectNodeExtraList, taskNodeList, taskNodeMemberList, taskNodeExtraList, projectNodePerformanceList, projectNodePerformanceExtraList, tagList,idMap,taskIdMap); -// eachProjectNodeList = projectNodeList.stream().filter(node -> !newAllProjectNodeList.contains(node.getUuid())).toList(); -// newAllProjectNodeList.addAll(eachProjectNodeList.stream().map(TaskNode::getUuid).toList()); - taskIdMap.clear(); } SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -1344,47 +1299,6 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { Map projectNodeMap = Map.of(); Map taskNodeMap = Map.of(); if (CollectionUtils.isNotEmpty(projectNodeList)) { - // 设置节点的tag信息 -// if (CollectionUtils.isNotEmpty(tagMap)) { -// List currentNodeList; -// for (TaskNodeTag tagReq : tagMap) { -// String currentNodeType = tagReq.getKey(); -// log.info("当前nodeType为:{},tag为:{}", currentNodeType, tagReq.getValue()); -// currentNodeList = projectNodeList.stream().filter(node -> node.getNodeType().equals(currentNodeType)).toList(); -// if (CollectionUtils.isEmpty(currentNodeList)) { -// log.error("newRealAddSimulationTaskItems中不存在{}类型的节点", currentNodeType); -// continue; -// } -// List currentNodeIdList = new ArrayList<>(); -// for (TaskNode addNode : currentNodeList) { -// if (MapUtils.isNotEmpty(projectIdMap)) { -// for (Map.Entry> entry : projectIdMap.entrySet()) { -// // 之前的tag -// String preTag = entry.getKey(); -// log.info("preTag为:{}", preTag); -// try { -// setTagProperty(addNode, preTag, entry.getValue()); -// } catch (Exception e) { -// throw new RuntimeException(e); -// } -// } -// } -//// addNode.setUuid(RandomUtil.generateString(32)); -// addNode.setCreateTime(createTime); -// addNode.setCreator(jobNumber); -// addNode.setTenantId(tenantId); -// try { -// setTagProperty(addNode, tagReq.getValue(), Collections.singletonList(addNode.getUuid())); -// } catch (Exception e) { -// throw new RuntimeException(e); -// } -// currentNodeIdList.add(addNode.getUuid()); -// } -// projectIdMap.put(tagReq.getValue(), currentNodeIdList); -// } -// } - - projectNodeList.forEach(node -> node.setCreateTime(curDateStr)); if (mapper.batchAddSimulationNodes(projectNodeList) <= 0) { @@ -1416,10 +1330,10 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { response = SdmResponse.failed("新增节点时,创建文件失败"); return response; } - createDir(taskNode.getId(), + createDir(taskNode.getUuid(), SystemConstants.PROJECT_TAG.equals(taskNode.getNodeType()) ? null : (ObjectUtils.isNotEmpty(projectNodePoMap.get(taskNode.getParentId())) - ? projectNodePoMap.get(taskNode.getParentId()).getId() - : projectNodeMap.get(taskNode.getParentId()).getId()), + ? projectNodePoMap.get(taskNode.getParentId()).getUuid() + : projectNodeMap.get(taskNode.getParentId()).getUuid()), taskNode.getNodeName()); } } @@ -1472,7 +1386,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { response = SdmResponse.failed("新增分析项时,创建文件失败"); return response; } - createDir(taskNode.getId(), projectNodePoMap.get(taskNode.getParentId()).getId(), taskNode.getNodeName()); + createDir(taskNode.getUuid(), projectNodePoMap.get(taskNode.getParentId()).getUuid(), taskNode.getNodeName()); } } else { for (TaskNode taskNode : taskNodeList) { @@ -1481,8 +1395,8 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { response = SdmResponse.failed("新增分析项时,创建文件失败"); return response; } - createDir(taskNode.getId(), - ObjectUtils.isNotEmpty(projectNodePoMap.get(taskNode.getParentId())) ? projectNodePoMap.get(taskNode.getParentId()).getId() : projectNodeMap.get(taskNode.getParentId()).getId(), + createDir(taskNode.getUuid(), + ObjectUtils.isNotEmpty(projectNodePoMap.get(taskNode.getParentId())) ? projectNodePoMap.get(taskNode.getParentId()).getUuid() : projectNodeMap.get(taskNode.getParentId()).getUuid(), taskNode.getNodeName()); } } @@ -1526,7 +1440,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { response = SdmResponse.failed("新增指标时,创建文件失败"); return response; } - createDir(taskNode.getId(), taskNodePoMap.get(taskNode.getTaskId()).getId(), taskNode.getNodeName()); + createDir(taskNode.getUuid(), taskNodePoMap.get(taskNode.getTaskId()).getUuid(), taskNode.getNodeName()); } } else { for (TaskNode taskNode : projectNodePerformanceList) { @@ -1535,8 +1449,8 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { response = SdmResponse.failed("新增指标时,创建文件失败"); return response; } - createDir(taskNode.getId(), - ObjectUtils.isNotEmpty(taskNodePoMap.get(taskNode.getTaskId())) ? taskNodePoMap.get(taskNode.getTaskId()).getId() : taskNodeMap.get(taskNode.getTaskId()).getId(), + createDir(taskNode.getUuid(), + ObjectUtils.isNotEmpty(taskNodePoMap.get(taskNode.getTaskId())) ? taskNodePoMap.get(taskNode.getTaskId()).getUuid() : taskNodeMap.get(taskNode.getTaskId()).getUuid(), taskNode.getNodeName()); } } @@ -1604,10 +1518,10 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { response = SdmResponse.failed("新增节点时,创建文件失败"); return response; } - createDir(taskNode.getId(), + createDir(taskNode.getUuid(), SystemConstants.PROJECT_TAG.equals(taskNode.getNodeType()) ? null : (ObjectUtils.isNotEmpty(projectNodePoMap.get(taskNode.getParentId())) - ? projectNodePoMap.get(taskNode.getParentId()).getId() - : projectNodeMap.get(taskNode.getParentId()).getId()), + ? projectNodePoMap.get(taskNode.getParentId()).getUuid() + : projectNodeMap.get(taskNode.getParentId()).getUuid()), taskNode.getNodeName()); } } @@ -1660,7 +1574,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { response = SdmResponse.failed("新增分析项时,创建文件失败"); return response; } - createDir(taskNode.getId(), projectNodePoMap.get(taskNode.getParentId()).getId(), taskNode.getNodeName()); + createDir(taskNode.getUuid(), projectNodePoMap.get(taskNode.getParentId()).getUuid(), taskNode.getNodeName()); } } else { for (TaskNode taskNode : taskNodeList) { @@ -1669,8 +1583,8 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { response = SdmResponse.failed("新增分析项时,创建文件失败"); return response; } - createDir(taskNode.getId(), - ObjectUtils.isNotEmpty(projectNodePoMap.get(taskNode.getParentId())) ? projectNodePoMap.get(taskNode.getParentId()).getId() : projectNodeMap.get(taskNode.getParentId()).getId(), + createDir(taskNode.getUuid(), + ObjectUtils.isNotEmpty(projectNodePoMap.get(taskNode.getParentId())) ? projectNodePoMap.get(taskNode.getParentId()).getUuid() : projectNodeMap.get(taskNode.getParentId()).getUuid(), taskNode.getNodeName()); } } @@ -1714,7 +1628,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { response = SdmResponse.failed("新增指标时,创建文件失败"); return response; } - createDir(taskNode.getId(), taskNodePoMap.get(taskNode.getTaskId()).getId(), taskNode.getNodeName()); + createDir(taskNode.getUuid(), taskNodePoMap.get(taskNode.getTaskId()).getUuid(), taskNode.getNodeName()); } } else { for (TaskNode taskNode : projectNodePerformanceList) { @@ -1723,8 +1637,8 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { response = SdmResponse.failed("新增指标时,创建文件失败"); return response; } - createDir(taskNode.getId(), - ObjectUtils.isNotEmpty(taskNodePoMap.get(taskNode.getTaskId())) ? taskNodePoMap.get(taskNode.getTaskId()).getId() : taskNodeMap.get(taskNode.getTaskId()).getId(), + createDir(taskNode.getUuid(), + ObjectUtils.isNotEmpty(taskNodePoMap.get(taskNode.getTaskId())) ? taskNodePoMap.get(taskNode.getTaskId()).getUuid() : taskNodeMap.get(taskNode.getTaskId()).getUuid(), taskNode.getNodeName()); } } @@ -1740,10 +1654,10 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { return response; } - private void createDir(Long nodeId, Long parentNodeId, String dirName) { + private void createDir(String uuid, String parentUuid, String dirName) { CreateDirReq createDirReq = new CreateDirReq(); - createDirReq.setNodeId(nodeId); - createDirReq.setParentNodeId(parentNodeId); + createDirReq.setUuId(uuid); + createDirReq.setParentUuId(parentUuid); createDirReq.setDirName(dirName); log.info("调用创建文件夹的参数为:{}", createDirReq); // SdmResponse response = dataClientAPIClient.createDir(createDirReq); diff --git a/system/src/main/java/com/sdm/system/filter/AuthFilter.java b/system/src/main/java/com/sdm/system/filter/AuthFilter.java index d4c53ac2..35be5e51 100644 --- a/system/src/main/java/com/sdm/system/filter/AuthFilter.java +++ b/system/src/main/java/com/sdm/system/filter/AuthFilter.java @@ -23,12 +23,21 @@ public class AuthFilter implements Filter { public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { if (servletRequest instanceof HttpServletRequest) { HttpServletRequest req = (HttpServletRequest) servletRequest; - ThreadLocalContext.verifyRequest(req); - //{ - // servletResponse.setCharacterEncoding("UTF-8"); - // servletResponse.getWriter().println("请求信息验证错误"); - // return; - //}*/ + String jobNumber = StringUtils.isEmpty(req.getHeader("jobNumber")) ? "" : req.getHeader("jobNumber"); + Long usrId = StringUtils.isEmpty(req.getHeader("userId")) ? null : Long.valueOf(req.getHeader("userId")); + Long tenantId = StringUtils.isEmpty(req.getHeader("tenantId")) ? null : Long.valueOf(req.getHeader("tenantId")); + String userName = StringUtils.isEmpty(req.getHeader("userName")) ? null : req.getHeader("userName"); + ThreadLocalContext.setJobNumber(jobNumber); + ThreadLocalContext.setCompany(req.getHeader("company")); + ThreadLocalContext.setSessionId(req.getHeader("sessionId")); + ThreadLocalContext.setUserId(usrId); + ThreadLocalContext.setTenantId(tenantId); + ThreadLocalContext.setUserName(userName); + +// User user = userService.getUserByIdCode(idCode); +// if (user != null) { +// ThreadLocalContext.setUserContext(new UserContext(user)); +// } } filterChain.doFilter(servletRequest, servletResponse); }