From 163a0f939b1b5be64bae8ef4e370c7da249ef1d1 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Tue, 6 Sep 2022 18:11:38 +0800 Subject: [PATCH 01/12] =?UTF-8?q?fix(=E7=99=BB=E5=BD=95):=20=E9=92=89?= =?UTF-8?q?=E9=92=89=E6=89=AB=E7=A0=81=E7=99=BB=E5=BD=95=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugins/server/XDingtalkServer.java | 2 +- .../io/dataease/service/sys/SysUserService.java | 17 +++-------------- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/backend/src/main/java/io/dataease/plugins/server/XDingtalkServer.java b/backend/src/main/java/io/dataease/plugins/server/XDingtalkServer.java index cc5603e1b0..baa5927cf9 100644 --- a/backend/src/main/java/io/dataease/plugins/server/XDingtalkServer.java +++ b/backend/src/main/java/io/dataease/plugins/server/XDingtalkServer.java @@ -88,7 +88,7 @@ public class XDingtalkServer { DEException.throwException("未开启钉钉"); } DingUserEntity dingUserEntity = dingtalkXpackService.userInfo(code); - String username = dingUserEntity.getUserId(); + String username = dingUserEntity.getUserid(); String unionid = dingUserEntity.getUnionid(); SysUserEntity sysUserEntity = authUserService.getUserBySub(unionid, 5); if (null == sysUserEntity) { diff --git a/backend/src/main/java/io/dataease/service/sys/SysUserService.java b/backend/src/main/java/io/dataease/service/sys/SysUserService.java index a361c5b4b2..3d55955005 100644 --- a/backend/src/main/java/io/dataease/service/sys/SysUserService.java +++ b/backend/src/main/java/io/dataease/service/sys/SysUserService.java @@ -147,13 +147,7 @@ public class SysUserService { sysUser.setIsAdmin(false); sysUser.setSub(userId); sysUserMapper.insert(sysUser); - SysUser dbUser = findOne(sysUser); - if (null != dbUser && null != dbUser.getUserId()) { - // 默认角色是普通员工 - List roleIds = new ArrayList(); - roleIds.add(2L); - saveUserRoles( dbUser.getUserId(), roleIds); - } + } @Transactional @@ -161,7 +155,7 @@ public class SysUserService { long now = System.currentTimeMillis(); SysUser sysUser = new SysUser(); - sysUser.setUsername(dingUserEntity.getUserId()); + sysUser.setUsername(dingUserEntity.getUserid()); sysUser.setNickName(dingUserEntity.getName()); sysUser.setEmail(email); sysUser.setPassword(CodingUtil.md5(DEFAULT_PWD)); @@ -175,12 +169,7 @@ public class SysUserService { sysUser.setSub(dingUserEntity.getUnionid()); sysUser.setPhone(dingUserEntity.getMobile()); sysUserMapper.insert(sysUser); - SysUser dbUser = findOne(sysUser); - /*if (null != dbUser && null != dbUser.getUserId()) { - List roleIds = new ArrayList(); - roleIds.add(2L); - saveUserRoles( dbUser.getUserId(), roleIds); - }*/ + } @Transactional From 02ffc08b47ae6aa234ebce5b127d89b50f4f6092 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Tue, 6 Sep 2022 18:31:01 +0800 Subject: [PATCH 02/12] =?UTF-8?q?style(=E7=99=BB=E5=BD=95):=20=E4=BA=8C?= =?UTF-8?q?=E7=BB=B4=E7=A0=81=E5=AE=B9=E5=99=A8=E9=AB=98=E5=BA=A6=E5=9B=BA?= =?UTF-8?q?=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/views/login/index.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend/src/views/login/index.vue b/frontend/src/views/login/index.vue index 6835a93753..15fd78dc67 100644 --- a/frontend/src/views/login/index.vue +++ b/frontend/src/views/login/index.vue @@ -58,7 +58,7 @@
- + @@ -501,6 +501,9 @@ export default { height: 150px; padding: 10px; } + .code-contaniner { + height: 410px; + } } .login-third-item { display: inline-block; From 7cc270c2c087813d9264cffd987fc7df7068d777 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Wed, 7 Sep 2022 10:21:45 +0800 Subject: [PATCH 03/12] =?UTF-8?q?feat:=20sql=E5=8F=98=E9=87=8F=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81=20=E6=97=B6=E9=97=B4=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataset/DataSetTableController.java | 6 +- .../service/dataset/DataSetTableService.java | 26 ++- frontend/src/api/panel/view.js | 4 +- .../widget/serviceImpl/TimeDateServiceImpl.js | 1 + .../serviceImpl/TimeMonthServiceImpl.js | 1 + .../serviceImpl/TimeQuarterServiceImpl.js | 1 + .../widget/serviceImpl/TimeYearServiceImpl.js | 1 + frontend/src/views/dataset/add/AddSQL.vue | 58 ++--- .../src/views/panel/filter/filterDialog.vue | 9 +- .../panel/filter/filterMain/FilterControl.vue | 212 ++++++++++-------- 10 files changed, 186 insertions(+), 133 deletions(-) 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 d10bff43ad..9f66d7706a 100644 --- a/backend/src/main/java/io/dataease/controller/dataset/DataSetTableController.java +++ b/backend/src/main/java/io/dataease/controller/dataset/DataSetTableController.java @@ -211,8 +211,8 @@ public class DataSetTableController { } @ApiOperation("根据仪表板视图ID查询数据集变量") - @PostMapping("/paramsWithIds") - List paramsWithIds(@RequestBody List viewIds){ - return dataSetTableService.paramsWithIds(viewIds); + @PostMapping("/paramsWithIds/{type}") + List paramsWithIds(@PathVariable String type, @RequestBody List viewIds){ + return dataSetTableService.paramsWithIds(type, viewIds); }; } 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 48c16ad86a..960d59335b 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -930,10 +930,14 @@ public class DataSetTableService { return map; } - public List paramsWithIds(List viewIds) { + public List paramsWithIds(String type, List viewIds) { if (CollectionUtils.isEmpty(viewIds)) { return new ArrayList<>(); } + + if(!Arrays.asList("DATE", "TEXT", "NUM").contains(type)){ + return new ArrayList<>(); + } ChartViewExample chartViewExample = new ChartViewExample(); chartViewExample.createCriteria().andIdIn(viewIds); List datasetIds = chartViewMapper.selectByExample(chartViewExample).stream().map(ChartView::getTableId).collect(Collectors.toList()); @@ -946,11 +950,9 @@ public class DataSetTableService { if (CollectionUtils.isEmpty(datasetTables)) { return new ArrayList<>(); } - - List sqlVariableDetails = new ArrayList<>(); List sqlVariableNames = new ArrayList<>(); - datasetTables.forEach(datasetTable -> { + for (DatasetTable datasetTable : datasetTables) { if (StringUtils.isNotEmpty(datasetTable.getSqlVariableDetails())) { List sqlVariables = new Gson().fromJson(datasetTable.getSqlVariableDetails(), new TypeToken>() { }.getType()); @@ -961,7 +963,21 @@ public class DataSetTableService { } } } - }); + } + switch (type){ + case "DATE": + sqlVariableDetails = sqlVariableDetails.stream().filter(item -> item.getType().get(0).contains("DATETIME")).collect(Collectors.toList()); + sqlVariableDetails.forEach(item -> {item.setAlias(item.getVariableName() + "[" + item.getType().get(1) + "]");}); + break; + case "TEXT": + sqlVariableDetails = sqlVariableDetails.stream().filter(item -> item.getType().get(0).contains("TEXT")).collect(Collectors.toList()); + sqlVariableDetails.forEach(item -> {item.setAlias(item.getVariableName());}); + break; + case "NUM": + sqlVariableDetails = sqlVariableDetails.stream().filter(item -> item.getType().get(0).contains("LONG") || item.getType().get(0).contains("DOUBLE")).collect(Collectors.toList()); + sqlVariableDetails.forEach(item -> {item.setAlias(item.getVariableName());}); + break; + } return sqlVariableDetails; } diff --git a/frontend/src/api/panel/view.js b/frontend/src/api/panel/view.js index e1c74e633c..2a03aa0823 100644 --- a/frontend/src/api/panel/view.js +++ b/frontend/src/api/panel/view.js @@ -17,9 +17,9 @@ export function viewsWithIds(data) { }) } -export function paramsWithIds(data) { +export function paramsWithIds(type, data) { return request({ - url: '/dataset/table/paramsWithIds', + url: '/dataset/table/paramsWithIds/' + type, method: 'post', loading: true, data diff --git a/frontend/src/components/widget/serviceImpl/TimeDateServiceImpl.js b/frontend/src/components/widget/serviceImpl/TimeDateServiceImpl.js index bac5546a24..d9ce3365ad 100644 --- a/frontend/src/components/widget/serviceImpl/TimeDateServiceImpl.js +++ b/frontend/src/components/widget/serviceImpl/TimeDateServiceImpl.js @@ -17,6 +17,7 @@ const dialogPanel = { placeholder: 'dedate.placeholder', viewIds: [], fieldId: '', + parameters: [], dragItems: [], default: { isDynamic: false, diff --git a/frontend/src/components/widget/serviceImpl/TimeMonthServiceImpl.js b/frontend/src/components/widget/serviceImpl/TimeMonthServiceImpl.js index a8c3e195e0..c8defe995a 100644 --- a/frontend/src/components/widget/serviceImpl/TimeMonthServiceImpl.js +++ b/frontend/src/components/widget/serviceImpl/TimeMonthServiceImpl.js @@ -15,6 +15,7 @@ const dialogPanel = { placeholder: 'deyearmonth.placeholder', viewIds: [], fieldId: '', + parameters: [], dragItems: [], default: { isDynamic: false, diff --git a/frontend/src/components/widget/serviceImpl/TimeQuarterServiceImpl.js b/frontend/src/components/widget/serviceImpl/TimeQuarterServiceImpl.js index a3bcd9535d..89f0b4dfd0 100644 --- a/frontend/src/components/widget/serviceImpl/TimeQuarterServiceImpl.js +++ b/frontend/src/components/widget/serviceImpl/TimeQuarterServiceImpl.js @@ -13,6 +13,7 @@ const dialogPanel = { }, value: '' }, + parameters: [], defaultClass: 'time-filter', component: 'de-quarter' } diff --git a/frontend/src/components/widget/serviceImpl/TimeYearServiceImpl.js b/frontend/src/components/widget/serviceImpl/TimeYearServiceImpl.js index 1e4b50c2fa..54bbfac589 100644 --- a/frontend/src/components/widget/serviceImpl/TimeYearServiceImpl.js +++ b/frontend/src/components/widget/serviceImpl/TimeYearServiceImpl.js @@ -15,6 +15,7 @@ const dialogPanel = { placeholder: 'deyear.placeholder', viewIds: [], fieldId: '', + parameters: [], dragItems: [], default: { isDynamic: false, diff --git a/frontend/src/views/dataset/add/AddSQL.vue b/frontend/src/views/dataset/add/AddSQL.vue index 2f408f6edb..327f6e2196 100644 --- a/frontend/src/views/dataset/add/AddSQL.vue +++ b/frontend/src/views/dataset/add/AddSQL.vue @@ -249,35 +249,35 @@ export default { { label: this.$t('dataset.text'), value: 'TEXT' }, { label: this.$t('dataset.value'), value: 'LONG' }, { label: this.$t('dataset.value') + '(' + this.$t('dataset.float') + ')', value: 'DOUBLE' }, - // { label: this.$t('dataset.time_year'), value: 'DATETIME-YEAR' }, - // { label: this.$t('dataset.time_year_month'), value: 'DATETIME-YEAR-MONTH', - // children: [{ - // value: 'yyyy-MM', - // label: 'YYYY-MM' - // }, { - // value: 'yyyy/MM', - // label: 'YYYY/MM' - // }] - // }, - // { label: this.$t('dataset.time_year_month_day'), value: 'DATETIME-YEAR-MONTH-DAY', - // children: [{ - // value: 'yyyy-MM-dd', - // label: 'YYYY-MM-DD' - // }, { - // value: 'yyyy/MM/dd', - // label: 'YYYY/MM/DD' - // }] - // }, - // { label: this.$t('dataset.time_all'), value: 'DATETIME', - // children: [{ - // value: 'yyyy-MM-dd HH:mm:ss', - // label: 'YYYY-MM-DD HH:MI:SS' - // }, { - // value: 'yyyy/MM/dd HH:mm:ss', - // label: 'YYYY/MM/DD HH:MI:SS' - // } - // ] - // } + { label: this.$t('dataset.time_year'), value: 'DATETIME-YEAR' }, + { label: this.$t('dataset.time_year_month'), value: 'DATETIME-YEAR-MONTH', + children: [{ + value: 'yyyy-MM', + label: 'YYYY-MM' + }, { + value: 'yyyy/MM', + label: 'YYYY/MM' + }] + }, + { label: this.$t('dataset.time_year_month_day'), value: 'DATETIME-YEAR-MONTH-DAY', + children: [{ + value: 'yyyy-MM-dd', + label: 'YYYY-MM-DD' + }, { + value: 'yyyy/MM/dd', + label: 'YYYY/MM/DD' + }] + }, + { label: this.$t('dataset.time_all'), value: 'DATETIME', + children: [{ + value: 'yyyy-MM-dd HH:mm:ss', + label: 'YYYY-MM-DD HH:MI:SS' + }, { + value: 'yyyy/MM/dd HH:mm:ss', + label: 'YYYY/MM/DD HH:MI:SS' + } + ] + } ], } }, diff --git a/frontend/src/views/panel/filter/filterDialog.vue b/frontend/src/views/panel/filter/filterDialog.vue index 69df767462..4439a10a58 100644 --- a/frontend/src/views/panel/filter/filterDialog.vue +++ b/frontend/src/views/panel/filter/filterDialog.vue @@ -480,7 +480,14 @@ export default { this.viewInfos = datas this.childViews.viewInfos = datas }) - viewIds && viewIds.length > 0 && paramsWithIds(viewIds).then(res => { + var type = 'TEXT' + if(this.widgetInfo.name.indexOf('time') !== -1){ + type = 'DATE' + } + if(this.widgetInfo.name === 'numberSelectWidget'){ + type = 'NUM' + } + viewIds && viewIds.length > 0 && paramsWithIds(type, viewIds).then(res => { const datas = res.data this.childViews.datasetParams = datas diff --git a/frontend/src/views/panel/filter/filterMain/FilterControl.vue b/frontend/src/views/panel/filter/filterMain/FilterControl.vue index be88fa2b22..9efec329ec 100644 --- a/frontend/src/views/panel/filter/filterMain/FilterControl.vue +++ b/frontend/src/views/panel/filter/filterMain/FilterControl.vue @@ -50,7 +50,8 @@
- +
- + {{ item.name }} {{ item.name }} @@ -92,7 +93,7 @@ /> - + {{ $t('panel.binding_parameters') }} @@ -106,9 +107,10 @@ class="de-checkbox" >
- {{ item.variableName }} - - {{ item.variableName }} + {{ item.alias }} + + {{ item.alias }}
@@ -145,7 +147,8 @@ export default { childViews: { type: Object, - default: () => {} + default: () => { + } }, element: { type: Object, @@ -154,120 +157,143 @@ export default { }, data() { return { + showParams: false, attrs: null, titlePopovervisible: false, popovervisible: false, parametersVisible: false, timePopovervisible: false, accuracyOptions: [ - { id: 'HH', name: 'HH' }, - { id: 'HH:mm', name: 'HH:mm' }, - { id: 'HH:mm:ss', name: 'HH:mm:ss' } + {id: 'HH', name: 'HH'}, + {id: 'HH:mm', name: 'HH:mm'}, + {id: 'HH:mm:ss', name: 'HH:mm:ss'} ] } }, - computed: { - - }, + computed: {}, created() { + console.log(this.element) + console.log(this.widget) this.attrs = this.controlAttrs - }, - methods: { - multipleChange(value) { - this.fillAttrs2Filter() - }, - showTimeChange(value) { - this.attrs.accuracy = this.accuracyOptions[1].id - this.attrs.default.isDynamic = false - this.fillAttrs2Filter() - }, - checkedViewsChange(values) { - this.fillAttrs2Filter() - }, - enableRangeChange(value) { - if (!value) { - this.attrs.viewIds = [] - } - this.fillAttrs2Filter() - }, - enableParametersChange(value) { - if (!value) { - this.attrs.parameters = [] - } - this.fillAttrs2Filter() - }, - showTitleChange(value) { - if (!value) { - this.attrs.title = '' - this.element.style.backgroundColor = '' - } - this.fillAttrs2Filter() - }, - showVisualChange(value) { - this.fillAttrs2Filter() - }, - - fillAttrs2Filter() {} + console.log(this.childViews.datasetParams.length) + if ('timeYearWidget,timeMonthWidget,timeDateWidget,textSelectWidget,numberSelectWidget'.indexOf(this.widget.name) !== -1) { + this.showParams = true + } +} +, +methods: { + multipleChange(value) + { + this.fillAttrs2Filter() } +, + showTimeChange(value) + { + this.attrs.accuracy = this.accuracyOptions[1].id + this.attrs.default.isDynamic = false + this.fillAttrs2Filter() + } +, + checkedViewsChange(values) + { + this.fillAttrs2Filter() + } +, + enableRangeChange(value) + { + if (!value) { + this.attrs.viewIds = [] + } + this.fillAttrs2Filter() + } +, + enableParametersChange(value) + { + console.log(this.childViews.datasetParams.length) + if (!value) { + this.attrs.parameters = [] + } + this.fillAttrs2Filter() + } +, + showTitleChange(value) + { + if (!value) { + this.attrs.title = '' + this.element.style.backgroundColor = '' + } + this.fillAttrs2Filter() + } +, + showVisualChange(value) + { + this.fillAttrs2Filter() + } +, + + fillAttrs2Filter() + { + } +} } diff --git a/frontend/src/views/system/SysParam/index.vue b/frontend/src/views/system/SysParam/index.vue index e7ab96cc2d..17bc18e80a 100644 --- a/frontend/src/views/system/SysParam/index.vue +++ b/frontend/src/views/system/SysParam/index.vue @@ -71,6 +71,12 @@ :label="$t('dingtalk.title')" name="twelve" /> +
- - + + - - - + + + +
From 6e4a9ce3bdca2d9d7e540cf5d7ae465b1180f6b4 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Wed, 7 Sep 2022 14:49:30 +0800 Subject: [PATCH 05/12] =?UTF-8?q?feat:=20sql=20=E5=8F=98=E9=87=8F=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=97=B6=E9=97=B4=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataset/DataSetTableController.java | 2 +- .../dto/dataset/SqlVariableDetails.java | 15 ------------- .../service/chart/ChartViewService.java | 22 ++++++++++++------- .../service/dataset/DataSetTableService.java | 1 + 4 files changed, 16 insertions(+), 24 deletions(-) delete mode 100644 backend/src/main/java/io/dataease/dto/dataset/SqlVariableDetails.java 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 9f66d7706a..b01b6bea37 100644 --- a/backend/src/main/java/io/dataease/controller/dataset/DataSetTableController.java +++ b/backend/src/main/java/io/dataease/controller/dataset/DataSetTableController.java @@ -11,10 +11,10 @@ import io.dataease.controller.request.dataset.DataSetTableRequest; import io.dataease.controller.response.DataSetDetail; import io.dataease.dto.dataset.DataSetTableDTO; import io.dataease.dto.dataset.ExcelFileData; -import io.dataease.dto.dataset.SqlVariableDetails; import io.dataease.plugins.common.base.domain.DatasetTable; import io.dataease.plugins.common.base.domain.DatasetTableField; import io.dataease.plugins.common.base.domain.DatasetTableIncrementalConfig; +import io.dataease.plugins.common.dto.dataset.SqlVariableDetails; import io.dataease.plugins.common.dto.datasource.TableField; import io.dataease.service.dataset.DataSetTableService; import io.swagger.annotations.*; diff --git a/backend/src/main/java/io/dataease/dto/dataset/SqlVariableDetails.java b/backend/src/main/java/io/dataease/dto/dataset/SqlVariableDetails.java deleted file mode 100644 index 93a2301ef0..0000000000 --- a/backend/src/main/java/io/dataease/dto/dataset/SqlVariableDetails.java +++ /dev/null @@ -1,15 +0,0 @@ -package io.dataease.dto.dataset; - -import lombok.Data; - -import java.util.List; - -@Data -public class SqlVariableDetails { - private String variableName; - private String alias; - private List type; - private String details; - private String defaultValue; - -} 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 0e162ff399..9b412f4ab7 100644 --- a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java +++ b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java @@ -23,7 +23,6 @@ import io.dataease.dto.chart.ViewOption; import io.dataease.dto.dataset.DataSetTableDTO; import io.dataease.dto.dataset.DataSetTableUnionDTO; import io.dataease.dto.dataset.DataTableInfoDTO; -import io.dataease.dto.dataset.SqlVariableDetails; import io.dataease.exception.DataEaseException; import io.dataease.ext.ExtChartGroupMapper; import io.dataease.ext.ExtChartViewMapper; @@ -38,6 +37,7 @@ import io.dataease.plugins.common.constants.DatasetType; import io.dataease.plugins.common.dto.chart.ChartFieldCompareDTO; import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO; import io.dataease.plugins.common.dto.chart.ChartViewFieldDTO; +import io.dataease.plugins.common.dto.dataset.SqlVariableDetails; import io.dataease.plugins.common.request.chart.ChartExtFilterRequest; import io.dataease.plugins.common.request.datasource.DatasourceRequest; import io.dataease.plugins.common.request.permission.DataSetRowPermissionsTreeDTO; @@ -459,7 +459,7 @@ public class ChartViewService { } } else if (StringUtils.equalsIgnoreCase(table.getType(), DatasetType.SQL.name())) { String sql = dataTableInfoDTO.isBase64Encryption() ? new String(java.util.Base64.getDecoder().decode(dataTableInfoDTO.getSql())) : dataTableInfoDTO.getSql(); - sql = handleVariable(sql, requestList, qp); + sql = handleVariable(sql, requestList, qp, table); if (StringUtils.equalsIgnoreCase("text", view.getType()) || StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) { datasourceRequest.setQuery(qp.getSQLSummaryAsTmp(sql, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, view)); } else if (StringUtils.containsIgnoreCase(view.getType(), "stack")) { @@ -658,8 +658,7 @@ public class ChartViewService { } boolean hasParameters = false; if (StringUtils.isNotEmpty(table.getSqlVariableDetails())) { - List sqlVariables = new Gson().fromJson(table.getSqlVariableDetails(), new TypeToken>() { - }.getType()); + List sqlVariables = new Gson().fromJson(table.getSqlVariableDetails(), new TypeToken>() {}.getType()); for (String parameter : Optional.ofNullable(request.getParameters()).orElse(new ArrayList<>())) { if (sqlVariables.stream().map(SqlVariableDetails::getVariableName).collect(Collectors.toList()).contains(parameter)) { hasParameters = true; @@ -854,7 +853,7 @@ public class ChartViewService { } } else if (StringUtils.equalsIgnoreCase(table.getType(), DatasetType.SQL.name())) { String sql = dataTableInfoDTO.isBase64Encryption() ? new String(java.util.Base64.getDecoder().decode(dataTableInfoDTO.getSql())) : dataTableInfoDTO.getSql(); - sql = handleVariable(sql, requestList, qp); + sql = handleVariable(sql, requestList, qp, table); if (StringUtils.equalsIgnoreCase("text", view.getType()) || StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) { datasourceRequest.setQuery(qp.getSQLSummaryAsTmp(sql, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, view)); } else if (StringUtils.containsIgnoreCase(view.getType(), "stack")) { @@ -1525,7 +1524,10 @@ public class ChartViewService { chartViewMapper.updateByPrimaryKeySelective(chartView); } - private String handleVariable(String sql, ChartExtRequest requestList, QueryProvider qp) throws Exception { + private String handleVariable(String sql, ChartExtRequest requestList, QueryProvider qp, DataSetTableDTO table) throws Exception { + + List sqlVariables = new Gson().fromJson(table.getSqlVariableDetails(), new TypeToken>() {}.getType()); + if (requestList != null && CollectionUtils.isNotEmpty(requestList.getFilter())) { for (ChartExtFilterRequest chartExtFilterRequest : requestList.getFilter()) { if (CollectionUtils.isEmpty(chartExtFilterRequest.getValue())) { @@ -1535,9 +1537,13 @@ public class ChartViewService { continue; } - String filter = qp.transFilter(chartExtFilterRequest); for (String parameter : chartExtFilterRequest.getParameters()) { - sql = sql.replace("${" + parameter + "}", filter); + List parameters = sqlVariables.stream().filter(item -> item.getVariableName().equalsIgnoreCase(parameter)).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(parameters)) { + String filter = qp.transFilter(chartExtFilterRequest,parameters.get(0)); + sql = sql.replace("${" + parameter + "}", filter); + } + } } } 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 960d59335b..b49b26bd2c 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -31,6 +31,7 @@ import io.dataease.plugins.common.base.domain.*; import io.dataease.plugins.common.base.mapper.*; import io.dataease.plugins.common.constants.DatasetType; import io.dataease.plugins.common.constants.DatasourceTypes; +import io.dataease.plugins.common.dto.dataset.SqlVariableDetails; import io.dataease.plugins.common.dto.datasource.DataSourceType; import io.dataease.plugins.common.dto.datasource.TableField; import io.dataease.plugins.common.request.datasource.DatasourceRequest; From ad07ea00a1a5edff557f47a117c2faca8e5344f0 Mon Sep 17 00:00:00 2001 From: junjun Date: Wed, 7 Sep 2022 16:09:59 +0800 Subject: [PATCH 06/12] =?UTF-8?q?feat(=E8=A7=86=E5=9B=BE):=20=E9=80=8F?= =?UTF-8?q?=E8=A7=86=E8=A1=A8=E5=90=88=E8=AE=A1=E5=B0=8F=E8=AE=A1=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=A4=9A=E7=A7=8D=E8=81=9A=E5=90=88=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/lang/en.js | 4 ++- frontend/src/lang/tw.js | 4 ++- frontend/src/lang/zh.js | 4 ++- .../src/views/chart/chart/table/table-info.js | 2 +- .../chart/components/shape-attr/TotalCfg.vue | 32 ++++++++++++++++++- 5 files changed, 41 insertions(+), 5 deletions(-) diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index dfa08ce487..525f7fc76d 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -1326,7 +1326,9 @@ export default { dynamic: 'Dynamic', gauge_size_field_delete: 'Dynamic field changed,please edit again', chart_group: 'Sub Type', - chart_bar_group: 'Bar Group' + chart_bar_group: 'Bar Group', + field_dynamic: 'Dynamic', + aggregation: 'Aggregation' }, dataset: { parse_filed: 'Parse Field', diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index 12065f458b..679796403d 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -1326,7 +1326,9 @@ export default { dynamic: '動態值', gauge_size_field_delete: '動態值中字段發生變更,請重新編輯', chart_group: '子類別', - chart_bar_group: '分組柱狀圖' + chart_bar_group: '分組柱狀圖', + field_dynamic: '動態值', + aggregation: '聚合方式' }, dataset: { parse_filed: '解析字段', diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index 0a09f968bf..571df4bbf9 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -1326,7 +1326,9 @@ export default { dynamic: '动态值', gauge_size_field_delete: '动态值中字段发生变更,请重新编辑', chart_group: '子类别', - chart_bar_group: '分组柱状图' + chart_bar_group: '分组柱状图', + field_dynamic: '动态值', + aggregation: '聚合方式' }, dataset: { parse_filed: '解析字段', diff --git a/frontend/src/views/chart/chart/table/table-info.js b/frontend/src/views/chart/chart/table/table-info.js index 39fdc804fd..ffa5ac370b 100644 --- a/frontend/src/views/chart/chart/table/table-info.js +++ b/frontend/src/views/chart/chart/table/table-info.js @@ -145,7 +145,7 @@ export function baseTableInfo(s2, container, chart, action, tableData) { export function baseTableNormal(s2, container, chart, action, tableData) { const containerDom = document.getElementById(container) - if(!containerDom) return + if (!containerDom) return // fields const fields = chart.data.fields diff --git a/frontend/src/views/chart/components/shape-attr/TotalCfg.vue b/frontend/src/views/chart/components/shape-attr/TotalCfg.vue index 774111cc97..b29c7b8e2c 100644 --- a/frontend/src/views/chart/components/shape-attr/TotalCfg.vue +++ b/frontend/src/views/chart/components/shape-attr/TotalCfg.vue @@ -16,6 +16,11 @@ + + + + + @@ -31,6 +36,11 @@ + + + + + {{ $t('chart.col_cfg') }} @@ -47,6 +57,11 @@ + + + + + @@ -62,6 +77,11 @@ + + + + + @@ -88,7 +108,13 @@ export default { }, data() { return { - totalForm: JSON.parse(JSON.stringify(DEFAULT_TOTAL)) + totalForm: JSON.parse(JSON.stringify(DEFAULT_TOTAL)), + aggregations: [ + { name: this.$t('chart.sum'), value: 'SUM' }, + { name: this.$t('chart.avg'), value: 'AVG' }, + { name: this.$t('chart.max'), value: 'MAX' }, + { name: this.$t('chart.min'), value: 'MIN' } + ] } }, computed: { @@ -190,4 +216,8 @@ span{font-size: 12px} font-weight: 400; padding: 0 10px; } + +.form-item-select{ + width:160px!important; +} From 1599b9f231e2ee3764cd6ec5148615390c23be10 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Wed, 7 Sep 2022 21:54:03 +0800 Subject: [PATCH 07/12] =?UTF-8?q?refactor:=20=E5=8E=BB=E6=8E=89=E6=89=93?= =?UTF-8?q?=E5=8D=B0=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/views/panel/filter/filterMain/FilterControl.vue | 4 ---- 1 file changed, 4 deletions(-) diff --git a/frontend/src/views/panel/filter/filterMain/FilterControl.vue b/frontend/src/views/panel/filter/filterMain/FilterControl.vue index 9efec329ec..5a3ddecd48 100644 --- a/frontend/src/views/panel/filter/filterMain/FilterControl.vue +++ b/frontend/src/views/panel/filter/filterMain/FilterControl.vue @@ -175,10 +175,7 @@ export default { computed: {}, created() { - console.log(this.element) - console.log(this.widget) this.attrs = this.controlAttrs - console.log(this.childViews.datasetParams.length) if ('timeYearWidget,timeMonthWidget,timeDateWidget,textSelectWidget,numberSelectWidget'.indexOf(this.widget.name) !== -1) { this.showParams = true } @@ -212,7 +209,6 @@ methods: { , enableParametersChange(value) { - console.log(this.childViews.datasetParams.length) if (!value) { this.attrs.parameters = [] } From fbcda00aebd26666943a25056d2601176786a079 Mon Sep 17 00:00:00 2001 From: junjun Date: Thu, 8 Sep 2022 10:12:10 +0800 Subject: [PATCH 08/12] =?UTF-8?q?feat(=E8=A7=86=E5=9B=BE):=20=E8=BE=85?= =?UTF-8?q?=E5=8A=A9=E7=BA=BF=E6=94=AF=E6=8C=81=E5=8A=A8=E6=80=81=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/chart/ChartSeniorAssistDTO.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 backend/src/main/java/io/dataease/dto/chart/ChartSeniorAssistDTO.java diff --git a/backend/src/main/java/io/dataease/dto/chart/ChartSeniorAssistDTO.java b/backend/src/main/java/io/dataease/dto/chart/ChartSeniorAssistDTO.java new file mode 100644 index 0000000000..20b362e863 --- /dev/null +++ b/backend/src/main/java/io/dataease/dto/chart/ChartSeniorAssistDTO.java @@ -0,0 +1,20 @@ +package io.dataease.dto.chart; + +import io.dataease.plugins.common.base.domain.DatasetTableField; +import lombok.Data; + +/** + * @Author Junjun + */ +@Data +public class ChartSeniorAssistDTO { + private String name; + private String field; + private String fieldId; + private String summary; + private String axis; + private String value; + private String lineType; + private String color; + private DatasetTableField curField; +} From ea2be9a0030c53fa6c8e466fc12642427c35a085 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Thu, 8 Sep 2022 11:01:42 +0800 Subject: [PATCH 09/12] =?UTF-8?q?fix:=20API=E6=95=B0=E6=8D=AE=E6=BA=90?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/views/system/datasource/DsConfiguration.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/views/system/datasource/DsConfiguration.vue b/frontend/src/views/system/datasource/DsConfiguration.vue index 00e325fa11..9c0da32494 100644 --- a/frontend/src/views/system/datasource/DsConfiguration.vue +++ b/frontend/src/views/system/datasource/DsConfiguration.vue @@ -519,7 +519,7 @@