diff --git a/backend/src/main/java/io/dataease/service/dataset/impl/direct/DirectFieldService.java b/backend/src/main/java/io/dataease/service/dataset/impl/direct/DirectFieldService.java index bb2d6ea60e..f077c22c8f 100644 --- a/backend/src/main/java/io/dataease/service/dataset/impl/direct/DirectFieldService.java +++ b/backend/src/main/java/io/dataease/service/dataset/impl/direct/DirectFieldService.java @@ -1,5 +1,6 @@ package io.dataease.service.dataset.impl.direct; +import com.google.gson.Gson; import io.dataease.base.domain.DatasetTable; import io.dataease.base.domain.DatasetTableField; import io.dataease.base.domain.Datasource; @@ -8,6 +9,7 @@ import io.dataease.datasource.provider.DatasourceProvider; import io.dataease.datasource.provider.ProviderFactory; import io.dataease.datasource.request.DatasourceRequest; import io.dataease.datasource.service.DatasourceService; +import io.dataease.dto.dataset.DataTableInfoDTO; import io.dataease.provider.QueryProvider; import io.dataease.service.dataset.DataSetFieldService; import io.dataease.service.dataset.DataSetTableFieldsService; @@ -55,23 +57,31 @@ public class DirectFieldService implements DataSetFieldService { String tableName = datasetTable.getName(); DatasourceRequest datasourceRequest = new DatasourceRequest(); - DatasourceProvider datasourceProvider; - if (datasetTable.getMode() == 0) { - String dataSourceId = datasetTable.getDataSourceId(); - if (StringUtils.isEmpty(dataSourceId)) return null; - Datasource ds = datasourceService.get(dataSourceId); + DatasourceProvider datasourceProvider = null; + if (datasetTable.getMode() == 0) {// 直连 + if (StringUtils.isEmpty(datasetTable.getDataSourceId())) return null; + Datasource ds = datasourceService.get(datasetTable.getDataSourceId()); datasourceProvider = ProviderFactory.getProvider(ds.getType()); + datasourceRequest = new DatasourceRequest(); datasourceRequest.setDatasource(ds); + DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); - String querySQL = qp.createQuerySQL(tableName, Collections.singletonList(field)); - datasourceRequest.setQuery(querySQL); - } else { + if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "db")) { + datasourceRequest.setTable(dataTableInfoDTO.getTable()); + datasourceRequest.setQuery(qp.createQuerySQL(dataTableInfoDTO.getTable(), Collections.singletonList(field))); + } else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql")) { + datasourceRequest.setQuery(qp.createQuerySQLAsTmp(dataTableInfoDTO.getSql(), Collections.singletonList(field))); + } + } else if (datasetTable.getMode() == 1) {// 抽取 + // 连接doris,构建doris数据源查询 Datasource ds = (Datasource) CommonBeanFactory.getBean("DorisDatasource"); datasourceProvider = ProviderFactory.getProvider(ds.getType()); + datasourceRequest = new DatasourceRequest(); datasourceRequest.setDatasource(ds); + tableName = "ds_" + datasetTable.getId().replaceAll("-", "_"); + datasourceRequest.setTable(tableName); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); - String querySQL = qp.createQuerySQL(tableName, Collections.singletonList(field)); - datasourceRequest.setQuery(querySQL); + datasourceRequest.setQuery(qp.createQuerySQL(tableName, Collections.singletonList(field))); } try { diff --git a/frontend/src/components/widget/serviceImpl/TextSelectServiceImpl.js b/frontend/src/components/widget/serviceImpl/TextSelectServiceImpl.js index 803a68757f..48f8f81b53 100644 --- a/frontend/src/components/widget/serviceImpl/TextSelectServiceImpl.js +++ b/frontend/src/components/widget/serviceImpl/TextSelectServiceImpl.js @@ -12,6 +12,7 @@ const dialogPanel = { attrs: { multiple: false, placeholder: '请选择', + viewIds: [], datas: [], key: 'id', label: 'text',