优化审计内容生成时文件过滤功能

This commit is contained in:
2026-05-21 18:15:57 +08:00
parent bdeae2dd18
commit 8ca9d0a18f
3 changed files with 76 additions and 11 deletions

View File

@@ -85,16 +85,68 @@ public abstract class BaseAuditContentController extends BaseController {
String libraryKbIds = "";
try {
// 查询项目库信息
// 查询公共库信息
libraryKbIds = getLibraryKbIds(request.getLibraryIds());
// 如果有docList/fileList计算去重的fileIds并设置到ThreadLocal
// if (hasUploadedFiles(request)) {
// Set<Integer> docIds = request.getDocList().stream().flatMap(docId -> aiCloudDocService.getSelfAndChildren(docId).stream()).map(AiCloudDoc::getId).collect(Collectors.toSet());
// List<AiCloudFile> relatedFiles = getRelatedFiles(docIds, request.getFileList());
// List<String> fileIds = relatedFiles.stream().map(AiCloudFile::getFileId).distinct().collect(Collectors.toList());
// Set<String> mainKbIds = Arrays.stream(request.getKbIds().split(",")).map(String::trim).filter(StrUtil::isNotBlank).collect(Collectors.toSet());
// AbstractAuditContentService.setRequestFileIds(mainKbIds, fileIds);
// }
// 如果有docList/fileList计算去重的fileIds并设置到ThreadLocal
if (hasUploadedFiles(request)) {
Set<Integer> docIds = request.getDocList().stream().flatMap(docId -> aiCloudDocService.getSelfAndChildren(docId).stream()).map(AiCloudDoc::getId).collect(Collectors.toSet());
List<AiCloudFile> relatedFiles = getRelatedFiles(docIds, request.getFileList());
List<String> fileIds = relatedFiles.stream().map(AiCloudFile::getFileId).distinct().collect(Collectors.toList());
Set<String> mainKbIds = Arrays.stream(request.getKbIds().split(",")).map(String::trim).filter(StrUtil::isNotBlank).collect(Collectors.toSet());
AbstractAuditContentService.setRequestFileIds(mainKbIds, fileIds);
// 查询这些文件所属的目录类型
Set<Integer> fileDocIds = relatedFiles.stream().map(AiCloudFile::getDocId).collect(Collectors.toSet());
Map<Integer, Integer> docTypeMap = aiCloudDocService.list(
new LambdaQueryWrapper<AiCloudDoc>()
.select(AiCloudDoc::getId, AiCloudDoc::getDocType)
.in(AiCloudDoc::getId, fileDocIds)
).stream().collect(Collectors.toMap(AiCloudDoc::getId, AiCloudDoc::getDocType));
// 区分项目库文件和公共库文件 (docType=3 为公共目录)
List<String> projectFileIds = new ArrayList<>();
List<String> libraryFileIds = new ArrayList<>();
for (AiCloudFile file : relatedFiles) {
Integer docType = docTypeMap.get(file.getDocId());
if (docType != null && docType == 3) {
libraryFileIds.add(file.getFileId());
} else {
projectFileIds.add(file.getFileId());
}
}
projectFileIds = projectFileIds.stream().distinct().collect(Collectors.toList());
libraryFileIds = libraryFileIds.stream().distinct().collect(Collectors.toList());
// 准备 kbIds 集合
Set<String> projectKbIds = Arrays.stream(request.getKbIds().split(","))
.map(String::trim).filter(StrUtil::isNotBlank).collect(Collectors.toSet());
Set<String> libraryKbIdsSet = Arrays.stream(libraryKbIds.split(","))
.map(String::trim).filter(StrUtil::isNotBlank).collect(Collectors.toSet());
// 确定需要过滤的知识库集合
Set<String> mainKbIds = new HashSet<>();
List<String> combinedFileIds = new ArrayList<>();
if (!projectFileIds.isEmpty()) {
mainKbIds.addAll(projectKbIds);
combinedFileIds.addAll(projectFileIds);
}
if (!libraryFileIds.isEmpty()) {
mainKbIds.addAll(libraryKbIdsSet);
combinedFileIds.addAll(libraryFileIds);
}
// 设置到ThreadLocal若mainKbIds为空表示无需要过滤的文件可传空集合或跳过
if (!mainKbIds.isEmpty()) {
AbstractAuditContentService.setRequestFileIds(mainKbIds, combinedFileIds);
}
}
// 生成数据(使用原来的默认知识库)
@@ -228,12 +280,25 @@ public abstract class BaseAuditContentController extends BaseController {
/**
* 获取项目库KB IDs
*/
// protected String getLibraryKbIds(String libraryIds) {
// if (StrUtil.isBlank(libraryIds)) {
// return "";
// }
// List<String> idList = StrUtil.split(libraryIds, ',');
// List<PwlProjectLibrary> ret = pwlProjectLibraryService.list(new LambdaQueryWrapper<PwlProjectLibrary>().in(PwlProjectLibrary::getId, idList));
// return ret.stream().map(PwlProjectLibrary::getKbId).filter(StrUtil::isNotBlank).collect(Collectors.joining(","));
// }
/**
* 获取公共库KB IDs
*/
protected String getLibraryKbIds(String libraryIds) {
if (StrUtil.isBlank(libraryIds)) {
return "";
LambdaQueryWrapper<PwlProjectLibrary> wrapper = new LambdaQueryWrapper<>();
if (StrUtil.isNotBlank(libraryIds)) {
List<String> idList = StrUtil.split(libraryIds, ',');
wrapper.in(PwlProjectLibrary::getId, idList);
}
List<String> idList = StrUtil.split(libraryIds, ',');
List<PwlProjectLibrary> ret = pwlProjectLibraryService.list(new LambdaQueryWrapper<PwlProjectLibrary>().in(PwlProjectLibrary::getId, idList));
List<PwlProjectLibrary> ret = pwlProjectLibraryService.list(wrapper);
return ret.stream().map(PwlProjectLibrary::getKbId).filter(StrUtil::isNotBlank).collect(Collectors.joining(","));
}

View File

@@ -16,7 +16,7 @@ public class AuditContentRequest {
private Long projectId;
/**
* 企业
* 项目
*/
private String kbIds;

View File

@@ -79,7 +79,7 @@ public class AuditContent11HistoryServiceImpl extends AbstractAuditContentServic
.addAll(queryKnowledgeBase(kbId, queries, 150)));
}
// 审计报告库检索
// 法律法规库检索
if (StrUtil.isNotBlank(libraryKbIds)) {
Arrays.stream(libraryKbIds.split(","))
.map(String::trim)
@@ -92,7 +92,7 @@ public class AuditContent11HistoryServiceImpl extends AbstractAuditContentServic
});
}
// 法律法规库检索(从项目库)
// 审计报告库检索(从案例库)
if (StrUtil.isNotBlank(projectLibrary)) {
knowledgeSources.get("regulations").addAll(
queryKnowledgeBase(projectLibrary,