diff --git a/core/core-backend/src/main/java/io/dataease/MybatisPlusGenerator.java b/core/core-backend/src/main/java/io/dataease/MybatisPlusGenerator.java
index ed819dd4b1..ab90be4089 100644
--- a/core/core-backend/src/main/java/io/dataease/MybatisPlusGenerator.java
+++ b/core/core-backend/src/main/java/io/dataease/MybatisPlusGenerator.java
@@ -21,11 +21,11 @@ public class MybatisPlusGenerator {
/**
* 业务模块例如datasource,dataset,panel等
*/
- private static final String busi = "chart";
+ private static final String busi = "visualization";
/**
* 这是要生成代码的表名称
*/
- private static final String TABLE_NAME = "core_chart_view";
+ private static final String TABLE_NAME = "visualization_link_jump_target_view_info";
/**
* 下面两个配置基本上不用动
diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/YoyChartHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/YoyChartHandler.java
index 519ba6afc8..6f64f5b993 100644
--- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/YoyChartHandler.java
+++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/YoyChartHandler.java
@@ -120,7 +120,7 @@ public class YoyChartHandler extends DefaultChartHandler {
expandedResult.setQuerySql(originSql);
}
// 同环比数据排序
- expandedResult.setOriginData(sortData(view, expandedResult.getOriginData(),formatResult));
+ expandedResult.setOriginData(sortData(view, expandedResult.getOriginData(), formatResult));
return expandedResult;
}
@@ -128,7 +128,14 @@ public class YoyChartHandler extends DefaultChartHandler {
// 维度排序
List xAxisSortList = view.getXAxis().stream().filter(x -> !StringUtils.equalsIgnoreCase("none", x.getSort())).toList();
// 指标排序
- List yAxisSortList = view.getYAxis().stream().filter(y -> !StringUtils.equalsIgnoreCase("none", y.getSort())).toList();
+ List yAxisSortList = view.getYAxis().stream().filter(y -> {
+ //需要针对区间条形图的时间类型判断一下
+ if (StringUtils.equalsIgnoreCase("bar-range", view.getType()) && StringUtils.equalsIgnoreCase(y.getGroupType(), "d") && y.getDeType() == 1) {
+ return false;
+ } else {
+ return !StringUtils.equalsIgnoreCase("none", y.getSort());
+ }
+ }).toList();
// 不包含维度排序时,指标排序生效
if (!data.isEmpty() && CollectionUtils.isEmpty(xAxisSortList) && CollectionUtils.isNotEmpty(yAxisSortList)) {
// 指标排序仅第一个生效
diff --git a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewManege.java b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewManege.java
index 2cdc8d5578..aff3756164 100644
--- a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewManege.java
+++ b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewManege.java
@@ -30,6 +30,7 @@ import io.dataease.license.config.XpackInteract;
import io.dataease.utils.BeanUtils;
import io.dataease.utils.IDUtils;
import io.dataease.utils.JsonUtil;
+import io.dataease.utils.LogUtil;
import io.dataease.visualization.dao.auto.entity.DataVisualizationInfo;
import io.dataease.visualization.dao.auto.mapper.DataVisualizationInfoMapper;
import jakarta.annotation.Resource;
@@ -41,6 +42,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.*;
+import java.util.concurrent.*;
import java.util.stream.Collectors;
/**
@@ -127,11 +129,53 @@ public class ChartViewManege {
QueryWrapper wrapper = new QueryWrapper<>();
wrapper.eq("scene_id", sceneId);
List chartViewDTOS = transChart(coreChartViewMapper.selectList(wrapper));
- for (ChartViewDTO dto : chartViewDTOS) {
- QueryWrapper wp = new QueryWrapper<>();
- wp.eq("dataset_group_id", dto.getTableId());
- List coreDatasetTableFields = coreDatasetTableFieldMapper.selectList(wp);
- dto.setCalParams(Utils.getParams(datasetTableFieldManage.transDTO(coreDatasetTableFields)));
+ if (!CollectionUtils.isEmpty(chartViewDTOS)) {
+ List tableIds = chartViewDTOS.stream()
+ .map(ChartViewDTO::getTableId).distinct()
+ .toList();
+ if (!CollectionUtils.isEmpty(tableIds)) {
+ QueryWrapper wp = new QueryWrapper<>();
+ wp.in("dataset_group_id", tableIds);
+ List coreDatasetTableFields = coreDatasetTableFieldMapper.selectList(wp);
+ Map> groupedByTableId = coreDatasetTableFields.stream()
+ .collect(Collectors.groupingBy(CoreDatasetTableField::getDatasetGroupId));
+ if(chartViewDTOS.size()<10){
+ chartViewDTOS.forEach(dto -> {
+ if (dto.getTableId() != null) {
+ dto.setCalParams(Utils.getParams(datasetTableFieldManage.transDTO(groupedByTableId.get(dto.getTableId()))));
+ }
+ });
+ }else{
+ ExecutorService executor = Executors.newFixedThreadPool(10);
+ try {
+ // 超过10个图表要处理启用多线程处理
+ CountDownLatch latch = new CountDownLatch(chartViewDTOS.size());
+ chartViewDTOS.forEach(dto -> {
+ executor.submit(() -> {
+ try {
+ if (dto.getTableId() != null) {
+ dto.setCalParams(Utils.getParams(datasetTableFieldManage.transDTO(groupedByTableId.get(dto.getTableId()))));
+ }
+ } finally {
+ latch.countDown(); // 减少计数器
+ }
+ });
+ });
+
+ // 等待所有线程完成
+ boolean completedInTime = latch.await(200, TimeUnit.SECONDS);
+ if (!completedInTime) {
+ throw new InterruptedException("Tasks did not complete within 200 seconds");
+ }
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ LogUtil.error(e);
+ } finally {
+ executor.shutdown(); // 确保线程池关闭
+ }
+ }
+
+ }
}
return chartViewDTOS;
}
diff --git a/core/core-backend/src/main/java/io/dataease/commons/utils/SqlparserUtils.java b/core/core-backend/src/main/java/io/dataease/commons/utils/SqlparserUtils.java
index 53b54bc5b8..0dc588fe92 100644
--- a/core/core-backend/src/main/java/io/dataease/commons/utils/SqlparserUtils.java
+++ b/core/core-backend/src/main/java/io/dataease/commons/utils/SqlparserUtils.java
@@ -606,7 +606,11 @@ public class SqlparserUtils {
&& sqlVariableDetails.getDeType() == 0) {
return "N'" + String.join("', N'", sqlVariableDetails.getValue()) + "'";
} else {
- return "'" + String.join("','", sqlVariableDetails.getValue()) + "'";
+ if (sqlVariableDetails.getDeType() == 2 || sqlVariableDetails.getDeType() == 3) {
+ return String.join(",", sqlVariableDetails.getValue());
+ } else {
+ return "'" + String.join("','", sqlVariableDetails.getValue()) + "'";
+ }
}
} else if (sqlVariableDetails.getOperator().equals("between")) {
if (sqlVariableDetails.getDeType() == 1) {
diff --git a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetDataManage.java b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetDataManage.java
index 69703e730f..aaf5b8b249 100644
--- a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetDataManage.java
+++ b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetDataManage.java
@@ -113,8 +113,9 @@ public class DatasetDataManage {
sql = provider.transSqlDialect(sql, datasourceRequest.getDsList());
} else {
// parser sql params and replace default value
- String originSql = provider.replaceComment(new String(Base64.getDecoder().decode(tableInfoDTO.getSql())));
- originSql = SqlparserUtils.handleVariableDefaultValue(originSql, datasetTableDTO.getSqlVariableDetails(), false, false, null, false, datasourceRequest.getDsList(), pluginManage);
+ String s = new String(Base64.getDecoder().decode(tableInfoDTO.getSql()));
+ String originSql = SqlparserUtils.handleVariableDefaultValue(s, datasetTableDTO.getSqlVariableDetails(), false, false, null, false, datasourceRequest.getDsList(), pluginManage);
+ originSql = provider.replaceComment(originSql);
// add sql table schema
sql = SQLUtils.buildOriginPreviewSql(SqlPlaceholderConstants.TABLE_PLACEHOLDER, 0, 0);
@@ -403,8 +404,9 @@ public class DatasetDataManage {
// parser sql params and replace default value
- String originSql = provider.replaceComment(new String(Base64.getDecoder().decode(dto.getSql())));
- originSql = SqlparserUtils.handleVariableDefaultValue(datasetSQLManage.subPrefixSuffixChar(originSql), dto.getSqlVariableDetails(), true, true, null, false, dsMap, pluginManage);
+ String s = new String(Base64.getDecoder().decode(dto.getSql()));
+ String originSql = SqlparserUtils.handleVariableDefaultValue(datasetSQLManage.subPrefixSuffixChar(s), dto.getSqlVariableDetails(), true, true, null, false, dsMap, pluginManage);
+ originSql = provider.replaceComment(originSql);
// sql 作为临时表,外层加上limit
String sql;
diff --git a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetGroupManage.java b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetGroupManage.java
index 52db3e5c46..1204c6250a 100644
--- a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetGroupManage.java
+++ b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetGroupManage.java
@@ -222,14 +222,17 @@ public class DatasetGroupManage {
}
- @XpackInteract(value = "authResourceTree", replace = true)
+ @XpackInteract(value = "authResourceTree", replace = true, invalid = true)
public List tree(BusiNodeRequest request) {
QueryWrapper
*
* @author fit2cloud
- * @since 2024-11-18
+ * @since 2024-11-22
*/
@Mapper
public interface DataVisualizationInfoMapper extends BaseMapper {
diff --git a/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/VisualizationLinkJumpTargetViewInfoMapper.java b/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/VisualizationLinkJumpTargetViewInfoMapper.java
index c4c21b4252..df62b642f8 100644
--- a/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/VisualizationLinkJumpTargetViewInfoMapper.java
+++ b/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/VisualizationLinkJumpTargetViewInfoMapper.java
@@ -6,11 +6,11 @@ import org.apache.ibatis.annotations.Mapper;
/**
*
- * Mapper 接口
+ * 跳转目标仪表板图表字段配置表 Mapper 接口
*
*
* @author fit2cloud
- * @since 2023-09-22
+ * @since 2024-11-20
*/
@Mapper
public interface VisualizationLinkJumpTargetViewInfoMapper extends BaseMapper {
diff --git a/core/core-backend/src/main/java/io/dataease/visualization/dao/ext/mapper/ExtVisualizationLinkJumpMapper.java b/core/core-backend/src/main/java/io/dataease/visualization/dao/ext/mapper/ExtVisualizationLinkJumpMapper.java
index e28e305771..cfb906119a 100644
--- a/core/core-backend/src/main/java/io/dataease/visualization/dao/ext/mapper/ExtVisualizationLinkJumpMapper.java
+++ b/core/core-backend/src/main/java/io/dataease/visualization/dao/ext/mapper/ExtVisualizationLinkJumpMapper.java
@@ -4,6 +4,7 @@ import io.dataease.api.visualization.dto.VisualizationLinkJumpDTO;
import io.dataease.api.visualization.request.VisualizationLinkJumpBaseRequest;
import io.dataease.api.visualization.vo.VisualizationLinkJumpInfoVO;
import io.dataease.api.visualization.vo.VisualizationLinkJumpVO;
+import io.dataease.api.visualization.vo.VisualizationOutParamsJumpVO;
import io.dataease.api.visualization.vo.VisualizationViewTableVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -36,6 +37,10 @@ public interface ExtVisualizationLinkJumpMapper {
void copyLinkJumpTarget(@Param("copyId")Long copyId);
List findLinkJumpWithDvId(@Param("dvId")Long dvId);
+
List findLinkJumpInfoWithDvId(@Param("dvId")Long dvId);
+
List getViewTableDetails(@Param("dvId")Long dvId);
+
+ List queryOutParamsTargetWithDvId(@Param("dvId")Long dvId);
}
diff --git a/core/core-backend/src/main/java/io/dataease/visualization/dao/ext/mapper/ExtVisualizationOuterParamsMapper.java b/core/core-backend/src/main/java/io/dataease/visualization/dao/ext/mapper/ExtVisualizationOuterParamsMapper.java
index abe21e2657..32b85f99eb 100644
--- a/core/core-backend/src/main/java/io/dataease/visualization/dao/ext/mapper/ExtVisualizationOuterParamsMapper.java
+++ b/core/core-backend/src/main/java/io/dataease/visualization/dao/ext/mapper/ExtVisualizationOuterParamsMapper.java
@@ -4,6 +4,7 @@ package io.dataease.visualization.dao.ext.mapper;
import io.dataease.api.dataset.vo.CoreDatasetGroupVO;
import io.dataease.api.visualization.dto.VisualizationOuterParamsDTO;
import io.dataease.api.visualization.dto.VisualizationOuterParamsInfoDTO;
+import io.dataease.visualization.dao.auto.entity.VisualizationOuterParamsInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -22,5 +23,7 @@ public interface ExtVisualizationOuterParamsMapper {
List getVisualizationOuterParamsInfo(@Param("visualizationId") String visualizationId);
+ List getVisualizationOuterParamsInfoBase(@Param("visualizationId") String visualizationId);
+
List queryDsWithVisualizationId(@Param("visualizationId") String visualizationId);
}
diff --git a/core/core-backend/src/main/java/io/dataease/visualization/manage/CoreVisualizationManage.java b/core/core-backend/src/main/java/io/dataease/visualization/manage/CoreVisualizationManage.java
index ff95c68ec8..08749ef3b0 100644
--- a/core/core-backend/src/main/java/io/dataease/visualization/manage/CoreVisualizationManage.java
+++ b/core/core-backend/src/main/java/io/dataease/visualization/manage/CoreVisualizationManage.java
@@ -48,7 +48,7 @@ public class CoreVisualizationManage {
@Resource
private CoreOptRecentManage coreOptRecentManage;
- @XpackInteract(value = "visualizationResourceTree", replace = true)
+ @XpackInteract(value = "visualizationResourceTree", replace = true, invalid = true)
public List tree(BusiNodeRequest request) {
List nodes = new ArrayList<>();
if (ObjectUtils.isEmpty(request.getLeaf()) || !request.getLeaf()) {
@@ -59,6 +59,10 @@ public class CoreVisualizationManage {
queryWrapper.ne("pid", -1);
queryWrapper.eq(ObjectUtils.isNotEmpty(request.getLeaf()), "node_type", ObjectUtils.isNotEmpty(request.getLeaf()) && request.getLeaf() ? "leaf" : "folder");
queryWrapper.eq("type", request.getBusiFlag());
+ String info = CommunityUtils.getInfo();
+ if (StringUtils.isNotBlank(info)) {
+ queryWrapper.notExists(String.format(info, "data_visualization_info.id"));
+ }
queryWrapper.orderByDesc("create_time");
List pos = extMapper.queryNodes(queryWrapper);
if (CollectionUtils.isNotEmpty(pos)) {
@@ -158,7 +162,7 @@ public class CoreVisualizationManage {
return CommonBeanFactory.getBean(this.getClass());
}
- @XpackInteract(value = "perFilterManage", recursion = true)
+ @XpackInteract(value = "perFilterManage", recursion = true, invalid = true)
public IPage query(int pageNum, int pageSize, VisualizationWorkbranchQueryRequest request) {
IPage visualizationResourcePOPageIPage = proxy().queryVisualizationPage(pageNum, pageSize, request);
if (ObjectUtils.isEmpty(visualizationResourcePOPageIPage)) {
@@ -182,7 +186,7 @@ public class CoreVisualizationManage {
new VisualizationResourceVO(
po.getId(), po.getResourceId(), po.getName(),
po.getType(), String.valueOf(po.getCreator()), String.valueOf(po.getLastEditor()), po.getLastEditTime(),
- po.getFavorite(), 9,po.getExtFlag())).toList();
+ po.getFavorite(), 9, po.getExtFlag())).toList();
}
public IPage queryVisualizationPage(int goPage, int pageSize, VisualizationWorkbranchQueryRequest request) {
@@ -198,6 +202,10 @@ public class CoreVisualizationManage {
if (StringUtils.isNotBlank(request.getKeyword())) {
queryWrapper.like("dvResource.name", request.getKeyword());
}
+ String info = CommunityUtils.getInfo();
+ if (StringUtils.isNotBlank(info)) {
+ queryWrapper.notExists(String.format(info, "core_opt_recent.resource_id"));
+ }
queryWrapper.orderBy(true, request.isAsc(), "core_opt_recent.time");
Page page = new Page<>(goPage, pageSize);
return extDataVisualizationMapper.findRecent(page, uid, queryWrapper);
diff --git a/core/core-backend/src/main/java/io/dataease/visualization/manage/VisualizationStoreManage.java b/core/core-backend/src/main/java/io/dataease/visualization/manage/VisualizationStoreManage.java
index 23993efc0e..6af3bf242a 100644
--- a/core/core-backend/src/main/java/io/dataease/visualization/manage/VisualizationStoreManage.java
+++ b/core/core-backend/src/main/java/io/dataease/visualization/manage/VisualizationStoreManage.java
@@ -11,6 +11,7 @@ import io.dataease.exception.DEException;
import io.dataease.license.config.XpackInteract;
import io.dataease.utils.AuthUtils;
import io.dataease.utils.CommonBeanFactory;
+import io.dataease.utils.CommunityUtils;
import io.dataease.utils.IDUtils;
import io.dataease.visualization.dao.auto.entity.CoreStore;
import io.dataease.visualization.dao.auto.mapper.CoreStoreMapper;
@@ -65,7 +66,7 @@ public class VisualizationStoreManage {
return coreStoreMapper.exists(queryWrapper);
}
- @XpackInteract(value = "perFilterManage", recursion = true)
+ @XpackInteract(value = "perFilterManage", recursion = true, invalid = true)
public IPage query(int pageNum, int pageSize, VisualizationWorkbranchQueryRequest request) {
IPage storePOIPage = proxy().queryStorePage(pageNum, pageSize, request);
if (ObjectUtils.isEmpty(storePOIPage)) return null;
@@ -89,7 +90,7 @@ public class VisualizationStoreManage {
new VisualizationStoreVO(
po.getStoreId(), po.getResourceId(), po.getName(),
po.getType(), String.valueOf(po.getCreator()), ObjectUtils.isEmpty(po.getEditor()) ? null : String.valueOf(po.getEditor()),
- po.getEditTime(), 9,po.getExtFlag())).toList();
+ po.getEditTime(), 9, po.getExtFlag())).toList();
}
public IPage queryStorePage(int goPage, int pageSize, VisualizationWorkbranchQueryRequest request) {
@@ -106,6 +107,10 @@ public class VisualizationStoreManage {
if (StringUtils.isNotBlank(request.getKeyword())) {
queryWrapper.like("v.name", request.getKeyword());
}
+ String info = CommunityUtils.getInfo();
+ if (StringUtils.isNotBlank(info)) {
+ queryWrapper.notExists(String.format(info, "s.resource_id"));
+ }
queryWrapper.orderBy(true, request.isAsc(), "v.update_time");
Page page = new Page<>(goPage, pageSize);
return coreStoreExtMapper.query(page, queryWrapper);
diff --git a/core/core-backend/src/main/java/io/dataease/visualization/server/DataVisualizationServer.java b/core/core-backend/src/main/java/io/dataease/visualization/server/DataVisualizationServer.java
index 2e26522b8f..0d15cef9f1 100644
--- a/core/core-backend/src/main/java/io/dataease/visualization/server/DataVisualizationServer.java
+++ b/core/core-backend/src/main/java/io/dataease/visualization/server/DataVisualizationServer.java
@@ -36,6 +36,7 @@ import io.dataease.exception.DEException;
import io.dataease.extensions.datasource.vo.DatasourceConfiguration;
import io.dataease.extensions.view.dto.ChartViewDTO;
import io.dataease.license.config.XpackInteract;
+import io.dataease.license.manage.CoreLicManage;
import io.dataease.log.DeLog;
import io.dataease.model.BusiNodeRequest;
import io.dataease.model.BusiNodeVO;
@@ -133,6 +134,9 @@ public class DataVisualizationServer implements DataVisualizationApi {
@Resource
private CoreBusiManage coreBusiManage;
+ @Resource
+ private CoreLicManage coreLicManage;
+
@Override
public DataVisualizationVO findCopyResource(Long dvId, String busiFlag) {
DataVisualizationVO result = Objects.requireNonNull(CommonBeanFactory.proxy(this.getClass())).findById(new DataVisualizationBaseRequest(dvId, busiFlag));
@@ -572,6 +576,15 @@ public class DataVisualizationServer implements DataVisualizationApi {
return extDataVisualizationMapper.findDvType(dvId);
}
+ @Override
+ public String updateCheckVersion(Long dvId) {
+ DataVisualizationInfo updateInfo = new DataVisualizationInfo();
+ updateInfo.setId(dvId);
+ updateInfo.setCheckVersion(coreLicManage.getVersion());
+ visualizationInfoMapper.updateById(updateInfo);
+ return "";
+ }
+
@Override
public DataVisualizationVO decompression(DataVisualizationBaseRequest request) throws Exception {
try {
diff --git a/core/core-backend/src/main/java/io/dataease/visualization/server/VisualizationLinkJumpService.java b/core/core-backend/src/main/java/io/dataease/visualization/server/VisualizationLinkJumpService.java
index ecd35afbfb..c5caa5c3a9 100644
--- a/core/core-backend/src/main/java/io/dataease/visualization/server/VisualizationLinkJumpService.java
+++ b/core/core-backend/src/main/java/io/dataease/visualization/server/VisualizationLinkJumpService.java
@@ -6,6 +6,7 @@ import io.dataease.api.visualization.dto.VisualizationLinkJumpDTO;
import io.dataease.api.visualization.dto.VisualizationLinkJumpInfoDTO;
import io.dataease.api.visualization.request.VisualizationLinkJumpBaseRequest;
import io.dataease.api.visualization.response.VisualizationLinkJumpBaseResponse;
+import io.dataease.api.visualization.vo.VisualizationOutParamsJumpVO;
import io.dataease.api.visualization.vo.VisualizationViewTableVO;
import io.dataease.auth.DeLinkPermit;
import io.dataease.chart.dao.auto.entity.CoreChartView;
@@ -148,15 +149,18 @@ public class VisualizationLinkJumpService implements VisualizationLinkJumpApi {
public VisualizationComponentDTO viewTableDetailList(Long dvId) {
DataVisualizationInfo dvInfo = dataVisualizationInfoMapper.selectById(dvId);
List result;
+ List outParamsJumpInfo;
String componentData;
if (dvInfo != null) {
result = extVisualizationLinkJumpMapper.getViewTableDetails(dvId).stream().filter(viewTableInfo -> dvInfo.getComponentData().indexOf(viewTableInfo.getId().toString()) > -1).collect(Collectors.toList());
componentData = dvInfo.getComponentData();
+ outParamsJumpInfo = extVisualizationLinkJumpMapper.queryOutParamsTargetWithDvId(dvId);
} else {
result = new ArrayList<>();
+ outParamsJumpInfo = new ArrayList<>();
componentData = "[]";
}
- return new VisualizationComponentDTO(componentData,result);
+ return new VisualizationComponentDTO(componentData,result,outParamsJumpInfo);
}
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 b3f4bdf018..ffdf7add03 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
@@ -29,10 +29,7 @@ import org.springframework.util.CollectionUtils;
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.*;
import java.util.stream.Collectors;
/**
@@ -72,6 +69,12 @@ public class VisualizationOuterParamsService implements VisualizationOuterParams
public void updateOuterParamsSet(VisualizationOuterParamsDTO outerParamsDTO) {
String visualizationId = outerParamsDTO.getVisualizationId();
Assert.notNull(visualizationId, "visualizationId cannot be null");
+ Map paramsInfoNameIdMap = new HashMap<>();
+ List paramsInfoNameIdList = extOuterParamsMapper.getVisualizationOuterParamsInfoBase(visualizationId);
+ if(!CollectionUtils.isEmpty(paramsInfoNameIdList)){
+ paramsInfoNameIdMap = paramsInfoNameIdList.stream()
+ .collect(Collectors.toMap(VisualizationOuterParamsInfo::getParamName, VisualizationOuterParamsInfo::getParamsInfoId));
+ }
//清理原有数据
extOuterParamsMapper.deleteOuterParamsTargetWithVisualizationId(visualizationId);
extOuterParamsMapper.deleteOuterParamsInfoWithVisualizationId(visualizationId);
@@ -82,17 +85,22 @@ public class VisualizationOuterParamsService implements VisualizationOuterParams
VisualizationOuterParams newOuterParams = new VisualizationOuterParams();
BeanUtils.copyBean(newOuterParams, outerParamsDTO);
outerParamsMapper.insert(newOuterParams);
+ Map finalParamsInfoNameIdMap = paramsInfoNameIdMap;
Optional.ofNullable(outerParamsDTO.getOuterParamsInfoArray()).orElse(new ArrayList<>()).forEach(outerParamsInfo -> {
- String paramsInfoId = UUID.randomUUID().toString();
+ String paramsInfoId = finalParamsInfoNameIdMap.get(outerParamsInfo.getParamName());
+ if(StringUtils.isEmpty(paramsInfoId)){
+ paramsInfoId = UUID.randomUUID().toString();
+ }
outerParamsInfo.setParamsInfoId(paramsInfoId);
outerParamsInfo.setParamsId(paramsId);
VisualizationOuterParamsInfo newOuterParamsInfo = new VisualizationOuterParamsInfo();
BeanUtils.copyBean(newOuterParamsInfo, outerParamsInfo);
outerParamsInfoMapper.insert(newOuterParamsInfo);
+ String finalParamsInfoId = paramsInfoId;
Optional.ofNullable(outerParamsInfo.getTargetViewInfoList()).orElse(new ArrayList<>()).forEach(targetViewInfo -> {
String targetViewInfoId = UUID.randomUUID().toString();
targetViewInfo.setTargetId(targetViewInfoId);
- targetViewInfo.setParamsInfoId(paramsInfoId);
+ targetViewInfo.setParamsInfoId(finalParamsInfoId);
VisualizationOuterParamsTargetViewInfo newOuterParamsTargetViewInfo = new VisualizationOuterParamsTargetViewInfo();
BeanUtils.copyBean(newOuterParamsTargetViewInfo, targetViewInfo);
outerParamsTargetViewInfoMapper.insert(newOuterParamsTargetViewInfo);
diff --git a/core/core-backend/src/main/resources/db/desktop/V2.10.3__ddl.sql b/core/core-backend/src/main/resources/db/desktop/V2.10.3__ddl.sql
index 64bffd3f86..e8570bb31b 100644
--- a/core/core-backend/src/main/resources/db/desktop/V2.10.3__ddl.sql
+++ b/core/core-backend/src/main/resources/db/desktop/V2.10.3__ddl.sql
@@ -2,7 +2,20 @@ INSERT INTO `core_sys_setting`(`id`, `pkey`, `pval`, `type`, `sort`)
VALUES (1048232869488627719, 'basic.defaultSort', '1', 'text', 13);
INSERT INTO `core_sys_setting`(`id`, `pkey`, `pval`, `type`, `sort`)
-VALUES (1048232869488627719, 'basic.defaultOpen', '1', 'text', 14);
+VALUES (1048232869488627720, 'basic.defaultOpen', '1', 'text', 14);
ALTER TABLE `data_visualization_info`
- ADD COLUMN `content_id` varchar(50) NULL DEFAULT '0' COMMENT '内容标识';
\ No newline at end of file
+ ADD COLUMN `content_id` varchar(50) NULL DEFAULT '0' COMMENT '内容标识';
+
+ALTER TABLE `visualization_link_jump_target_view_info`
+ ADD COLUMN `target_type` varchar(50) NULL COMMENT '联动目标类型 view 图表 filter 过滤组件 outParams 外部参数';
+
+ALTER TABLE `visualization_link_jump_target_view_info`
+ MODIFY COLUMN `target_view_id` varchar(50) NULL DEFAULT NULL COMMENT '目标图表ID';
+ALTER TABLE `visualization_link_jump_target_view_info`
+ MODIFY COLUMN `target_field_id` varchar(50) NULL DEFAULT NULL COMMENT '目标字段ID';
+
+update visualization_link_jump_target_view_info set target_type = 'view';
+ALTER TABLE `data_visualization_info`
+ ADD COLUMN `check_version` varchar(50) NULL DEFAULT '1' COMMENT '内容检查标识';
+update data_visualization_info set check_version = '1';
\ No newline at end of file
diff --git a/core/core-backend/src/main/resources/db/migration/V2.10.3__ddl.sql b/core/core-backend/src/main/resources/db/migration/V2.10.3__ddl.sql
index 74e4c91f76..b912d2baff 100644
--- a/core/core-backend/src/main/resources/db/migration/V2.10.3__ddl.sql
+++ b/core/core-backend/src/main/resources/db/migration/V2.10.3__ddl.sql
@@ -2,7 +2,7 @@ INSERT INTO `core_sys_setting`(`id`, `pkey`, `pval`, `type`, `sort`)
VALUES (1048232869488627719, 'basic.defaultSort', '1', 'text', 13);
INSERT INTO `core_sys_setting`(`id`, `pkey`, `pval`, `type`, `sort`)
-VALUES (1048232869488627719, 'basic.defaultOpen', '0', 'text', 14);
+VALUES (1048232869488627720, 'basic.defaultOpen', '0', 'text', 14);
INSERT INTO `core_menu` VALUES (70, 0, 1, 'msg', NULL, 200, NULL, '/msg', 1, 1, 0);
@@ -10,3 +10,15 @@ UPDATE `xpack_setting_authentication` set `synced` = 0 where `name` = 'oidc' or
ALTER TABLE `data_visualization_info`
ADD COLUMN `content_id` varchar(50) NULL DEFAULT '0' COMMENT '内容标识';
+
+ALTER TABLE `visualization_link_jump_target_view_info`
+ ADD COLUMN `target_type` varchar(50) NULL DEFAULT 'view' COMMENT '联动目标类型 view 图表 filter 过滤组件 outParams 外部参数';
+
+ALTER TABLE `visualization_link_jump_target_view_info`
+ MODIFY COLUMN `target_view_id` varchar(50) NULL DEFAULT NULL COMMENT '目标图表ID' AFTER `source_field_active_id`,
+ MODIFY COLUMN `target_field_id` varchar(50) NULL DEFAULT NULL COMMENT '目标字段ID' AFTER `target_view_id`;
+
+update visualization_link_jump_target_view_info set target_type = 'view';
+ALTER TABLE `data_visualization_info`
+ ADD COLUMN `check_version` varchar(50) NULL DEFAULT '1' COMMENT '内容检查标识';
+update data_visualization_info set check_version = '1';
\ No newline at end of file
diff --git a/core/core-backend/src/main/resources/i18n/core_en_US.properties b/core/core-backend/src/main/resources/i18n/core_en_US.properties
index 088c0e13d7..c3e65682d8 100644
--- a/core/core-backend/src/main/resources/i18n/core_en_US.properties
+++ b/core/core-backend/src/main/resources/i18n/core_en_US.properties
@@ -103,6 +103,10 @@ i18n_df_decimal=decimal
i18n_df_multiple_value_split=use ';' to split multiple value
i18n_df_email_type=email type
i18n_df_phone_type=phone type
+i18n_df_lt_check=need less than %s: %s
+i18n_df_gt_check=need greater than %s: %s
+i18n_df_le_check=need less than or equal to %s: %s
+i18n_df_ge_check=need greater than or equal to %s: %s
diff --git a/core/core-backend/src/main/resources/i18n/core_zh_CN.properties b/core/core-backend/src/main/resources/i18n/core_zh_CN.properties
index 91c260a425..8eec27e3a4 100644
--- a/core/core-backend/src/main/resources/i18n/core_zh_CN.properties
+++ b/core/core-backend/src/main/resources/i18n/core_zh_CN.properties
@@ -123,6 +123,10 @@ i18n_df_decimal=\u5C0F\u6570\u6570\u5B57
i18n_df_multiple_value_split=\u591A\u4E2A\u503C\u4F7F\u7528\u5206\u53F7";"\u5206\u5272
i18n_df_email_type=\u90AE\u7BB1\u683C\u5F0F
i18n_df_phone_type=\u624B\u673A\u53F7\u683C\u5F0F
+i18n_df_lt_check=\u503C\u9700\u8981\u5C0F\u4E8E %s: %s
+i18n_df_gt_check=\u503C\u9700\u8981\u5927\u4E8E %s: %s
+i18n_df_le_check=\u503C\u9700\u8981\u5C0F\u4E8E\u7B49\u4E8E %s: %s
+i18n_df_ge_check=\u503C\u9700\u8981\u5927\u4E8E\u7B49\u4E8E %s: %s
diff --git a/core/core-backend/src/main/resources/i18n/core_zh_TW.properties b/core/core-backend/src/main/resources/i18n/core_zh_TW.properties
index fb41f15197..af514bbe63 100644
--- a/core/core-backend/src/main/resources/i18n/core_zh_TW.properties
+++ b/core/core-backend/src/main/resources/i18n/core_zh_TW.properties
@@ -123,6 +123,10 @@ i18n_df_decimal=\u5C0F\u6578\u6578\u5B57
i18n_df_multiple_value_split=\u591A\u500B\u503C\u4F7F\u7528\u5206\u865F";"\u5206\u5272
i18n_df_email_type=\u90F5\u7BB1\u683C\u5F0F
i18n_df_phone_type=\u624B\u6A5F\u865F\u683C\u5F0F
+i18n_df_lt_check=\u503C\u9700\u8981\u5C0F\u4E8E %s: %s
+i18n_df_gt_check=\u503C\u9700\u8981\u5927\u4E8E %s: %s
+i18n_df_le_check=\u503C\u9700\u8981\u5C0F\u4E8E\u7B49\u4E8E %s: %s
+i18n_df_ge_check=\u503C\u9700\u8981\u5927\u4E8E\u7B49\u4E8E %s: %s
diff --git a/core/core-backend/src/main/resources/mybatis/ExtDataVisualizationMapper.xml b/core/core-backend/src/main/resources/mybatis/ExtDataVisualizationMapper.xml
index 793a8539d4..d3a5415ede 100644
--- a/core/core-backend/src/main/resources/mybatis/ExtDataVisualizationMapper.xml
+++ b/core/core-backend/src/main/resources/mybatis/ExtDataVisualizationMapper.xml
@@ -167,7 +167,8 @@
`delete_time`,
`delete_by`,
`version`,
- `content_id`
+ `content_id`,
+ `check_version`
FROM data_visualization_info
where data_visualization_info.delete_flag = 0
and data_visualization_info.id = #{dvId}
diff --git a/core/core-backend/src/main/resources/mybatis/ExtVisualizationLinkJumpMapper.xml b/core/core-backend/src/main/resources/mybatis/ExtVisualizationLinkJumpMapper.xml
index acfa2d8f7a..0413c7dde2 100644
--- a/core/core-backend/src/main/resources/mybatis/ExtVisualizationLinkJumpMapper.xml
+++ b/core/core-backend/src/main/resources/mybatis/ExtVisualizationLinkJumpMapper.xml
@@ -43,9 +43,12 @@
+
+
+
@@ -85,9 +88,12 @@
xpack_share.uuid AS publicJumpId,
ifnull( visualization_link_jump_info.checked, 0 ) AS checked,
ifnull( visualization_link_jump_info.attach_params, 0 ) AS attach_params,
+ visualization_link_jump_target_view_info.target_id,
visualization_link_jump_target_view_info.target_view_id,
visualization_link_jump_target_view_info.target_field_id,
- visualization_link_jump_target_view_info.source_field_active_id
+ visualization_link_jump_target_view_info.target_type,
+ visualization_link_jump_target_view_info.source_field_active_id,
+ visualization_outer_params_info.param_name as outer_params_name
FROM
core_chart_view
LEFT JOIN core_dataset_table_field ON core_chart_view.table_id = core_dataset_table_field.dataset_group_id
@@ -98,6 +104,7 @@
LEFT JOIN visualization_link_jump_target_view_info ON visualization_link_jump_info.id = visualization_link_jump_target_view_info.link_jump_info_id
LEFT JOIN xpack_share ON xpack_share.creator = #{uid}
AND visualization_link_jump_info.target_dv_id = xpack_share.resource_id
+ left join visualization_outer_params_info on visualization_outer_params_info.params_info_id = visualization_link_jump_target_view_info.target_view_id
WHERE
core_chart_view.id = #{source_view_id}
AND core_chart_view.type != 'VQuery'
@@ -155,6 +162,19 @@
WHERE core_chart_view.id = #{viewId}
+
+
DELETE
ljtv
diff --git a/core/core-backend/src/main/resources/mybatis/ExtVisualizationOuterParamsMapper.xml b/core/core-backend/src/main/resources/mybatis/ExtVisualizationOuterParamsMapper.xml
index 9e8361b763..3136e80801 100644
--- a/core/core-backend/src/main/resources/mybatis/ExtVisualizationOuterParamsMapper.xml
+++ b/core/core-backend/src/main/resources/mybatis/ExtVisualizationOuterParamsMapper.xml
@@ -139,6 +139,17 @@
and popi.checked=1
+
+