From 969b3d2fcfa7964a9c05b77b62d36332cf54c7cd Mon Sep 17 00:00:00 2001 From: taojinlong Date: Fri, 1 Jul 2022 18:11:06 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=95=B0=E6=8D=AE=E9=9B=86):=20=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E5=80=BC=E5=8F=AA=E5=9C=A8=E7=BC=96=E8=BE=91=20sql=20?= =?UTF-8?q?=E6=97=B6=E7=94=9F=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chart/ViewPluginBaseServiceImpl.java | 2 +- .../service/dataset/DataSetTableService.java | 34 +++++++++++-------- frontend/src/lang/en.js | 2 ++ frontend/src/lang/tw.js | 2 ++ frontend/src/lang/zh.js | 2 ++ frontend/src/views/dataset/add/AddSQL.vue | 19 +++++++++-- 6 files changed, 43 insertions(+), 18 deletions(-) diff --git a/backend/src/main/java/io/dataease/service/chart/ViewPluginBaseServiceImpl.java b/backend/src/main/java/io/dataease/service/chart/ViewPluginBaseServiceImpl.java index 618606c0b1..022ea7a9a0 100644 --- a/backend/src/main/java/io/dataease/service/chart/ViewPluginBaseServiceImpl.java +++ b/backend/src/main/java/io/dataease/service/chart/ViewPluginBaseServiceImpl.java @@ -106,7 +106,7 @@ public class ViewPluginBaseServiceImpl implements ViewPluginBaseService { tableName = dataTableInfoDTO.getTable(); break; case SQL: - tableName = dataSetTableService.handleVariableDefaultValue(dataTableInfoDTO.getSql(), pluginViewSet.getSqlVariableDetails()); + tableName = dataSetTableService.handleVariableDefaultValue(dataTableInfoDTO.getSql(), null); tableName = "(" + tableName + ")"; break; case CUSTOM: 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 bb0bb9c8d3..7f33b8166d 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -656,7 +656,8 @@ public class DataSetTableService { DatasourceRequest datasourceRequest = new DatasourceRequest(); datasourceRequest.setDatasource(ds); - String sql = handleVariableDefaultValue(new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getSql(), datasetTable.getSqlVariableDetails()); + String sql = handleVariableDefaultValue(new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getSql(), null); + QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); datasourceRequest.setQuery( qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false, customFilter)); @@ -962,22 +963,25 @@ public class DataSetTableService { if (StringUtils.isEmpty(sql)) { DataEaseException.throwException(Translator.get("i18n_sql_not_empty")); } - Pattern pattern = Pattern.compile(regex); - Matcher matcher = pattern.matcher(sql); - while (matcher.find()) { - SqlVariableDetails defaultsSqlVariableDetail = null; - List defaultsSqlVariableDetails = new Gson().fromJson(sqlVariableDetails, new TypeToken>() { - }.getType()); - for (SqlVariableDetails sqlVariableDetail : defaultsSqlVariableDetails) { - if (matcher.group().substring(2, matcher.group().length() - 1).equalsIgnoreCase(sqlVariableDetail.getVariableName())) { - defaultsSqlVariableDetail = sqlVariableDetail; - break; + if(sqlVariableDetails != null){ + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(sql); + while (matcher.find()) { + SqlVariableDetails defaultsSqlVariableDetail = null; + List defaultsSqlVariableDetails = new Gson().fromJson(sqlVariableDetails, new TypeToken>() { + }.getType()); + for (SqlVariableDetails sqlVariableDetail : defaultsSqlVariableDetails) { + if (matcher.group().substring(2, matcher.group().length() - 1).equalsIgnoreCase(sqlVariableDetail.getVariableName())) { + defaultsSqlVariableDetail = sqlVariableDetail; + break; + } + } + if (defaultsSqlVariableDetail != null && StringUtils.isNotEmpty(defaultsSqlVariableDetail.getDefaultValue())) { + sql = sql.replace(matcher.group(), defaultsSqlVariableDetail.getDefaultValue()); } } - if (defaultsSqlVariableDetail != null && StringUtils.isNotEmpty(defaultsSqlVariableDetail.getDefaultValue())) { - sql = sql.replace(matcher.group(), defaultsSqlVariableDetail.getDefaultValue()); - } } + try { sql = removeVariables(sql); } catch (Exception e) { @@ -1683,7 +1687,7 @@ public class DataSetTableService { DatasourceRequest datasourceRequest = new DatasourceRequest(); datasourceRequest.setDatasource(ds); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); - String sql = handleVariableDefaultValue(new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getSql(), datasetTable.getSqlVariableDetails()); + String sql = handleVariableDefaultValue(new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getSql(), null); String sqlAsTable = qp.createSQLPreview(sql, null); datasourceRequest.setQuery(sqlAsTable); fields = datasourceProvider.fetchResultField(datasourceRequest); diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index eebfb87250..8b39afe845 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -132,6 +132,7 @@ export default { }, commons: { default_value: 'Default Value', + params_value: 'Param Value', publish: 'publish', unpublished: 'unpublished', default_pwd: 'Default Pwd', @@ -1123,6 +1124,7 @@ export default { max_more_than_mix: 'Max must more than Min' }, dataset: { + params_work: 'Effective only when editing SQL', sql_variable_limit_1: '1、SQL variables can only be used in where conditions', sql_variable_limit_2: '2、Example:select * from table_name where column_name=‘${parm_name}', select_year: 'Select Year', diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index f1172ab040..98b07be545 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -132,6 +132,7 @@ export default { }, commons: { default_value: '默認值', + params_value: '参数值', publish: '發布', unpublished: '取消發布', default_pwd: '初始密碼', @@ -1123,6 +1124,7 @@ export default { max_more_than_mix: '最大值必須大於最小值' }, dataset: { + params_work: '僅在編輯 sql 時生效', sql_variable_limit_1: '1、SQL變數只能在WHERE條件中使用', sql_variable_limit_2: '2、示例:select * from table_name where column_name=‘${parm_name}', select_year: '選擇年', diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index 370c8f6c14..a574f2e4a0 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -132,6 +132,7 @@ export default { }, commons: { default_value: '默认值', + params_value: '参数值', publish: '发布', unpublished: '取消发布', default_pwd: '初始密码', @@ -1125,6 +1126,7 @@ export default { max_more_than_mix: '最大值必须大于最小值' }, dataset: { + params_work: '仅在编辑sql时生效', select_year: '选择年', sql_variable_limit_1: '1、SQL 变量只能在 WHERE 条件中使用', sql_variable_limit_2: '2、示例:select * from table_name where column_name=‘${parm_name}', diff --git a/frontend/src/views/dataset/add/AddSQL.vue b/frontend/src/views/dataset/add/AddSQL.vue index 753e823ac7..213fd05c63 100644 --- a/frontend/src/views/dataset/add/AddSQL.vue +++ b/frontend/src/views/dataset/add/AddSQL.vue @@ -128,7 +128,7 @@ - +