diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtChartGroupMapper.xml b/backend/src/main/java/io/dataease/base/mapper/ext/ExtChartGroupMapper.xml index 111ae9cab0..dfe3e343ed 100644 --- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtChartGroupMapper.xml +++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtChartGroupMapper.xml @@ -37,6 +37,12 @@ and chart_group.create_time = #{createTime,jdbcType=BIGINT} + + and id in + + #{item} + + order by ${sort} diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtChartViewMapper.xml b/backend/src/main/java/io/dataease/base/mapper/ext/ExtChartViewMapper.xml index 1728fd92d4..66f0e6cb9b 100644 --- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtChartViewMapper.xml +++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtChartViewMapper.xml @@ -39,6 +39,9 @@ and scene_id = #{sceneId,jdbcType=VARCHAR} + + and name like CONCAT('%', #{name},'%') + order by ${sort} diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetGroupMapper.xml b/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetGroupMapper.xml index 5a881f4bf2..88ef56c5d3 100644 --- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetGroupMapper.xml +++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetGroupMapper.xml @@ -37,6 +37,12 @@ and dataset_group.create_time = #{createTime,jdbcType=BIGINT} + + and id in + + #{item} + + order by ${sort} diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetTableMapper.xml b/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetTableMapper.xml index 77f6be94d5..be315eb38d 100644 --- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetTableMapper.xml +++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetTableMapper.xml @@ -45,6 +45,9 @@ and scene_id = #{sceneId,jdbcType=VARCHAR} + + and name like CONCAT('%', #{name},'%') + and mode = #{mode,jdbcType=INTEGER} diff --git a/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java b/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java index d84402a9a6..ad43882cc3 100644 --- a/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java +++ b/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java @@ -4,7 +4,9 @@ import io.dataease.base.domain.ChartViewWithBLOBs; import io.dataease.commons.utils.AuthUtils; import io.dataease.controller.request.chart.ChartExtRequest; import io.dataease.controller.request.chart.ChartViewRequest; +import io.dataease.controller.request.dataset.DataSetTableRequest; import io.dataease.dto.chart.ChartViewDTO; +import io.dataease.dto.dataset.DataSetTableDTO; import io.dataease.service.chart.ChartViewService; import org.springframework.web.bind.annotation.*; @@ -63,7 +65,7 @@ public class ChartViewController { } @GetMapping("searchAdviceSceneId/{panelId}") - public String searchAdviceSceneId(@PathVariable String panelId){ + public String searchAdviceSceneId(@PathVariable String panelId) { return chartViewService.searchAdviceSceneId(panelId); } @@ -71,10 +73,16 @@ public class ChartViewController { public ChartViewDTO getOneWithPermission(@PathVariable String id, @RequestBody ChartExtRequest requestList) throws Exception { //如果能获取用户 则添加对应的权限 ChartViewDTO dto = chartViewService.getData(id, requestList); - if(dto!=null && AuthUtils.getUser()!=null){ - ChartViewDTO permissionDto = chartViewService.getOneWithPermission(dto.getId()); + if (dto != null && AuthUtils.getUser() != null) { + ChartViewDTO permissionDto = chartViewService.getOneWithPermission(dto.getId()); dto.setPrivileges(permissionDto.getPrivileges()); } return dto; } + + + @PostMapping("search") + public List search(@RequestBody ChartViewRequest chartViewRequest) { + return chartViewService.search(chartViewRequest); + } } diff --git a/backend/src/main/java/io/dataease/controller/dataset/DataSetTableController.java b/backend/src/main/java/io/dataease/controller/dataset/DataSetTableController.java index 37d921e8d4..2ab3bd8075 100644 --- a/backend/src/main/java/io/dataease/controller/dataset/DataSetTableController.java +++ b/backend/src/main/java/io/dataease/controller/dataset/DataSetTableController.java @@ -108,4 +108,9 @@ public class DataSetTableController { public Boolean checkDorisTableIsExists(@PathVariable String id) throws Exception { return dataSetTableService.checkDorisTableIsExists(id); } + + @PostMapping("search") + public List search(@RequestBody DataSetTableRequest dataSetTableRequest) { + return dataSetTableService.search(dataSetTableRequest); + } } diff --git a/backend/src/main/java/io/dataease/controller/request/chart/ChartGroupRequest.java b/backend/src/main/java/io/dataease/controller/request/chart/ChartGroupRequest.java index 8ddcd1958c..624380ba30 100644 --- a/backend/src/main/java/io/dataease/controller/request/chart/ChartGroupRequest.java +++ b/backend/src/main/java/io/dataease/controller/request/chart/ChartGroupRequest.java @@ -3,9 +3,12 @@ package io.dataease.controller.request.chart; import io.dataease.base.domain.ChartGroup; import lombok.Data; +import java.util.Set; + @Data public class ChartGroupRequest extends ChartGroup { private String sort; private String userId; + private Set ids; } diff --git a/backend/src/main/java/io/dataease/controller/request/dataset/DataSetGroupRequest.java b/backend/src/main/java/io/dataease/controller/request/dataset/DataSetGroupRequest.java index cde03a2ffc..430fb22f1c 100644 --- a/backend/src/main/java/io/dataease/controller/request/dataset/DataSetGroupRequest.java +++ b/backend/src/main/java/io/dataease/controller/request/dataset/DataSetGroupRequest.java @@ -3,6 +3,9 @@ package io.dataease.controller.request.dataset; import io.dataease.base.domain.DatasetGroup; import lombok.Data; +import java.util.List; +import java.util.Set; + /** * @Author gin * @Date 2021/2/22 1:30 下午 @@ -12,4 +15,6 @@ public class DataSetGroupRequest extends DatasetGroup { private String sort; private String userId; + + private Set ids; } diff --git a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java index 84dbbf0fd7..5edfc6160d 100644 --- a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java +++ b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java @@ -15,11 +15,15 @@ import io.dataease.controller.request.chart.ChartExtFilterRequest; import io.dataease.controller.request.chart.ChartExtRequest; import io.dataease.controller.request.chart.ChartGroupRequest; import io.dataease.controller.request.chart.ChartViewRequest; +import io.dataease.controller.request.dataset.DataSetGroupRequest; +import io.dataease.controller.request.dataset.DataSetTableRequest; 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.chart.*; +import io.dataease.dto.dataset.DataSetGroupDTO; +import io.dataease.dto.dataset.DataSetTableDTO; import io.dataease.dto.dataset.DataSetTableUnionDTO; import io.dataease.dto.dataset.DataTableInfoDTO; import io.dataease.i18n.Translator; @@ -110,6 +114,53 @@ public class ChartViewService { return group; } + public List search(ChartViewRequest chartViewRequest) { + String userId = String.valueOf(AuthUtils.getUser().getUserId()); + chartViewRequest.setUserId(userId); + chartViewRequest.setSort("name asc"); + List ds = extChartViewMapper.search(chartViewRequest); + if (CollectionUtils.isEmpty(ds)) { + return ds; + } + + TreeSet ids = new TreeSet<>(); + ds.forEach(ele -> { + ele.setIsLeaf(true); + ele.setPid(ele.getSceneId()); + ids.add(ele.getPid()); + }); + + List group = new ArrayList<>(); + ChartGroupRequest chartGroupRequest = new ChartGroupRequest(); + chartGroupRequest.setUserId(userId); + chartGroupRequest.setIds(ids); + List search = extChartGroupMapper.search(chartGroupRequest); + while (CollectionUtils.isNotEmpty(search)) { + ids.clear(); + search.forEach(ele -> { + ChartViewDTO dto = new ChartViewDTO(); + BeanUtils.copyBean(dto, ele); + dto.setIsLeaf(false); + dto.setType("group"); + group.add(dto); + ids.add(ele.getPid()); + }); + chartGroupRequest.setIds(ids); + search = extChartGroupMapper.search(chartGroupRequest); + } + + List res = new ArrayList<>(); + Map map = new TreeMap<>(); + group.forEach(ele -> map.put(ele.getId(), ele)); + Iterator> iterator = map.entrySet().iterator(); + while (iterator.hasNext()) { + res.add(iterator.next().getValue()); + } + res.sort(Comparator.comparing(ChartViewDTO::getName)); + res.addAll(ds); + return res; + } + public ChartViewWithBLOBs get(String id) { return chartViewMapper.selectByPrimaryKey(id); } 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 0991fbd679..cb1f05a3f2 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -12,6 +12,7 @@ import io.dataease.commons.constants.JobStatus; import io.dataease.commons.constants.ScheduleType; import io.dataease.commons.constants.TaskStatus; import io.dataease.commons.utils.*; +import io.dataease.controller.request.chart.ChartGroupRequest; import io.dataease.controller.request.dataset.DataSetGroupRequest; import io.dataease.controller.request.dataset.DataSetTableRequest; import io.dataease.controller.request.dataset.DataSetTaskRequest; @@ -232,6 +233,53 @@ public class DataSetTableService { return group; } + public List search(DataSetTableRequest dataSetTableRequest) { + String userId = String.valueOf(AuthUtils.getUser().getUserId()); + dataSetTableRequest.setUserId(userId); + dataSetTableRequest.setSort("name asc"); + List ds = extDataSetTableMapper.search(dataSetTableRequest); + if (CollectionUtils.isEmpty(ds)) { + return ds; + } + + TreeSet ids = new TreeSet<>(); + ds.forEach(ele -> { + ele.setIsLeaf(true); + ele.setPid(ele.getSceneId()); + ids.add(ele.getPid()); + }); + + List group = new ArrayList<>(); + DataSetGroupRequest dataSetGroupRequest = new DataSetGroupRequest(); + dataSetGroupRequest.setUserId(userId); + dataSetGroupRequest.setIds(ids); + List search = extDataSetGroupMapper.search(dataSetGroupRequest); + while (CollectionUtils.isNotEmpty(search)) { + ids.clear(); + search.forEach(ele -> { + DataSetTableDTO dto = new DataSetTableDTO(); + BeanUtils.copyBean(dto, ele); + dto.setIsLeaf(false); + dto.setType("group"); + group.add(dto); + ids.add(ele.getPid()); + }); + dataSetGroupRequest.setIds(ids); + search = extDataSetGroupMapper.search(dataSetGroupRequest); + } + + List res = new ArrayList<>(); + Map map = new TreeMap<>(); + group.forEach(ele -> map.put(ele.getId(), ele)); + Iterator> iterator = map.entrySet().iterator(); + while (iterator.hasNext()) { + res.add(iterator.next().getValue()); + } + res.sort(Comparator.comparing(DatasetTable::getName)); + res.addAll(ds); + return res; + } + public DatasetTable get(String id) { return datasetTableMapper.selectByPrimaryKey(id); } diff --git a/frontend/src/api/dataset/dataset.js b/frontend/src/api/dataset/dataset.js index ebd256eaf9..a91a6c7d06 100644 --- a/frontend/src/api/dataset/dataset.js +++ b/frontend/src/api/dataset/dataset.js @@ -111,11 +111,12 @@ export function batchEdit(data) { }) } -export function post(url, data, showLoading = true) { +export function post(url, data, showLoading = true, timeout = 10000) { return request({ url: url, method: 'post', loading: showLoading, + timeout: timeout, data }) } diff --git a/frontend/src/views/chart/components/shape-attr/TooltipSelector.vue b/frontend/src/views/chart/components/shape-attr/TooltipSelector.vue index f4a76dedbe..2e0fc50367 100644 --- a/frontend/src/views/chart/components/shape-attr/TooltipSelector.vue +++ b/frontend/src/views/chart/components/shape-attr/TooltipSelector.vue @@ -26,19 +26,19 @@ {{ $t('chart.content_formatter') }}
- 模板变量有 {a}, {b},{c},{d},{e},分别表示系列名,数据名,数据值等。 + 模板变量有 {a}, {b},{c},{d},分别表示系列名,数据名,数据值等。
- 在 trigger 为 'axis' 的时候,会有多个系列的数据,此时可以通过 {a0}, {a1}, {a2} 这种后面加索引的方式表示系列的索引。 + 在 触发位置 为 '坐标轴' 的时候,会有多个系列的数据,此时可以通过 {a0}, {a1}, {a2} 这种后面加索引的方式表示系列的索引。
不同图表类型下的 {a},{b},{c},{d} 含义不一样。 其中变量{a}, {b}, {c}, {d}在不同图表类型下代表数据含义为:

- 折线(区域)图、柱状(条形)图、K线图 : {a}(系列名称),{b}(类目值),{c}(数值), {d}(无) + 折线(区域)图、柱状(条形)图、仪表盘 : {a}(系列名称),{b}(类目值),{c}(数值)
- 散点图(气泡)图 : {a}(系列名称),{b}(数据名称),{c}(数值数组), {d}(无) -
- 地图 : {a}(系列名称),{b}(区域名称),{c}(合并数值), {d}(无) -
- 饼图、仪表板、漏斗图: {a}(系列名称),{b}(数据项名称),{c}(数值), {d}(百分比) + + + + + 饼图、漏斗图: {a}(系列名称),{b}(数据项名称),{c}(数值), {d}(百分比)
diff --git a/frontend/src/views/chart/group/Group.vue b/frontend/src/views/chart/group/Group.vue index 8783ceddce..6fae053c64 100644 --- a/frontend/src/views/chart/group/Group.vue +++ b/frontend/src/views/chart/group/Group.vue @@ -535,7 +535,8 @@ export default { type: 'success', showClose: true }) - this.treeNode(this.groupForm) + // this.treeNode(this.groupForm) + this.refreshNodeBy(group.pid) }) } else { // this.$message({ @@ -588,7 +589,8 @@ export default { message: this.$t('chart.delete_success'), showClose: true }) - this.treeNode(this.groupForm) + // this.treeNode(this.groupForm) + this.refreshNodeBy(data.pid) }) }).catch(() => { }) @@ -889,14 +891,18 @@ export default { searchTree(val) { const queryCondition = { - withExtend: 'parent', - modelType: 'chart', + // withExtend: 'parent', + // modelType: 'chart', name: val } - authModel(queryCondition).then(res => { - // this.highlights(res.data) + // authModel(queryCondition).then(res => { + // // this.highlights(res.data) + // this.tData = this.buildTree(res.data) + // // console.log(this.tData) + // }) + + post('/chart/view/search', queryCondition).then(res => { this.tData = this.buildTree(res.data) - // console.log(this.tData) }) }, @@ -908,8 +914,8 @@ export default { const roots = [] arrs.forEach(el => { // 判断根节点 ### - el.type = el.modelInnerType - el.isLeaf = el.leaf + // el.type = el.modelInnerType + // el.isLeaf = el.leaf if (el[this.treeProps.parentId] === null || el[this.treeProps.parentId] === 0 || el[this.treeProps.parentId] === '0') { roots.push(el) return diff --git a/frontend/src/views/dataset/common/DatasetTableData.vue b/frontend/src/views/dataset/common/DatasetTableData.vue index cb58e377b8..d5ad466c2b 100644 --- a/frontend/src/views/dataset/common/DatasetTableData.vue +++ b/frontend/src/views/dataset/common/DatasetTableData.vue @@ -72,7 +72,7 @@ export default { if (this.table.id) { this.dataLoading = true this.table.row = 100 - post('/dataset/table/getPreviewData/1/100', this.table, false).then(response => { + post('/dataset/table/getPreviewData/1/100', this.table, false,30000).then(response => { this.fields = response.data.fields this.data = response.data.data const datas = this.data diff --git a/frontend/src/views/dataset/data/ViewTable.vue b/frontend/src/views/dataset/data/ViewTable.vue index 844dafbfa2..3e645ec7c8 100644 --- a/frontend/src/views/dataset/data/ViewTable.vue +++ b/frontend/src/views/dataset/data/ViewTable.vue @@ -134,7 +134,7 @@ export default { initPreviewData(page) { if (this.table.id) { this.table.row = this.tableViewRowForm.row - post('/dataset/table/getPreviewData/' + page.page + '/' + page.pageSize, this.table).then(response => { + post('/dataset/table/getPreviewData/' + page.page + '/' + page.pageSize, this.table, true, 30000).then(response => { this.fields = response.data.fields this.data = response.data.data this.page = response.data.page diff --git a/frontend/src/views/dataset/group/Group.vue b/frontend/src/views/dataset/group/Group.vue index dd8292be32..19f8db239a 100644 --- a/frontend/src/views/dataset/group/Group.vue +++ b/frontend/src/views/dataset/group/Group.vue @@ -856,14 +856,18 @@ export default { searchTree(val) { const queryCondition = { - withExtend: 'parent', - modelType: 'dataset', + // withExtend: 'parent', + // modelType: 'dataset', name: val } - authModel(queryCondition).then(res => { - // this.highlights(res.data) + // authModel(queryCondition).then(res => { + // // this.highlights(res.data) + // this.tData = this.buildTree(res.data) + // // console.log(this.tData) + // }) + + post('/dataset/table/search', queryCondition).then(res => { this.tData = this.buildTree(res.data) - // console.log(this.tData) }) }, @@ -875,8 +879,8 @@ export default { const roots = [] arrs.forEach(el => { // 判断根节点 ### - el.type = el.modelInnerType - el.isLeaf = el.leaf + // el.type = el.modelInnerType + // el.isLeaf = el.leaf if (el[this.treeProps.parentId] === null || el[this.treeProps.parentId] === 0 || el[this.treeProps.parentId] === '0') { roots.push(el) return