Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
asset-distribution
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
data-spider
asset-distribution
Commits
9ab5b273
Commit
9ab5b273
authored
Nov 04, 2019
by
liwenbin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复EL表达式支持数字以外的变量,并且修复=,!=判断的bug
parent
a9a0a33e
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
39 additions
and
26 deletions
+39
-26
Expression.java
...m/quantgroup/asset/distribution/util/calc/Expression.java
+39
-26
No files found.
src/main/java/com/quantgroup/asset/distribution/util/calc/Expression.java
View file @
9ab5b273
...
...
@@ -26,8 +26,6 @@ package com.quantgroup.asset.distribution.util.calc;
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*/
import
com.google.common.collect.Sets
;
import
lombok.Getter
;
import
lombok.Setter
;
...
...
@@ -674,8 +672,13 @@ public class Expression {
if
(
v1
==
null
||
v2
==
null
)
{
return
BigDecimal
.
ZERO
;
}
return
new
BigDecimal
(
v1
).
compareTo
(
new
BigDecimal
(
v2
))
==
0
?
BigDecimal
.
ONE
:
BigDecimal
.
ZERO
;
if
(
v1
.
equals
(
v2
))
{
return
BigDecimal
.
ONE
;
}
else
{
return
BigDecimal
.
ZERO
;
}
// return new BigDecimal(v1).compareTo(new BigDecimal(v2)) == 0 ? BigDecimal.ONE
// : BigDecimal.ZERO;
}
});
addOperator
(
new
Operator
(
"=="
,
OPERATOR_PRECEDENCE_EQUALITY
,
false
,
true
)
{
...
...
@@ -694,8 +697,11 @@ public class Expression {
if
(
v1
==
null
||
v2
==
null
)
{
return
BigDecimal
.
ONE
;
}
return
new
BigDecimal
(
v1
).
compareTo
(
new
BigDecimal
(
v2
))
!=
0
?
BigDecimal
.
ONE
:
BigDecimal
.
ZERO
;
if
(!
v1
.
equals
(
v2
))
{
return
BigDecimal
.
ONE
;
}
else
{
return
BigDecimal
.
ZERO
;
}
}
});
addOperator
(
new
Operator
(
"<>"
,
OPERATOR_PRECEDENCE_EQUALITY
,
false
,
true
)
{
...
...
@@ -1400,7 +1406,8 @@ public class Expression {
stack
.
push
(()
->
{
LazyNumber
lazyVariable
=
variables
.
get
(
token
.
surface
);
String
value
=
lazyVariable
==
null
?
null
:
lazyVariable
.
eval
();
return
value
==
null
?
null
:
new
BigDecimal
(
value
).
round
(
mc
).
toPlainString
();
// return value == null ? null : new BigDecimal(value).round(mc).toPlainString();
return
value
==
null
?
null
:
value
;
});
break
;
case
FUNCTION:
...
...
@@ -1570,7 +1577,10 @@ public class Expression {
variables
.
put
(
variable
,
CreateLazyNumber
(
new
BigDecimal
(
value
,
mc
).
toPlainString
()));
}
else
if
(
value
.
equalsIgnoreCase
(
"null"
))
{
variables
.
put
(
variable
,
null
);
}
else
{
}
else
if
(
value
.
equalsIgnoreCase
(
"e"
)
||
value
.
equalsIgnoreCase
(
"PI"
)
||
value
.
equalsIgnoreCase
(
"TRUE"
)||
value
.
equalsIgnoreCase
(
"FALSE"
))
{
final
String
expStr
=
value
;
variables
.
put
(
variable
,
new
LazyNumber
()
{
private
final
Map
<
String
,
LazyNumber
>
outerVariables
=
variables
;
...
...
@@ -1591,6 +1601,9 @@ public class Expression {
}
});
rpn
=
null
;
}
else
{
variables
.
put
(
variable
,
CreateLazyNumber
(
value
));
rpn
=
null
;
}
return
this
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment