Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
fuyue82
o2oa
提交
7ccde460
o2oa
项目概览
fuyue82
/
o2oa
与 Fork 源项目一致
Fork自
浙江兰德纵横网络技术股份有限公司 / o2oa
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
o2oa
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
7ccde460
编写于
12月 06, 2021
作者:
O
o2null
浏览文件
操作
浏览文件
下载
差异文件
Merge branch '查询语句动态条件支持or' into 'wrdp'
查询语句动态条件支持or See merge request o2oa/o2oa!6302
上级
f3254241
a524557b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
37 addition
and
50 deletion
+37
-50
o2server/x_query_assemble_surface/src/main/java/com/x/query/assemble/surface/jaxrs/statement/ActionExecuteV2.java
...ery/assemble/surface/jaxrs/statement/ActionExecuteV2.java
+34
-28
o2server/x_query_core_express/src/main/java/com/x/query/core/express/plan/FilterEntry.java
.../main/java/com/x/query/core/express/plan/FilterEntry.java
+3
-22
未找到文件。
o2server/x_query_assemble_surface/src/main/java/com/x/query/assemble/surface/jaxrs/statement/ActionExecuteV2.java
浏览文件 @
7ccde460
...
...
@@ -50,6 +50,9 @@ class ActionExecuteV2 extends BaseAction {
private
static
final
String
[]
pageKeys
=
{
"GROUP BY"
,
" COUNT("
};
private
static
final
String
JOIN_KEY
=
" JOIN "
;
private
static
final
String
JOIN_ON_KEY
=
" ON "
;
private
static
final
String
SQL_WHERE
=
"WHERE"
;
private
static
final
String
SQL_AND
=
"AND"
;
private
static
final
String
SQL_OR
=
"OR"
;
ActionResult
<
Object
>
execute
(
EffectivePerson
effectivePerson
,
String
flag
,
String
mode
,
Integer
page
,
Integer
size
,
JsonElement
jsonElement
)
throws
Exception
{
...
...
@@ -123,8 +126,6 @@ class ActionExecuteV2 extends BaseAction {
}
CompiledScript
cs
=
ScriptingFactory
.
functionalizationCompile
(
scriptText
);
String
jpql
=
JsonScriptingExecutor
.
evalString
(
cs
,
scriptContext
);
// Object o = ScriptFactory.scriptEngine.eval(ScriptFactory.functionalization(), scriptContext);
// String jpql = ScriptFactory.asString(o);
Class
<?
extends
JpaObject
>
cls
=
this
.
clazz
(
business
,
statement
);
EntityManager
em
;
if
(
StringUtils
.
equalsIgnoreCase
(
statement
.
getEntityCategory
(),
Statement
.
ENTITYCATEGORY_DYNAMIC
)
...
...
@@ -263,13 +264,13 @@ class ActionExecuteV2 extends BaseAction {
String
rightSql
=
""
;
String
leftSql
=
""
;
boolean
hasWhere
=
false
;
if
(
sql
.
indexOf
(
"where"
)
>
-
1
)
{
whereSql
=
StringUtils
.
substringAfter
(
sql
,
"where"
);
leftSql
=
StringUtils
.
substringBefore
(
sql
,
"where"
);
if
(
sql
.
indexOf
(
SQL_WHERE
.
toLowerCase
()
)
>
-
1
)
{
whereSql
=
StringUtils
.
substringAfter
(
sql
,
SQL_WHERE
.
toLowerCase
()
);
leftSql
=
StringUtils
.
substringBefore
(
sql
,
SQL_WHERE
.
toLowerCase
()
);
hasWhere
=
true
;
}
else
if
(
sql
.
indexOf
(
"WHERE"
)
>
-
1
)
{
whereSql
=
StringUtils
.
substringAfter
(
sql
,
"WHERE"
);
leftSql
=
StringUtils
.
substringBefore
(
sql
,
"WHERE"
);
}
else
if
(
sql
.
indexOf
(
SQL_WHERE
)
>
-
1
)
{
whereSql
=
StringUtils
.
substringAfter
(
sql
,
SQL_WHERE
);
leftSql
=
StringUtils
.
substringBefore
(
sql
,
SQL_WHERE
);
hasWhere
=
true
;
}
String
matchKey
=
""
;
...
...
@@ -281,34 +282,39 @@ class ActionExecuteV2 extends BaseAction {
break
;
}
}
List
<
String
>
filterList
=
new
ArrayList
<>();
for
(
FilterEntry
filterEntry
:
wi
.
getFilterList
())
{
if
(
StringUtils
.
isNotBlank
(
filterEntry
.
path
)
&&
StringUtils
.
isNotBlank
(
filterEntry
.
value
))
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
filterEntry
.
path
);
sb
.
append
(
" "
);
sb
.
append
(
Comparison
.
getMatchCom
(
filterEntry
.
comparison
));
sb
.
append
(
" "
);
sb
.
append
(
":"
+
filterEntry
.
value
);
filterList
.
add
(
sb
.
toString
());
}
}
if
(
hasWhere
)
{
list
.
add
(
leftSql
);
list
.
add
(
"WHERE"
);
list
.
add
(
SQL_WHERE
);
}
else
{
list
.
add
(
whereSql
);
if
(!
filterList
.
isEmpty
())
{
list
.
add
(
"WHERE"
);
if
(!
wi
.
getFilterList
()
.
isEmpty
())
{
list
.
add
(
SQL_WHERE
);
}
}
if
(!
filterList
.
isEmpty
())
{
list
.
add
(
"("
);
list
.
add
(
StringUtils
.
join
(
filterList
,
" AND "
));
list
.
add
(
")"
);
int
size
=
wi
.
getFilterList
().
size
();
if
(
size
>
0
)
{
if
(
size
>
1
)
{
list
.
add
(
"("
);
}
for
(
int
i
=
0
;
i
<
size
;
i
++){
FilterEntry
filterEntry
=
wi
.
getFilterList
().
get
(
i
);
if
(
i
>
0
){
String
joinTag
=
filterEntry
.
logic
;
if
(
StringUtils
.
isEmpty
(
joinTag
)
||
!
joinTag
.
equalsIgnoreCase
(
SQL_OR
)){
joinTag
=
SQL_AND
;
}
list
.
add
(
joinTag
.
toUpperCase
());
}
list
.
add
(
filterEntry
.
path
);
list
.
add
(
Comparison
.
getMatchCom
(
filterEntry
.
comparison
));
list
.
add
(
":"
+
filterEntry
.
value
);
}
if
(
size
>
1
)
{
list
.
add
(
")"
);
}
}
if
(
hasWhere
)
{
list
.
add
(
"AND"
);
list
.
add
(
SQL_AND
);
list
.
add
(
"("
);
list
.
add
(
whereSql
);
list
.
add
(
")"
);
...
...
o2server/x_query_core_express/src/main/java/com/x/query/core/express/plan/FilterEntry.java
浏览文件 @
7ccde460
...
...
@@ -6,12 +6,10 @@ import javax.persistence.criteria.CriteriaBuilder;
import
javax.persistence.criteria.Predicate
;
import
javax.persistence.criteria.Root
;
import
com.x.processplatform.core.entity.content.Task_
;
import
org.apache.commons.lang3.BooleanUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.math.NumberUtils
;
import
com.x.base.core.entity.dataitem.ItemCategory
;
import
com.x.base.core.project.gson.GsonPropertyObject
;
import
com.x.base.core.project.tools.DateTools
;
import
com.x.query.core.entity.Item
;
...
...
@@ -93,31 +91,14 @@ public class FilterEntry extends GsonPropertyObject {
return
true
;
}
case
FORMAT_DATETIMEVALUE:
if
(
DateTools
.
isDateTimeOrDateOrTime
(
value
)
||
StringUtils
.
equalsIgnoreCase
(
DEFINE_TIME
,
value
)
||
StringUtils
.
equalsIgnoreCase
(
DEFINE_DATE
,
value
)
||
StringUtils
.
equalsIgnoreCase
(
DEFINE_MONTH
,
value
)
||
StringUtils
.
equalsIgnoreCase
(
DEFINE_SEASON
,
value
)
||
StringUtils
.
equalsIgnoreCase
(
DEFINE_YEAR
,
value
))
{
return
true
;
}
else
{
return
false
;
}
case
FORMAT_DATEVALUE:
if
(
DateTools
.
isDateTimeOrDateOrTime
(
value
)
||
StringUtils
.
equalsIgnoreCase
(
DEFINE_TIME
,
value
)
||
StringUtils
.
equalsIgnoreCase
(
DEFINE_DATE
,
value
)
||
StringUtils
.
equalsIgnoreCase
(
DEFINE_MONTH
,
value
)
||
StringUtils
.
equalsIgnoreCase
(
DEFINE_SEASON
,
value
)
||
StringUtils
.
equalsIgnoreCase
(
DEFINE_YEAR
,
value
))
{
return
true
;
}
else
{
return
false
;
}
case
FORMAT_TIMEVALUE:
if
(
DateTools
.
isDateTimeOrDateOrTime
(
value
)
||
StringUtils
.
equalsIgnoreCase
(
DEFINE_TIME
,
value
)
boolean
flag
=
DateTools
.
isDateTimeOrDateOrTime
(
value
)
||
StringUtils
.
equalsIgnoreCase
(
DEFINE_TIME
,
value
)
||
StringUtils
.
equalsIgnoreCase
(
DEFINE_DATE
,
value
)
||
StringUtils
.
equalsIgnoreCase
(
DEFINE_MONTH
,
value
)
||
StringUtils
.
equalsIgnoreCase
(
DEFINE_SEASON
,
value
)
||
StringUtils
.
equalsIgnoreCase
(
DEFINE_YEAR
,
value
))
{
||
StringUtils
.
equalsIgnoreCase
(
DEFINE_YEAR
,
value
);
if
(
flag
)
{
return
true
;
}
else
{
return
false
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录