mirror of
https://github.com/dataease/dataease.git
synced 2026-06-16 20:42:07 +08:00
refactor: jpa联动适配 (#16814)
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user