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 @@ - + - + diff --git a/core/core-frontend/src/assets/svg/StarRocks-ds.svg b/core/core-frontend/src/assets/svg/StarRocks-ds.svg index bcfdaf4204..5b52c1ad67 100644 --- a/core/core-frontend/src/assets/svg/StarRocks-ds.svg +++ b/core/core-frontend/src/assets/svg/StarRocks-ds.svg @@ -1,9 +1,9 @@ - + - + diff --git a/core/core-frontend/src/assets/svg/bubble-map-dark.svg b/core/core-frontend/src/assets/svg/bubble-map-dark.svg index b4c5f580f1..25a9630000 100644 --- a/core/core-frontend/src/assets/svg/bubble-map-dark.svg +++ b/core/core-frontend/src/assets/svg/bubble-map-dark.svg @@ -46,7 +46,7 @@ - + @@ -60,7 +60,7 @@ - + diff --git a/core/core-frontend/src/assets/svg/bubble-map-origin.svg b/core/core-frontend/src/assets/svg/bubble-map-origin.svg index bbc9a77a05..03ffbc078d 100644 --- a/core/core-frontend/src/assets/svg/bubble-map-origin.svg +++ b/core/core-frontend/src/assets/svg/bubble-map-origin.svg @@ -46,7 +46,7 @@ - + @@ -54,7 +54,7 @@ - + diff --git a/core/core-frontend/src/assets/svg/bubble-map.svg b/core/core-frontend/src/assets/svg/bubble-map.svg index a36609c373..8259226e64 100644 --- a/core/core-frontend/src/assets/svg/bubble-map.svg +++ b/core/core-frontend/src/assets/svg/bubble-map.svg @@ -48,7 +48,7 @@ - + @@ -62,7 +62,7 @@ - + diff --git a/core/core-frontend/src/assets/svg/flow-map-dark.svg b/core/core-frontend/src/assets/svg/flow-map-dark.svg index b8370f5894..f1111c5f87 100644 --- a/core/core-frontend/src/assets/svg/flow-map-dark.svg +++ b/core/core-frontend/src/assets/svg/flow-map-dark.svg @@ -46,7 +46,7 @@ - + @@ -59,7 +59,7 @@ - + diff --git a/core/core-frontend/src/assets/svg/flow-map-origin.svg b/core/core-frontend/src/assets/svg/flow-map-origin.svg index eaef7f8ea5..a263e1907e 100644 --- a/core/core-frontend/src/assets/svg/flow-map-origin.svg +++ b/core/core-frontend/src/assets/svg/flow-map-origin.svg @@ -46,7 +46,7 @@ - + @@ -54,7 +54,7 @@ - + diff --git a/core/core-frontend/src/assets/svg/flow-map.svg b/core/core-frontend/src/assets/svg/flow-map.svg index 6c691c031b..7c3fc1a889 100644 --- a/core/core-frontend/src/assets/svg/flow-map.svg +++ b/core/core-frontend/src/assets/svg/flow-map.svg @@ -48,7 +48,7 @@ - + @@ -61,7 +61,7 @@ - + diff --git a/core/core-frontend/src/assets/svg/heat-map-origin.svg b/core/core-frontend/src/assets/svg/heat-map-origin.svg index bbc9a77a05..cc501bcbd9 100644 --- a/core/core-frontend/src/assets/svg/heat-map-origin.svg +++ b/core/core-frontend/src/assets/svg/heat-map-origin.svg @@ -46,7 +46,7 @@ - + @@ -54,7 +54,7 @@ - + diff --git a/core/core-frontend/src/assets/svg/impala-ds.svg b/core/core-frontend/src/assets/svg/impala-ds.svg index 2b4f0abc74..cb1290f28f 100644 --- a/core/core-frontend/src/assets/svg/impala-ds.svg +++ b/core/core-frontend/src/assets/svg/impala-ds.svg @@ -4,11 +4,11 @@ - + - + diff --git a/core/core-frontend/src/assets/svg/map-dark.svg b/core/core-frontend/src/assets/svg/map-dark.svg index 9ff3c6ba54..bdd14c6a41 100644 --- a/core/core-frontend/src/assets/svg/map-dark.svg +++ b/core/core-frontend/src/assets/svg/map-dark.svg @@ -46,7 +46,7 @@ - + @@ -54,7 +54,7 @@ - + diff --git a/core/core-frontend/src/assets/svg/map-origin.svg b/core/core-frontend/src/assets/svg/map-origin.svg index bbc9a77a05..54b17b9449 100644 --- a/core/core-frontend/src/assets/svg/map-origin.svg +++ b/core/core-frontend/src/assets/svg/map-origin.svg @@ -46,7 +46,7 @@ - + @@ -54,7 +54,7 @@ - + diff --git a/core/core-frontend/src/assets/svg/map.svg b/core/core-frontend/src/assets/svg/map.svg index d5f5b5a1b1..a14e153f05 100644 --- a/core/core-frontend/src/assets/svg/map.svg +++ b/core/core-frontend/src/assets/svg/map.svg @@ -46,7 +46,7 @@ - + @@ -54,7 +54,7 @@ - + diff --git a/core/core-frontend/src/assets/svg/mariadb-ds.svg b/core/core-frontend/src/assets/svg/mariadb-ds.svg index b5fc86abed..ce664d6058 100644 --- a/core/core-frontend/src/assets/svg/mariadb-ds.svg +++ b/core/core-frontend/src/assets/svg/mariadb-ds.svg @@ -1,9 +1,9 @@ - + - + diff --git a/core/core-frontend/src/assets/svg/sqlServer-ds.svg b/core/core-frontend/src/assets/svg/sqlServer-ds.svg index 12bdfe0e32..2f2b31acd9 100644 --- a/core/core-frontend/src/assets/svg/sqlServer-ds.svg +++ b/core/core-frontend/src/assets/svg/sqlServer-ds.svg @@ -1,9 +1,9 @@ - + - + diff --git a/core/core-frontend/src/assets/svg/symbolic-map-dark.svg b/core/core-frontend/src/assets/svg/symbolic-map-dark.svg index a464fa832e..b3364f324d 100644 --- a/core/core-frontend/src/assets/svg/symbolic-map-dark.svg +++ b/core/core-frontend/src/assets/svg/symbolic-map-dark.svg @@ -46,7 +46,7 @@ - + @@ -64,7 +64,7 @@ - + diff --git a/core/core-frontend/src/assets/svg/symbolic-map-origin.svg b/core/core-frontend/src/assets/svg/symbolic-map-origin.svg index bbc9a77a05..fcda4d557c 100644 --- a/core/core-frontend/src/assets/svg/symbolic-map-origin.svg +++ b/core/core-frontend/src/assets/svg/symbolic-map-origin.svg @@ -46,7 +46,7 @@ - + @@ -54,7 +54,7 @@ - + diff --git a/core/core-frontend/src/assets/svg/wizard_main_bg_inner.svg b/core/core-frontend/src/assets/svg/wizard_main_bg_inner.svg index 000b3789e5..87c44d4a13 100644 --- a/core/core-frontend/src/assets/svg/wizard_main_bg_inner.svg +++ b/core/core-frontend/src/assets/svg/wizard_main_bg_inner.svg @@ -94,7 +94,7 @@ - + @@ -215,7 +215,7 @@ - + diff --git a/core/core-frontend/src/assets/svg/wizard_quick_start.svg b/core/core-frontend/src/assets/svg/wizard_quick_start.svg index 36c1b23878..6970599c39 100644 --- a/core/core-frontend/src/assets/svg/wizard_quick_start.svg +++ b/core/core-frontend/src/assets/svg/wizard_quick_start.svg @@ -1,7 +1,7 @@ - + @@ -36,7 +36,7 @@ - + diff --git a/core/core-frontend/src/components/data-visualization/DvToolbar.vue b/core/core-frontend/src/components/data-visualization/DvToolbar.vue index 2c175ab540..afd5cde95b 100644 --- a/core/core-frontend/src/components/data-visualization/DvToolbar.vue +++ b/core/core-frontend/src/components/data-visualization/DvToolbar.vue @@ -1,7 +1,7 @@
{ @@ -94,6 +110,7 @@ const lineWidth = computed(() => { {{ config.conditionType === 1 ? '与' : '或' }} { diff --git a/core/core-frontend/src/custom-component/v-query/Time.vue b/core/core-frontend/src/custom-component/v-query/Time.vue index 7d6c764299..edf53d79e3 100644 --- a/core/core-frontend/src/custom-component/v-query/Time.vue +++ b/core/core-frontend/src/custom-component/v-query/Time.vue @@ -130,9 +130,12 @@ const handleValueChange = () => { config.value.selectValue = Array.isArray(selectValue.value) ? [...selectValue.value] : selectValue.value + nextTick(() => { + isConfirmSearch(config.value.id) + }) return } - config.value.defaultValue = value + config.value.defaultValue = new Date(value).toLocaleString() } const init = () => { @@ -149,6 +152,7 @@ const init = () => { } const queryConditionWidth = inject('com-width', Function, true) +const isConfirmSearch = inject('is-confirm-search', Function, true) const selectStyle = computed(() => { return props.isConfig ? {} diff --git a/core/core-frontend/src/custom-component/v-query/Tree.vue b/core/core-frontend/src/custom-component/v-query/Tree.vue index 79d255a21a..20768f02a6 100644 --- a/core/core-frontend/src/custom-component/v-query/Tree.vue +++ b/core/core-frontend/src/custom-component/v-query/Tree.vue @@ -63,6 +63,9 @@ const handleValueChange = () => { config.value.selectValue = Array.isArray(treeValue.value) ? [...treeValue.value] : treeValue.value + nextTick(() => { + isConfirmSearch(config.value.id) + }) return } config.value.defaultValue = value @@ -114,6 +117,7 @@ watch( ) const showOrHide = ref(true) const queryConditionWidth = inject('com-width', Function, true) +const isConfirmSearch = inject('is-confirm-search', Function, true) watch( () => config.value.id, () => { diff --git a/core/core-frontend/src/layout/components/AccountOperator.vue b/core/core-frontend/src/layout/components/AccountOperator.vue index 8a5c1b069a..2e626eaf0e 100644 --- a/core/core-frontend/src/layout/components/AccountOperator.vue +++ b/core/core-frontend/src/layout/components/AccountOperator.vue @@ -186,6 +186,7 @@ if (uid.value === '1') { } .is-light-top-info { .uname-span { + font-family: '阿里巴巴普惠体 3.0 55 Regular L3'; color: var(--ed-color-black) !important; } &:hover { @@ -209,6 +210,7 @@ if (uid.value === '1') { border-radius: 50%; } .uname-span { + font-family: '阿里巴巴普惠体 3.0 55 Regular L3'; font-size: 14px; color: rgba(255, 255, 255, 0.8); } diff --git a/core/core-frontend/src/store/modules/data-visualization/dvMain.ts b/core/core-frontend/src/store/modules/data-visualization/dvMain.ts index 8ea7b479e9..8d8f7efe14 100644 --- a/core/core-frontend/src/store/modules/data-visualization/dvMain.ts +++ b/core/core-frontend/src/store/modules/data-visualization/dvMain.ts @@ -45,6 +45,7 @@ export const dvMainStore = defineStore('dataVisualization', { inMobile: false, firstLoadMap: [], canvasStyleData: { ...deepCopy(DEFAULT_CANVAS_STYLE_DATA_DARK), backgroundColor: null }, + appData: {}, //应用信息 // 当前展示画布缓存数据 componentDataCache: null, // PC布局画布组件数据 @@ -245,7 +246,12 @@ export const dvMainStore = defineStore('dataVisualization', { setCanvasViewInfo(canvasViewInfo) { this.canvasViewInfo = canvasViewInfo }, - + getAppDataInfo() { + return this.appData + }, + setAppDataInfo(appDataInfo) { + this.appData = appDataInfo + }, setCurComponent({ component, index }) { if (!component && this.curComponent) { this.curComponent['editing'] = false @@ -1205,13 +1211,14 @@ export const dvMainStore = defineStore('dataVisualization', { this.canvasState[key] = value } }, - createInit(dvType, resourceId?, pid?, watermarkInfo?) { + createInit(dvType, resourceId?, pid?, watermarkInfo?, preName) { const optName = dvType === 'dashboard' ? '新建仪表板' : '新建数据大屏' + const name = preName ? preName : optName this.dvInfo = { dataState: 'prepare', optType: null, id: resourceId, - name: optName, + name: name, pid: pid, type: dvType, status: 1, diff --git a/core/core-frontend/src/utils/canvasUtils.ts b/core/core-frontend/src/utils/canvasUtils.ts index c779e18d19..35e312764a 100644 --- a/core/core-frontend/src/utils/canvasUtils.ts +++ b/core/core-frontend/src/utils/canvasUtils.ts @@ -25,7 +25,7 @@ import { import { snapshotStoreWithOut } from '@/store/modules/data-visualization/snapshot' import { deepCopy } from '@/utils/utils' const dvMainStore = dvMainStoreWithOut() -const { curBatchOptComponents, dvInfo, canvasStyleData, componentData, canvasViewInfo } = +const { curBatchOptComponents, dvInfo, canvasStyleData, componentData, canvasViewInfo, appData } = storeToRefs(dvMainStore) const snapshotStore = snapshotStoreWithOut() @@ -349,6 +349,7 @@ export async function canvasSave(callBack) { canvasStyleData: JSON.stringify(canvasStyleData.value), componentData: JSON.stringify(componentDataToSave), canvasViewInfo: canvasViewInfo.value, + appData: appData.value, ...dvInfo.value, watermarkInfo: null } @@ -521,6 +522,7 @@ export async function decompressionPre(params, callBack) { .then(response => { const deTemplateDataTemp = response.data const sourceComponentData = JSON.parse(deTemplateDataTemp['componentData']) + const appData = deTemplateDataTemp['appData'] sourceComponentData.forEach(componentItem => { // 2 为基础版本 此处需要增加仪表板矩阵密度 if ( @@ -538,7 +540,10 @@ export async function decompressionPre(params, callBack) { canvasStyleData: sourceCanvasStyle, componentData: sourceComponentData, canvasViewInfo: deTemplateDataTemp['canvasViewInfo'], - appData: deTemplateDataTemp['appData'] + appData: appData, + baseInfo: { + preName: deTemplateDataTemp.name + } } }) .catch(e => { diff --git a/core/core-frontend/src/views/chart/components/editor/dataset-select/DatasetSelect.vue b/core/core-frontend/src/views/chart/components/editor/dataset-select/DatasetSelect.vue index f0f707672a..1debc308d0 100644 --- a/core/core-frontend/src/views/chart/components/editor/dataset-select/DatasetSelect.vue +++ b/core/core-frontend/src/views/chart/components/editor/dataset-select/DatasetSelect.vue @@ -5,8 +5,9 @@ import { Plus, Search } from '@element-plus/icons-vue' import { useI18n } from '@/hooks/web/useI18n' import { useAppStoreWithOut } from '@/store/modules/app' import _ from 'lodash' -import { getDatasetTree } from '@/api/dataset' +import { getDatasetTree, getDatasourceList } from '@/api/dataset' import { ElFormItem, FormInstance } from 'element-plus-secondary' +import type { DataSource } from '@/views/visualized/data/dataset/form/util' const props = withDefaults( defineProps<{ @@ -14,10 +15,12 @@ const props = withDefaults( modelValue?: string | number stateObj: any viewId: string + sourceType: string }>(), { datasetTree: () => [], - themes: 'dark' + themes: 'dark', + sourceType: 'dataset' } ) @@ -29,9 +32,13 @@ const datasetTree = ref([]) const toolTip = computed(() => { return props.themes === 'dark' ? 'ndark' : 'dark' }) + +const sourceName = computed(() => (props.sourceType === 'datasource' ? '数据源' : '数据集')) + const initDataset = () => { loadingDatasetTree.value = true - getDatasetTree({}) + const method = props.sourceType === 'datasource' ? getDatasourceList : getDatasetTree + method({}) .then(res => { datasetTree.value = (res as unknown as Tree[]) || [] }) @@ -110,7 +117,7 @@ const exist = computed(() => { const selectedNodeName = computed(() => { if (!exist.value) { - return '数据集不存在' + return sourceName.value + '不存在' } return selectedNode.value?.name }) @@ -212,7 +219,7 @@ onMounted(() => { v-model="selectedNodeName" readonly class="data-set-dark" - placeholder="请选择数据集" + :placeholder="'请选择' + sourceName" >