From c5b2033a3dde110943d33335d9368394ca8824ba Mon Sep 17 00:00:00 2001 From: wkc <978997012@qq.com> Date: Wed, 3 Jun 2026 17:11:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=B5=84=E9=87=91=E5=9B=BE?= =?UTF-8?q?=E8=B0=B1=E4=B8=BB=E9=A2=98=E8=8A=82=E7=82=B9=E6=A3=80=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/mapper/CcdiFundGraphMapper.java | 4 + .../impl/CcdiFundGraphServiceImpl.java | 21 ++- .../ccdi/project/CcdiFundGraphMapper.xml | 145 ++++++++++++++---- .../2026-06-01-restore-graph-external-link.md | 20 +++ ...6-06-02-fund-graph-timeout-optimization.md | 79 ++++++++++ 5 files changed, 240 insertions(+), 29 deletions(-) create mode 100644 docs/reports/implementation/2026-06-01-restore-graph-external-link.md create mode 100644 docs/reports/implementation/2026-06-02-fund-graph-timeout-optimization.md diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/mapper/CcdiFundGraphMapper.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/mapper/CcdiFundGraphMapper.java index 6de311f2..051196b9 100644 --- a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/mapper/CcdiFundGraphMapper.java +++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/mapper/CcdiFundGraphMapper.java @@ -20,6 +20,10 @@ public interface CcdiFundGraphMapper { List selectFundGraphSubjects(@Param("query") CcdiFundGraphQueryDTO query); + List selectFundGraphSubjectsByExactKeyword(@Param("query") CcdiFundGraphQueryDTO query); + + List selectFundGraphSubjectsByName(@Param("query") CcdiFundGraphQueryDTO query); + List selectFundGraphEdges(@Param("query") CcdiFundGraphQueryDTO query); List selectFundGraphManualEdges(@Param("query") CcdiFundGraphQueryDTO query); diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiFundGraphServiceImpl.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiFundGraphServiceImpl.java index e93c643b..7c87eab5 100644 --- a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiFundGraphServiceImpl.java +++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiFundGraphServiceImpl.java @@ -48,7 +48,7 @@ public class CcdiFundGraphServiceImpl implements ICcdiFundGraphService { if (isBlank(query.getKeyword()) && isBlank(query.getObjectKey())) { return Collections.emptyList(); } - return fundGraphMapper.selectFundGraphSubjects(query); + return selectSubjects(query); } @Override @@ -134,13 +134,30 @@ public class CcdiFundGraphServiceImpl implements ICcdiFundGraphService { if (isBlank(query.getObjectKey()) && isBlank(query.getKeyword())) { return null; } - List subjects = fundGraphMapper.selectFundGraphSubjects(query); + List subjects = selectSubjects(query); if (subjects == null || subjects.isEmpty()) { return null; } return subjects.get(0); } + private List selectSubjects(CcdiFundGraphQueryDTO query) { + if (query == null) { + return Collections.emptyList(); + } + if (!isBlank(query.getObjectKey())) { + return fundGraphMapper.selectFundGraphSubjects(query); + } + if (isBlank(query.getKeyword())) { + return Collections.emptyList(); + } + List exactSubjects = fundGraphMapper.selectFundGraphSubjectsByExactKeyword(query); + if (exactSubjects != null && !exactSubjects.isEmpty()) { + return exactSubjects; + } + return fundGraphMapper.selectFundGraphSubjectsByName(query); + } + private List buildNodes(CcdiFundGraphNodeVO centerNode, List edges) { Map nodeMap = new LinkedHashMap<>(); Map subjectCache = new LinkedHashMap<>(); diff --git a/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiFundGraphMapper.xml b/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiFundGraphMapper.xml index aa76e935..25e2806b 100644 --- a/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiFundGraphMapper.xml +++ b/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiFundGraphMapper.xml @@ -116,17 +116,79 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" INNER JOIN lx_fund_flow_subject_node to_subject ON CONCAT('idno_node/', to_subject.object_key) = to_own.from_key WHERE 1 = 1 - - AND ( - from_subject.object_key = (#{query.objectKey} COLLATE utf8mb4_general_ci) - OR to_subject.object_key = (#{query.objectKey} COLLATE utf8mb4_general_ci) - ) - - + SELECT + FROM lx_fund_flow_subject_node n - WHERE 1 = 1 - - AND n.object_key = (#{query.objectKey} COLLATE utf8mb4_general_ci) - - - - AND ( - n.idnocfno = (TRIM(#{query.keyword}) COLLATE utf8mb4_general_ci) - OR n.name LIKE (CONCAT('%', TRIM(#{query.keyword}), '%') COLLATE utf8mb4_general_ci) - OR n.object_key = (TRIM(#{query.keyword}) COLLATE utf8mb4_general_ci) - ) - - + WHERE n.object_key = (#{query.objectKey} COLLATE utf8mb4_general_ci) + + + + +