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) + + + + +