From 5b98d410ad6d44f9d3542d3db76b33d0fd41820d Mon Sep 17 00:00:00 2001 From: gulongcheng <474084054@qq.com> Date: Thu, 5 Mar 2026 15:43:26 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E6=96=87=E4=BB=B6=E4=BB=A5=E5=8F=8A?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=B9=E8=AE=BE=E7=BD=AEtag1-tag10?= =?UTF-8?q?=EF=BC=8CtaskId,runId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1-sql/2026-03-05/file_metadata_info.sql | 7 +++ 1-sql/{2026-03-06 => 2026-03-05}/yang.sql | 0 .../common/entity/req/data/CreateDirReq.java | 3 + .../common/entity/req/data/DirNodeInfo.java | 3 + .../common/entity/req/data/FolderItemReq.java | 3 + .../sdm/common/entity/req/data/TagReq.java | 51 +++++++++++++++ .../entity/req/data/UploadFilesReq.java | 13 +++- .../data/model/entity/FileMetadataInfo.java | 13 ++++ .../sdm/data/service/IDataFileService.java | 33 +++++----- .../impl/MinioFileIDataFileServiceImpl.java | 62 ++++++++++++++----- .../impl/SimulationRunServiceImpl.java | 8 +-- 11 files changed, 157 insertions(+), 39 deletions(-) create mode 100644 1-sql/2026-03-05/file_metadata_info.sql rename 1-sql/{2026-03-06 => 2026-03-05}/yang.sql (100%) create mode 100644 common/src/main/java/com/sdm/common/entity/req/data/TagReq.java diff --git a/1-sql/2026-03-05/file_metadata_info.sql b/1-sql/2026-03-05/file_metadata_info.sql new file mode 100644 index 00000000..baa4e769 --- /dev/null +++ b/1-sql/2026-03-05/file_metadata_info.sql @@ -0,0 +1,7 @@ +ALTER TABLE spdm_baseline.`file_metadata_info` +-- 1. 所属工况ID(task_id)- 放在tag10后面 + ADD COLUMN `task_id` VARCHAR(64) DEFAULT NULL COMMENT '所属工况ID(UUID)' AFTER `tag10`, +-- 2. 所属算例ID(run_id)- 紧跟task_id +ADD COLUMN `run_id` VARCHAR(64) DEFAULT NULL COMMENT '所属算例ID(UUID)' AFTER `task_id`, +-- 3. 排序字段(sort_order)- 紧跟run_id +ADD COLUMN `sort_order` INT DEFAULT NULL COMMENT '算例下文件的排序字段,数值越小越靠前'; \ No newline at end of file diff --git a/1-sql/2026-03-06/yang.sql b/1-sql/2026-03-05/yang.sql similarity index 100% rename from 1-sql/2026-03-06/yang.sql rename to 1-sql/2026-03-05/yang.sql 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 043aa376..abbf9812 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 @@ -33,4 +33,7 @@ public class CreateDirReq { // 父节点id @Schema(description = "当前父节点id") private String parentUuId; + + @Schema(description = "标签请求参数") + private TagReq tagReq; } \ No newline at end of file diff --git a/common/src/main/java/com/sdm/common/entity/req/data/DirNodeInfo.java b/common/src/main/java/com/sdm/common/entity/req/data/DirNodeInfo.java index 453f1dbf..23d5d2ab 100644 --- a/common/src/main/java/com/sdm/common/entity/req/data/DirNodeInfo.java +++ b/common/src/main/java/com/sdm/common/entity/req/data/DirNodeInfo.java @@ -29,4 +29,7 @@ public class DirNodeInfo { @Schema(description = "文件夹名称(不传则使用uuid作为名称)") private String dirName; + + @Schema(description = "标签请求参数") + private TagReq tagReq; } diff --git a/common/src/main/java/com/sdm/common/entity/req/data/FolderItemReq.java b/common/src/main/java/com/sdm/common/entity/req/data/FolderItemReq.java index 01d797a2..eae634c1 100644 --- a/common/src/main/java/com/sdm/common/entity/req/data/FolderItemReq.java +++ b/common/src/main/java/com/sdm/common/entity/req/data/FolderItemReq.java @@ -21,4 +21,7 @@ public class FolderItemReq { @Schema(description = "文件夹UUID(可选,用于关联业务资源)") private String folderUuid; + + @Schema(description = "标签请求参数") + private TagReq tagReq; } diff --git a/common/src/main/java/com/sdm/common/entity/req/data/TagReq.java b/common/src/main/java/com/sdm/common/entity/req/data/TagReq.java new file mode 100644 index 00000000..5c34cc0a --- /dev/null +++ b/common/src/main/java/com/sdm/common/entity/req/data/TagReq.java @@ -0,0 +1,51 @@ +package com.sdm.common.entity.req.data; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; +import io.swagger.v3.oas.annotations.media.Schema; + +/** + * @ClassName TagReq + * @Description 标签请求参数 + * @Author MengDe + * @Date 2022/4/5 23:07 + * @Version 1.0 + **/ +@Data +public class TagReq { + @Schema(description = "标签1") + private String tag1; + + @Schema(description = "标签2") + private String tag2; + + @Schema(description = "标签3") + private String tag3; + + @Schema(description = "标签4") + private String tag4; + + @Schema(description = "标签5") + private String tag5; + + @Schema(description = "标签6") + private String tag6; + + @Schema(description = "标签7") + private String tag7; + + @Schema(description = "标签8") + private String tag8; + + @Schema(description = "标签9") + private String tag9; + + @Schema(description = "标签10") + private String tag10; + + @Schema(description= "任务ID") + private String taskId; + + @Schema(description= "算例ID") + private String runId; +} diff --git a/common/src/main/java/com/sdm/common/entity/req/data/UploadFilesReq.java b/common/src/main/java/com/sdm/common/entity/req/data/UploadFilesReq.java index a3c9aa4b..cd0ddd9d 100644 --- a/common/src/main/java/com/sdm/common/entity/req/data/UploadFilesReq.java +++ b/common/src/main/java/com/sdm/common/entity/req/data/UploadFilesReq.java @@ -1,6 +1,7 @@ package com.sdm.common.entity.req.data; import com.alibaba.fastjson2.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.TableField; import com.sdm.common.entity.enums.FileBizTypeEnum; import com.sdm.common.entity.req.system.DictTagReq; import io.swagger.v3.oas.annotations.media.Schema; @@ -73,10 +74,16 @@ public class UploadFilesReq { private Integer fileType; /** - * 之前的预留tag字段,现在取tag1存储序号用来对生成任务报告里的图片排序 + * 存储序号用来对生成任务报告里的图片排序 */ - @Schema(description = "排序号") - private String tag1; + @Schema(description= "算例下文件的排序字段,数值越小越靠前") + private Integer sortOrder; + + /** + * 标签请求参数 设置tag1-tag10 ,taskId, runId记录文件所属节点信息 + */ + @Schema(description = "标签请求参数") + private TagReq tagReq; // ---------------------------------------------------------------- // 很重要,用于设置标签,通过autoFillDictTags切面 ,设置dictTagIdsCache 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 fe0b5331..820282f3 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 @@ -174,6 +174,15 @@ public class FileMetadataInfo implements Serializable { @TableField("tag10") private String tag10; + @TableField(value = "task_id") + @Schema(description= "任务ID") + private String taskId; + + @TableField(value = "run_id") + @Schema(description= "算例ID") + private String runId; + + @Schema(description= "approvalStatus") @TableField(value = "approvalStatus") private String approvalStatus; @@ -217,6 +226,10 @@ public class FileMetadataInfo implements Serializable { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime recycleExpireAt; + @Schema(description= "算例下文件的排序字段,数值越小越靠前") + @TableField("sort_order") + private Integer sortOrder; + @Schema(description= "cidFlowReviewer:cid审核电子流程里面的评审人,只有列表展示使用") @TableField(value = "cidFlowReviewer", insertStrategy = FieldStrategy.NEVER,select = false,updateStrategy = FieldStrategy.NEVER) private String cidFlowReviewer; 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 677e0955..e8473f60 100644 --- a/data/src/main/java/com/sdm/data/service/IDataFileService.java +++ b/data/src/main/java/com/sdm/data/service/IDataFileService.java @@ -28,13 +28,6 @@ import com.sdm.common.entity.resp.data.BatchCreateNormalDirResp; */ @Service public interface IDataFileService { - - /** - * 将文件或目录移入回收站(支持自动重命名释放路径) - * 内部方法,不校验权限 - */ - default void moveFileToRecycleBin(FileMetadataInfo fileMetadataInfo) {} - /** * 创建目录 * @param req 创建目录请求参数 @@ -52,6 +45,15 @@ public interface IDataFileService { return null; } + /** + * 批量创建普通目录 + * @param req 批量创建普通目录请求参数 + * @return 创建结果响应(包含成功列表和失败列表) + */ + default SdmResponse batchCreateNormalDirs(BatchCreateNormalDirReq req) { + return null; + } + default SdmResponse isDirEmpty(Long dirId) { return null; } @@ -135,6 +137,13 @@ public interface IDataFileService { */ SdmResponse fileSearch(FileSearchReq req); + + /** + * 将文件或目录移入回收站(支持自动重命名释放路径) + * 内部方法,不校验权限 + */ + default void moveFileToRecycleBin(FileMetadataInfo fileMetadataInfo) {} + /** * 查询回收站列表 * @param req 回收站列表查询请求参数 @@ -454,14 +463,4 @@ public interface IDataFileService { default SdmResponse> queryFileListByIdList(QueryFileReq queryFileReq){return null;} default SdmResponse queryFileIdByNodeId(QueryFileIdReq queryFileIdReq){return null;}; - - /** - * 批量创建普通目录 - * @param req 批量创建普通目录请求参数 - * @return 创建结果响应(包含成功列表和失败列表) - */ - default SdmResponse batchCreateNormalDirs(BatchCreateNormalDirReq req) { - return null; - } - } \ No newline at end of file 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 73dc991a..f77d1f34 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 @@ -326,7 +326,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { minioService.createDirectoryByObjectKey(dirMinioObjectKey,null); // 创建目录元数据并保存到数据库 - FileMetadataInfo dirInfo = createDirectoryMetadata(dirMinioObjectKey, dirName, false, rootDirId, uuId, uuIdOwnType, req.getDirType()); + FileMetadataInfo dirInfo = createDirectoryMetadata(dirMinioObjectKey, dirName, false, rootDirId, uuId, uuIdOwnType, req.getDirType(),req.getTagReq()); fileMetadataInfoService.save(dirInfo); // 创建默认权限记录 @@ -392,7 +392,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { minioService.createDirectoryByObjectKey(childDirMinioObjectKey,null); // 创建子目录元数据并保存到数据库 - FileMetadataInfo dirInfo = createDirectoryMetadata(childDirMinioObjectKey, req.getDirName(), false, parDirId, req.getUuId(), req.getUuIdOwnType(), parDirInfo.getDirType()); + FileMetadataInfo dirInfo = createDirectoryMetadata(childDirMinioObjectKey, req.getDirName(), false, parDirId, req.getUuId(), req.getUuIdOwnType(), parDirInfo.getDirType(),req.getTagReq()); fileMetadataInfoService.save(dirInfo); // 创建默认权限记录 @@ -426,7 +426,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { */ private FileMetadataInfo createDirectoryMetadata(String minioObjectKey, String originalName, boolean isRoot, Long parentId, String uuid, - String uuIdOwnType, Integer dirType) { + String uuIdOwnType, Integer dirType,TagReq tagReq) { FileMetadataInfo dirInfo = new FileMetadataInfo(); dirInfo.setObjectKey(minioObjectKey); dirInfo.setBucketName(minioService.getCurrentTenantBucketName()); @@ -445,6 +445,21 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { if (uuIdOwnType != null) { dirInfo.setRelatedResourceUuidOwnType(uuIdOwnType); } + + if (tagReq != null) { + dirInfo.setTag1(tagReq.getTag1()); + dirInfo.setTag2(tagReq.getTag2()); + dirInfo.setTag3(tagReq.getTag3()); + dirInfo.setTag4(tagReq.getTag4()); + dirInfo.setTag5(tagReq.getTag5()); + dirInfo.setTag6(tagReq.getTag6()); + dirInfo.setTag7(tagReq.getTag7()); + dirInfo.setTag8(tagReq.getTag8()); + dirInfo.setTag9(tagReq.getTag9()); + dirInfo.setTag10(tagReq.getTag10()); + dirInfo.setTaskId(tagReq.getTaskId()); + dirInfo.setRunId(tagReq.getRunId()); + } return dirInfo; } @@ -460,7 +475,8 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { * @param fileSize 文件大小 * @return 创建后的文件元数据信息 */ - private FileMetadataInfo createFileMetadata(String filePath, String fileName, String projectId, String analysisDirectionId, String remarks, Long parentId, Long fileSize, String tag1 + private FileMetadataInfo createFileMetadata(String filePath, String fileName, String projectId, + String analysisDirectionId, String remarks, Long parentId, Long fileSize, Integer sortOrder,TagReq tagReq ) { FileMetadataInfo fileInfo = new FileMetadataInfo(); fileInfo.setObjectKey(filePath); @@ -475,7 +491,21 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { fileInfo.setCreatorId(ThreadLocalContext.getUserId()); fileInfo.setTenantId(ThreadLocalContext.getTenantId()); fileInfo.setFileSize(fileSize); - fileInfo.setTag1(tag1); + fileInfo.setSortOrder(sortOrder); + if (tagReq != null) { + fileInfo.setTag1(tagReq.getTag1()); + fileInfo.setTag2(tagReq.getTag2()); + fileInfo.setTag3(tagReq.getTag3()); + fileInfo.setTag4(tagReq.getTag4()); + fileInfo.setTag5(tagReq.getTag5()); + fileInfo.setTag6(tagReq.getTag6()); + fileInfo.setTag7(tagReq.getTag7()); + fileInfo.setTag8(tagReq.getTag8()); + fileInfo.setTag9(tagReq.getTag9()); + fileInfo.setTag10(tagReq.getTag10()); + fileInfo.setTaskId(tagReq.getTaskId()); + fileInfo.setRunId(tagReq.getRunId()); + } return fileInfo; } @@ -1434,7 +1464,8 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { null, // parentId null, null, - dirType.getValue() + dirType.getValue(), + null ); // 显式设置关键字段 dirInfo.setTenantId(tenantId); @@ -1650,7 +1681,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { minioService.copyFile(oldDirMinioObjectKey, newDirMinioObjectKey,sourceMetadataInfo.getBucketName()); // 创建目录元数据并保存到数据库 FileMetadataInfo fileInfo = createFileMetadata(newDirMinioObjectKey, sourceMetadataInfo.getOriginalName(), - null, null, null, targetParentMetadataInfo.getId(), sourceMetadataInfo.getFileSize(), sourceMetadataInfo.getTag1()); + null, null, null, targetParentMetadataInfo.getId(), sourceMetadataInfo.getFileSize(), sourceMetadataInfo.getSortOrder(),null); fileMetadataInfoService.save(fileInfo); UploadFilesReq uploadFilesReq = new UploadFilesReq(); @@ -2090,7 +2121,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { minioService.uploadFile(req.getFile(), fileMinioObjectKey, null, dirMetadataInfo.getBucketName()); FileMetadataInfo fileInfo = createFileMetadata(fileMinioObjectKey, originalName, - req.getProjectId(), req.getAnalysisDirectionId(), req.getRemarks(), dirMetadataInfo.getId(), req.getFile().getSize(), req.getTag1() + req.getProjectId(), req.getAnalysisDirectionId(), req.getRemarks(), dirMetadataInfo.getId(), req.getFile().getSize(), req.getSortOrder(),req.getTagReq() ); fileMetadataInfoService.save(fileInfo); @@ -2129,7 +2160,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { try { FileMetadataInfo fileInfo = createFileMetadata(fileMinioObjectKey, fileReq.getFileName(), - req.getProjectId(), req.getAnalysisDirectionId(), req.getRemarks(), dirMetadataInfo.getId(), fileReq.getSize(), null); + req.getProjectId(), req.getAnalysisDirectionId(), req.getRemarks(), dirMetadataInfo.getId(), fileReq.getSize(), null,req.getTagReq()); fileInfo.setUploadTaskId(req.getUploadTaskId()); fileInfo.setTemplateId(req.getTemplateId()); fileInfo.setTemplateName(req.getTemplateName()); @@ -2976,7 +3007,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { // 创建目录元数据并保存到数据库 FileMetadataInfo fileInfo = createFileMetadata(avatarMinioObjectKey, newFilename, - null, null, null, parAvatarDirId, avatar.getSize(), null); + null, null, null, parAvatarDirId, avatar.getSize(), null,null); fileMetadataInfoService.save(fileInfo); JSONObject jsonObject = new JSONObject(); jsonObject.put("avatarId", fileInfo.getId()); @@ -3037,7 +3068,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { // 创建目录元数据并保存到数据库 FileMetadataInfo fileInfo = createFileMetadata(simulationParamMinioObjectKey, originalFilename, - null, null, null, parSimulationParamDirId, paramFile.getSize(), null); + null, null, null, parSimulationParamDirId, paramFile.getSize(), null,null); // 设置文件状态为审批中 暂不可见 fileInfo.setApprovalStatus(ApprovalFileDataStatusEnum.PENDING.getKey()); fileInfo.setApproveType(ApproveFileDataTypeEnum.UPLOAD_REVIEWING.getCode()); @@ -3133,7 +3164,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { // 创建目录元数据并保存到数据库 FileMetadataInfo fileInfo = createFileMetadata(trainingMinioObjectKey, originalFilename, - null, null, null, parTrainModelDirId, trainModelFile.getSize(), null); + null, null, null, parTrainModelDirId, trainModelFile.getSize(), null,null); fileMetadataInfoService.save(fileInfo); return SdmResponse.success(fileInfo.getId()); } catch (Exception e) { @@ -3178,7 +3209,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { // 创建目录元数据并保存到数据库 FileMetadataInfo fileInfo = createFileMetadata(fileMinioObjectKey, originalFilename, - null, null, null, parDirId, file.getSize(), null); + null, null, null, parDirId, file.getSize(), null,null); fileMetadataInfoService.save(fileInfo); return SdmResponse.success(fileInfo.getId()); } catch (Exception e) { @@ -4544,7 +4575,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { // 创建目录元数据 FileMetadataInfo dirInfo = createDirectoryMetadata( childDirMinioObjectKey, node.getDirName(), false, parentDbId, - node.getUuId(), node.getUuIdOwnType(), ctx.dirType); + node.getUuId(), node.getUuIdOwnType(), ctx.dirType,node.getTagReq()); // 预先更新ObjectKey映射(供下一层使用) ctx.getUuidToObjectKeyMap().put(node.getUuId(), childDirMinioObjectKey); @@ -4841,7 +4872,8 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { parentDir.getId(), item.getFolderUuid(), // 保存 UUID null, - parentDir.getDirType()); + parentDir.getDirType(), + item.getTagReq()); newDirs.add(dirInfo); minioKeys.add(objectKey); diff --git a/project/src/main/java/com/sdm/project/service/impl/SimulationRunServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/SimulationRunServiceImpl.java index b5dde673..ae981cea 100644 --- a/project/src/main/java/com/sdm/project/service/impl/SimulationRunServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/SimulationRunServiceImpl.java @@ -1805,7 +1805,7 @@ public class SimulationRunServiceImpl extends ServiceImpl