diff --git a/backend/src/main/java/io/dataease/provider/datasource/EsProvider.java b/backend/src/main/java/io/dataease/provider/datasource/EsProvider.java index 411b1b13f8..eb055a45b4 100644 --- a/backend/src/main/java/io/dataease/provider/datasource/EsProvider.java +++ b/backend/src/main/java/io/dataease/provider/datasource/EsProvider.java @@ -99,11 +99,18 @@ public class EsProvider extends DatasourceProvider { @Override public List getTableFileds(DatasourceRequest datasourceRequest) throws Exception { - QueryProvider qp = ProviderFactory.getQueryProvider(datasourceRequest.getDatasource().getType()); - datasourceRequest.setQuery(qp.convertTableToSql(datasourceRequest.getTable(), datasourceRequest.getDatasource())); - return fetchResultField(datasourceRequest); + datasourceRequest.setQuery("desc " + datasourceRequest.getTable()); + List tableFields = new ArrayList<>(); + try { + String response = exexQuery(datasourceRequest, datasourceRequest.getQuery(), "?format=json"); + tableFields = fetchResultField4Table(response); + } catch (Exception e) { + DataEaseException.throwException(e); + } + return tableFields; } + private List fetchResult(String response) throws Exception { EsReponse esReponse = new Gson().fromJson(response, EsReponse.class); return fetchResult(esReponse); @@ -166,6 +173,26 @@ public class EsProvider extends DatasourceProvider { return fieldList; } + private List fetchResultField4Table(String response) throws Exception { + List fieldList = new ArrayList<>(); + EsReponse esReponse = new Gson().fromJson(response, EsReponse.class); + if (esReponse.getError() != null) { + throw new Exception(esReponse.getError().getReason()); + } + + for (String[] row : esReponse.getRows()) { + if(!row[1].equalsIgnoreCase("STRUCT")){ + TableField field = new TableField(); + field.setFieldName(row[0]); + field.setRemarks(row[0]); + field.setFieldType(row[2]); + field.setFieldSize(EsQueryProvider.transFieldTypeSize(row[2])); + fieldList.add(field); + } + } + return fieldList; + } + @Override public Map fetchResultAndField(DatasourceRequest datasourceRequest) throws Exception { Map result = new HashMap<>(); diff --git a/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java b/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java index ea395af602..f2bd003b0e 100644 --- a/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java +++ b/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java @@ -403,6 +403,9 @@ public class JdbcProvider extends DatasourceProvider { } private Connection getConnectionFromPool(DatasourceRequest datasourceRequest) throws Exception { + if(datasourceRequest.getDatasource().getType().equalsIgnoreCase(DatasourceTypes.mongo.name())){ + return getConnection(datasourceRequest); + } DruidDataSource dataSource = jdbcConnection.get(datasourceRequest.getDatasource().getId()); if (dataSource == null) { handleDatasource(datasourceRequest, "add"); diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java index e63fe1f17a..4d95d8f4bf 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -1629,7 +1629,7 @@ public class DataSetTableService { datasetTableField.setDeExtractType(transFieldType(filed.getFieldType())); } else { Integer fieldType = qp.transFieldType(filed.getFieldType()); - datasetTableField.setDeType(fieldType == 4 ? 2 : fieldType); + datasetTableField.setDeType(fieldType == 4 ? 2 : (fieldType == 6 ? 0 : fieldType)); datasetTableField.setDeExtractType(fieldType); } datasetTableField.setSize(filed.getFieldSize()); @@ -1637,7 +1637,7 @@ public class DataSetTableService { datasetTableField.setColumnIndex(i); datasetTableField.setLastSyncTime(syncTime); datasetTableField.setExtField(0); - datasetTableField.setGroupType(datasetTableField.getDeType() < 2 ? "d" : "q"); + datasetTableField.setGroupType((datasetTableField.getDeType() < 2 || datasetTableField.getDeType() == 6) ? "d" : "q"); } dataSetTableFieldsService.save(datasetTableField); } diff --git a/frontend/src/views/dataset/data/FieldEdit.vue b/frontend/src/views/dataset/data/FieldEdit.vue index c44b889b9d..4358303629 100644 --- a/frontend/src/views/dataset/data/FieldEdit.vue +++ b/frontend/src/views/dataset/data/FieldEdit.vue @@ -72,8 +72,8 @@ - - + + {{ $t('dataset.text') }} @@ -95,8 +95,8 @@