mirror of
https://github.com/dataease/dataease.git
synced 2026-06-16 20:42:07 +08:00
fix(仪表板、数据大屏): 修复外部参数设置问题 (#17295)
This commit is contained in:
@@ -41,9 +41,8 @@ public class SnapshotVisualizationOuterParamsTargetViewInfo {
|
||||
@Column(name = "copy_id", length = 50)
|
||||
private String copyId;
|
||||
|
||||
@Size(max = 50)
|
||||
@Comment("联动数据集id/联动过滤组件id")
|
||||
@Column(name = "target_ds_id", length = 50)
|
||||
private String targetDsId;
|
||||
@Column(name = "target_ds_id")
|
||||
private Long targetDsId;
|
||||
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@ import org.hibernate.annotations.Comment;
|
||||
@Table(name = "visualization_outer_params_target_view_info")
|
||||
public class VisualizationOuterParamsTargetViewInfo {
|
||||
@Id
|
||||
@Size(max = 50)
|
||||
@Comment("主键")
|
||||
@Column(name = "target_id", nullable = false)
|
||||
private Long targetId;
|
||||
@@ -43,9 +42,8 @@ public class VisualizationOuterParamsTargetViewInfo {
|
||||
@Column(name = "copy_id", length = 50)
|
||||
private String copyId;
|
||||
|
||||
@Size(max = 50)
|
||||
@Comment("联动数据集id/联动过滤组件id")
|
||||
@Column(name = "target_ds_id", length = 50)
|
||||
private String targetDsId;
|
||||
@Column(name = "target_ds_id")
|
||||
private Long targetDsId;
|
||||
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import io.dataease.api.visualization.VisualizationOuterParamsApi;
|
||||
import io.dataease.api.visualization.dto.VisualizationOuterParamsDTO;
|
||||
import io.dataease.api.visualization.dto.VisualizationOuterParamsInfoDTO;
|
||||
import io.dataease.api.visualization.response.VisualizationOuterParamsBaseResponse;
|
||||
import io.dataease.api.visualization.vo.VisualizationOuterParamsTargetViewInfoVO;
|
||||
import io.dataease.auth.DeLinkPermit;
|
||||
import io.dataease.constant.CommonConstants;
|
||||
import io.dataease.dao.auto.entity.CoreDatasetTable;
|
||||
@@ -57,6 +58,10 @@ public class VisualizationOuterParamsService implements VisualizationOuterParams
|
||||
private DataVisualizationServer dataVisualizationServer;
|
||||
|
||||
|
||||
private static final QSnapshotVisualizationOuterParams qOuterParams = QSnapshotVisualizationOuterParams.snapshotVisualizationOuterParams;
|
||||
private static final QSnapshotVisualizationOuterParamsInfo qOuterParamsInfo = QSnapshotVisualizationOuterParamsInfo.snapshotVisualizationOuterParamsInfo;
|
||||
private static final QSnapshotVisualizationOuterParamsTargetViewInfo qTargetViewInfo = QSnapshotVisualizationOuterParamsTargetViewInfo.snapshotVisualizationOuterParamsTargetViewInfo;
|
||||
|
||||
@Override
|
||||
public VisualizationOuterParamsDTO queryWithVisualizationId(Long visualizationId) {
|
||||
QSnapshotDataVisualizationInfo qSnapshotDataVisualizationInfo = QSnapshotDataVisualizationInfo.snapshotDataVisualizationInfo;
|
||||
@@ -70,9 +75,70 @@ public class VisualizationOuterParamsService implements VisualizationOuterParams
|
||||
if (visualizationOuterParamsDTO != null && visualizationOuterParamsDTO.getChecked() == null) {
|
||||
visualizationOuterParamsDTO.setChecked(false);
|
||||
}
|
||||
visualizationOuterParamsDTO.setOuterParamsInfoArray(getOuterParamsInfoSnapshot(visualizationId));
|
||||
return visualizationOuterParamsDTO;
|
||||
}
|
||||
|
||||
private VisualizationOuterParamsTargetViewInfoVO convertToVO(SnapshotVisualizationOuterParamsTargetViewInfo entity) {
|
||||
if (entity == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
VisualizationOuterParamsTargetViewInfoVO vo = new VisualizationOuterParamsTargetViewInfoVO();
|
||||
BeanUtils.copyBean(vo, entity);
|
||||
return vo;
|
||||
}
|
||||
|
||||
|
||||
public List<VisualizationOuterParamsInfoDTO> getOuterParamsInfoSnapshot(Long visualizationId) {
|
||||
// 第一步:查询主表数据
|
||||
List<SnapshotVisualizationOuterParamsInfo> paramsInfoList = queryFactory
|
||||
.select(Projections.bean(SnapshotVisualizationOuterParamsInfo.class,
|
||||
qOuterParamsInfo.paramsInfoId,
|
||||
qOuterParamsInfo.paramName,
|
||||
qOuterParamsInfo.enabledDefault,
|
||||
qOuterParamsInfo.required,
|
||||
qOuterParamsInfo.defaultValue,
|
||||
Expressions.booleanTemplate("ifnull({0}, 0)", qOuterParamsInfo.checked).as("checked")))
|
||||
.from(qOuterParams)
|
||||
.leftJoin(qOuterParamsInfo).on(qOuterParams.paramsId.eq(qOuterParamsInfo.paramsId))
|
||||
.where(qOuterParams.visualizationId.eq(visualizationId))
|
||||
.orderBy(Expressions.numberTemplate(Integer.class, "ifnull({0}, 0)", qOuterParamsInfo.checked).desc())
|
||||
.fetch();
|
||||
|
||||
if (paramsInfoList.isEmpty()) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
// 第二步:查询关联的目标视图信息
|
||||
List<Long> paramsInfoIds = paramsInfoList.stream()
|
||||
.map(SnapshotVisualizationOuterParamsInfo::getParamsInfoId)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
List<SnapshotVisualizationOuterParamsTargetViewInfo> targetViewInfoList = queryFactory
|
||||
.select(Projections.bean(SnapshotVisualizationOuterParamsTargetViewInfo.class,
|
||||
qTargetViewInfo.targetViewId,
|
||||
qTargetViewInfo.targetDsId,
|
||||
qTargetViewInfo.targetFieldId,
|
||||
qTargetViewInfo.paramsInfoId))
|
||||
.from(qTargetViewInfo)
|
||||
.where(qTargetViewInfo.paramsInfoId.in(paramsInfoIds))
|
||||
.fetch();
|
||||
|
||||
Map<Long, List<VisualizationOuterParamsTargetViewInfoVO>> targetViewInfoMap = targetViewInfoList.stream()
|
||||
.collect(Collectors.groupingBy(
|
||||
SnapshotVisualizationOuterParamsTargetViewInfo::getParamsInfoId,
|
||||
Collectors.mapping(this::convertToVO, Collectors.toList())
|
||||
));
|
||||
|
||||
return paramsInfoList.stream().map(info -> {
|
||||
VisualizationOuterParamsInfoDTO dto = new VisualizationOuterParamsInfoDTO();
|
||||
BeanUtils.copyBean(dto, info);
|
||||
dto.setTargetViewInfoList(targetViewInfoMap.getOrDefault(info.getParamsInfoId(), Collections.emptyList()));
|
||||
return dto;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateOuterParamsSet(VisualizationOuterParamsDTO outerParamsDTO) {
|
||||
Long visualizationId = outerParamsDTO.getVisualizationId();
|
||||
@@ -94,7 +160,7 @@ public class VisualizationOuterParamsService implements VisualizationOuterParams
|
||||
QSnapshotVisualizationOuterParamsInfo snapshotVisualizationOuterParamsInfo = QSnapshotVisualizationOuterParamsInfo.snapshotVisualizationOuterParamsInfo;
|
||||
QSnapshotVisualizationOuterParams snapshotVisualizationOuterParams = QSnapshotVisualizationOuterParams.snapshotVisualizationOuterParams;
|
||||
QSnapshotVisualizationOuterParamsTargetViewInfo snapshotVisualizationOuterParamsTargetViewInfo = QSnapshotVisualizationOuterParamsTargetViewInfo.snapshotVisualizationOuterParamsTargetViewInfo;
|
||||
List<Long> paramsInfoIds = queryFactory.select(snapshotVisualizationOuterParamsTargetViewInfo.targetId).from(snapshotVisualizationOuterParamsTargetViewInfo)
|
||||
List<Long> paramsInfoIds = queryFactory.select(snapshotVisualizationOuterParamsTargetViewInfo.paramsInfoId).from(snapshotVisualizationOuterParamsTargetViewInfo)
|
||||
.innerJoin(snapshotVisualizationOuterParamsInfo).on(snapshotVisualizationOuterParamsTargetViewInfo.paramsInfoId.eq(snapshotVisualizationOuterParamsInfo.paramsInfoId))
|
||||
.innerJoin(snapshotVisualizationOuterParams).on(snapshotVisualizationOuterParamsInfo.paramsId.eq(snapshotVisualizationOuterParams.paramsId))
|
||||
.where(snapshotVisualizationOuterParams.visualizationId.eq(visualizationId)).fetch();
|
||||
@@ -218,9 +284,9 @@ public class VisualizationOuterParamsService implements VisualizationOuterParams
|
||||
.and(ccv.type.ne("VQuery"))
|
||||
.and(dvi.id.eq(visualizationId))
|
||||
.and(Expressions.booleanTemplate(
|
||||
"{0} like concat('%', {1}, '%')",
|
||||
dvi.componentData,
|
||||
ccv.id)))
|
||||
"{0} like concat('%', {1}, '%')",
|
||||
dvi.componentData,
|
||||
ccv.id)))
|
||||
.distinct()
|
||||
.fetch();
|
||||
}
|
||||
@@ -256,7 +322,7 @@ public class VisualizationOuterParamsService implements VisualizationOuterParams
|
||||
qSnapshotCoreChartView.id
|
||||
)).fetch();
|
||||
if (!CollectionUtils.isEmpty(result)) {
|
||||
result.stream().forEach(item ->{
|
||||
result.stream().forEach(item -> {
|
||||
item.setDatasetViews(getViewInfo(item.getId(), visualizationId));
|
||||
item.setDatasetFields(getDsFieldInfo(item.getId()));
|
||||
});
|
||||
|
||||
@@ -334,7 +334,7 @@ import edit from '@/assets/svg/icon_rename_outlined.svg'
|
||||
import icon_more_vertical_outlined from '@/assets/svg/icon_more-vertical_outlined.svg'
|
||||
import filterParams from '@/assets/svg/filter-params.svg'
|
||||
import icon_dataset from '@/assets/svg/icon_dataset.svg'
|
||||
import { ref, reactive, computed, nextTick } from 'vue'
|
||||
import { ref, reactive, nextTick } from 'vue'
|
||||
import { dvMainStoreWithOut } from '@/store/modules/data-visualization/dvMain'
|
||||
import { storeToRefs } from 'pinia'
|
||||
import { ElCol, ElIcon, ElInput, ElMessage } from 'element-plus-secondary'
|
||||
@@ -472,10 +472,6 @@ const validateArgs = (val, id) => {
|
||||
}
|
||||
}
|
||||
|
||||
const viewSelectedField = computed(() =>
|
||||
state.outerParamsInfo?.targetViewInfoList?.map(targetViewInfo => targetViewInfo.targetViewId)
|
||||
)
|
||||
|
||||
const closeEdit = params => {
|
||||
if (!params.paramName || params.paramName.length < 2 || params.paramName.length > 25) {
|
||||
ElMessage({
|
||||
@@ -499,18 +495,6 @@ const outerParamsOperation = (cmd, node, data) => {
|
||||
}
|
||||
}
|
||||
|
||||
const fieldIdDisabledCheck = targetViewInfo => {
|
||||
return (
|
||||
state.viewIdFieldArrayMap[targetViewInfo.targetViewId] &&
|
||||
state.viewIdFieldArrayMap[targetViewInfo.targetViewId].length === 1 &&
|
||||
state.viewIdFieldArrayMap[targetViewInfo.targetViewId][0].id === 'empty'
|
||||
)
|
||||
}
|
||||
|
||||
const getFieldArray = id => {
|
||||
return state.viewIdFieldArrayMap[id]
|
||||
}
|
||||
|
||||
const initParams = async () => {
|
||||
state.baseFilterInfo = []
|
||||
state.baseDatasetInfo = []
|
||||
@@ -519,13 +503,13 @@ const initParams = async () => {
|
||||
if (componentItem.component === 'VQuery') {
|
||||
state.baseFilterInfo.push(componentItem)
|
||||
} else if (componentItem.component === 'Group') {
|
||||
componentItem.propValue?.forEach(groupItem => {
|
||||
componentItem.propValue.forEach(groupItem => {
|
||||
if (groupItem.component === 'VQuery') {
|
||||
state.baseFilterInfo.push(groupItem)
|
||||
}
|
||||
})
|
||||
} else if (componentItem.component === 'DeTabs') {
|
||||
componentItem.propValue?.forEach(tabItem => {
|
||||
componentItem.propValue.forEach(tabItem => {
|
||||
tabItem.componentData?.forEach(tabComponent => {
|
||||
if (tabComponent.component === 'VQuery') {
|
||||
state.baseFilterInfo.push(tabComponent)
|
||||
@@ -722,7 +706,7 @@ const getPanelViewList = dvId => {
|
||||
// 增加过滤组件匹配
|
||||
componentData.value.forEach(componentItem => {
|
||||
if (componentItem.component === 'VQuery') {
|
||||
componentItem.propValue?.forEach(filterItem => {
|
||||
componentItem.propValue.forEach(filterItem => {
|
||||
state.currentLinkPanelViewArray.push({
|
||||
id: filterItem.id,
|
||||
type: 'filter',
|
||||
@@ -738,28 +722,6 @@ const getPanelViewList = dvId => {
|
||||
})
|
||||
}
|
||||
|
||||
const addOuterParamsField = () => {
|
||||
state.outerParamsInfo.targetViewInfoList.push({
|
||||
targetViewId: '',
|
||||
targetFieldId: ''
|
||||
})
|
||||
}
|
||||
const deleteOuterParamsField = index => {
|
||||
state.outerParamsInfo.targetViewInfoList.splice(index, 1)
|
||||
}
|
||||
|
||||
const viewInfoOnChange = targetViewInfo => {
|
||||
if (
|
||||
state.viewIdFieldArrayMap[targetViewInfo.targetViewId] &&
|
||||
state.viewIdFieldArrayMap[targetViewInfo.targetViewId].length === 1 &&
|
||||
state.viewIdFieldArrayMap[targetViewInfo.targetViewId][0].id === 'empty'
|
||||
) {
|
||||
targetViewInfo.targetFieldId = 'empty'
|
||||
} else {
|
||||
targetViewInfo.targetFieldId = null
|
||||
}
|
||||
}
|
||||
|
||||
const initSelected = data => {
|
||||
nextTick(() => {
|
||||
outerParamsInfoTree.value.setCurrentKey(data.paramsInfoId)
|
||||
|
||||
Reference in New Issue
Block a user