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());