From 16ac040c57f819e5984bada82bdcd39be894b69e 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: Wed, 29 Oct 2025 15:49:57 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E4=BB=AA=E8=A1=A8=E6=9D=BF=E3=80=81?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A4=A7=E5=B1=8F):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E9=83=A8=E5=88=86=E5=A4=96=E9=83=A8=E5=8F=82=E6=95=B0=E8=81=94?= =?UTF-8?q?=E5=8A=A8=E6=9C=AA=E7=94=9F=E6=95=88=E9=97=AE=E9=A2=98=20(#1729?= =?UTF-8?q?9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../VisualizationOuterParamsService.java | 70 +++++++++++++++---- .../dto/VisualizationOuterParamsInfoDTO.java | 2 + 2 files changed, 58 insertions(+), 14 deletions(-) diff --git a/core/core-backend/src/main/java/io/dataease/visualization/server/VisualizationOuterParamsService.java b/core/core-backend/src/main/java/io/dataease/visualization/server/VisualizationOuterParamsService.java index c63e5f3015..4d77ca82bc 100644 --- a/core/core-backend/src/main/java/io/dataease/visualization/server/VisualizationOuterParamsService.java +++ b/core/core-backend/src/main/java/io/dataease/visualization/server/VisualizationOuterParamsService.java @@ -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.VisualizationOuterParamsInfoVO; import io.dataease.api.visualization.vo.VisualizationOuterParamsTargetViewInfoVO; import io.dataease.auth.DeLinkPermit; import io.dataease.constant.CommonConstants; @@ -213,25 +214,66 @@ public class VisualizationOuterParamsService implements VisualizationOuterParams @DeLinkPermit @Override public VisualizationOuterParamsBaseResponse getOuterParamsInfo(Long visualizationId) { - - QVisualizationOuterParams qVisualizationOuterParams = QVisualizationOuterParams.visualizationOuterParams; - QVisualizationOuterParamsInfo qVisualizationOuterParamsInfo = QVisualizationOuterParamsInfo.visualizationOuterParamsInfo; - QVisualizationOuterParamsTargetViewInfo visualizationOuterParamsTargetViewInfo = QVisualizationOuterParamsTargetViewInfo.visualizationOuterParamsTargetViewInfo; - - List result = queryFactory.select(Projections.fields(VisualizationOuterParamsInfoDTO.class, - qVisualizationOuterParamsInfo.paramName.as("paramName"), - qVisualizationOuterParamsInfo.required, - qVisualizationOuterParamsInfo.defaultValue, - qVisualizationOuterParamsInfo.enabledDefault, - visualizationOuterParamsTargetViewInfo.targetViewId.stringValue().concat("#").concat(visualizationOuterParamsTargetViewInfo.targetViewId.stringValue()).as("targetInfo"))).from(qVisualizationOuterParams) - .leftJoin(qVisualizationOuterParamsInfo).on(qVisualizationOuterParamsInfo.paramsId.eq(qVisualizationOuterParams.paramsId)) - .leftJoin(visualizationOuterParamsTargetViewInfo).on(visualizationOuterParamsTargetViewInfo.paramsInfoId.eq(qVisualizationOuterParamsInfo.paramsInfoId)) - .fetch(); + List result = getVisualizationOuterParamsInfo(visualizationId); return new VisualizationOuterParamsBaseResponse(Optional.ofNullable(result).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(VisualizationOuterParamsInfoDTO::getSourceInfo, VisualizationOuterParamsInfoDTO::getTargetInfoList)), Optional.ofNullable(result).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(VisualizationOuterParamsInfoDTO::getSourceInfo, paramsInfo -> paramsInfo)) ); } + public List getVisualizationOuterParamsInfo(Long visualizationId) { + QVisualizationOuterParams pop = QVisualizationOuterParams.visualizationOuterParams; + QVisualizationOuterParamsInfo popi = QVisualizationOuterParamsInfo.visualizationOuterParamsInfo; + QVisualizationOuterParamsTargetViewInfo poptvi = QVisualizationOuterParamsTargetViewInfo.visualizationOuterParamsTargetViewInfo; + + // 执行查询获取原始数据 + List queryResults = queryFactory + .select(Projections.bean(VisualizationOuterParamsInfoDTO.class, + popi.paramName.as("sourceInfo"), + // 处理 boolean 字段转换 + popi.required, + popi.defaultValue, + popi.enabledDefault, + Expressions.stringTemplate("CONCAT({0}, '#', {1})", + poptvi.targetViewId, poptvi.targetFieldId).as("targetInfo"))) + .from(pop) + .leftJoin(popi).on(pop.paramsId.eq(popi.paramsId)) + .leftJoin(poptvi).on(popi.paramsInfoId.eq(poptvi.paramsInfoId)) + .where(pop.visualizationId.eq(visualizationId) + .and(pop.checked.eq(true)) // 数据库中是 1/0,但 QueryDSL 实体应该是 boolean + .and(popi.checked.eq(true))) + .distinct() + .fetch(); + + return groupQueryResults(queryResults); + } + + private List groupQueryResults(List queryResults) { + Map resultMap = new LinkedHashMap<>(); + + for (VisualizationOuterParamsInfoDTO result : queryResults) { + String key = result.getSourceInfo() + "_" + result.getRequired() + "_" + + result.getDefaultValue() + "_" + result.getEnabledDefault(); + + VisualizationOuterParamsInfoDTO dto = resultMap.get(key); + if (dto == null) { + dto = new VisualizationOuterParamsInfoDTO(); + dto.setSourceInfo(result.getSourceInfo()); + dto.setRequired(result.getRequired()); + dto.setDefaultValue(result.getDefaultValue()); + dto.setEnabledDefault(result.getEnabledDefault()); + dto.setTargetInfoList(new ArrayList<>()); + resultMap.put(key, dto); + } + + if (result.getTargetInfo() != null) { + dto.getTargetInfoList().add(result.getTargetInfo()); + } + } + + return new ArrayList<>(resultMap.values()); + } + + private List getDsFieldInfo(Long datasetGroupId) { QCoreDatasetTableField qField = QCoreDatasetTableField.coreDatasetTableField; return queryFactory.select(Projections.fields(CoreDatasetTableFieldVO.class, diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/visualization/dto/VisualizationOuterParamsInfoDTO.java b/sdk/api/api-base/src/main/java/io/dataease/api/visualization/dto/VisualizationOuterParamsInfoDTO.java index 9350edf6bd..d98b940411 100644 --- a/sdk/api/api-base/src/main/java/io/dataease/api/visualization/dto/VisualizationOuterParamsInfoDTO.java +++ b/sdk/api/api-base/src/main/java/io/dataease/api/visualization/dto/VisualizationOuterParamsInfoDTO.java @@ -19,6 +19,8 @@ public class VisualizationOuterParamsInfoDTO extends VisualizationOuterParamsInf //仪表板外部参数信息 dvId#paramName private String sourceInfo; + private String targetInfo; + //目标联动参数 targetViewId#targetFieldId private List targetInfoList;