From c2bb3aba9c51bdeb7dbf69c597e6a052f02a5b22 Mon Sep 17 00:00:00 2001 From: tanggeng-RwHN2 Date: Thu, 4 Jun 2026 22:14:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=96=E8=AF=81=E5=8D=95=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E4=B8=8D=E5=86=8D=E5=81=9A=E5=8E=BB=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/AuditEvidenceServiceImpl.java | 15 ++++--- .../impl/KnowledgeBaseServiceImpl.java | 41 +++++++++++++++++-- 2 files changed, 47 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/gxwebsoft/ai/service/impl/AuditEvidenceServiceImpl.java b/src/main/java/com/gxwebsoft/ai/service/impl/AuditEvidenceServiceImpl.java index 0e35eda..9331a0d 100644 --- a/src/main/java/com/gxwebsoft/ai/service/impl/AuditEvidenceServiceImpl.java +++ b/src/main/java/com/gxwebsoft/ai/service/impl/AuditEvidenceServiceImpl.java @@ -20,6 +20,8 @@ import org.springframework.stereotype.Service; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; +import java.time.LocalDateTime; + @Slf4j @Service public class AuditEvidenceServiceImpl extends ServiceImpl implements AuditEvidenceService { @@ -334,15 +336,16 @@ public class AuditEvidenceServiceImpl extends ServiceImpl(1, "项目编号不能为空"); } + + AuditEvidence auditEvidence; - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + /*LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(AuditEvidence::getProjectId, request.getProjectId()) .eq(AuditEvidence::getAuditMatterType, request.getAuditMatterType()) .eq(AuditEvidence::getDeleted, 0); AuditEvidence existingEvidence = baseMapper.selectOne(queryWrapper); - - AuditEvidence auditEvidence; + if (existingEvidence != null) { // 3. 更新现有记录 log.info("发现已存在的记录,执行更新操作 - ID: {}", existingEvidence.getId()); @@ -389,7 +392,8 @@ public class AuditEvidenceServiceImpl extends ServiceImpl(Constants.RESULT_OK_CODE, Constants.RESULT_OK_MSG, auditEvidence); diff --git a/src/main/java/com/gxwebsoft/ai/service/impl/KnowledgeBaseServiceImpl.java b/src/main/java/com/gxwebsoft/ai/service/impl/KnowledgeBaseServiceImpl.java index 9c1d53c..fe5932c 100644 --- a/src/main/java/com/gxwebsoft/ai/service/impl/KnowledgeBaseServiceImpl.java +++ b/src/main/java/com/gxwebsoft/ai/service/impl/KnowledgeBaseServiceImpl.java @@ -8,6 +8,7 @@ import com.aliyun.bailian20231229.models.DeleteIndexResponse; import com.aliyun.bailian20231229.models.ListIndexDocumentsResponse; import com.aliyun.bailian20231229.models.ListIndicesResponse; import com.aliyun.bailian20231229.models.RetrieveResponse; +import com.aliyun.bailian20231229.models.RetrieveResponseBody; import com.aliyun.bailian20231229.models.RetrieveResponseBody.RetrieveResponseBodyDataNodes; import com.gxwebsoft.ai.config.KnowledgeBaseConfig; import com.gxwebsoft.ai.constants.KnowledgeBaseConstants; @@ -17,6 +18,7 @@ import com.gxwebsoft.ai.service.KnowledgeBaseService; import com.gxwebsoft.ai.util.AiCloudDataCenterUtil; import com.gxwebsoft.ai.util.AiCloudKnowledgeBaseUtil; import cn.hutool.core.util.StrUtil; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @@ -32,6 +34,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +@Slf4j @Service public class KnowledgeBaseServiceImpl implements KnowledgeBaseService { @@ -58,12 +61,42 @@ public class KnowledgeBaseServiceImpl implements KnowledgeBaseService { try { Client client = clientFactory.createClient(); RetrieveResponse resp = AiCloudKnowledgeBaseUtil.retrieveIndex(client, workspaceId, indexId, searchQuery); - for (RetrieveResponseBodyDataNodes node : resp.getBody().getData().getNodes()) { - result.add(node.getText()); - if (result.size() >= searchTopK) { - break; + + // 检查响应是否为空 + RetrieveResponseBody respBody = resp.getBody(); + if (respBody == null) { + throw new RuntimeException("知识库查询响应为空"); + } + + if("Index.BailianIndexServiceOutOfCredit".equals(respBody.getCode())){ + throw new RuntimeException("知识库查询失败: 账户余额不足"); + } + + // 检查数据是否为空 + RetrieveResponseBody.RetrieveResponseBodyData data = respBody.getData(); + if (data == null) { + // 记录警告但不抛异常,返回空结果集 + log.warn("警告: 知识库查询返回的数据为空,可能未找到相关文档"); + return result; + } + + // 检查节点列表是否为空 + List nodes = data.getNodes(); + if (nodes == null || nodes.isEmpty()) { + log.warn("警告: 知识库查询未找到匹配的节点"); + return result; + } + + for (RetrieveResponseBodyDataNodes node : nodes) { + if (node != null && StrUtil.isNotEmpty(node.getText())) { + result.add(node.getText()); + if (result.size() >= searchTopK) { + break; + } } } + } catch (RuntimeException e) { + throw e; } catch (Exception e) { throw new RuntimeException("查询知识库失败: " + e.getMessage(), e); }