From c22e25ec00ec77b08ad999d4e697c2c4a093ebd8 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Wed, 29 Nov 2023 19:26:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20SQL=E5=8F=98=E9=87=8F=E8=AF=AF=E6=8A=A5?= =?UTF-8?q?=E9=94=99=20#6624?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datasource/DriverMgmController.java | 1 - .../provider/query/es/EsQueryProvider.java | 4 +- .../service/dataset/DataSetTableService.java | 76 ++++++++++--------- .../system/datasource/DsConfiguration.vue | 3 - .../views/system/datasource/DsFormContent.vue | 2 +- 5 files changed, 44 insertions(+), 42 deletions(-) diff --git a/core/backend/src/main/java/io/dataease/controller/datasource/DriverMgmController.java b/core/backend/src/main/java/io/dataease/controller/datasource/DriverMgmController.java index 32edc4ae23..aadd2df8f1 100644 --- a/core/backend/src/main/java/io/dataease/controller/datasource/DriverMgmController.java +++ b/core/backend/src/main/java/io/dataease/controller/datasource/DriverMgmController.java @@ -34,7 +34,6 @@ public class DriverMgmController { @ApiOperation("驱动列表") @PostMapping("/list") public List listDeDriver() throws Exception{ - checkPermission(); return driverService.list(); } diff --git a/core/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java b/core/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java index db09106e94..0072a0d374 100644 --- a/core/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java +++ b/core/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java @@ -333,8 +333,10 @@ public class EsQueryProvider extends QueryProvider { } else if (ObjectUtils.isNotEmpty(y.getExtField()) && y.getExtField() == DeTypeConstants.DE_TIME) { originField = String.format(EsSqlLConstants.KEYWORD_FIX, tableObj.getTableAlias(), y.getOriginName()); } else { - if (y.getDeType() == 2 || y.getDeType() == 3) { + if (y.getDeType() == 2) { originField = String.format(EsSqlLConstants.CAST, String.format(EsSqlLConstants.KEYWORD_FIX, tableObj.getTableAlias(), y.getOriginName()), "bigint"); + } else if (y.getDeType() == 3) { + originField = String.format(EsSqlLConstants.CAST, String.format(EsSqlLConstants.KEYWORD_FIX, tableObj.getTableAlias(), y.getOriginName()), "float"); } else { originField = String.format(EsSqlLConstants.KEYWORD_FIX, tableObj.getTableAlias(), y.getOriginName()); } diff --git a/core/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/core/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java index 8b9adb8d47..51cef6c3b9 100644 --- a/core/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/core/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -1115,22 +1115,25 @@ public class DataSetTableService { } } - private void handleSelectItems(PlainSelect plainSelect, String dsType) throws Exception{ + private void handleSelectItems(PlainSelect plainSelect, String dsType) throws Exception { List selectItems = new ArrayList<>(); for (SelectItem selectItem : plainSelect.getSelectItems()) { - SelectExpressionItem selectExpressionItem = (SelectExpressionItem) selectItem; - if (selectExpressionItem.getExpression() instanceof SubSelect) { - SubSelect subSelect = (SubSelect) selectExpressionItem.getExpression(); - Select select = (Select) CCJSqlParserUtil.parse (removeVariables(subSelect.getSelectBody().toString(), dsType)); - subSelect.setSelectBody(select.getSelectBody()); - ((SelectExpressionItem) selectItem).setExpression(subSelect); + try { + SelectExpressionItem selectExpressionItem = (SelectExpressionItem) selectItem; + if (selectExpressionItem.getExpression() instanceof SubSelect) { + SubSelect subSelect = (SubSelect) selectExpressionItem.getExpression(); + Select select = (Select) CCJSqlParserUtil.parse(removeVariables(subSelect.getSelectBody().toString(), dsType)); + subSelect.setSelectBody(select.getSelectBody()); + ((SelectExpressionItem) selectItem).setExpression(subSelect); + } + } catch (Exception e) { } selectItems.add(selectItem); } plainSelect.setSelectItems(selectItems); } - private void handleFromItems(PlainSelect plainSelect, String dsType) throws Exception{ + private void handleFromItems(PlainSelect plainSelect, String dsType) throws Exception { FromItem fromItem = plainSelect.getFromItem(); if (fromItem instanceof SubSelect) { SelectBody selectBody = ((SubSelect) fromItem).getSelectBody(); @@ -1138,7 +1141,7 @@ public class DataSetTableService { Select subSelectTmp = (Select) CCJSqlParserUtil.parse(removeVariables(selectBody.toString(), dsType)); subSelect.setSelectBody(subSelectTmp.getSelectBody()); if (dsType.equals(DatasourceTypes.oracle.getType())) { - if(fromItem.getAlias() != null){ + if (fromItem.getAlias() != null) { subSelect.setAlias(new Alias(fromItem.getAlias().toString(), false)); } } else { @@ -1150,7 +1153,8 @@ public class DataSetTableService { plainSelect.setFromItem(subSelect); } } - private void handleJoins(PlainSelect plainSelect, String dsType) throws Exception{ + + private void handleJoins(PlainSelect plainSelect, String dsType) throws Exception { List joins = plainSelect.getJoins(); if (joins != null) { List joinsList = new ArrayList<>(); @@ -1177,28 +1181,29 @@ public class DataSetTableService { plainSelect.setJoins(joinsList); } } - private String handleWhere(PlainSelect plainSelect, Select statementSelect, String dsType) throws Exception{ - Expression expr = plainSelect.getWhere(); - if (expr == null) { - return handleWith(plainSelect, statementSelect, dsType); - } - StringBuilder stringBuilder = new StringBuilder(); - BinaryExpression binaryExpression = null; - try { - binaryExpression = (BinaryExpression) expr; - } catch (Exception e) { - } - if (binaryExpression != null) { - if (!(binaryExpression.getLeftExpression() instanceof BinaryExpression) && !(binaryExpression.getLeftExpression() instanceof InExpression) && hasVariable(binaryExpression.getRightExpression().toString())) { - stringBuilder.append(SubstitutedSql); - } else { - expr.accept(getExpressionDeParser(stringBuilder)); - } - } else { - expr.accept(getExpressionDeParser(stringBuilder)); - } - plainSelect.setWhere(CCJSqlParserUtil.parseCondExpression(stringBuilder.toString())); - return handleWith(plainSelect, statementSelect, dsType); + + private String handleWhere(PlainSelect plainSelect, Select statementSelect, String dsType) throws Exception { + Expression expr = plainSelect.getWhere(); + if (expr == null) { + return handleWith(plainSelect, statementSelect, dsType); + } + StringBuilder stringBuilder = new StringBuilder(); + BinaryExpression binaryExpression = null; + try { + binaryExpression = (BinaryExpression) expr; + } catch (Exception e) { + } + if (binaryExpression != null) { + if (!(binaryExpression.getLeftExpression() instanceof BinaryExpression) && !(binaryExpression.getLeftExpression() instanceof InExpression) && hasVariable(binaryExpression.getRightExpression().toString())) { + stringBuilder.append(SubstitutedSql); + } else { + expr.accept(getExpressionDeParser(stringBuilder)); + } + } else { + expr.accept(getExpressionDeParser(stringBuilder)); + } + plainSelect.setWhere(CCJSqlParserUtil.parseCondExpression(stringBuilder.toString())); + return handleWith(plainSelect, statementSelect, dsType); } private String handleWith(PlainSelect plainSelect, Select select, String dsType) throws Exception { @@ -1227,7 +1232,6 @@ public class DataSetTableService { } - public Map getDBPreview(DataSetTableRequest dataSetTableRequest) throws Exception { Datasource ds = datasourceMapper.selectByPrimaryKey(dataSetTableRequest.getDataSourceId()); if (ds == null) { @@ -2783,13 +2787,13 @@ public class DataSetTableService { if (StringUtils.isEmpty(s)) { throw new RuntimeException(Translator.get("i18n_excel_empty_column")); } - if(hashSet.contains(s)){ + if (hashSet.contains(s)) { repeat.add(s); - }else { + } else { hashSet.add(s); } } - if(CollectionUtils.isNotEmpty(repeat)){ + if (CollectionUtils.isNotEmpty(repeat)) { DataEaseException.throwException(Translator.get("i18n_excel_field_repeat") + "" + String.valueOf(repeat)); } } diff --git a/core/frontend/src/views/system/datasource/DsConfiguration.vue b/core/frontend/src/views/system/datasource/DsConfiguration.vue index 1223b9430f..74c922f4d6 100644 --- a/core/frontend/src/views/system/datasource/DsConfiguration.vue +++ b/core/frontend/src/views/system/datasource/DsConfiguration.vue @@ -1159,8 +1159,6 @@ export default { callback() }, isNumber(rule, value, callback) { - console.log(value) - console.log(!value) if (!value) { callback(new Error(i18n.t('datasource.please_input_query_timeout'))) return @@ -1168,7 +1166,6 @@ export default { let isNumber = false var reg = /^\d+$/; isNumber = reg.test(value); - console.log(!isNumber) if (!isNumber) { callback(new Error(i18n.t('datasource.please_input_query_timeout'))) return diff --git a/core/frontend/src/views/system/datasource/DsFormContent.vue b/core/frontend/src/views/system/datasource/DsFormContent.vue index a99defa973..9753494be1 100644 --- a/core/frontend/src/views/system/datasource/DsFormContent.vue +++ b/core/frontend/src/views/system/datasource/DsFormContent.vue @@ -946,7 +946,7 @@ export default { this.tData.forEach((item) => { if (item.id === this.form.type) { item.children.forEach((child) => { - if (this.formType === 'modify' && child.id === this.form.id) { + if (child.id === this.form.id) { return } const configuration = JSON.parse(child.configuration)