From c8ddc5920e7ddc3f43d0f3fe76128b142c3c7964 Mon Sep 17 00:00:00 2001 From: gulongcheng <474084054@qq.com> Date: Wed, 21 Jan 2026 16:01:30 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9F=A5=E8=AF=86=E5=BA=93=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=89=80=E5=B1=9E=E5=BA=93=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/pom.xml | 1 + .../bo/ApprovalFileDataContentsModel.java | 1 + .../service/approve/FileApproveExecutor.java | 1 + .../approve/FileApproveRequestBuilder.java | 1 + .../impl/MinioFileIDataFileServiceImpl.java | 31 +++++++++++++++++++ 5 files changed, 35 insertions(+) diff --git a/data/pom.xml b/data/pom.xml index da46b148..0e1982bc 100644 --- a/data/pom.xml +++ b/data/pom.xml @@ -137,6 +137,7 @@ org.postgresql postgresql + 42.2.5 diff --git a/data/src/main/java/com/sdm/data/model/bo/ApprovalFileDataContentsModel.java b/data/src/main/java/com/sdm/data/model/bo/ApprovalFileDataContentsModel.java index 19cd41fe..f0e6bb8b 100644 --- a/data/src/main/java/com/sdm/data/model/bo/ApprovalFileDataContentsModel.java +++ b/data/src/main/java/com/sdm/data/model/bo/ApprovalFileDataContentsModel.java @@ -8,6 +8,7 @@ import java.util.List; /* 知识库文件增加审批流程,传递给电子流平台内容变化的数据 */ @Data public class ApprovalFileDataContentsModel { + private String knowledgeBaseName; // 所属知识库名 private List ids; //新增知识库,待审批的原始数据的id集合 diff --git a/data/src/main/java/com/sdm/data/service/approve/FileApproveExecutor.java b/data/src/main/java/com/sdm/data/service/approve/FileApproveExecutor.java index 5f57b206..8c676537 100644 --- a/data/src/main/java/com/sdm/data/service/approve/FileApproveExecutor.java +++ b/data/src/main/java/com/sdm/data/service/approve/FileApproveExecutor.java @@ -145,6 +145,7 @@ public class FileApproveExecutor { private String buildApproveContents(FileApproveRequestBuilder builder) { ApprovalFileDataContentsModel contentsModel = new ApprovalFileDataContentsModel(); + contentsModel.setKnowledgeBaseName(builder.getKnowledgeBaseName()); contentsModel.setIds(builder.getFileIds()); contentsModel.setContents(builder.getContents()); contentsModel.setApproveAction(builder.getApproveFileActionENUM().getCode()); diff --git a/data/src/main/java/com/sdm/data/service/approve/FileApproveRequestBuilder.java b/data/src/main/java/com/sdm/data/service/approve/FileApproveRequestBuilder.java index 9240ffc8..98c19de9 100644 --- a/data/src/main/java/com/sdm/data/service/approve/FileApproveRequestBuilder.java +++ b/data/src/main/java/com/sdm/data/service/approve/FileApproveRequestBuilder.java @@ -22,4 +22,5 @@ public class FileApproveRequestBuilder { private String templateName; private List beforeData; private List afterData; + private String knowledgeBaseName; // 所属知识库名 } \ 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 07b0ebe8..3b3150bd 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 @@ -575,6 +575,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { .beforeData(List.of(deleteFileMetadataInfo)) .templateId(req.getTemplateId()) .templateName(req.getTemplateName()) + .knowledgeBaseName(extractRelativePath(dirMetadataInfo)) .build(); if(CollectionUtils.isNotEmpty(deleteFileApproveRequestBuilder.getBeforeData())){ setCreatorNames(deleteFileApproveRequestBuilder.getBeforeData()); @@ -1589,6 +1590,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { .beforeData(List.of(fileInfo)) .templateId(req.getTemplateId()) .templateName(req.getTemplateName()) + .knowledgeBaseName(extractRelativePath(dirMetadataInfo)) .build(); if(CollectionUtils.isNotEmpty(uploadFileApproveRequestBuilder.getBeforeData())){ setCreatorNames(uploadFileApproveRequestBuilder.getBeforeData()); @@ -1622,6 +1624,32 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { return fileName.substring(lastDotIndex + 1); } + /** + * 从目录的objectKey中提取相对路径(移除目录类型前缀) + * 如:knowledge/知识库A/子目录/ → /知识库A/子目录/ + * @param dirMetadataInfo 文件所在目录的元数据 + * @return 目录相对路径(以/开头),如果提取失败则返回null + */ + private String extractRelativePath(FileMetadataInfo dirMetadataInfo) { + if (dirMetadataInfo == null || dirMetadataInfo.getObjectKey() == null || dirMetadataInfo.getDirType() == null) { + return null; + } + + DirTypeEnum dirTypeEnum = DirTypeEnum.getDirTypeByValue(dirMetadataInfo.getDirType()); + if (dirTypeEnum == null) { + return null; + } + + String objectKey = dirMetadataInfo.getObjectKey(); + String prefix = dirTypeEnum.getDirName(); + + if (!objectKey.startsWith(prefix)) { + return null; + } + + // 移除前缀:knowledge/知识库A/子目录/ → /知识库A/子目录/ + return objectKey.substring(prefix.length()); + } @Override public SdmResponse downloadRecord(AddDownloadRecordReq req) { @@ -1739,6 +1767,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { .afterData(List.of(tempFileMetadataInfo)) .templateId(req.getTemplateId()) .templateName(req.getTemplateName()) + .knowledgeBaseName(extractRelativePath(dirMetadataInfo)) .build(); if(CollectionUtils.isNotEmpty(updateFileMetaIntoApproveRequestBuilder.getBeforeData())){ setCreatorNames(updateFileMetaIntoApproveRequestBuilder.getBeforeData()); @@ -1875,6 +1904,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { .afterData(List.of(newFileInfo)) .templateId(req.getTemplateId()) .templateName(req.getTemplateName()) + .knowledgeBaseName(extractRelativePath(dirMetadataInfo)) .build(); if(CollectionUtils.isNotEmpty(uploadAndUpdateFileApproveRequestBuilder.getBeforeData())){ setCreatorNames(uploadAndUpdateFileApproveRequestBuilder.getBeforeData()); @@ -2704,6 +2734,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { .beforeData(succFileMetadataInfos) .templateId(firstFile.getTemplateId()) .templateName(firstFile.getTemplateName()) + .knowledgeBaseName(extractRelativePath(dirMetadataInfo)) .build(); if(CollectionUtils.isNotEmpty(batchUploadFileApproveRequestBuilder.getBeforeData())){ setCreatorNames(batchUploadFileApproveRequestBuilder.getBeforeData());