优化三重一大查询接口

This commit is contained in:
2025-11-06 17:57:33 +08:00
parent 3d8e4e6832
commit 1c7f5c878e
3 changed files with 23 additions and 21 deletions

View File

@@ -11,6 +11,8 @@ import com.gxwebsoft.ai.utils.ExcelExportTool;
import com.gxwebsoft.common.core.web.ApiResult; import com.gxwebsoft.common.core.web.ApiResult;
import com.gxwebsoft.common.core.web.BaseController; import com.gxwebsoft.common.core.web.BaseController;
import com.gxwebsoft.common.system.entity.User; import com.gxwebsoft.common.system.entity.User;
import com.gxwebsoft.pwl.entity.PwlProjectLibrary;
import com.gxwebsoft.pwl.service.PwlProjectLibraryService;
import com.gxwebsoft.ai.service.AiCloudDocService; import com.gxwebsoft.ai.service.AiCloudDocService;
import com.gxwebsoft.ai.service.AiCloudFileService; import com.gxwebsoft.ai.service.AiCloudFileService;
import com.gxwebsoft.ai.service.AuditContent3TripleService; import com.gxwebsoft.ai.service.AuditContent3TripleService;
@@ -51,6 +53,9 @@ public class AuditContent3Controller extends BaseController {
@Autowired @Autowired
private KnowledgeBaseService knowledgeBaseService; private KnowledgeBaseService knowledgeBaseService;
@Autowired
private PwlProjectLibraryService pwlProjectLibraryService;
/** /**
* 生成三重一大制度对比分析表数据 * 生成三重一大制度对比分析表数据
*/ */
@@ -59,6 +64,7 @@ public class AuditContent3Controller extends BaseController {
public ApiResult<?> generateTripleOneTable(@RequestBody AuditContentRequest request) { public ApiResult<?> generateTripleOneTable(@RequestBody AuditContentRequest request) {
final User loginUser = getLoginUser(); final User loginUser = getLoginUser();
String kbIdTmp = ""; String kbIdTmp = "";
String libraryKbIds = "";
try { try {
// 创建临时知识库(如果需要) // 创建临时知识库(如果需要)
@@ -66,11 +72,19 @@ public class AuditContent3Controller extends BaseController {
kbIdTmp = createTempKnowledgeBase(request); kbIdTmp = createTempKnowledgeBase(request);
} }
// 提前查询项目库信息
if (StrUtil.isNotBlank(request.getLibraryIds())) {
List<String> idList = StrUtil.split(request.getLibraryIds(), ',');
List<PwlProjectLibrary> ret = pwlProjectLibraryService.list(
new LambdaQueryWrapper<PwlProjectLibrary>().in(PwlProjectLibrary::getId, idList));
libraryKbIds = ret.stream().map(PwlProjectLibrary::getKbId).collect(Collectors.joining(","));
}
// 生成三重一大制度对比分析表数据 // 生成三重一大制度对比分析表数据
String knowledgeBaseId = StrUtil.isNotBlank(kbIdTmp) ? kbIdTmp : request.getKbIds(); String knowledgeBaseId = StrUtil.isNotBlank(kbIdTmp) ? kbIdTmp : request.getKbIds();
JSONObject result = auditContent3TripleService.generateTripleOneTableData( JSONObject result = auditContent3TripleService.generateTripleOneTableData(
knowledgeBaseId, knowledgeBaseId,
request.getLibraryIds(), libraryKbIds,
request.getProjectLibrary(), request.getProjectLibrary(),
loginUser.getUsername(), loginUser.getUsername(),
request.getHistory(), request.getHistory(),

View File

@@ -10,6 +10,6 @@ public interface AuditContent3TripleService {
/** /**
* 生成三重一大制度对比分析表数据 * 生成三重一大制度对比分析表数据
*/ */
JSONObject generateTripleOneTableData(String kbIds, String libraryIds, String projectLibrary, JSONObject generateTripleOneTableData(String kbIds, String libraryKbIds, String projectLibrary,
String userName, String history, String suggestion); String userName, String history, String suggestion);
} }

View File

@@ -5,7 +5,6 @@ import com.aliyun.bailian20231229.models.RetrieveResponse;
import com.aliyun.bailian20231229.models.RetrieveResponseBody; import com.aliyun.bailian20231229.models.RetrieveResponseBody;
import com.aliyun.bailian20231229.models.RetrieveResponseBody.RetrieveResponseBodyData; import com.aliyun.bailian20231229.models.RetrieveResponseBody.RetrieveResponseBodyData;
import com.aliyun.bailian20231229.models.RetrieveResponseBody.RetrieveResponseBodyDataNodes; import com.aliyun.bailian20231229.models.RetrieveResponseBody.RetrieveResponseBodyDataNodes;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
@@ -14,8 +13,6 @@ import com.gxwebsoft.ai.config.KnowledgeBaseConfig;
import com.gxwebsoft.ai.factory.KnowledgeBaseClientFactory; import com.gxwebsoft.ai.factory.KnowledgeBaseClientFactory;
import com.gxwebsoft.ai.service.AuditContent3TripleService; import com.gxwebsoft.ai.service.AuditContent3TripleService;
import com.gxwebsoft.ai.util.KnowledgeBaseUtil; import com.gxwebsoft.ai.util.KnowledgeBaseUtil;
import com.gxwebsoft.pwl.entity.PwlProjectLibrary;
import com.gxwebsoft.pwl.service.PwlProjectLibraryService;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
@@ -27,7 +24,6 @@ import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Slf4j @Slf4j
@@ -40,9 +36,6 @@ public class AuditContent3TripleServiceImpl implements AuditContent3TripleServic
@Autowired @Autowired
private KnowledgeBaseConfig config; private KnowledgeBaseConfig config;
@Autowired
private PwlProjectLibraryService pwlProjectLibraryService;
// 工作流配置 // 工作流配置
private static final String TRIPLE_ONE_WORKFLOW_URL = "http://1.14.159.185:8180/v1/workflows/run"; private static final String TRIPLE_ONE_WORKFLOW_URL = "http://1.14.159.185:8180/v1/workflows/run";
private static final String TRIPLE_ONE_TOKEN = "Bearer app-tjXbmHDE6daMbYOT4O13ev2X"; private static final String TRIPLE_ONE_TOKEN = "Bearer app-tjXbmHDE6daMbYOT4O13ev2X";
@@ -120,10 +113,10 @@ public class AuditContent3TripleServiceImpl implements AuditContent3TripleServic
} }
@Override @Override
public JSONObject generateTripleOneTableData(String kbIds, String libraryIds, String projectLibrary, public JSONObject generateTripleOneTableData(String kbIds, String libraryKbIds, String projectLibrary,
String userName, String history, String suggestion) { String userName, String history, String suggestion) {
log.info("开始生成三重一大制度对比分析表数据 - 用户: {}, kbIds: {}, libraryIds: {}, projectLibrary: {}", log.info("开始生成三重一大制度对比分析表数据 - 用户: {}, kbIds: {}, libraryIds: {}, projectLibrary: {}",
userName, kbIds, libraryIds, projectLibrary); userName, kbIds, libraryKbIds, projectLibrary);
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
@@ -134,7 +127,7 @@ public class AuditContent3TripleServiceImpl implements AuditContent3TripleServic
for (String category : CATEGORY_ORDER) { for (String category : CATEGORY_ORDER) {
CompletableFuture<JSONArray> future = generateCategoryDataAsync( CompletableFuture<JSONArray> future = generateCategoryDataAsync(
category, kbIds, libraryIds, projectLibrary, userName, history, suggestion category, kbIds, libraryKbIds, projectLibrary, userName, history, suggestion
); );
futures.put(category, future); futures.put(category, future);
} }
@@ -182,7 +175,7 @@ public class AuditContent3TripleServiceImpl implements AuditContent3TripleServic
* 异步生成单个分类的数据 * 异步生成单个分类的数据
*/ */
@Async @Async
public CompletableFuture<JSONArray> generateCategoryDataAsync(String category, String kbIds, String libraryIds, public CompletableFuture<JSONArray> generateCategoryDataAsync(String category, String kbIds, String libraryKbIds,
String projectLibrary, String userName, String projectLibrary, String userName,
String history, String suggestion) { String history, String suggestion) {
return CompletableFuture.supplyAsync(() -> { return CompletableFuture.supplyAsync(() -> {
@@ -191,7 +184,7 @@ public class AuditContent3TripleServiceImpl implements AuditContent3TripleServic
// 1. 为当前分类召回相关知识 // 1. 为当前分类召回相关知识
Map<String, List<String>> knowledgeSources = retrieveKnowledgeForCategory( Map<String, List<String>> knowledgeSources = retrieveKnowledgeForCategory(
category, kbIds, libraryIds, projectLibrary category, kbIds, libraryKbIds, projectLibrary
); );
// 2. 生成当前分类的数据 // 2. 生成当前分类的数据
@@ -214,7 +207,7 @@ public class AuditContent3TripleServiceImpl implements AuditContent3TripleServic
* 为单个分类检索相关知识 * 为单个分类检索相关知识
*/ */
private Map<String, List<String>> retrieveKnowledgeForCategory(String category, String kbIds, private Map<String, List<String>> retrieveKnowledgeForCategory(String category, String kbIds,
String libraryIds, String projectLibrary) { String libraryKbIds, String projectLibrary) {
Map<String, List<String>> knowledgeSources = new HashMap<>(); Map<String, List<String>> knowledgeSources = new HashMap<>();
knowledgeSources.put("enterprise", new ArrayList<>()); knowledgeSources.put("enterprise", new ArrayList<>());
knowledgeSources.put("regulation", new ArrayList<>()); knowledgeSources.put("regulation", new ArrayList<>());
@@ -233,12 +226,7 @@ public class AuditContent3TripleServiceImpl implements AuditContent3TripleServic
} }
// 公共法律法规库检索 // 公共法律法规库检索
if (StrUtil.isNotBlank(libraryIds)) { if (StrUtil.isNotBlank(libraryKbIds)) {
List<String> idList = StrUtil.split(libraryIds, ',');
List<PwlProjectLibrary> ret = pwlProjectLibraryService.list(
new LambdaQueryWrapper<PwlProjectLibrary>().in(PwlProjectLibrary::getId, idList));
String libraryKbIds = ret.stream().map(PwlProjectLibrary::getKbId).collect(Collectors.joining(","));
Arrays.stream(libraryKbIds.split(",")) Arrays.stream(libraryKbIds.split(","))
.map(String::trim) .map(String::trim)
.filter(StrUtil::isNotBlank) .filter(StrUtil::isNotBlank)