refactor: Jpa适配 (#16883)

This commit is contained in:
王嘉豪
2025-09-02 17:53:30 +08:00
committed by GitHub
parent b852d3fbc5
commit e164de61c0
5 changed files with 83 additions and 18 deletions

View File

@@ -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);
}

View File

@@ -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<S
}
}
@Modifying
@Transactional
void deleteBySourceDvIdAndSourceViewId(Long dvId, Long viewId);
}

View File

@@ -2,9 +2,12 @@ package io.dataease.visualization.dao.auto.mapper;
import io.dataease.visualization.dao.auto.entity.SnapshotVisualizationLinkJumpTargetViewInfo;
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;
@@ -22,4 +25,14 @@ public interface SnapshotVisualizationLinkJumpTargetViewInfoRepository extends J
deleteAll(entities);
}
}
@Modifying
@Query("DELETE FROM SnapshotVisualizationLinkJumpTargetViewInfo t " +
"WHERE t.linkJumpInfoId IN (" +
" SELECT lji.id FROM SnapshotVisualizationLinkJumpInfo lji " +
" JOIN SnapshotVisualizationLinkJump lj ON lji.linkJumpId = lj.id " +
" WHERE lj.sourceDvId = :dvId " +
" AND lj.sourceViewId = :viewId" +
")")
void deleteBySourceDvIdAndViewId(@Param("dvId") Long dvId, @Param("viewId") Long viewId);
}

View File

@@ -16,9 +16,7 @@ import io.dataease.dao.auto.entity.QCoreDatasetTableField;
import io.dataease.dao.auto.entity.QDataVisualizationInfo;
import io.dataease.share.dao.auto.entity.QXpackShare;
import io.dataease.visualization.dao.auto.entity.*;
import io.dataease.visualization.dao.auto.mapper.VisualizationLinkJumpInfoRepository;
import io.dataease.visualization.dao.auto.mapper.VisualizationLinkJumpRepository;
import io.dataease.visualization.dao.auto.mapper.VisualizationLinkJumpTargetViewInfoRepository;
import io.dataease.visualization.dao.auto.mapper.*;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@@ -41,6 +39,13 @@ public class VisualizationLinkJumpManage {
@Resource
private VisualizationLinkJumpTargetViewInfoRepository visualizationLinkJumpTargetViewInfoRepository;
@Resource
private SnapshotVisualizationLinkJumpTargetViewInfoRepository snapshotVisualizationLinkJumpTargetViewInfoRepository;
@Resource
private SnapshotVisualizationLinkJumpRepository snapshotVisualizationLinkJumpRepository;
@Resource
private SnapshotVisualizationLinkJumpInfoRepository snapshotVisualizationLinkJumpInfoRepository;
private final QXpackShare qXpackShare = QXpackShare.xpackShare;
public void copyLinkJump(Long copyId) {
@@ -459,14 +464,14 @@ public class VisualizationLinkJumpManage {
}
public void deleteJumpTargetViewInfoSnapshot(Long dvId, Long viewId) {
snapshotVisualizationLinkJumpTargetViewInfoRepository.deleteBySourceDvIdAndViewId(dvId,viewId);
}
public void deleteJumpInfoSnapshot(Long dvId, Long viewId) {
snapshotVisualizationLinkJumpInfoRepository.deleteBySourceDvIdAndViewId(dvId,viewId);
}
public void deleteJumpSnapshot(Long dvId, Long viewId) {
snapshotVisualizationLinkJumpRepository.deleteBySourceDvIdAndSourceViewId(dvId,viewId);
}
}

View File

@@ -1,5 +1,6 @@
package io.dataease.visualization.server;
import com.querydsl.core.Tuple;
import com.querydsl.core.types.Projections;
import com.querydsl.jpa.impl.JPAQuery;
import com.querydsl.jpa.impl.JPAQueryFactory;
@@ -210,25 +211,53 @@ public class VisualizationLinkJumpService implements VisualizationLinkJumpApi {
QCoreChartView coreChartView = QCoreChartView.coreChartView;
QCoreDatasetTableField coreDatasetTableField = QCoreDatasetTableField.coreDatasetTableField;
QDataVisualizationInfo dataVisualizationInfo = QDataVisualizationInfo.dataVisualizationInfo;
result = queryFactory.select(Projections.fields(VisualizationViewTableVO.class,
coreChartView.id.as("id"),
coreChartView.title.as("title"),
coreChartView.type.as("type"),
coreChartView.sceneId.as("dvId"),
coreDatasetTableField.id.as("fieldId"),
coreDatasetTableField.originName.as("originName"),
coreDatasetTableField.name.as("fieldName"),
coreDatasetTableField.type.as("fieldType"),
coreDatasetTableField.deType.as("deType")
)).from(coreChartView)
List<Tuple> 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<Long, VisualizationViewTableVO> 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;