fix: Jpa适配 应用问题修复 (#16933)

This commit is contained in:
王嘉豪
2025-09-09 17:02:16 +08:00
committed by GitHub
parent 621c3670a6
commit 9d4ee374e4
2 changed files with 57 additions and 18 deletions

View File

@@ -0,0 +1,37 @@
package io.dataease.commons.utils;
import org.springframework.beans.BeanUtils;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
public class EntityConverter {
/**
* 单个实体转换
*/
public static <S, T> T convert(S source, Class<T> targetClass) {
if (source == null) {
return null;
}
try {
T target = targetClass.getDeclaredConstructor().newInstance();
BeanUtils.copyProperties(source, target);
return target;
} catch (Exception e) {
throw new RuntimeException("实体转换失败", e);
}
}
/**
* 列表实体转换
*/
public static <S, T> List<T> convertList(List<S> sourceList, Class<T> targetClass) {
if (sourceList == null) {
return Collections.emptyList();
}
return sourceList.stream()
.map(source -> convert(source, targetClass))
.collect(Collectors.toList());
}
}

View File

@@ -18,6 +18,7 @@ import io.dataease.chart.manage.ChartDataManage;
import io.dataease.chart.manage.ChartViewManege;
import io.dataease.commons.constants.DataVisualizationConstants;
import io.dataease.commons.constants.OptConstants;
import io.dataease.commons.utils.EntityConverter;
import io.dataease.constant.CommonConstants;
import io.dataease.constant.LogOT;
import io.dataease.dao.auto.entity.*;
@@ -922,27 +923,28 @@ public class DataVisualizationServer implements DataVisualizationApi {
}
if (!CollectionUtils.isEmpty(dsIds)) {
QCoreDatasetGroup coreDatasetGroup = QCoreDatasetGroup.coreDatasetGroup;
datasetGroupVOInfo = queryFactory.select(Projections.fields(AppCoreDatasetGroupVO.class)).from(coreDatasetGroup).where(coreDatasetGroup.id.in(dsIds)).fetch();
datasetGroupVOInfo = EntityConverter.convertList(queryFactory.selectFrom(coreDatasetGroup).where(coreDatasetGroup.id.in(dsIds)).fetch(),AppCoreDatasetGroupVO.class);
QCoreDatasetTable coreDatasetTable = QCoreDatasetTable.coreDatasetTable;
datasetTableVOInfo = queryFactory.select(Projections.fields(AppCoreDatasetTableVO.class)).from(coreDatasetTable).where(coreDatasetTable.datasetGroupId.in(dsIds)).fetch();
datasetTableVOInfo = EntityConverter.convertList(queryFactory.selectFrom(coreDatasetTable).where(coreDatasetTable.datasetGroupId.in(dsIds)).fetch(),AppCoreDatasetTableVO.class);
QCoreDatasetTableField coreDatasetTableField = QCoreDatasetTableField.coreDatasetTableField;
datasetTableFieldVOInfo = queryFactory.select(Projections.fields(AppCoreDatasetTableFieldVO.class)).from(coreDatasetTableField)
.where(coreDatasetTableField.datasetGroupId.in(dsIds)).fetch();
datasetTableFieldVOInfo = EntityConverter.convertList(queryFactory.selectFrom(coreDatasetTableField)
.where(coreDatasetTableField.datasetGroupId.in(dsIds)).fetch(),AppCoreDatasetTableFieldVO.class);
QCoreDatasourceTask coreDatasourceTask = QCoreDatasourceTask.coreDatasourceTask;
QCoreDatasource coreDatasource = QCoreDatasource.coreDatasource;
datasourceVOInfo = queryFactory.select(Projections.fields(AppCoreDatasourceVO.class)).from(coreDatasource)
.innerJoin(coreDatasetTable).on(coreDatasourceTask.dsId.eq(coreDatasource.id))
.where(coreDatasetTable.datasetGroupId.in(dsIds)).fetch();
datasourceVOInfo = EntityConverter.convertList(queryFactory.selectFrom(coreDatasource)
.innerJoin(coreDatasetTable).on(coreDatasetTable.datasourceId.eq(coreDatasource.id))
.where(coreDatasetTable.datasetGroupId.in(dsIds)).fetch(),AppCoreDatasourceVO.class);
datasourceTaskVOInfo = queryFactory.select(Projections.fields(AppCoreDatasourceTaskVO.class)).from(coreDatasourceTask)
datasourceTaskVOInfo = EntityConverter.convertList(queryFactory.selectFrom(coreDatasourceTask)
.innerJoin(coreDatasource).on(coreDatasourceTask.dsId.eq(coreDatasource.id))
.innerJoin(coreDatasetTable).on(coreDatasetTable.datasourceId.eq(coreDatasource.id))
.where(coreDatasetTable.datasetGroupId.in(dsIds))
.fetch();
.fetch(),AppCoreDatasourceTaskVO.class);
}
@@ -960,10 +962,10 @@ public class DataVisualizationServer implements DataVisualizationApi {
QVisualizationLinkageField visualizationLinkageField = QVisualizationLinkageField.visualizationLinkageField;
QVisualizationLinkage visualizationLinkage = QVisualizationLinkage.visualizationLinkage;
List<VisualizationLinkageFieldVO> linkageFieldVOInfo = queryFactory.select(Projections.fields(VisualizationLinkageFieldVO.class)).from(visualizationLinkageField)
.innerJoin(visualizationLinkage).on(visualizationLinkageField.linkageId.eq(visualizationLinkage.id))
.where(visualizationLinkage.dvId.eq(dvId)).fetch();
List<VisualizationLinkageFieldVO> linkageFieldVOInfo = EntityConverter.convertList(queryFactory.selectFrom(visualizationLinkageField)
.innerJoin(visualizationLinkage).on(visualizationLinkageField.linkageId.eq(visualizationLinkage.id))
.where(visualizationLinkage.dvId.eq(dvId)).fetch(),VisualizationLinkageFieldVO.class);
List<VisualizationLinkJumpVO> linkJumpVOInfo = visualizationLinkJumpRepository.findBySourceDvId(dvId).stream().map(item -> {
VisualizationLinkJumpVO linkJumpVO = BeanUtils.copyBean(new VisualizationLinkJumpVO(), item);
@@ -972,18 +974,18 @@ public class DataVisualizationServer implements DataVisualizationApi {
QVisualizationLinkJumpInfo visualizationLinkJumpInfo = QVisualizationLinkJumpInfo.visualizationLinkJumpInfo;
QVisualizationLinkJump visualizationLinkJump = QVisualizationLinkJump.visualizationLinkJump;
List<VisualizationLinkJumpInfoVO> linkJumpInfoVOInfo = queryFactory.select(Projections.fields(VisualizationLinkJumpInfoVO.class)).from(visualizationLinkJumpInfo)
.innerJoin(visualizationLinkJump).on(visualizationLinkJumpInfo.linkJumpId.eq(visualizationLinkJump.id))
.where(visualizationLinkJump.sourceDvId.eq(dvId)).fetch();
List<VisualizationLinkJumpInfoVO> linkJumpInfoVOInfo = EntityConverter.convertList(queryFactory.selectFrom(visualizationLinkJumpInfo)
.innerJoin(visualizationLinkJump).on(visualizationLinkJumpInfo.linkJumpId.eq(visualizationLinkJump.id))
.where(visualizationLinkJump.sourceDvId.eq(dvId)).fetch(),VisualizationLinkJumpInfoVO.class);
QVisualizationLinkJumpTargetViewInfo visualizationLinkJumpTargetViewInfo = QVisualizationLinkJumpTargetViewInfo.visualizationLinkJumpTargetViewInfo;
List<VisualizationLinkJumpTargetViewInfoVO> listJumpTargetViewInfoVO = queryFactory.select(Projections.fields(VisualizationLinkJumpTargetViewInfoVO.class)).from(visualizationLinkJumpTargetViewInfo)
List<VisualizationLinkJumpTargetViewInfoVO> listJumpTargetViewInfoVO = EntityConverter.convertList(queryFactory.selectFrom(visualizationLinkJumpTargetViewInfo)
.innerJoin(visualizationLinkJumpInfo).on(visualizationLinkJumpTargetViewInfo.linkJumpInfoId.eq(visualizationLinkJumpInfo.id))
.innerJoin(visualizationLinkJump).on(visualizationLinkJump.id.eq(visualizationLinkJumpInfo.linkJumpId))
.where(visualizationLinkJump.sourceDvId.eq(dvId))
.fetch();
.fetch(),VisualizationLinkJumpTargetViewInfoVO.class);
return new VisualizationExport2AppVO(chartViewVOInfo, datasetGroupVOInfo, datasetTableVOInfo, datasetTableFieldVOInfo, datasourceVOInfo, datasourceTaskVOInfo, linkJumpVOInfo, linkJumpInfoVOInfo, listJumpTargetViewInfoVO, linkageVOInfo, linkageFieldVOInfo);