diff --git a/core/core-backend/pom.xml b/core/core-backend/pom.xml
index 0c2596d5a1..1511dd600b 100644
--- a/core/core-backend/pom.xml
+++ b/core/core-backend/pom.xml
@@ -131,6 +131,21 @@
flexmark-all
${flexmark.version}
+
+ io.dataease
+ xpack-permissions
+ ${project.version}
+
+
+ io.dataease
+ xpack-sync
+ ${project.version}
+
+
+ io.dataease
+ xpack-base
+ ${project.version}
+
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 1deadd9115..0c7157d716 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
@@ -90,7 +90,7 @@ public class DatasetDataManage {
}
BeanUtils.copyBean(datasourceSchemaDTO, coreDatasource);
datasourceSchemaDTO.setSchemaAlias(String.format(SQLConstants.SCHEMA, datasourceSchemaDTO.getId()));
- Provider provider = ProviderFactory.getDefaultProvider();
+ Provider provider = ProviderFactory.getProvider(coreDatasource.getType());
DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDsList(Map.of(datasourceSchemaDTO.getId(), datasourceSchemaDTO));
@@ -149,9 +149,9 @@ public class DatasetDataManage {
dto.setChecked(defaultStatus);
dto.setType(ele.getType());
int deType = FieldUtils.transType2DeType(ele.getType());
- dto.setDeExtractType(deType);
- dto.setDeType(deType);
- dto.setGroupType(FieldUtils.transDeType2DQ(deType));
+ dto.setDeExtractType(ObjectUtils.isEmpty(ele.getDeExtractType()) ? deType : ele.getDeExtractType());
+ dto.setDeType(ObjectUtils.isEmpty(ele.getDeType()) ? deType : ele.getDeType());
+ dto.setGroupType(FieldUtils.transDeType2DQ(dto.getDeType()));
dto.setExtField(0);
dto.setDescription(StringUtils.isNotEmpty(ele.getName()) ? ele.getName() : null);
return dto;
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 2fb6c13528..024d821ff2 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
@@ -80,6 +80,7 @@ public class DatasetGroupManage {
private Lock lock = new ReentrantLock();
+ @Transactional
public DatasetGroupInfoDTO save(DatasetGroupInfoDTO datasetGroupInfoDTO, boolean rename) throws Exception {
lock.lock();
try {
diff --git a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLManage.java b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLManage.java
index ee315bfbe0..b2af1a1974 100644
--- a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLManage.java
+++ b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLManage.java
@@ -1,13 +1,5 @@
package io.dataease.dataset.manage;
-import io.dataease.extensions.datasource.dto.DatasetTableDTO;
-import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO;
-import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO;
-import io.dataease.extensions.datasource.model.SQLObj;
-import io.dataease.extensions.datasource.vo.DatasourceConfiguration;
-import io.dataease.extensions.view.dto.ChartExtFilterDTO;
-import io.dataease.extensions.view.dto.ChartExtRequest;
-import io.dataease.extensions.view.dto.SqlVariableDetails;
import io.dataease.api.dataset.union.*;
import io.dataease.api.permissions.auth.dto.BusiPerCheckDTO;
import io.dataease.commons.utils.SqlparserUtils;
@@ -22,6 +14,16 @@ import io.dataease.datasource.manage.EngineManage;
import io.dataease.engine.constant.ExtFieldConstant;
import io.dataease.engine.constant.SQLConstants;
import io.dataease.exception.DEException;
+import io.dataease.extensions.datasource.dto.DatasetTableDTO;
+import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO;
+import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO;
+import io.dataease.extensions.datasource.dto.DsTypeDTO;
+import io.dataease.extensions.datasource.model.SQLObj;
+import io.dataease.extensions.datasource.vo.DatasourceConfiguration;
+import io.dataease.extensions.datasource.vo.PluginDatasourceType;
+import io.dataease.extensions.view.dto.ChartExtFilterDTO;
+import io.dataease.extensions.view.dto.ChartExtRequest;
+import io.dataease.extensions.view.dto.SqlVariableDetails;
import io.dataease.i18n.Translator;
import io.dataease.system.manage.CorePermissionManage;
import io.dataease.utils.BeanUtils;
@@ -135,7 +137,7 @@ public class DatasetSQLManage {
prefix = "`";
suffix = "`";
} else {
- DatasourceConfiguration.DatasourceType datasourceType = getDatasourceType(dsMap, datasetTable.getDatasourceId());
+ DsTypeDTO datasourceType = getDatasourceType(dsMap, datasetTable.getDatasourceId());
prefix = datasourceType.getPrefix();
suffix = datasourceType.getSuffix();
}
@@ -188,7 +190,7 @@ public class DatasetSQLManage {
tablePrefix = "`";
tableSuffix = "`";
} else {
- DatasourceConfiguration.DatasourceType datasourceType = getDatasourceType(dsMap, currentDs1.getDatasourceId());
+ DsTypeDTO datasourceType = getDatasourceType(dsMap, currentDs1.getDatasourceId());
tablePrefix = datasourceType.getPrefix();
tableSuffix = datasourceType.getSuffix();
}
@@ -214,7 +216,7 @@ public class DatasetSQLManage {
pPrefix = "`";
pSuffix = "`";
} else {
- DatasourceConfiguration.DatasourceType datasourceType = getDatasourceType(dsMap, parentDs.getDatasourceId());
+ DsTypeDTO datasourceType = getDatasourceType(dsMap, parentDs.getDatasourceId());
pPrefix = datasourceType.getPrefix();
pSuffix = datasourceType.getSuffix();
}
@@ -226,7 +228,7 @@ public class DatasetSQLManage {
cPrefix = "`";
cSuffix = "`";
} else {
- DatasourceConfiguration.DatasourceType datasourceType = getDatasourceType(dsMap, currentDs1.getDatasourceId());
+ DsTypeDTO datasourceType = getDatasourceType(dsMap, currentDs1.getDatasourceId());
cPrefix = datasourceType.getPrefix();
cSuffix = datasourceType.getSuffix();
}
@@ -305,7 +307,7 @@ public class DatasetSQLManage {
prefix = "`";
suffix = "`";
} else {
- DatasourceConfiguration.DatasourceType datasourceType = getDatasourceType(dsMap, datasetTable.getDatasourceId());
+ DsTypeDTO datasourceType = getDatasourceType(dsMap, datasetTable.getDatasourceId());
prefix = datasourceType.getPrefix();
suffix = datasourceType.getSuffix();
}
@@ -348,7 +350,7 @@ public class DatasetSQLManage {
}
}
- private DatasourceConfiguration.DatasourceType getDatasourceType(Map dsMap, Long datasourceId) {
+ private DsTypeDTO getDatasourceType(Map dsMap, Long datasourceId) {
DatasourceSchemaDTO datasourceSchemaDTO = dsMap.get(datasourceId);
String type;
if (datasourceSchemaDTO == null) {
@@ -360,7 +362,17 @@ public class DatasetSQLManage {
} else {
type = datasourceSchemaDTO.getType();
}
- return DatasourceConfiguration.DatasourceType.valueOf(type);
+ if (Arrays.stream(DatasourceConfiguration.DatasourceType.values()).map(DatasourceConfiguration.DatasourceType::getType).toList().contains(type)) {
+ DatasourceConfiguration.DatasourceType datasourceType = DatasourceConfiguration.DatasourceType.valueOf(type);
+ DsTypeDTO dto = new DsTypeDTO();
+ BeanUtils.copyBean(dto, datasourceType);
+ return dto;
+ } else {
+ PluginDatasourceType.DatasourceType datasourceType = PluginDatasourceType.DatasourceType.valueOf(type);
+ DsTypeDTO dto = new DsTypeDTO();
+ BeanUtils.copyBean(dto, datasourceType);
+ return dto;
+ }
}
public String subPrefixSuffixChar(String str) {
diff --git a/core/core-backend/src/main/java/io/dataease/dataset/utils/TableUtils.java b/core/core-backend/src/main/java/io/dataease/dataset/utils/TableUtils.java
index d1723c8818..e1d6bd4001 100644
--- a/core/core-backend/src/main/java/io/dataease/dataset/utils/TableUtils.java
+++ b/core/core-backend/src/main/java/io/dataease/dataset/utils/TableUtils.java
@@ -1,8 +1,8 @@
package io.dataease.dataset.utils;
import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO;
+import io.dataease.extensions.datasource.dto.DsTypeDTO;
import io.dataease.extensions.datasource.model.SQLObj;
-import io.dataease.extensions.datasource.vo.DatasourceConfiguration;
import io.dataease.utils.Md5Utils;
import org.apache.calcite.avatica.util.Quoting;
import org.apache.commons.lang3.StringUtils;
@@ -39,7 +39,7 @@ public class TableUtils {
return "C_" + Md5Utils.md5(fieldName);
}
- public static String getTableAndAlias(SQLObj sqlObj, DatasourceConfiguration.DatasourceType datasourceType, boolean isCross) {
+ public static String getTableAndAlias(SQLObj sqlObj, DsTypeDTO datasourceType, boolean isCross) {
String schema = "";
String prefix = "";
String suffix = "";
diff --git a/core/core-backend/src/main/java/io/dataease/datasource/provider/CalciteProvider.java b/core/core-backend/src/main/java/io/dataease/datasource/provider/CalciteProvider.java
index 5918b5d88a..d62e238420 100644
--- a/core/core-backend/src/main/java/io/dataease/datasource/provider/CalciteProvider.java
+++ b/core/core-backend/src/main/java/io/dataease/datasource/provider/CalciteProvider.java
@@ -11,6 +11,8 @@ import io.dataease.datasource.type.*;
import io.dataease.engine.constant.SQLConstants;
import io.dataease.exception.DEException;
import io.dataease.extensions.datasource.dto.*;
+import io.dataease.extensions.datasource.provider.DriverShim;
+import io.dataease.extensions.datasource.provider.ExtendedJdbcClassLoader;
import io.dataease.extensions.datasource.provider.Provider;
import io.dataease.extensions.datasource.vo.DatasourceConfiguration;
import io.dataease.i18n.Translator;
@@ -24,7 +26,6 @@ import org.apache.calcite.adapter.jdbc.JdbcSchema;
import org.apache.calcite.jdbc.CalciteConnection;
import org.apache.calcite.schema.Schema;
import org.apache.calcite.schema.SchemaPlus;
-import org.apache.calcite.sql.SqlDialect;
import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
@@ -442,6 +443,7 @@ public class CalciteProvider extends Provider {
return list;
}
+ @Override
public void hidePW(DatasourceDTO datasourceDTO) {
DatasourceConfiguration configuration = null;
DatasourceConfiguration.DatasourceType datasourceType = DatasourceConfiguration.DatasourceType.valueOf(datasourceDTO.getType());
@@ -1047,20 +1049,6 @@ public class CalciteProvider extends Provider {
}
}
- public Statement getStatement(Connection connection, int queryTimeout) {
- if (connection == null) {
- DEException.throwException("Failed to get connection!");
- }
- Statement stat = null;
- try {
- stat = connection.createStatement();
- stat.setQueryTimeout(queryTimeout);
- } catch (Exception e) {
- DEException.throwException(e.getMessage());
- }
- return stat;
- }
-
protected boolean isDefaultClassLoader(String customDriver) {
return StringUtils.isEmpty(customDriver) || customDriver.equalsIgnoreCase("default");
}
diff --git a/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java b/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java
index d2f02a728f..4b857802e2 100644
--- a/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java
+++ b/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java
@@ -36,6 +36,7 @@ import io.dataease.extensions.datasource.dto.*;
import io.dataease.extensions.datasource.factory.ProviderFactory;
import io.dataease.extensions.datasource.provider.Provider;
import io.dataease.extensions.datasource.vo.DatasourceConfiguration;
+import io.dataease.extensions.datasource.vo.PluginDatasourceType;
import io.dataease.i18n.Translator;
import io.dataease.job.schedule.CheckDsStatusJob;
import io.dataease.job.schedule.ScheduleManager;
@@ -575,7 +576,8 @@ public class DatasourceServer implements DatasourceApi {
}
} else {
if (hidePw) {
- calciteProvider.hidePW(datasourceDTO);
+ Provider provider = ProviderFactory.getProvider(datasourceDTO.getType());
+ provider.hidePW(datasourceDTO);
}
}
@@ -851,7 +853,8 @@ public class DatasourceServer implements DatasourceApi {
}
private void preCheckDs(DatasourceDTO datasource) throws DEException {
- if (!datasourceTypes().stream().map(DatasourceConfiguration.DatasourceType::getType).toList().contains(datasource.getType())) {
+ if (!datasourceTypes().stream().map(DatasourceConfiguration.DatasourceType::getType).toList().contains(datasource.getType())
+ && !Arrays.stream(PluginDatasourceType.DatasourceType.values()).map(PluginDatasourceType.DatasourceType::getType).toList().contains(datasource.getType())) {
DEException.throwException("Datasource type not supported.");
}
}
@@ -867,7 +870,8 @@ public class DatasourceServer implements DatasourceApi {
if (coreDatasource.getType().equals("API")) {
status = ApiUtils.checkStatus(datasourceRequest);
} else {
- status = calciteProvider.checkStatus(datasourceRequest);
+ Provider provider = ProviderFactory.getProvider(coreDatasource.getType());
+ status = provider.checkStatus(datasourceRequest);
}
coreDatasource.setStatus(status);
} catch (Exception e) {
diff --git a/core/core-backend/src/main/java/io/dataease/template/dao/auto/entity/VisualizationTemplate.java b/core/core-backend/src/main/java/io/dataease/template/dao/auto/entity/VisualizationTemplate.java
index 5a4ced5f44..31d386df96 100644
--- a/core/core-backend/src/main/java/io/dataease/template/dao/auto/entity/VisualizationTemplate.java
+++ b/core/core-backend/src/main/java/io/dataease/template/dao/auto/entity/VisualizationTemplate.java
@@ -9,7 +9,7 @@ import java.io.Serializable;
*
*
* @author fit2cloud
- * @since 2024-07-16
+ * @since 2024-07-17
*/
@TableName("visualization_template")
public class VisualizationTemplate implements Serializable {
diff --git a/core/core-backend/src/main/java/io/dataease/template/dao/auto/mapper/VisualizationTemplateMapper.java b/core/core-backend/src/main/java/io/dataease/template/dao/auto/mapper/VisualizationTemplateMapper.java
index 28f93143c7..c4ef398bb9 100644
--- a/core/core-backend/src/main/java/io/dataease/template/dao/auto/mapper/VisualizationTemplateMapper.java
+++ b/core/core-backend/src/main/java/io/dataease/template/dao/auto/mapper/VisualizationTemplateMapper.java
@@ -10,7 +10,7 @@ import org.apache.ibatis.annotations.Mapper;
*
*
* @author fit2cloud
- * @since 2024-07-16
+ * @since 2024-07-17
*/
@Mapper
public interface VisualizationTemplateMapper extends BaseMapper {
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 1c647fe4fb..6d5dc52075 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
@@ -2,8 +2,16 @@ package io.dataease.visualization.server;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.google.gson.Gson;
+import io.dataease.api.dataset.union.DatasetGroupInfoDTO;
import io.dataease.api.visualization.request.VisualizationAppExportRequest;
import io.dataease.api.visualization.vo.*;
+import io.dataease.dataset.dao.auto.entity.CoreDatasetGroup;
+import io.dataease.dataset.dao.auto.entity.CoreDatasetTable;
+import io.dataease.dataset.dao.auto.entity.CoreDatasetTableField;
+import io.dataease.dataset.dao.auto.mapper.CoreDatasetGroupMapper;
+import io.dataease.dataset.dao.auto.mapper.CoreDatasetTableFieldMapper;
+import io.dataease.dataset.dao.auto.mapper.CoreDatasetTableMapper;
import io.dataease.dataset.manage.DatasetDataManage;
import io.dataease.dataset.manage.DatasetGroupManage;
import io.dataease.extensions.datasource.dto.DatasetTableDTO;
@@ -37,6 +45,7 @@ import io.dataease.template.dao.auto.mapper.VisualizationTemplateMapper;
import io.dataease.template.dao.ext.ExtVisualizationTemplateMapper;
import io.dataease.template.manage.TemplateCenterManage;
import io.dataease.utils.*;
+import io.dataease.visualization.dao.auto.entity.CoreStore;
import io.dataease.visualization.dao.auto.entity.DataVisualizationInfo;
import io.dataease.visualization.dao.auto.entity.VisualizationWatermark;
import io.dataease.visualization.dao.auto.mapper.DataVisualizationInfoMapper;
@@ -45,6 +54,7 @@ import io.dataease.visualization.dao.ext.mapper.ExtDataVisualizationMapper;
import io.dataease.visualization.manage.CoreVisualizationManage;
import jakarta.annotation.Resource;
import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestBody;
@@ -104,6 +114,15 @@ public class DataVisualizationServer implements DataVisualizationApi {
@Resource
private ExtVisualizationTemplateMapper appTemplateMapper;
+ @Resource
+ private CoreDatasetGroupMapper coreDatasetGroupMapper;
+
+ @Resource
+ private CoreDatasetTableMapper coreDatasetTableMapper;
+
+ @Resource
+ private CoreDatasetTableFieldMapper coreDatasetTableFieldMapper;
+
@Override
public DataVisualizationVO findCopyResource(Long dvId, String busiFlag) {
DataVisualizationVO result = findById(new DataVisualizationBaseRequest(dvId, busiFlag));
@@ -152,7 +171,86 @@ public class DataVisualizationServer implements DataVisualizationApi {
@DeLog(id = "#p0.id", pid = "#p0.pid", ot = LogOT.CREATE, stExp = "#p0.type")
@Override
@Transactional
- public String saveCanvas(DataVisualizationBaseRequest request) {
+ public String saveCanvas(DataVisualizationBaseRequest request) throws Exception{
+ Boolean isAppSave = false;
+ Long time = System.currentTimeMillis();
+ // 如果是应用 则新进行应用校验 数据集名称和 数据源名称校验
+ VisualizationExport2AppVO appData = request.getAppData();
+ Map dsGroupIdMap = new HashMap<>();
+ Map dsTableIdMap = new HashMap<>();
+ Map dsTableFieldsIdMap = new HashMap<>();
+ if(appData != null){
+ isAppSave = true;
+ try {
+ Map datasourceIdMap = appData.getDatasourceInfo().stream()
+ .collect(Collectors.toMap(AppCoreDatasourceVO::getId, AppCoreDatasourceVO::getSystemDatasourceId));
+ Long datasetFolderPid = request.getDatasetFolderPid();
+ String datasetFolderName = request.getDatasetFolderName();
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("name", datasetFolderName);
+ queryWrapper.eq("pid", datasetFolderPid);
+ if (coreDatasetGroupMapper.exists(queryWrapper)) {
+ DEException.throwException("当前数据集分组名称已存在");
+ }
+ //新建数据集分组
+ DatasetGroupInfoDTO datasetFolderNewRequest = new DatasetGroupInfoDTO();
+ datasetFolderNewRequest.setName(datasetFolderName);
+ datasetFolderNewRequest.setNodeType("folder");
+ datasetFolderNewRequest.setPid(datasetFolderPid);
+ DatasetGroupInfoDTO datasetFolderNew = datasetGroupManage.save(datasetFolderNewRequest, false);
+ Long datasetFolderNewId = datasetFolderNew.getId();
+ //新建数据集
+ appData.getDatasetGroupsInfo().forEach(appDatasetGroup -> {
+ if ("dataset".equals(appDatasetGroup.getNodeType())) {
+ Long oldId = appDatasetGroup.getId();
+ Long newId = IDUtils.snowID();
+ DatasetGroupInfoDTO datasetNewRequest = new DatasetGroupInfoDTO();
+ BeanUtils.copyBean(datasetNewRequest, appDatasetGroup);
+ datasetNewRequest.setId(newId);
+ datasetNewRequest.setCreateBy(AuthUtils.getUser().getUserId() + "");
+ datasetNewRequest.setUpdateBy(AuthUtils.getUser().getUserId() + "");
+ datasetNewRequest.setCreateTime(time);
+ datasetNewRequest.setLastUpdateTime(time);
+ datasetNewRequest.setPid(datasetFolderNewId);
+ try {
+ datasetGroupManage.innerSave(datasetNewRequest);
+ dsGroupIdMap.put(oldId,newId);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ });
+ // 新建数据集表
+ appData.getDatasetTablesInfo().forEach(appCoreDatasetTableVO -> {
+ Long oldId = appCoreDatasetTableVO.getId();
+ Long newId = IDUtils.snowID();
+ CoreDatasetTable datasetTable = new CoreDatasetTable();
+ BeanUtils.copyBean(datasetTable,appCoreDatasetTableVO);
+ datasetTable.setDatasetGroupId(dsGroupIdMap.get(datasetTable.getDatasetGroupId()));
+ datasetTable.setId(newId);
+ datasetTable.setDatasourceId(datasourceIdMap.get(datasetTable.getDatasourceId()));
+ coreDatasetTableMapper.insert(datasetTable);
+ dsTableIdMap.put(oldId,newId);
+
+ });
+ // 新建数据字段
+ appData.getDatasetTableFieldsInfo().forEach( appDsTableFields ->{
+ Long oldId = appDsTableFields.getId();
+ Long newId = IDUtils.snowID();
+ CoreDatasetTableField dsDsField = new CoreDatasetTableField();
+ BeanUtils.copyBean(dsDsField,appDsTableFields);
+ dsDsField.setDatasetGroupId(dsGroupIdMap.get(dsDsField.getDatasetGroupId()));
+ dsDsField.setDatasetTableId(dsTableIdMap.get(dsDsField.getDatasetTableId()));
+ dsDsField.setDatasourceId(datasourceIdMap.get(dsDsField.getDatasourceId()));
+ dsDsField.setId(newId);
+ coreDatasetTableFieldMapper.insert(dsDsField);
+ dsTableFieldsIdMap.put(oldId,newId);
+ });
+ }catch (Exception e){
+ DEException.throwException("应用创建失败");
+ }
+ }
DataVisualizationInfo visualizationInfo = new DataVisualizationInfo();
BeanUtils.copyBean(visualizationInfo, request);
visualizationInfo.setNodeType(request.getNodeType() == null ? DataVisualizationConstants.NODE_TYPE.LEAF : request.getNodeType());
@@ -168,6 +266,14 @@ public class DataVisualizationServer implements DataVisualizationApi {
}
Long newDvId = coreVisualizationManage.innerSave(visualizationInfo);
request.setId(newDvId);
+ // TODO 还原ID信息
+ if(isAppSave){
+ request.getCanvasViewInfo().forEach((key,viewInfo) ->{
+ viewInfo.setTableId(dsGroupIdMap.get(viewInfo.getTableId()));
+ viewInfo.setDataFrom("dataset");
+ });
+
+ }
//保存图表信息
chartDataManage.saveChartViewFromVisualization(request.getComponentData(), newDvId, request.getCanvasViewInfo());
return newDvId.toString();
@@ -298,96 +404,112 @@ public class DataVisualizationServer implements DataVisualizationApi {
@Override
public DataVisualizationVO decompression(DataVisualizationBaseRequest request) throws Exception {
- Long newDvId = IDUtils.snowID();
- String newFrom = request.getNewFrom();
- String templateStyle = null;
- String templateData = null;
- String dynamicData = null;
- String staticResource = null;
- String appData = null;
- String name = null;
- String dvType = null;
- Integer version = null;
- //内部模板新建
- if (DataVisualizationConstants.NEW_PANEL_FROM.NEW_INNER_TEMPLATE.equals(newFrom)) {
- VisualizationTemplate visualizationTemplate = templateMapper.selectById(request.getTemplateId());
- templateStyle = visualizationTemplate.getTemplateStyle();
- templateData = visualizationTemplate.getTemplateData();
- dynamicData = visualizationTemplate.getDynamicData();
- name = visualizationTemplate.getName();
- dvType = visualizationTemplate.getDvType();
- version = visualizationTemplate.getVersion();
- appData = visualizationTemplate.getAppData();
- // 模板市场记录
- coreOptRecentManage.saveOpt(request.getTemplateId(), OptConstants.OPT_RESOURCE_TYPE.TEMPLATE, OptConstants.OPT_TYPE.NEW);
- VisualizationTemplate visualizationTemplateUpdate = new VisualizationTemplate();
- visualizationTemplateUpdate.setId(visualizationTemplate.getId());
- visualizationTemplateUpdate.setUseCount(visualizationTemplate.getUseCount() == null ? 0 : visualizationTemplate.getUseCount() + 1);
- templateMapper.updateById(visualizationTemplateUpdate);
- } else if (DataVisualizationConstants.NEW_PANEL_FROM.NEW_OUTER_TEMPLATE.equals(newFrom)) {
- templateStyle = request.getCanvasStyleData();
- templateData = request.getComponentData();
- dynamicData = request.getDynamicData();
- staticResource = request.getStaticResource();
- appData = request.getAppData();
- name = request.getName();
- dvType = request.getType();
- } else if (DataVisualizationConstants.NEW_PANEL_FROM.NEW_MARKET_TEMPLATE.equals(newFrom)) {
- TemplateManageFileDTO templateFileInfo = templateCenterManage.getTemplateFromMarket(request.getTemplateUrl());
- if (templateFileInfo == null) {
- DEException.throwException("Can't find the template's info from market,please check");
- }
- templateStyle = templateFileInfo.getCanvasStyleData();
- templateData = templateFileInfo.getComponentData();
- dynamicData = templateFileInfo.getDynamicData();
- staticResource = templateFileInfo.getStaticResource();
- name = templateFileInfo.getName();
- dvType = templateFileInfo.getDvType();
- version = templateFileInfo.getVersion();
- appData = templateFileInfo.getAppData();
- // 模板市场记录
- coreOptRecentManage.saveOpt(request.getResourceName(), OptConstants.OPT_RESOURCE_TYPE.TEMPLATE, OptConstants.OPT_TYPE.NEW);
- }
- // 解析动态数据
- Map dynamicDataMap = JsonUtil.parseObject(dynamicData, Map.class);
- List chartViews = new ArrayList<>();
- Map canvasViewInfo = new HashMap<>();
- Map extendDataInfo = new HashMap<>();
- for (Map.Entry entry : dynamicDataMap.entrySet()) {
- String originViewId = entry.getKey();
- Object viewInfo = entry.getValue();
- try {
- // 旧模板图表过滤器适配
- if (viewInfo instanceof Map && ((Map) viewInfo).get("customFilter") instanceof ArrayList) {
- ((Map) viewInfo).put("customFilter", new HashMap<>());
+ try{
+ Long newDvId = IDUtils.snowID();
+ String newFrom = request.getNewFrom();
+ String templateStyle = null;
+ String templateData = null;
+ String dynamicData = null;
+ String staticResource = null;
+ String appDataStr = null;
+ String name = null;
+ String dvType = null;
+ Integer version = null;
+ //内部模板新建
+ if (DataVisualizationConstants.NEW_PANEL_FROM.NEW_INNER_TEMPLATE.equals(newFrom)) {
+ VisualizationTemplate visualizationTemplate = templateMapper.selectById(request.getTemplateId());
+ templateStyle = visualizationTemplate.getTemplateStyle();
+ templateData = visualizationTemplate.getTemplateData();
+ dynamicData = visualizationTemplate.getDynamicData();
+ name = visualizationTemplate.getName();
+ dvType = visualizationTemplate.getDvType();
+ version = visualizationTemplate.getVersion();
+ appDataStr = visualizationTemplate.getAppData();
+ // 模板市场记录
+ coreOptRecentManage.saveOpt(request.getTemplateId(), OptConstants.OPT_RESOURCE_TYPE.TEMPLATE, OptConstants.OPT_TYPE.NEW);
+ VisualizationTemplate visualizationTemplateUpdate = new VisualizationTemplate();
+ visualizationTemplateUpdate.setId(visualizationTemplate.getId());
+ visualizationTemplateUpdate.setUseCount(visualizationTemplate.getUseCount() == null ? 0 : visualizationTemplate.getUseCount() + 1);
+ templateMapper.updateById(visualizationTemplateUpdate);
+ } else if (DataVisualizationConstants.NEW_PANEL_FROM.NEW_OUTER_TEMPLATE.equals(newFrom)) {
+ templateStyle = request.getCanvasStyleData();
+ templateData = request.getComponentData();
+ dynamicData = request.getDynamicData();
+ staticResource = request.getStaticResource();
+ name = request.getName();
+ dvType = request.getType();
+ } else if (DataVisualizationConstants.NEW_PANEL_FROM.NEW_MARKET_TEMPLATE.equals(newFrom)) {
+ TemplateManageFileDTO templateFileInfo = templateCenterManage.getTemplateFromMarket(request.getTemplateUrl());
+ if (templateFileInfo == null) {
+ DEException.throwException("Can't find the template's info from market,please check");
}
- } catch (Exception e) {
- LogUtil.error("History Adaptor Error", e);
+ templateStyle = templateFileInfo.getCanvasStyleData();
+ templateData = templateFileInfo.getComponentData();
+ dynamicData = templateFileInfo.getDynamicData();
+ staticResource = templateFileInfo.getStaticResource();
+ name = templateFileInfo.getName();
+ dvType = templateFileInfo.getDvType();
+ version = templateFileInfo.getVersion();
+ appDataStr = templateFileInfo.getAppData();
+ // 模板市场记录
+ coreOptRecentManage.saveOpt(request.getResourceName(), OptConstants.OPT_RESOURCE_TYPE.TEMPLATE, OptConstants.OPT_TYPE.NEW);
}
- String originViewData = JsonUtil.toJSONString(entry.getValue()).toString();
- ChartViewDTO chartView = JsonUtil.parseObject(originViewData, ChartViewDTO.class);
- if (chartView == null) {
- continue;
+ if(StringUtils.isNotEmpty(appDataStr)){
+ VisualizationExport2AppVO appDataFormat = JsonUtil.parseObject(appDataStr,VisualizationExport2AppVO.class);
+ String dvInfo = appDataFormat.getVisualizationInfo();
+ VisualizationBaseInfoVO baseInfoVO = JsonUtil.parseObject(dvInfo,VisualizationBaseInfoVO.class);
+ Long sourceDvId = baseInfoVO.getId();
+ appDataStr = appDataStr.replaceAll(sourceDvId.toString(), newDvId.toString());
}
- Long newViewId = IDUtils.snowID();
- chartView.setId(newViewId);
- chartView.setSceneId(newDvId);
- chartView.setTableId(null);
- chartView.setDataFrom(CommonConstants.VIEW_DATA_FROM.TEMPLATE);
- // 数据处理 1.替换viewId 2.加入模板view data数据
- VisualizationTemplateExtendDataDTO extendDataDTO = new VisualizationTemplateExtendDataDTO(newDvId, newViewId, originViewData);
- extendDataInfo.put(newViewId, extendDataDTO);
- templateData = templateData.replaceAll(originViewId, newViewId.toString());
- canvasViewInfo.put(chartView.getId(), chartView);
- //插入模板数据 此处预先插入减少数据交互量
- VisualizationTemplateExtendData extendData = new VisualizationTemplateExtendData();
- templateExtendDataMapper.insert(BeanUtils.copyBean(extendData, extendDataDTO));
+ // 解析动态数据
+ Map dynamicDataMap = JsonUtil.parseObject(dynamicData, Map.class);
+ List chartViews = new ArrayList<>();
+ Map canvasViewInfo = new HashMap<>();
+ Map extendDataInfo = new HashMap<>();
+ for (Map.Entry entry : dynamicDataMap.entrySet()) {
+ String originViewId = entry.getKey();
+ Object viewInfo = entry.getValue();
+ try {
+ // 旧模板图表过滤器适配
+ if (viewInfo instanceof Map && ((Map) viewInfo).get("customFilter") instanceof ArrayList) {
+ ((Map) viewInfo).put("customFilter", new HashMap<>());
+ }
+ } catch (Exception e) {
+ LogUtil.error("History Adaptor Error", e);
+ }
+ String originViewData = JsonUtil.toJSONString(entry.getValue()).toString();
+ ChartViewDTO chartView = JsonUtil.parseObject(originViewData, ChartViewDTO.class);
+ if (chartView == null) {
+ continue;
+ }
+ Long newViewId = IDUtils.snowID();
+ chartView.setId(newViewId);
+ chartView.setSceneId(newDvId);
+ chartView.setTableId(null);
+ chartView.setDataFrom(CommonConstants.VIEW_DATA_FROM.TEMPLATE);
+ // 数据处理 1.替换viewId 2.加入模板view data数据
+ VisualizationTemplateExtendDataDTO extendDataDTO = new VisualizationTemplateExtendDataDTO(newDvId, newViewId, originViewData);
+ extendDataInfo.put(newViewId, extendDataDTO);
+ templateData = templateData.replaceAll(originViewId, newViewId.toString());
+ if(StringUtils.isNotEmpty(appDataStr)){
+ appDataStr = appDataStr.replaceAll(originViewId, newViewId.toString());
+ }
+ canvasViewInfo.put(chartView.getId(), chartView);
+ //插入模板数据 此处预先插入减少数据交互量
+ VisualizationTemplateExtendData extendData = new VisualizationTemplateExtendData();
+ templateExtendDataMapper.insert(BeanUtils.copyBean(extendData, extendDataDTO));
+ }
+ request.setComponentData(templateData);
+ request.setCanvasStyleData(templateStyle);
+ //Store static resource into the server
+ staticResourceServer.saveFilesToServe(staticResource);
+ return new DataVisualizationVO(newDvId, name, dvType, version, templateStyle, templateData,appDataStr, canvasViewInfo, null);
+ }catch (Exception e){
+ e.printStackTrace();
+ DEException.throwException("解析错误");
+ return null;
}
- request.setComponentData(templateData);
- request.setCanvasStyleData(templateStyle);
- //Store static resource into the server
- staticResourceServer.saveFilesToServe(staticResource);
- return new DataVisualizationVO(newDvId, name, dvType, version, templateStyle, templateData,appData, canvasViewInfo, null);
+
}
@Override
diff --git a/core/core-backend/src/main/resources/application.yml b/core/core-backend/src/main/resources/application.yml
index dd87a57b15..c3bf5ef592 100644
--- a/core/core-backend/src/main/resources/application.yml
+++ b/core/core-backend/src/main/resources/application.yml
@@ -47,9 +47,9 @@ quartz:
dataease:
version: '@project.version@'
xpack-front-distributed: true
- origin-list: http://192.168.2.70:9080
+ origin-list: http://192.168.1.9:9080
apisix-api:
- domain: http://192.168.2.70:9180
+ domain: http://192.168.1.9:9180
key: edd1c9f034335f136f87ad84b625c8f1
# springdoc-openapi项目配置
diff --git a/core/core-frontend/src/assets/svg/KingBase.svg b/core/core-frontend/src/assets/svg/KingBase.svg
index 1826aea42d..e69e04ef98 100644
--- a/core/core-frontend/src/assets/svg/KingBase.svg
+++ b/core/core-frontend/src/assets/svg/KingBase.svg
@@ -1,7 +1,7 @@