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 new file mode 100644 index 0000000000..b252b15559 --- /dev/null +++ b/core/core-backend/src/main/java/io/dataease/visualization/server/VisualizationOuterParamsService.java @@ -0,0 +1,88 @@ +package io.dataease.visualization.server; + +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.utils.BeanUtils; +import io.dataease.visualization.dao.auto.entity.VisualizationOuterParams; +import io.dataease.visualization.dao.auto.entity.VisualizationOuterParamsInfo; +import io.dataease.visualization.dao.auto.entity.VisualizationOuterParamsTargetViewInfo; +import io.dataease.visualization.dao.auto.mapper.VisualizationOuterParamsInfoMapper; +import io.dataease.visualization.dao.auto.mapper.VisualizationOuterParamsMapper; +import io.dataease.visualization.dao.auto.mapper.VisualizationOuterParamsTargetViewInfoMapper; +import io.dataease.visualization.dao.ext.mapper.ExtVisualizationOuterParamsMapper; +import jakarta.annotation.Resource; +import org.springframework.util.Assert; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.UUID; +import java.util.stream.Collectors; + +/** + * @author : WangJiaHao + * @date : 2024/3/11 09:44 + */ +@RestController +@RequestMapping("outerParams") +public class VisualizationOuterParamsService implements VisualizationOuterParamsApi { + + @Resource + private ExtVisualizationOuterParamsMapper extOuterParamsMapper; + @Resource + private VisualizationOuterParamsMapper outerParamsMapper; + @Resource + private VisualizationOuterParamsInfoMapper outerParamsInfoMapper; + + @Resource + private VisualizationOuterParamsTargetViewInfoMapper outerParamsTargetViewInfoMapper; + + @Override + public VisualizationOuterParamsDTO queryWithVisualizationId(String visualizationId) { + VisualizationOuterParamsDTO visualizationOuterParamsDTO = extOuterParamsMapper.queryWithVisualizationId(visualizationId); + return visualizationOuterParamsDTO; + } + + @Override + public void updateOuterParamsSet(VisualizationOuterParamsDTO outerParamsDTO) { + String visualizationId = outerParamsDTO.getVisualizationId(); + Assert.notNull(visualizationId, "visualizationId cannot be null"); + //清理原有数据 + extOuterParamsMapper.deleteOuterParamsTargetWithVisualizationId(visualizationId); + extOuterParamsMapper.deleteOuterParamsInfoWithVisualizationId(visualizationId); + extOuterParamsMapper.deleteOuterParamsWithVisualizationId(visualizationId); + // 插入新的数据 + String paramsId = UUID.randomUUID().toString(); + outerParamsDTO.setParamsId(paramsId); + VisualizationOuterParams newOuterParams = new VisualizationOuterParams(); + BeanUtils.copyBean(newOuterParams,outerParamsDTO); + outerParamsMapper.insert(newOuterParams); + Optional.ofNullable(outerParamsDTO.getOuterParamsInfoArray()).orElse(new ArrayList<>()).forEach(outerParamsInfo -> { + String paramsInfoId = UUID.randomUUID().toString(); + outerParamsInfo.setParamsInfoId(paramsInfoId); + outerParamsInfo.setParamsId(paramsId); + VisualizationOuterParamsInfo newOuterParamsInfo = new VisualizationOuterParamsInfo(); + BeanUtils.copyBean(newOuterParamsInfo,outerParamsInfo); + outerParamsInfoMapper.insert(newOuterParamsInfo); + Optional.ofNullable(outerParamsInfo.getTargetViewInfoList()).orElse(new ArrayList<>()).forEach(targetViewInfo -> { + String targetViewInfoId = UUID.randomUUID().toString(); + targetViewInfo.setTargetId(targetViewInfoId); + targetViewInfo.setParamsInfoId(paramsInfoId); + VisualizationOuterParamsTargetViewInfo newOuterParamsTargetViewInfo = new VisualizationOuterParamsTargetViewInfo(); + BeanUtils.copyBean(newOuterParamsTargetViewInfo,targetViewInfo); + outerParamsTargetViewInfoMapper.insert(newOuterParamsTargetViewInfo); + }); + }); + + } + + @Override + public VisualizationOuterParamsBaseResponse getOuterParamsInfo(String visualizationId) { + List result = extOuterParamsMapper.getVisualizationOuterParamsInfo(visualizationId); + return new VisualizationOuterParamsBaseResponse(Optional.ofNullable(result).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(VisualizationOuterParamsInfoDTO::getSourceInfo, VisualizationOuterParamsInfoDTO::getTargetInfoList))); + } +} diff --git a/core/core-backend/src/main/resources/db/desktop/V2.5__ddl.sql b/core/core-backend/src/main/resources/db/desktop/V2.5__ddl.sql new file mode 100644 index 0000000000..b9fb54c1f4 --- /dev/null +++ b/core/core-backend/src/main/resources/db/desktop/V2.5__ddl.sql @@ -0,0 +1,36 @@ + +DROP TABLE IF EXISTS `visualization_outer_params`; +CREATE TABLE `visualization_outer_params` ( + `params_id` varchar(50) NOT NULL COMMENT '主键', + `visualization_id` varchar(50) DEFAULT NULL COMMENT '可视化资源ID', + `checked` tinyint(1) DEFAULT NULL COMMENT '是否启用外部参数标识(1-是,0-否)', + `remark` varchar(255) DEFAULT NULL COMMENT '备注', + `copy_from` varchar(50) DEFAULT NULL COMMENT '复制来源', + `copy_id` varchar(50) DEFAULT NULL COMMENT '复制来源ID', + PRIMARY KEY (`params_id`) USING BTREE +) COMMENT='外部参数关联关系表'; + + +DROP TABLE IF EXISTS `visualization_outer_params_info`; +CREATE TABLE `visualization_outer_params_info` ( + `params_info_id` varchar(50) NOT NULL COMMENT '主键', + `params_id` varchar(50) DEFAULT NULL COMMENT 'visualization_outer_params 表的 ID', + `param_name` varchar(255) DEFAULT NULL COMMENT '参数名', + `checked` tinyint(1) DEFAULT NULL COMMENT '是否启用', + `copy_from` varchar(255) DEFAULT NULL COMMENT '复制来源', + `copy_id` varchar(50) DEFAULT NULL COMMENT '复制来源ID', + PRIMARY KEY (`params_info_id`) USING BTREE +) COMMENT='外部参数配置表'; + + +DROP TABLE IF EXISTS `visualization_outer_params_target_view_info`; +CREATE TABLE `visualization_outer_params_target_view_info` ( + `target_id` varchar(50) NOT NULL COMMENT '主键', + `params_info_id` varchar(50) DEFAULT NULL COMMENT 'visualization_outer_params_info 表的 ID', + `target_view_id` varchar(50) DEFAULT NULL COMMENT '联动视图ID', + `target_field_id` varchar(50) DEFAULT NULL COMMENT '联动字段ID', + `copy_from` varchar(255) DEFAULT NULL COMMENT '复制来源', + `copy_id` varchar(50) DEFAULT NULL COMMENT '复制来源ID', + PRIMARY KEY (`target_id`) +) COMMENT='外部参数联动视图字段信息表'; + diff --git a/core/core-backend/src/main/resources/db/migration/V2.5__ddl.sql b/core/core-backend/src/main/resources/db/migration/V2.5__ddl.sql new file mode 100644 index 0000000000..b9fb54c1f4 --- /dev/null +++ b/core/core-backend/src/main/resources/db/migration/V2.5__ddl.sql @@ -0,0 +1,36 @@ + +DROP TABLE IF EXISTS `visualization_outer_params`; +CREATE TABLE `visualization_outer_params` ( + `params_id` varchar(50) NOT NULL COMMENT '主键', + `visualization_id` varchar(50) DEFAULT NULL COMMENT '可视化资源ID', + `checked` tinyint(1) DEFAULT NULL COMMENT '是否启用外部参数标识(1-是,0-否)', + `remark` varchar(255) DEFAULT NULL COMMENT '备注', + `copy_from` varchar(50) DEFAULT NULL COMMENT '复制来源', + `copy_id` varchar(50) DEFAULT NULL COMMENT '复制来源ID', + PRIMARY KEY (`params_id`) USING BTREE +) COMMENT='外部参数关联关系表'; + + +DROP TABLE IF EXISTS `visualization_outer_params_info`; +CREATE TABLE `visualization_outer_params_info` ( + `params_info_id` varchar(50) NOT NULL COMMENT '主键', + `params_id` varchar(50) DEFAULT NULL COMMENT 'visualization_outer_params 表的 ID', + `param_name` varchar(255) DEFAULT NULL COMMENT '参数名', + `checked` tinyint(1) DEFAULT NULL COMMENT '是否启用', + `copy_from` varchar(255) DEFAULT NULL COMMENT '复制来源', + `copy_id` varchar(50) DEFAULT NULL COMMENT '复制来源ID', + PRIMARY KEY (`params_info_id`) USING BTREE +) COMMENT='外部参数配置表'; + + +DROP TABLE IF EXISTS `visualization_outer_params_target_view_info`; +CREATE TABLE `visualization_outer_params_target_view_info` ( + `target_id` varchar(50) NOT NULL COMMENT '主键', + `params_info_id` varchar(50) DEFAULT NULL COMMENT 'visualization_outer_params_info 表的 ID', + `target_view_id` varchar(50) DEFAULT NULL COMMENT '联动视图ID', + `target_field_id` varchar(50) DEFAULT NULL COMMENT '联动字段ID', + `copy_from` varchar(255) DEFAULT NULL COMMENT '复制来源', + `copy_id` varchar(50) DEFAULT NULL COMMENT '复制来源ID', + PRIMARY KEY (`target_id`) +) COMMENT='外部参数联动视图字段信息表'; + diff --git a/core/core-frontend/src/assets/svg/icon_params_setting.svg b/core/core-frontend/src/assets/svg/icon_params_setting.svg new file mode 100644 index 0000000000..3dcde7c84f --- /dev/null +++ b/core/core-frontend/src/assets/svg/icon_params_setting.svg @@ -0,0 +1 @@ + diff --git a/core/core-frontend/src/components/dashboard/DbToolbar.vue b/core/core-frontend/src/components/dashboard/DbToolbar.vue index ca560cbaa9..4fcace3eaa 100644 --- a/core/core-frontend/src/components/dashboard/DbToolbar.vue +++ b/core/core-frontend/src/components/dashboard/DbToolbar.vue @@ -24,6 +24,7 @@ import { useEmitt } from '@/hooks/web/useEmitt' import { copyStoreWithOut } from '@/store/modules/data-visualization/copy' import TabsGroup from '@/custom-component/component-group/TabsGroup.vue' import DeResourceGroupOpt from '@/views/common/DeResourceGroupOpt.vue' +import OuterParamsSet from '@/components/visualization/OuterParamsSet.vue' const { t } = useI18n() const dvMainStore = dvMainStoreWithOut() const snapshotStore = snapshotStoreWithOut() @@ -50,6 +51,7 @@ const state = reactive({ preBatchCanvasViewInfo: {} }) const resourceGroupOpt = ref(null) +const outerParamsSetRef = ref(null) const editCanvasName = () => { nameEdit.value = true @@ -256,6 +258,10 @@ const batchOptStatusChange = value => { dvMainStore.setBatchOptStatus(value) } +const openOuterParamsSet = () => { + outerParamsSetRef.value.optInit() +} + const saveBatchChange = () => { batchOptStatusChange(false) } @@ -555,6 +561,7 @@ const isDataEaseBi = computed(() => appStore.getIsDataEaseBi) cur-canvas-type="dashboard" ref="resourceGroupOpt" /> + diff --git a/core/core-frontend/src/components/visualization/OuterParamsSet.vue b/core/core-frontend/src/components/visualization/OuterParamsSet.vue new file mode 100644 index 0000000000..94168c20bb --- /dev/null +++ b/core/core-frontend/src/components/visualization/OuterParamsSet.vue @@ -0,0 +1,596 @@ + + + + + diff --git a/core/core-frontend/src/components/visualization/outer-params-set/index.vue b/core/core-frontend/src/components/visualization/outer-params-set/index.vue deleted file mode 100644 index fc22af9a25..0000000000 --- a/core/core-frontend/src/components/visualization/outer-params-set/index.vue +++ /dev/null @@ -1,567 +0,0 @@ - - - - - diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/visualization/VisualizationOuterParamsApi.java b/sdk/api/api-base/src/main/java/io/dataease/api/visualization/VisualizationOuterParamsApi.java index 7aefbdf6ab..7e8c629aef 100644 --- a/sdk/api/api-base/src/main/java/io/dataease/api/visualization/VisualizationOuterParamsApi.java +++ b/sdk/api/api-base/src/main/java/io/dataease/api/visualization/VisualizationOuterParamsApi.java @@ -4,8 +4,6 @@ import io.dataease.api.visualization.dto.VisualizationOuterParamsDTO; import io.dataease.api.visualization.response.VisualizationOuterParamsBaseResponse; import org.springframework.web.bind.annotation.*; -@RestController -@RequestMapping("outerParams") public interface VisualizationOuterParamsApi { diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/visualization/dto/VisualizationOuterParamsDTO.java b/sdk/api/api-base/src/main/java/io/dataease/api/visualization/dto/VisualizationOuterParamsDTO.java index 256fbb90d1..cbc49f328f 100644 --- a/sdk/api/api-base/src/main/java/io/dataease/api/visualization/dto/VisualizationOuterParamsDTO.java +++ b/sdk/api/api-base/src/main/java/io/dataease/api/visualization/dto/VisualizationOuterParamsDTO.java @@ -1,9 +1,21 @@ package io.dataease.api.visualization.dto; import io.dataease.api.visualization.vo.VisualizationOuterParamsVO; +import lombok.Data; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; - +@Data public class VisualizationOuterParamsDTO extends VisualizationOuterParamsVO { + private List targetInfoList; + + private List outerParamsInfoArray = new ArrayList<>(); + + private Map mapOuterParamsInfoArray = new HashMap<>(); + } 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 7ecb488370..bea093e0a4 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 @@ -1,8 +1,23 @@ package io.dataease.api.visualization.dto; import io.dataease.api.visualization.vo.VisualizationOuterParamsInfoVO; +import io.dataease.api.visualization.vo.VisualizationOuterParamsTargetViewInfoVO; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; +@Data public class VisualizationOuterParamsInfoDTO extends VisualizationOuterParamsInfoVO { + private String dvId; + + private List targetViewInfoList=new ArrayList<>(); + + //仪表板外部参数信息 dvId#paramName + private String sourceInfo; + + //目标联动参数 targetViewId#targetFieldId + private List targetInfoList; }