refactor: jpa联动适配 (#16814)

This commit is contained in:
王嘉豪
2025-08-25 18:40:19 +08:00
committed by GitHub
parent c916755035
commit 2a6fe7380c
3 changed files with 47 additions and 1 deletions

View File

@@ -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<SnapshotC
}
List<SnapshotCoreChartView> findByIdInAndTypeNot(List<Long> ids, String type);
@Query("SELECT c.id as id FROM SnapshotCoreChartView c WHERE c.id IN :ids AND c.linkageActive = :linkageActive")
List<Long> findIdsByIdInAndLinkageActive(@Param("ids") List<Long> ids, @Param("linkageActive") Boolean linkageActive);
}

View File

@@ -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<Sn
// @EntityGraph(attributePaths = {"linkageFields"})
List<SnapshotVisualizationLinkage> findByDvIdAndSourceViewId(Long dvId, Long sourceViewId);
List<SnapshotVisualizationLinkage> findByDvIdAndLinkageActive(Long dvId, Boolean linkageActive);
}

View File

@@ -364,6 +364,45 @@ public class VisualizationLinkageManage {
}
public List<LinkageInfoDTO> getPanelAllLinkageInfoSnapshot(Long dvId) {
return null;
// 1. 查询符合条件的联动信息
List<SnapshotVisualizationLinkage> linkages = snapshotLinkageRepository.findByDvIdAndLinkageActive(dvId, true);
// 2. 创建分组Map
Map<String, List<String>> groupedResults = new HashMap<>();
List<Long> sourceViewIds = linkages.stream()
.map(SnapshotVisualizationLinkage::getSourceViewId)
.toList();
List<Long> linkageIds = linkages.stream()
.map(SnapshotVisualizationLinkage::getId)
.toList();
List<Long> sourceViewIdsActive = snapshotCoreChartViewRepository.findIdsByIdInAndLinkageActive(sourceViewIds,true);
List<SnapshotVisualizationLinkageField> linkageFields = snapshotVisualizationLinkageFieldRepository.findByLinkageIdIn(linkageIds);
Map<Long, List<SnapshotVisualizationLinkageField>> 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());
}
}