From bb26b3ab0c539a5f68b5d2dd2c4ee24c2a5bad5e Mon Sep 17 00:00:00 2001 From: Hoky <303455184@qq.com> Date: Tue, 31 Aug 2021 22:44:21 +0800 Subject: [PATCH 1/2] =?UTF-8?q?REPORT-58124=20=E5=85=AC=E5=BC=8F=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E5=99=A8=E4=BC=98=E5=8C=96=EF=BC=9A=E4=B8=8D=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=AE=9E=E6=97=B6=E8=AE=A1=E7=AE=97=E7=9A=84=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E6=8F=90=E7=A4=BA=E5=A4=84=E7=90=86=201.=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0ds1.select=E7=B1=BB=E5=9E=8B=E7=9A=84=E8=AF=86?= =?UTF-8?q?=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/formula/FormulaPane.java | 6 +++++- .../com/fr/design/formula/UnsupportedFormulaScanner.java | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java b/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java index f836cd571f..3d7fe889ce 100644 --- a/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java +++ b/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java @@ -838,7 +838,11 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula { public void hunter4Tiny(Tiny tiny) { String statement = tiny.getStatement(); if (StringUtils.isNotBlank(statement) && statement.startsWith(ScriptConstants.DETAIL_TAG)) { - parameterList.add(new Parameter(statement.substring(1))); + if (statement.startsWith(ScriptConstants.SUMMARY_TAG)) { + parameterList.add(new Parameter(statement)); + } else { + parameterList.add(new Parameter(statement.substring(1))); + } } else if (tiny.getClass() == ColumnRowRange.class || tiny.getClass() == SheetIntervalLiteral.class || tiny.getClass() == BlockIntervalLiteral.class) { parameterList.add(new Parameter(tiny.toString())); diff --git a/designer-base/src/main/java/com/fr/design/formula/UnsupportedFormulaScanner.java b/designer-base/src/main/java/com/fr/design/formula/UnsupportedFormulaScanner.java index 343086af55..88f7a24b3a 100644 --- a/designer-base/src/main/java/com/fr/design/formula/UnsupportedFormulaScanner.java +++ b/designer-base/src/main/java/com/fr/design/formula/UnsupportedFormulaScanner.java @@ -1,6 +1,7 @@ package com.fr.design.formula; import com.fr.parser.BinaryExpression; +import com.fr.parser.DatasetFunctionCall; import com.fr.parser.FunctionCall; import com.fr.stable.script.Node; @@ -35,6 +36,10 @@ public class UnsupportedFormulaScanner { return false; } } + } else if (node instanceof DatasetFunctionCall) { + DatasetFunctionCall datasetFunctionCall = (DatasetFunctionCall) node; + unSupportFormula = datasetFunctionCall.getSourceName() + "." + datasetFunctionCall.getFnName() + "()"; + return false; } return true; } From 4b8eda69e0870e24e5678de3682751f1c3a1015c Mon Sep 17 00:00:00 2001 From: Hoky <303455184@qq.com> Date: Wed, 1 Sep 2021 11:01:38 +0800 Subject: [PATCH 2/2] =?UTF-8?q?REPORT-58579=E3=80=90=E5=9B=9E=E5=BD=92?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E3=80=91rank=E7=9A=84=E5=B8=A6=E5=8F=82?= =?UTF-8?q?=E6=A8=A1=E6=8B=9F=E8=AE=A1=E7=AE=97=E5=80=BC=E4=B8=8D=E6=AD=A3?= =?UTF-8?q?=E7=A1=AE=201.=E6=95=B0=E5=AD=97=E7=B1=BB=E5=9E=8B=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/formula/FormulaPane.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java b/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java index 3d7fe889ce..ca5f030dd6 100644 --- a/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java +++ b/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java @@ -5,6 +5,7 @@ import com.fr.base.BaseUtils; import com.fr.base.Parameter; import com.fr.base.ParameterMapNameSpace; import com.fr.base.TableDataNameSpace; +import com.fr.base.Utils; import com.fr.base.io.IOFile; import com.fr.data.TableDataSource; import com.fr.design.actions.UpdateAction; @@ -39,6 +40,7 @@ import com.fr.parser.BlockIntervalLiteral; import com.fr.parser.ColumnRowRangeInPage; import com.fr.parser.FRLexer; import com.fr.parser.FRParser; +import com.fr.parser.NumberLiteral; import com.fr.parser.SheetIntervalLiteral; import com.fr.report.core.namespace.SimpleCellValueNameSpace; import com.fr.script.Calculator; @@ -98,6 +100,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.io.StringReader; +import java.text.NumberFormat; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -817,8 +820,24 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula { if (entry.getValue().toString().startsWith("[") && entry.getValue().toString().endsWith("]")) { Expression parse = calculator.parse(entry.getValue()); ArrayExpression arrayExpression = (ArrayExpression) parse.getConditionalExpression(); - FArray fArray = new FArray<>(arrayExpression.getArrays()); + Node[] arrays = arrayExpression.getArrays(); + List arrayList = new ArrayList<>(); + for (Node array : arrays) { + if (array instanceof NumberLiteral) { + arrayList.add(NumberFormat.getInstance().parse(array.toString())); + } else { + arrayList.add(array); + } + } + FArray fArray = new FArray<>(arrayList); parameterMap.put(entry.getKey(), fArray); + } else if (Utils.isNumeric(entry.getValue().toString())) { + try { + Number number = NumberFormat.getInstance().parse(entry.getValue().toString()); + parameterMap.put(entry.getKey(), number); + } catch (Exception e) { + FineLoggerFactory.getLogger().warn("", e); + } } } } catch (Exception e) {