From a074b87a6e0c627129a0120e7f856127afbf9b58 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Thu, 7 Mar 2024 15:33:58 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix(=E6=95=B0=E6=8D=AE=E9=9B=86):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8DSQL=20=E6=95=B0=E6=8D=AE=E9=9B=86=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E5=85=BC=E5=AE=B9=E6=80=A7=E9=97=AE=E9=A2=98=20#8213?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/dataease/service/dataset/DataSetTableService.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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 09438ee0b5..02c8943477 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 @@ -1188,8 +1188,7 @@ public class DataSetTableService { if (binaryExpression != null) { boolean hasSubBinaryExpression = binaryExpression instanceof AndExpression || binaryExpression instanceof OrExpression; - - if (!hasSubBinaryExpression && !(binaryExpression.getLeftExpression() instanceof BinaryExpression) && !(binaryExpression.getLeftExpression() instanceof InExpression) && hasVariable(binaryExpression.getRightExpression().toString())) { + if (!hasSubBinaryExpression && !(binaryExpression.getLeftExpression() instanceof BinaryExpression) && !(binaryExpression.getLeftExpression() instanceof InExpression) && (hasVariable(binaryExpression.getLeftExpression().toString()) || hasVariable(binaryExpression.getRightExpression().toString()))) { stringBuilder.append(SubstitutedSql); } else { expr.accept(getExpressionDeParser(stringBuilder)); From ec5cec2e21435c6723d981f64f8446e1caa63546 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Thu, 7 Mar 2024 16:16:18 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix(=E6=95=B0=E6=8D=AE=E9=9B=86):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8DSQL=E6=95=B0=E6=8D=AE=E9=9B=86=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E8=AF=86=E5=88=AB=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/dataset/DataSetTableService.java | 41 ++++++++++++------- 1 file changed, 26 insertions(+), 15 deletions(-) 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 02c8943477..7f9ffb7585 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 @@ -62,10 +62,7 @@ import io.dataease.service.datasource.DatasourceService; import io.dataease.service.engine.EngineService; import io.dataease.service.sys.SysAuthService; import lombok.Data; -import net.sf.jsqlparser.expression.Alias; -import net.sf.jsqlparser.expression.BinaryExpression; -import net.sf.jsqlparser.expression.Expression; -import net.sf.jsqlparser.expression.Parenthesis; +import net.sf.jsqlparser.expression.*; import net.sf.jsqlparser.expression.operators.conditional.AndExpression; import net.sf.jsqlparser.expression.operators.conditional.OrExpression; import net.sf.jsqlparser.expression.operators.relational.*; @@ -1185,7 +1182,6 @@ public class DataSetTableService { binaryExpression = (BinaryExpression) expr; } catch (Exception e) { } - if (binaryExpression != null) { boolean hasSubBinaryExpression = binaryExpression instanceof AndExpression || binaryExpression instanceof OrExpression; if (!hasSubBinaryExpression && !(binaryExpression.getLeftExpression() instanceof BinaryExpression) && !(binaryExpression.getLeftExpression() instanceof InExpression) && (hasVariable(binaryExpression.getLeftExpression().toString()) || hasVariable(binaryExpression.getRightExpression().toString()))) { @@ -2832,28 +2828,43 @@ public class DataSetTableService { private void visitBinaryExpr(BinaryExpression expr, String operator) { boolean hasSubBinaryExpression = false; - try { - BinaryExpression leftBinaryExpression = (BinaryExpression) expr.getLeftExpression(); + if(expr.getLeftExpression() instanceof Parenthesis){ + Parenthesis parenthesis = (Parenthesis)expr.getLeftExpression(); + BinaryExpression leftBinaryExpression = (BinaryExpression)parenthesis.getExpression(); hasSubBinaryExpression = leftBinaryExpression instanceof AndExpression || leftBinaryExpression instanceof OrExpression; - } catch (Exception e) { - e.printStackTrace(); + } + if(expr.getLeftExpression() instanceof BinaryExpression){ + try { + BinaryExpression leftBinaryExpression = (BinaryExpression) expr.getLeftExpression(); + hasSubBinaryExpression = leftBinaryExpression instanceof AndExpression || leftBinaryExpression instanceof OrExpression; + } catch (Exception e) { + e.printStackTrace(); + } } - if (expr.getLeftExpression() instanceof BinaryExpression && !hasSubBinaryExpression && hasVariable(expr.getLeftExpression().toString())) { + if ((expr.getLeftExpression() instanceof BinaryExpression || expr.getLeftExpression() instanceof Parenthesis) && !hasSubBinaryExpression && hasVariable(expr.getLeftExpression().toString())) { getBuffer().append(SubstitutedSql); } else { expr.getLeftExpression().accept(this); } getBuffer().append(" " + operator + " "); + hasSubBinaryExpression = false; - try { - BinaryExpression rightBinaryExpression = (BinaryExpression) expr.getRightExpression(); + if(expr.getRightExpression() instanceof Parenthesis){ + Parenthesis parenthesis = (Parenthesis)expr.getRightExpression(); + BinaryExpression rightBinaryExpression = (BinaryExpression)parenthesis.getExpression(); hasSubBinaryExpression = rightBinaryExpression instanceof AndExpression || rightBinaryExpression instanceof OrExpression; - ; - } catch (Exception e) { } - if (expr.getRightExpression() instanceof BinaryExpression && !hasSubBinaryExpression && hasVariable(expr.getRightExpression().toString())) { + if(expr.getRightExpression() instanceof BinaryExpression){ + try { + BinaryExpression rightBinaryExpression = (BinaryExpression) expr.getRightExpression(); + hasSubBinaryExpression = rightBinaryExpression instanceof AndExpression || rightBinaryExpression instanceof OrExpression; + } catch (Exception e) { + } + } + + if ((expr.getRightExpression() instanceof Parenthesis || expr.getRightExpression() instanceof BinaryExpression || expr.getRightExpression() instanceof Function) && !hasSubBinaryExpression && hasVariable(expr.getRightExpression().toString())) { getBuffer().append(SubstitutedSql); } else { expr.getRightExpression().accept(this); From ccfbc61a07d79706661482da610ebaed27c6b4e8 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Thu, 7 Mar 2024 17:15:41 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix(=E6=95=B0=E6=8D=AE=E9=9B=86):=20?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0csv=E6=96=87=E4=BB=B6=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/dataease/service/dataset/DataSetTableService.java | 4 ++-- .../java/io/dataease/service/dataset/ExtractDataService.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) 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 7f9ffb7585..55ef207d28 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 @@ -2375,8 +2375,6 @@ public class DataSetTableService { public List parseExcel(String filename, InputStream inputStream, boolean isPreview) throws Exception { List excelSheetDataList = new ArrayList<>(); String suffix = filename.substring(filename.lastIndexOf(".") + 1); - excelSheetDataList = excelSheetDataList(inputStream, isPreview); - if (StringUtils.equalsIgnoreCase(suffix, "csv")) { List fields = new ArrayList<>(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); @@ -2418,6 +2416,8 @@ public class DataSetTableService { excelSheetData.setExcelLabel(filename); excelSheetData.setFieldsMd5(Md5Utils.md5(StringUtils.join(fieldArray, ","))); excelSheetDataList.add(excelSheetData); + }else { + excelSheetDataList = excelSheetDataList(inputStream, isPreview); } inputStream.close(); diff --git a/core/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java b/core/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java index fea4504926..ef5ef50634 100644 --- a/core/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java +++ b/core/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java @@ -757,8 +757,6 @@ public class ExtractDataService { for (ExcelSheetData excelSheetData : excelSheetDataList) { String suffix = excelSheetData.getPath().substring(excelSheetData.getPath().lastIndexOf(".") + 1); List totalSheets = new ArrayList<>(); - totalSheets = dataSetTableService.excelSheetDataList(new FileInputStream(excelSheetData.getPath()), false); - if (StringUtils.equalsIgnoreCase(suffix, "csv")) { List fields = new ArrayList<>(); BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(excelSheetData.getPath()), StandardCharsets.UTF_8)); @@ -796,6 +794,8 @@ public class ExtractDataService { csvSheetData.setExcelLabel(excelSheetData.getExcelLabel()); csvSheetData.setFieldsMd5(Md5Utils.md5(StringUtils.join(fieldArray, ","))); totalSheets = Arrays.asList(csvSheetData); + }else { + totalSheets = dataSetTableService.excelSheetDataList(new FileInputStream(excelSheetData.getPath()), false); }