forked from github/dataease
refactor: 外部必填参数逻辑优化
This commit is contained in:
parent
8306eec6cd
commit
c9af851129
@ -58,6 +58,11 @@ public class VisualizationOuterParamsInfo implements Serializable {
|
||||
*/
|
||||
private String defaultValue;
|
||||
|
||||
/**
|
||||
* 是否启用默认值
|
||||
*/
|
||||
private Boolean enabledDefault;
|
||||
|
||||
public String getParamsInfoId() {
|
||||
return paramsInfoId;
|
||||
}
|
||||
@ -122,6 +127,14 @@ public class VisualizationOuterParamsInfo implements Serializable {
|
||||
this.defaultValue = defaultValue;
|
||||
}
|
||||
|
||||
public Boolean getEnabledDefault() {
|
||||
return enabledDefault;
|
||||
}
|
||||
|
||||
public void setEnabledDefault(Boolean enabledDefault) {
|
||||
this.enabledDefault = enabledDefault;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "VisualizationOuterParamsInfo{" +
|
||||
@ -133,6 +146,7 @@ public class VisualizationOuterParamsInfo implements Serializable {
|
||||
", copyId = " + copyId +
|
||||
", required = " + required +
|
||||
", defaultValue = " + defaultValue +
|
||||
", enabledDefault = " + enabledDefault +
|
||||
"}";
|
||||
}
|
||||
}
|
||||
|
@ -56,7 +56,7 @@ public class VisualizationOuterParamsService implements VisualizationOuterParams
|
||||
|
||||
@Override
|
||||
public VisualizationOuterParamsDTO queryWithVisualizationId(String visualizationId) {
|
||||
VisualizationOuterParamsDTO visualizationOuterParamsDTO = extOuterParamsMapper.queryWithVisualizationId(visualizationId);
|
||||
VisualizationOuterParamsDTO visualizationOuterParamsDTO = extOuterParamsMapper.queryWithVisualizationId(visualizationId);
|
||||
return visualizationOuterParamsDTO;
|
||||
}
|
||||
|
||||
@ -77,21 +77,21 @@ public class VisualizationOuterParamsService implements VisualizationOuterParams
|
||||
String paramsId = UUID.randomUUID().toString();
|
||||
outerParamsDTO.setParamsId(paramsId);
|
||||
VisualizationOuterParams newOuterParams = new VisualizationOuterParams();
|
||||
BeanUtils.copyBean(newOuterParams,outerParamsDTO);
|
||||
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);
|
||||
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);
|
||||
BeanUtils.copyBean(newOuterParamsTargetViewInfo, targetViewInfo);
|
||||
outerParamsTargetViewInfoMapper.insert(newOuterParamsTargetViewInfo);
|
||||
});
|
||||
});
|
||||
@ -101,28 +101,30 @@ public class VisualizationOuterParamsService implements VisualizationOuterParams
|
||||
@Override
|
||||
public VisualizationOuterParamsBaseResponse getOuterParamsInfo(String visualizationId) {
|
||||
List<VisualizationOuterParamsInfoDTO> result = extOuterParamsMapper.getVisualizationOuterParamsInfo(visualizationId);
|
||||
return new VisualizationOuterParamsBaseResponse(Optional.ofNullable(result).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(VisualizationOuterParamsInfoDTO::getSourceInfo, VisualizationOuterParamsInfoDTO::getTargetInfoList)));
|
||||
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))
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CoreDatasetGroupVO> queryDsWithVisualizationId(String visualizationId) {
|
||||
List<CoreDatasetGroupVO> result = extOuterParamsMapper.queryDsWithVisualizationId(visualizationId);
|
||||
if(!CollectionUtils.isEmpty(result)){
|
||||
List<CoreDatasetGroupVO> result = extOuterParamsMapper.queryDsWithVisualizationId(visualizationId);
|
||||
if (!CollectionUtils.isEmpty(result)) {
|
||||
result.forEach(coreDatasetGroupVO -> {
|
||||
List<CoreDatasetTableFieldVO> fields = coreDatasetGroupVO.getDatasetFields();
|
||||
QueryWrapper<CoreDatasetTable> wrapper = new QueryWrapper<>();
|
||||
wrapper.eq("dataset_group_id", coreDatasetGroupVO.getId());
|
||||
List<CoreDatasetTable> tableResult = coreDatasetTableMapper.selectList(wrapper);
|
||||
if(!CollectionUtils.isEmpty(tableResult)){
|
||||
if (!CollectionUtils.isEmpty(tableResult)) {
|
||||
tableResult.forEach(coreDatasetTable -> {
|
||||
String sqlVarDetail = coreDatasetTable.getSqlVariableDetails();
|
||||
if(StringUtils.isNotEmpty(sqlVarDetail)){
|
||||
if (StringUtils.isNotEmpty(sqlVarDetail)) {
|
||||
TypeReference<List<SqlVariableDetails>> listTypeReference = new TypeReference<List<SqlVariableDetails>>() {
|
||||
};
|
||||
List<SqlVariableDetails> defaultsSqlVariableDetails = JsonUtil.parseList(sqlVarDetail, listTypeReference);
|
||||
defaultsSqlVariableDetails.forEach(sqlVariableDetails -> {
|
||||
String varFieldId = coreDatasetTable.getId()+"|DE|"+sqlVariableDetails.getVariableName();
|
||||
fields.add(new CoreDatasetTableFieldVO(varFieldId,sqlVariableDetails.getVariableName(), DeTypeConstants.DE_STRING));
|
||||
String varFieldId = coreDatasetTable.getId() + "|DE|" + sqlVariableDetails.getVariableName();
|
||||
fields.add(new CoreDatasetTableFieldVO(varFieldId, sqlVariableDetails.getVariableName(), DeTypeConstants.DE_STRING));
|
||||
});
|
||||
}
|
||||
});
|
||||
|
@ -1,4 +1,5 @@
|
||||
ALTER TABLE `visualization_outer_params_info`
|
||||
ADD COLUMN `required` tinyint(1) DEFAULT 0 COMMENT '是否必填',
|
||||
ADD COLUMN `default_value` longtext NULL COMMENT '默认值 JSON格式';
|
||||
ADD COLUMN `enabled_default` tinyint(1) NULL DEFAULT 0 COMMENT '是否启用默认值';
|
||||
update visualization_outer_params_info set required =0;
|
@ -1,4 +1,5 @@
|
||||
ALTER TABLE `visualization_outer_params_info`
|
||||
ADD COLUMN `required` tinyint(1) DEFAULT 0 COMMENT '是否必填',
|
||||
ADD COLUMN `default_value` longtext NULL COMMENT '默认值 JSON格式';
|
||||
ADD COLUMN `enabled_default` tinyint(1) NULL DEFAULT 0 COMMENT '是否启用默认值';
|
||||
update visualization_outer_params_info set required =0;
|
@ -16,8 +16,9 @@
|
||||
<result column="params_id" jdbcType="VARCHAR" property="paramsId" />
|
||||
<result column="param_name" jdbcType="VARCHAR" property="paramName" />
|
||||
<result column="checked" jdbcType="BIT" property="checked" />
|
||||
<result column="required" jdbcType="BIT" property="checked" />
|
||||
<result column="default_value" jdbcType="VARCHAR" property="copyFrom" />
|
||||
<result column="required" jdbcType="BIT" property="required" />
|
||||
<result column="default_value" jdbcType="VARCHAR" property="defaultValue" />
|
||||
<result column="enabled_default" jdbcType="BIT" property="enabledDefault" />
|
||||
<result column="copy_from" jdbcType="VARCHAR" property="copyFrom" />
|
||||
<result column="copy_id" jdbcType="VARCHAR" property="copyId" />
|
||||
</resultMap>
|
||||
@ -51,6 +52,9 @@
|
||||
|
||||
<resultMap id="AllOuterParamsMap" type="io.dataease.api.visualization.dto.VisualizationOuterParamsInfoDTO">
|
||||
<result column="sourceInfo" jdbcType="VARCHAR" property="sourceInfo"/>
|
||||
<result column="required" jdbcType="VARCHAR" property="required"/>
|
||||
<result column="default_value" jdbcType="VARCHAR" property="defaultValue"/>
|
||||
<result column="enabled_default" jdbcType="VARCHAR" property="enabledDefault"/>
|
||||
<collection property="targetInfoList" ofType="String">
|
||||
<result column="targetInfo" jdbcType="VARCHAR"/>
|
||||
</collection>
|
||||
@ -61,6 +65,9 @@
|
||||
pop.visualization_id,
|
||||
popi.params_info_id,
|
||||
popi.param_name,
|
||||
popi.enabled_default,
|
||||
popi.required,
|
||||
popi.default_value,
|
||||
ifnull( popi.checked, 0 ) AS checked,
|
||||
poptvi.target_view_id,
|
||||
poptvi.target_ds_id,
|
||||
@ -118,7 +125,10 @@
|
||||
|
||||
<select id="getVisualizationOuterParamsInfo" resultMap="AllOuterParamsMap">
|
||||
SELECT DISTINCT
|
||||
param_name AS sourceInfo,
|
||||
popi.param_name AS sourceInfo,
|
||||
popi.required AS required,
|
||||
popi.default_value AS default_value,
|
||||
popi.enabled_default AS enabled_default,
|
||||
CONCAT( poptvi.target_view_id, '#', poptvi.target_field_id ) AS targetInfo
|
||||
FROM
|
||||
visualization_outer_params pop
|
||||
|
@ -68,7 +68,7 @@
|
||||
</el-tree>
|
||||
</el-row>
|
||||
</el-col>
|
||||
<el-col :span="14" class="preview-show">
|
||||
<el-col :span="13" class="preview-show">
|
||||
<el-row v-if="state.curNodeId">
|
||||
<el-row class="new-params-title"> 选择参数关联组件 </el-row>
|
||||
<el-row class="new-params-filter" v-if="state.outerParamsInfo?.filterInfo?.length">
|
||||
@ -246,9 +246,31 @@
|
||||
<empty-background description="请配置参数" img-type="noneWhite" />
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="4" class="params-attach-setting">
|
||||
<el-col :span="5" class="params-attach-setting">
|
||||
<el-row v-if="state.curNodeId">
|
||||
<el-row class="new-params-title"> 参数配置 </el-row>
|
||||
<el-row class="params-attach-content">
|
||||
<el-row>
|
||||
<el-checkbox v-model="state.outerParamsInfo.required">必填 </el-checkbox>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-checkbox v-model="state.outerParamsInfo.enabledDefault">默认值 </el-checkbox>
|
||||
</el-row>
|
||||
<el-input
|
||||
:ref="el => setArgRef(el, state.outerParamsInfo.paramsInfoId)"
|
||||
:placeholder="'请输入参数'"
|
||||
v-model="state.outerParamsInfo.defaultValue"
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 4, maxRows: 8 }"
|
||||
@change="
|
||||
val =>
|
||||
validateArgs(
|
||||
state.outerParamsInfo.defaultValue,
|
||||
state.outerParamsInfo.paramsInfoId
|
||||
)
|
||||
"
|
||||
/>
|
||||
</el-row>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@ -265,13 +287,12 @@
|
||||
import { ref, reactive, computed, nextTick } from 'vue'
|
||||
import { dvMainStoreWithOut } from '@/store/modules/data-visualization/dvMain'
|
||||
import { storeToRefs } from 'pinia'
|
||||
import { ElCol, ElMessage } from 'element-plus-secondary'
|
||||
import { ElCol, ElInput, ElMessage } from 'element-plus-secondary'
|
||||
import { useI18n } from '@/hooks/web/useI18n'
|
||||
import { deepCopy } from '@/utils/utils'
|
||||
import generateID from '@/utils/generateID'
|
||||
import { queryWithVisualizationId, updateOuterParamsSet } from '@/api/visualization/outerParams'
|
||||
import { queryOuterParamsDsInfo, viewDetailList } from '@/api/visualization/dataVisualization'
|
||||
import checkArrayRepeat from '@/utils/check'
|
||||
import HandleMore from '@/components/handle-more/src/HandleMore.vue'
|
||||
import { fieldType } from '@/utils/attr'
|
||||
import EmptyBackground from '@/components/empty-background/src/EmptyBackground.vue'
|
||||
@ -318,6 +339,9 @@ const state = reactive({
|
||||
outerParamsInfo: {
|
||||
content: '',
|
||||
linkType: '',
|
||||
required: false,
|
||||
enabledDefault: false,
|
||||
defaultValue: null,
|
||||
targetViewInfoList: [],
|
||||
paramsInfoId: null
|
||||
},
|
||||
@ -326,7 +350,8 @@ const state = reactive({
|
||||
paramName: '',
|
||||
checked: true,
|
||||
required: false,
|
||||
defaultValue: {},
|
||||
enabledDefault: false,
|
||||
defaultValue: null,
|
||||
targetViewInfoList: []
|
||||
},
|
||||
defaultTargetViewInfo: {
|
||||
@ -350,6 +375,49 @@ const state = reactive({
|
||||
}
|
||||
})
|
||||
|
||||
const argRefs = ref({})
|
||||
|
||||
const setArgRef = (el, id) => {
|
||||
if (el) {
|
||||
argRefs.value[id] = el
|
||||
}
|
||||
}
|
||||
|
||||
const validateArgs = (val, id) => {
|
||||
const cref = argRefs.value[id]
|
||||
const e = cref.input
|
||||
if (val === null || val === '' || typeof val === 'undefined') {
|
||||
e.style.color = null
|
||||
e.parentNode.removeAttribute('style')
|
||||
const child = e.parentNode.querySelector('.error-msg')
|
||||
if (child) {
|
||||
e.parentNode.removeChild(child)
|
||||
}
|
||||
return true
|
||||
}
|
||||
try {
|
||||
JSON.parse(val)
|
||||
e.style.color = null
|
||||
e.parentNode.removeAttribute('style')
|
||||
const child = e.parentNode.querySelector('.error-msg')
|
||||
if (child) {
|
||||
e.parentNode.removeChild(child)
|
||||
}
|
||||
return true
|
||||
} catch (error) {
|
||||
e.style.color = 'red'
|
||||
e.parentNode.setAttribute('style', 'box-shadow: 0 0 0 1px red inset;')
|
||||
const child = e.parentNode.querySelector('.error-msg')
|
||||
if (!child) {
|
||||
const errorDom = document.createElement('div')
|
||||
errorDom.className = 'error-msg'
|
||||
errorDom.innerText = '格式错误'
|
||||
e.parentNode.appendChild(errorDom)
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
const viewSelectedField = computed(() =>
|
||||
state.outerParamsInfo?.targetViewInfoList?.map(targetViewInfo => targetViewInfo.targetViewId)
|
||||
)
|
||||
@ -983,4 +1051,18 @@ defineExpose({
|
||||
.params-attach-setting {
|
||||
border-left: 1px solid #e6e6e6;
|
||||
}
|
||||
|
||||
.params-attach-content {
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
:deep(.error-msg) {
|
||||
color: red;
|
||||
position: fixed;
|
||||
z-index: 9;
|
||||
font-size: 10px;
|
||||
height: 10px;
|
||||
margin-bottom: 12px;
|
||||
margin-right: -80px;
|
||||
}
|
||||
</style>
|
||||
|
@ -68,6 +68,7 @@ onBeforeMount(async () => {
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
ElMessage.error(t('visualization.outer_param_decode_error'))
|
||||
return
|
||||
}
|
||||
}
|
||||
if (tokenInfo && Object.keys(tokenInfo).length) {
|
||||
|
@ -72,6 +72,7 @@ onBeforeMount(async () => {
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
ElMessage.error(t('visualization.outer_param_decode_error'))
|
||||
return
|
||||
}
|
||||
}
|
||||
const chartId = embeddedParams?.chartId || embeddedStore.chartId
|
||||
|
@ -24,6 +24,7 @@ import {
|
||||
import { get, set } from 'lodash-es'
|
||||
import { viewFieldTimeTrans } from '@/utils/viewUtils'
|
||||
import { useAppearanceStoreWithOut } from '@/store/modules/appearance'
|
||||
import { ElMessage } from 'element-plus-secondary'
|
||||
|
||||
export const dvMainStore = defineStore('dataVisualization', {
|
||||
state: () => {
|
||||
@ -114,6 +115,8 @@ export const dvMainStore = defineStore('dataVisualization', {
|
||||
nowPanelJumpInfoTargetPanel: {},
|
||||
// 当前仪表板的外部参数信息
|
||||
nowPanelOuterParamsInfo: {},
|
||||
// 当前仪表板的外部参数基础信息
|
||||
nowPanelOuterParamsBaseInfo: null,
|
||||
// 拖拽的组件信息
|
||||
dragComponentInfo: null,
|
||||
// 移动端布局状态
|
||||
@ -887,6 +890,7 @@ export const dvMainStore = defineStore('dataVisualization', {
|
||||
},
|
||||
setNowPanelOuterParamsInfo(outerParamsInfo) {
|
||||
this.nowPanelOuterParamsInfo = outerParamsInfo.outerParamsInfoMap
|
||||
this.nowPanelOuterParamsBaseInfo = outerParamsInfo.outerParamsInfoBaseMap
|
||||
},
|
||||
// 添加联动 下钻 等查询组件
|
||||
addViewTrackFilter(data) {
|
||||
@ -939,8 +943,40 @@ export const dvMainStore = defineStore('dataVisualization', {
|
||||
})
|
||||
},
|
||||
// 添加外部参数的过滤条件
|
||||
addOuterParamsFilter(params, curComponentData = this.componentData, source = 'inner') {
|
||||
addOuterParamsFilter(paramsPre, curComponentData = this.componentData, source = 'inner') {
|
||||
// params 结构 {key1:value1,key2:value2}
|
||||
const params = {}
|
||||
if (this.nowPanelOuterParamsBaseInfo) {
|
||||
let errorCount = 0
|
||||
let errorMes = ''
|
||||
Object.keys(this.nowPanelOuterParamsBaseInfo).forEach(key => {
|
||||
const targetInfo = this.nowPanelOuterParamsBaseInfo[key]
|
||||
const userParams = paramsPre[key]
|
||||
const userParamsIsNull = !userParams || userParams.length === 0
|
||||
if (targetInfo.required && userParamsIsNull) {
|
||||
// 要求用户必填 但是用户没有输入参数
|
||||
errorCount++
|
||||
errorMes = errorMes + key + ';'
|
||||
} else if (
|
||||
userParamsIsNull &&
|
||||
targetInfo.enabledDefault &&
|
||||
targetInfo.defaultValue &&
|
||||
targetInfo.defaultValue.length > 0
|
||||
) {
|
||||
// 非必填时 用户没有填写参数 但是启用默认值且有预设默认值时
|
||||
params[key] = JSON.parse(targetInfo.defaultValue)
|
||||
} else if (!userParamsIsNull) {
|
||||
params[key] = paramsPre[key]
|
||||
}
|
||||
})
|
||||
if (errorCount > 0) {
|
||||
ElMessage.error('参数错误 ' + errorMes + '为必填参数')
|
||||
return
|
||||
}
|
||||
} else {
|
||||
return
|
||||
}
|
||||
|
||||
if (params) {
|
||||
const preActiveComponentIds = []
|
||||
const trackInfo = this.nowPanelOuterParamsInfo
|
||||
|
@ -86,6 +86,7 @@ const loadCanvasDataAsync = async (dvId, dvType) => {
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
ElMessage.error(t('visualization.outer_param_decode_error'))
|
||||
return
|
||||
}
|
||||
}
|
||||
initCanvasDataMobile(
|
||||
|
@ -1,5 +1,6 @@
|
||||
package io.dataease.api.visualization.response;
|
||||
|
||||
import io.dataease.api.visualization.dto.VisualizationOuterParamsInfoDTO;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
@ -15,8 +16,11 @@ public class VisualizationOuterParamsBaseResponse {
|
||||
// 获取仪表板外部参数映射信息
|
||||
private Map<String, List<String>> outerParamsInfoMap;
|
||||
|
||||
public VisualizationOuterParamsBaseResponse(Map<String, List<String>> outerParamsInfoMap) {
|
||||
private Map<String,VisualizationOuterParamsInfoDTO> outerParamsInfoBaseMap;
|
||||
|
||||
public VisualizationOuterParamsBaseResponse(Map<String, List<String>> outerParamsInfoMap,Map<String,VisualizationOuterParamsInfoDTO> outerParamsInfoBaseMap) {
|
||||
this.outerParamsInfoMap = outerParamsInfoMap;
|
||||
this.outerParamsInfoBaseMap = outerParamsInfoBaseMap;
|
||||
}
|
||||
|
||||
public VisualizationOuterParamsBaseResponse() {
|
||||
|
@ -1,6 +1,7 @@
|
||||
package io.dataease.api.visualization.vo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@ -12,6 +13,7 @@ import java.io.Serializable;
|
||||
* @author fit2cloud
|
||||
* @since 2024-03-08
|
||||
*/
|
||||
@Data
|
||||
public class VisualizationOuterParamsInfoVO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
@ -47,7 +49,10 @@ public class VisualizationOuterParamsInfoVO implements Serializable {
|
||||
*/
|
||||
private String defaultValue;
|
||||
|
||||
|
||||
/**
|
||||
* 是否启用默认值
|
||||
*/
|
||||
private Boolean enabledDefault;
|
||||
/**
|
||||
* 复制来源
|
||||
*/
|
||||
@ -58,54 +63,6 @@ public class VisualizationOuterParamsInfoVO implements Serializable {
|
||||
*/
|
||||
private String copyId;
|
||||
|
||||
public String getParamsInfoId() {
|
||||
return paramsInfoId;
|
||||
}
|
||||
|
||||
public void setParamsInfoId(String paramsInfoId) {
|
||||
this.paramsInfoId = paramsInfoId;
|
||||
}
|
||||
|
||||
public String getParamsId() {
|
||||
return paramsId;
|
||||
}
|
||||
|
||||
public void setParamsId(String paramsId) {
|
||||
this.paramsId = paramsId;
|
||||
}
|
||||
|
||||
public String getParamName() {
|
||||
return paramName;
|
||||
}
|
||||
|
||||
public void setParamName(String paramName) {
|
||||
this.paramName = paramName;
|
||||
}
|
||||
|
||||
public Boolean getChecked() {
|
||||
return checked;
|
||||
}
|
||||
|
||||
public void setChecked(Boolean checked) {
|
||||
this.checked = checked;
|
||||
}
|
||||
|
||||
public String getCopyFrom() {
|
||||
return copyFrom;
|
||||
}
|
||||
|
||||
public void setCopyFrom(String copyFrom) {
|
||||
this.copyFrom = copyFrom;
|
||||
}
|
||||
|
||||
public String getCopyId() {
|
||||
return copyId;
|
||||
}
|
||||
|
||||
public void setCopyId(String copyId) {
|
||||
this.copyId = copyId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "VisualizationOuterParamsInfo{" +
|
||||
|
Loading…
Reference in New Issue
Block a user