From e164de61c0d290618ea6e9dcb068d52f225e1d29 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: Tue, 2 Sep 2025 17:53:30 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20Jpa=E9=80=82=E9=85=8D=20(#16883)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...otVisualizationLinkJumpInfoRepository.java | 13 +++++ ...apshotVisualizationLinkJumpRepository.java | 5 ++ ...ationLinkJumpTargetViewInfoRepository.java | 13 +++++ .../manage/VisualizationLinkJumpManage.java | 17 +++--- .../server/VisualizationLinkJumpService.java | 53 ++++++++++++++----- 5 files changed, 83 insertions(+), 18 deletions(-) diff --git a/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/SnapshotVisualizationLinkJumpInfoRepository.java b/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/SnapshotVisualizationLinkJumpInfoRepository.java index a45b376a3c..b498913f37 100644 --- a/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/SnapshotVisualizationLinkJumpInfoRepository.java +++ b/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/SnapshotVisualizationLinkJumpInfoRepository.java @@ -2,9 +2,12 @@ package io.dataease.visualization.dao.auto.mapper; import io.dataease.visualization.dao.auto.entity.SnapshotVisualizationLinkJumpInfo; +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.Modifying; +import org.springframework.data.jpa.repository.Query; import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -23,4 +26,14 @@ public interface SnapshotVisualizationLinkJumpInfoRepository extends JpaReposito } } + @Modifying + @Transactional + @Query("DELETE FROM SnapshotVisualizationLinkJumpInfo info " + + "WHERE info.linkJumpId IN (" + + " SELECT lj.id FROM SnapshotVisualizationLinkJump lj " + + " WHERE lj.sourceDvId = :dvId " + + " AND lj.sourceViewId = :viewId" + + ")") + void deleteBySourceDvIdAndViewId(@Param("dvId") Long dvId, @Param("viewId") Long viewId); + } diff --git a/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/SnapshotVisualizationLinkJumpRepository.java b/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/SnapshotVisualizationLinkJumpRepository.java index 298be153e6..58043d21e8 100644 --- a/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/SnapshotVisualizationLinkJumpRepository.java +++ b/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/SnapshotVisualizationLinkJumpRepository.java @@ -5,6 +5,7 @@ import io.dataease.visualization.dao.auto.entity.SnapshotVisualizationLinkJump; 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.Modifying; import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -23,4 +24,8 @@ public interface SnapshotVisualizationLinkJumpRepository extends JpaRepository tuples = queryFactory + .select( + coreChartView.id, + coreChartView.title, + coreChartView.type, + coreChartView.sceneId, + coreDatasetTableField.id, + coreDatasetTableField.originName, + coreDatasetTableField.name, + coreDatasetTableField.type, + coreDatasetTableField.deType + ) + .from(coreChartView) .leftJoin(coreDatasetTableField).on(coreChartView.tableId.eq(coreDatasetTableField.datasetGroupId)) .innerJoin(dataVisualizationInfo).on(coreChartView.sceneId.eq(dataVisualizationInfo.id)) .where(coreChartView.sceneId.eq(dvId)) .where(coreChartView.type.ne("VQuery")) .where(coreChartView.tableId.isNotNull()) .where(dataVisualizationInfo.id.eq(dvId)) - .where(dataVisualizationInfo.componentData.contains(coreChartView.id.toString())).fetch(); + .fetch(); + Map resultMap = new LinkedHashMap<>(); + + for (Tuple tuple : tuples) { + Long viewId = tuple.get(coreChartView.id); + VisualizationViewTableVO vo = resultMap.computeIfAbsent(viewId, k -> { + VisualizationViewTableVO newVo = new VisualizationViewTableVO(); + newVo.setId(viewId); + newVo.setTitle(tuple.get(coreChartView.title)); + newVo.setType(tuple.get(coreChartView.type)); + newVo.setDvId(tuple.get(coreChartView.sceneId)); + newVo.setTableFields(new ArrayList<>()); + return newVo; + }); + + // 添加字段信息 + if (tuple.get(coreDatasetTableField.id) != null) { + DatasetTableFieldDTO fieldDto = new DatasetTableFieldDTO(); + fieldDto.setId(tuple.get(coreDatasetTableField.id)); + fieldDto.setOriginName(tuple.get(coreDatasetTableField.originName)); + fieldDto.setName(tuple.get(coreDatasetTableField.name)); + fieldDto.setType(tuple.get(coreDatasetTableField.type)); + fieldDto.setDeType(tuple.get(coreDatasetTableField.deType)); + vo.getTableFields().add(fieldDto); + } + } + result = new ArrayList<>(resultMap.values()); componentData = dvInfo.getComponentData(); QVisualizationOuterParamsInfo visualizationOuterParamsInfo = QVisualizationOuterParamsInfo.visualizationOuterParamsInfo;