diff --git a/backend/src/main/java/io/dataease/controller/dataset/DataSetTableFieldController.java b/backend/src/main/java/io/dataease/controller/dataset/DataSetTableFieldController.java index d4d135ccfd..7703a6c79e 100644 --- a/backend/src/main/java/io/dataease/controller/dataset/DataSetTableFieldController.java +++ b/backend/src/main/java/io/dataease/controller/dataset/DataSetTableFieldController.java @@ -1,7 +1,9 @@ package io.dataease.controller.dataset; import io.dataease.base.domain.DatasetTableField; +import io.dataease.service.dataset.DataSetFieldService; import io.dataease.service.dataset.DataSetTableFieldsService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -17,6 +19,9 @@ public class DataSetTableFieldController { @Resource private DataSetTableFieldsService dataSetTableFieldsService; + @Autowired + private DataSetFieldService dataSetFieldService; + @PostMapping("list/{tableId}") public List list(@PathVariable String tableId) { DatasetTableField datasetTableField = DatasetTableField.builder().build(); @@ -28,4 +33,9 @@ public class DataSetTableFieldController { public void batchEdit(@RequestBody List list) { dataSetTableFieldsService.batchEdit(list); } + + @PostMapping("fieldValues/{fieldId}") + public List fieldValues(@PathVariable String fieldId) { + return dataSetFieldService.fieldValues(fieldId); + } } diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetFieldService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetFieldService.java new file mode 100644 index 0000000000..ded1e691f0 --- /dev/null +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetFieldService.java @@ -0,0 +1,9 @@ +package io.dataease.service.dataset; + + +import java.util.List; + +public interface DataSetFieldService { + + List fieldValues(String fieldId); +} 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 new file mode 100644 index 0000000000..49ae7db9a0 --- /dev/null +++ b/backend/src/main/java/io/dataease/service/dataset/impl/direct/DirectFieldService.java @@ -0,0 +1,71 @@ +package io.dataease.service.dataset.impl.direct; + +import io.dataease.base.domain.DatasetTable; +import io.dataease.base.domain.DatasetTableField; +import io.dataease.base.domain.Datasource; +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.service.dataset.DataSetFieldService; +import io.dataease.service.dataset.DataSetTableFieldsService; +import io.dataease.service.dataset.DataSetTableService; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + + +@Service("directDataSetFieldService") +public class DirectFieldService implements DataSetFieldService { + + + @Resource + private DataSetTableFieldsService dataSetTableFieldsService; + + @Resource + private DataSetTableService dataSetTableService; + + + @Resource + private DatasourceService datasourceService; + + @Override + public List fieldValues(String fieldId) { + + + List list = dataSetTableFieldsService.getListByIds(new ArrayList() {{ + add(fieldId); + }}); + if (CollectionUtils.isEmpty(list)) return null; + + DatasetTableField field = list.get(0); + String tableId = field.getTableId(); + if (StringUtils.isEmpty(tableId))return null; + DatasetTable datasetTable = dataSetTableService.get(tableId); + if (ObjectUtils.isEmpty(datasetTable) || StringUtils.isEmpty(datasetTable.getName())) return null; + String tableName = datasetTable.getName(); + + String dataSourceId = datasetTable.getDataSourceId(); + if( StringUtils.isEmpty(dataSourceId)) return null; + Datasource ds = datasourceService.get(dataSourceId); + DatasourceProvider datasourceProvider = ProviderFactory.getProvider(ds.getType()); + DatasourceRequest datasourceRequest = new DatasourceRequest(); + datasourceRequest.setDatasource(ds); + String querySQL = dataSetTableService.createQuerySQL(ds.getType(), tableName, new String[]{field.getOriginName()}); + datasourceRequest.setQuery(querySQL); + try { + List rows = datasourceProvider.getData(datasourceRequest); + List results = rows.stream().map(row -> row[0]).distinct().collect(Collectors.toList()); + return results; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } +} diff --git a/frontend/src/api/dataset/dataset.js b/frontend/src/api/dataset/dataset.js index e57bf94882..eaa27aa059 100644 --- a/frontend/src/api/dataset/dataset.js +++ b/frontend/src/api/dataset/dataset.js @@ -111,4 +111,12 @@ export function post(url, data) { }) } +export function fieldValues(fieldId) { + return request({ + url: '/dataset/field/fieldValues/' + fieldId, + method: 'post', + loading: true + }) +} + export default { loadTable, getScene, addGroup, delGroup, addTable, delTable, groupTree } diff --git a/frontend/src/components/canvas/components/Editor/index.vue b/frontend/src/components/canvas/components/Editor/index.vue index 13a016959d..06efece521 100644 --- a/frontend/src/components/canvas/components/Editor/index.vue +++ b/frontend/src/components/canvas/components/Editor/index.vue @@ -32,6 +32,7 @@ :style="getComponentStyle(item.style)" :element="item" :item="item" + @filter-value-change="filterValueChange" /> ').length - 1) * lineHeight * fontSize return height > newHeight ? height : newHeight + }, + + filterValueChange(value) { + console.log('emit:' + value) } } } diff --git a/frontend/src/components/widget/DeWidget/DeDrawingWidget.vue b/frontend/src/components/widget/DeWidget/DeDrawingWidget.vue index e2bd714dd3..f558671d0d 100644 --- a/frontend/src/components/widget/DeWidget/DeDrawingWidget.vue +++ b/frontend/src/components/widget/DeWidget/DeDrawingWidget.vue @@ -1,5 +1,6 @@ diff --git a/frontend/src/components/widget/DeWidget/DeSelect.vue b/frontend/src/components/widget/DeWidget/DeSelect.vue index bac27f0966..eaa45bff21 100644 --- a/frontend/src/components/widget/DeWidget/DeSelect.vue +++ b/frontend/src/components/widget/DeWidget/DeSelect.vue @@ -1,6 +1,6 @@