From 2a6fe7380c925d9aef77f6ca52f2e261cde0bd5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=98=89=E8=B1=AA?= <42510293+ziyujiahao@users.noreply.github.com> Date: Mon, 25 Aug 2025 18:40:19 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20jpa=E8=81=94=E5=8A=A8=E9=80=82?= =?UTF-8?q?=E9=85=8D=20(#16814)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SnapshotCoreChartViewRepository.java | 5 +++ ...napshotVisualizationLinkageRepository.java | 2 + .../manage/VisualizationLinkageManage.java | 41 ++++++++++++++++++- 3 files changed, 47 insertions(+), 1 deletion(-) diff --git a/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/SnapshotCoreChartViewRepository.java b/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/SnapshotCoreChartViewRepository.java index 859a9123ac..1569203917 100644 --- a/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/SnapshotCoreChartViewRepository.java +++ b/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/SnapshotCoreChartViewRepository.java @@ -2,9 +2,11 @@ package io.dataease.visualization.dao.auto.mapper; import io.dataease.visualization.dao.auto.entity.SnapshotCoreChartView; +import io.lettuce.core.dynamic.annotation.Param; import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -40,4 +42,7 @@ public interface SnapshotCoreChartViewRepository extends JpaRepository findByIdInAndTypeNot(List ids, String type); + + @Query("SELECT c.id as id FROM SnapshotCoreChartView c WHERE c.id IN :ids AND c.linkageActive = :linkageActive") + List findIdsByIdInAndLinkageActive(@Param("ids") List ids, @Param("linkageActive") Boolean linkageActive); } diff --git a/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/SnapshotVisualizationLinkageRepository.java b/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/SnapshotVisualizationLinkageRepository.java index 0a54c3443f..7890c822d1 100644 --- a/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/SnapshotVisualizationLinkageRepository.java +++ b/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/SnapshotVisualizationLinkageRepository.java @@ -2,6 +2,7 @@ package io.dataease.visualization.dao.auto.mapper; import io.dataease.visualization.dao.auto.entity.SnapshotVisualizationLinkage; +import io.dataease.visualization.dao.auto.entity.VisualizationLinkage; import org.springframework.data.jpa.repository.EntityGraph; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; @@ -14,4 +15,5 @@ public interface SnapshotVisualizationLinkageRepository extends JpaRepository findByDvIdAndSourceViewId(Long dvId, Long sourceViewId); + List findByDvIdAndLinkageActive(Long dvId, Boolean linkageActive); } diff --git a/core/core-backend/src/main/java/io/dataease/visualization/manage/VisualizationLinkageManage.java b/core/core-backend/src/main/java/io/dataease/visualization/manage/VisualizationLinkageManage.java index fdfa608160..fc495e663c 100644 --- a/core/core-backend/src/main/java/io/dataease/visualization/manage/VisualizationLinkageManage.java +++ b/core/core-backend/src/main/java/io/dataease/visualization/manage/VisualizationLinkageManage.java @@ -364,6 +364,45 @@ public class VisualizationLinkageManage { } public List getPanelAllLinkageInfoSnapshot(Long dvId) { - return null; + // 1. 查询符合条件的联动信息 + List linkages = snapshotLinkageRepository.findByDvIdAndLinkageActive(dvId, true); + // 2. 创建分组Map + Map> groupedResults = new HashMap<>(); + List sourceViewIds = linkages.stream() + .map(SnapshotVisualizationLinkage::getSourceViewId) + .toList(); + List linkageIds = linkages.stream() + .map(SnapshotVisualizationLinkage::getId) + .toList(); + List sourceViewIdsActive = snapshotCoreChartViewRepository.findIdsByIdInAndLinkageActive(sourceViewIds,true); + + List linkageFields = snapshotVisualizationLinkageFieldRepository.findByLinkageIdIn(linkageIds); + Map> groupedLinkageFields = linkageFields.stream() + .collect(Collectors.groupingBy( + SnapshotVisualizationLinkageField::getLinkageId, + Collectors.toList() + )); + // 3. 填充分组数据 + linkages.stream() + .filter(linkage -> sourceViewIdsActive.contains(linkage.getSourceViewId())) + .forEach(linkage -> { + groupedLinkageFields.get(linkage.getId()).stream() + .filter(field -> field.getId() != null) + .forEach(field -> { + String sourceKey = linkage.getSourceViewId() + "#" + field.getSourceField(); + String targetValue = linkage.getTargetViewId() + "#" + field.getTargetField(); + groupedResults.computeIfAbsent(sourceKey, k -> new ArrayList<>()).add(targetValue); + }); + }); + + // 4. 转换为 LinkageInfoDTO 列表 + return groupedResults.entrySet().stream() + .map(entry -> { + LinkageInfoDTO dto = new LinkageInfoDTO(); + dto.setSourceInfo(entry.getKey()); + dto.setTargetInfoList(entry.getValue()); + return dto; + }) + .collect(Collectors.toList()); } }