Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-boot-biz
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
项目统一框架
amos-boot-biz
Commits
d3970aba
Commit
d3970aba
authored
Jul 14, 2025
by
tianyiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor: 提交大屏综合统计查询接口
parent
bee59c90
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
315 additions
and
174 deletions
+315
-174
StatisticalAnalysisEnum.java
.../module/statistics/api/enums/StatisticalAnalysisEnum.java
+9
-0
ComprehensiveStatisticalAnalysisController.java
...ontroller/ComprehensiveStatisticalAnalysisController.java
+2
-2
ComprehensiveStatisticalAnalysisServiceImpl.java
...ice/impl/ComprehensiveStatisticalAnalysisServiceImpl.java
+303
-171
QueryBuilderUtils.java
...os/boot/module/statistcs/biz/utils/QueryBuilderUtils.java
+1
-1
No files found.
amos-boot-system-tzs/amos-boot-module-statistics/amos-boot-module-statistics-api/src/main/java/com/yeejoin/amos/boot/module/statistics/api/enums/StatisticalAnalysisEnum.java
View file @
d3970aba
...
@@ -34,6 +34,15 @@ public enum StatisticalAnalysisEnum {
...
@@ -34,6 +34,15 @@ public enum StatisticalAnalysisEnum {
}
}
}
}
public
static
Map
<
String
,
String
>
getKey
=
new
HashMap
<>();
static
{
for
(
StatisticalAnalysisEnum
e
:
StatisticalAnalysisEnum
.
values
())
{
getKey
.
put
(
e
.
code
,
e
.
key
);
}
}
/**
/**
* 根据code获取枚举实例(优化版)
* 根据code获取枚举实例(优化版)
* @param code 枚举编码
* @param code 枚举编码
...
...
amos-boot-system-tzs/amos-boot-module-statistics/amos-boot-module-statistics-biz/src/main/java/com/yeejoin/amos/boot/module/statistcs/biz/controller/ComprehensiveStatisticalAnalysisController.java
View file @
d3970aba
...
@@ -189,11 +189,11 @@ public class ComprehensiveStatisticalAnalysisController extends BaseController {
...
@@ -189,11 +189,11 @@ public class ComprehensiveStatisticalAnalysisController extends BaseController {
* @return inspectStatus
* @return inspectStatus
*/
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@PostMapping
(
value
=
"/dp/
page
"
)
@PostMapping
(
value
=
"/dp/
statistics
"
)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"大屏综合统计查询接口"
,
notes
=
"大屏综合统计查询接口"
)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"大屏综合统计查询接口"
,
notes
=
"大屏综合统计查询接口"
)
public
ResponseModel
<
JSONObject
>
queryDpStatistics
(
@RequestBody
Map
<
String
,
Object
>
map
)
{
public
ResponseModel
<
JSONObject
>
queryDpStatistics
(
@RequestBody
Map
<
String
,
Object
>
map
)
{
JSONObject
jsonObject
=
new
JSONObject
(
map
);
JSONObject
jsonObject
=
new
JSONObject
(
map
);
return
ResponseHelper
.
buildResponse
(
statisticalAnalysisService
.
query
ForPage
(
jsonObject
));
return
ResponseHelper
.
buildResponse
(
statisticalAnalysisService
.
query
DpStatistics
(
jsonObject
));
}
}
/**
/**
...
...
amos-boot-system-tzs/amos-boot-module-statistics/amos-boot-module-statistics-biz/src/main/java/com/yeejoin/amos/boot/module/statistcs/biz/service/impl/ComprehensiveStatisticalAnalysisServiceImpl.java
View file @
d3970aba
...
@@ -552,7 +552,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
...
@@ -552,7 +552,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
BoolQueryBuilder
boolMust
=
QueryBuilders
.
boolQuery
();
BoolQueryBuilder
boolMust
=
QueryBuilders
.
boolQuery
();
String
orgCode
=
filter
.
getString
(
"orgCode"
);
String
orgCode
=
filter
.
getString
(
"orgCode"
);
boolMust
.
must
(
QueryBuilders
.
prefixQuery
(
"superviseOrgCode
.keyword
"
,
orgCode
));
boolMust
.
must
(
QueryBuilders
.
prefixQuery
(
"superviseOrgCode"
,
orgCode
));
JSONObject
filterParams
=
null
;
JSONObject
filterParams
=
null
;
if
(!
ObjectUtils
.
isEmpty
(
filter
.
get
(
"filterParams"
)))
{
if
(!
ObjectUtils
.
isEmpty
(
filter
.
get
(
"filterParams"
)))
{
filterParams
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
filter
.
get
(
"filterParams"
)));
filterParams
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
filter
.
get
(
"filterParams"
)));
...
@@ -781,174 +781,8 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
...
@@ -781,174 +781,8 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
if
(!
ObjectUtils
.
isEmpty
(
filter
.
get
(
"filterParams"
)))
{
if
(!
ObjectUtils
.
isEmpty
(
filter
.
get
(
"filterParams"
)))
{
filterParams
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
filter
.
get
(
"filterParams"
)));
filterParams
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
filter
.
get
(
"filterParams"
)));
String
filterType
=
filter
.
getString
(
"filterType"
);
String
filterType
=
filter
.
getString
(
"filterType"
);
//快捷筛选和自定义筛选解析筛选规则不一致
// 组装查询条件
if
(
filterType
.
equals
(
"advanced"
))
{
getEquipmentBoolQueryBuilder
(
boolMust
,
filterParams
,
filterType
);
JSONObject
finalFilterParams
=
filterParams
;
filterParams
.
forEach
((
k
,
v
)
->
{
if
(
k
.
equals
(
"techParam"
))
{
JSONArray
techParams
=
(
JSONArray
)
v
;
if
(!
techParams
.
contains
(
"all"
)
&&
techParams
.
size
()
==
1
)
{
JSONObject
paramRangeJson
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
finalFilterParams
.
get
(
"paramRange"
)));
String
paramKey
=
techParams
.
getString
(
0
);
String
condition
=
paramRangeJson
.
getString
(
"condition"
);
Object
value
=
paramRangeJson
.
getString
(
"value"
);
String
fieldType
=
paramRangeJson
.
getString
(
"fieldType"
);
if
(!
ObjectUtils
.
isEmpty
(
condition
)
&&
!
ObjectUtils
.
isEmpty
(
value
)
&&
!
ObjectUtils
.
isEmpty
(
fieldType
))
{
getParamQuery
(
paramKey
,
condition
,
value
,
fieldType
,
false
,
boolMust
,
null
,
null
);
}
}
}
else
if
(!
k
.
equals
(
"paramRange"
))
{
if
(
v
instanceof
JSONArray
)
{
// 判断是否需要解析参数
Boolean
parseParam
=
getParamAnalysis
(
v
);
if
(
parseParam
)
{
String
field
=
k
;
if
(
k
.
equals
(
"NEXT_INSPECT_DATE"
))
{
String
finalField
=
field
;
EnhancedDynamicQueryBuilder
queryBuilder
=
new
EnhancedDynamicQueryBuilder
();
((
JSONArray
)
v
).
forEach
(
item
->
{
if
(
item
.
equals
(
"overdue"
))
{
// 超期:小于当前日期
queryBuilder
.
add
(
QueryBuilders
.
boolQuery
().
filter
(
QueryBuilders
.
rangeQuery
(
finalField
).
lt
(
LocalDate
.
now
().
format
(
formatter
))),
or
);
}
else
if
(
item
.
equals
(
"near"
))
{
// 临期:小于等于当前日期加上30天
queryBuilder
.
add
(
QueryBuilders
.
boolQuery
().
filter
(
QueryBuilders
.
rangeQuery
(
finalField
).
gte
(
LocalDate
.
now
().
format
(
formatter
)).
lte
(
LocalDate
.
now
().
plusDays
(
30
).
format
(
formatter
))),
or
);
}
else
if
(
item
.
equals
(
"normal"
))
{
// 正常:大于当前日期加上30天
queryBuilder
.
add
(
QueryBuilders
.
boolQuery
().
filter
(
QueryBuilders
.
rangeQuery
(
finalField
).
gt
(
LocalDate
.
now
().
plusDays
(
30
).
format
(
formatter
))),
or
);
}
else
{
queryBuilder
.
add
(
QueryBuilders
.
boolQuery
().
mustNot
(
QueryBuilders
.
existsQuery
(
finalField
)),
or
);
}
});
boolMust
.
must
(
queryBuilder
.
build
());
}
else
if
(
k
.
equals
(
"registerStatus"
))
{
EnhancedDynamicQueryBuilder
enhancedDynamicQueryBuilder
=
new
EnhancedDynamicQueryBuilder
();
((
JSONArray
)
v
).
forEach
(
item
->
{
BoolQueryBuilder
queryBuilder
=
QueryBuilders
.
boolQuery
();
if
(
"1"
.
equals
(
item
))
{
queryBuilder
.
must
(
QueryBuilders
.
termsQuery
(
"IS_INTO_MANAGEMENT"
,
Boolean
.
TRUE
))
.
must
(
QueryBuilders
.
existsQuery
(
"USE_ORG_CODE"
));
}
else
{
queryBuilder
.
should
(
QueryBuilders
.
boolQuery
().
mustNot
(
QueryBuilders
.
existsQuery
(
"IS_INTO_MANAGEMENT"
)))
.
should
(
QueryBuilders
.
matchQuery
(
"IS_INTO_MANAGEMENT"
,
Boolean
.
FALSE
))
.
should
(
QueryBuilders
.
boolQuery
().
mustNot
(
QueryBuilders
.
existsQuery
(
"USE_ORG_CODE"
)))
.
minimumShouldMatch
(
1
);
}
enhancedDynamicQueryBuilder
.
add
(
queryBuilder
,
or
);
});
boolMust
.
must
(
enhancedDynamicQueryBuilder
.
build
());
}
else
if
(
k
.
equals
(
"PRODUCE_DATE"
)
||
k
.
equals
(
"issueDate"
)
||
k
.
equals
(
"designDate"
)
||
k
.
equals
(
"nextInspectDate"
)
||
k
.
equals
(
"USE_DATE"
))
{
field
=
k
.
equals
(
"nextInspectDate"
)
?
"NEXT_INSPECT_DATE"
:
k
;
JSONArray
dates
=
(
JSONArray
)
v
;
String
startDate
=
dates
.
getString
(
0
);
String
endDate
=
dates
.
getString
(
1
);
if
(
k
.
equals
(
"USE_DATE"
)
||
k
.
equals
(
"issueDate"
))
{
boolMust
.
filter
(
QueryBuilders
.
rangeQuery
(
field
).
gte
(
startDate
).
lt
(
endDate
));
}
else
{
boolMust
.
filter
(
QueryBuilders
.
rangeQuery
(
field
).
gte
(
startDate
).
lte
(
endDate
));
}
}
else
if
(
k
.
equals
(
"EQU_LIST"
)
||
k
.
equals
(
"EQU_CATEGORY"
)
||
k
.
equals
(
"EQU_DEFINE"
)
||
k
.
equals
(
"DATA_QUALITY_SCORE"
))
{
if
(
k
.
equals
(
"EQU_LIST"
))
{
field
=
"EQU_LIST_CODE"
;
}
else
if
(
k
.
equals
(
"EQU_CATEGORY"
))
{
field
=
"EQU_CATEGORY_CODE"
;
}
else
if
(
k
.
equals
(
"EQU_DEFINE"
))
{
field
=
"EQU_DEFINE_CODE"
;
}
TermsQueryBuilder
termsQuery
=
QueryBuilders
.
termsQuery
(
field
,
(
JSONArray
)
v
);
boolMust
.
must
(
termsQuery
);
}
else
if
(
k
.
equals
(
"EQU_STATE"
))
{
EnhancedDynamicQueryBuilder
queryBuilder
=
new
EnhancedDynamicQueryBuilder
();
((
JSONArray
)
v
).
forEach
(
item
->
{
if
(!
item
.
equals
(
"99"
))
{
queryBuilder
.
add
(
QueryBuilders
.
matchQuery
(
k
,
item
.
toString
()),
or
);
}
else
{
queryBuilder
.
add
(
QueryBuilders
.
boolQuery
().
mustNot
(
QueryBuilders
.
existsQuery
(
k
)),
or
);
}
});
boolMust
.
must
(
queryBuilder
.
build
());
}
else
if
(
k
.
equals
(
"JDJY"
)
||
k
.
equals
(
"DQJY"
)
||
k
.
equals
(
"SCJY"
)
||
k
.
equals
(
"DTJY"
))
{
String
path
=
"inspections"
;
String
typeField
=
path
+
".inspectType"
;
String
dateField
=
path
+
".inspectDate"
;
BoolQueryBuilder
queryBuilder
=
QueryBuilders
.
boolQuery
();
if
(
k
.
equals
(
"JDJY"
))
{
queryBuilder
.
must
(
QueryBuilders
.
wildcardQuery
(
typeField
,
"*JDJY*"
));
}
else
{
queryBuilder
.
must
(
QueryBuilders
.
termsQuery
(
typeField
,
k
));
}
NestedQueryBuilder
fieldQuery
=
QueryBuilders
.
nestedQuery
(
path
,
queryBuilder
,
ScoreMode
.
None
);
JSONArray
dates
=
(
JSONArray
)
v
;
String
startDate
=
dates
.
getString
(
0
);
String
endDate
=
dates
.
getString
(
1
);
NestedQueryBuilder
dateQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
rangeQuery
(
dateField
).
gte
(
startDate
).
lte
(
endDate
),
ScoreMode
.
None
);
boolMust
.
must
(
fieldQuery
);
boolMust
.
filter
(
dateQuery
);
}
else
if
(
k
.
equals
(
"QZ_OR_TANK"
))
{
EnhancedDynamicQueryBuilder
queryBuilder
=
new
EnhancedDynamicQueryBuilder
();
((
JSONArray
)
v
).
forEach
(
item
->
{
if
(!
""
.
equals
(
item
))
{
queryBuilder
.
add
(
QueryBuilders
.
matchQuery
(
item
.
toString
(),
"1"
),
or
);
}
});
boolMust
.
must
(
queryBuilder
.
build
());
}
}
}
else
if
(
v
instanceof
String
)
{
if
(
k
.
equals
(
"fuzzyInput"
))
{
String
fuzzyValue
=
String
.
valueOf
(
v
);
BoolQueryBuilder
queryBuilder
=
QueryBuilders
.
boolQuery
();
queryBuilder
.
should
(
QueryBuilders
.
wildcardQuery
(
"EQU_LIST"
,
"*"
+
fuzzyValue
+
"*"
));
queryBuilder
.
should
(
QueryBuilders
.
wildcardQuery
(
"EQU_CATEGORY"
,
"*"
+
fuzzyValue
+
"*"
));
queryBuilder
.
should
(
QueryBuilders
.
wildcardQuery
(
"EQU_DEFINE"
,
"*"
+
fuzzyValue
+
"*"
));
queryBuilder
.
should
(
QueryBuilders
.
wildcardQuery
(
"PRODUCT_NAME"
,
"*"
+
fuzzyValue
+
"*"
));
queryBuilder
.
should
(
QueryBuilders
.
wildcardQuery
(
"USE_ORG_CODE"
,
"*"
+
fuzzyValue
+
"*"
));
queryBuilder
.
should
(
QueryBuilders
.
wildcardQuery
(
"USE_UNIT_NAME"
,
"*"
+
fuzzyValue
+
"*"
));
queryBuilder
.
should
(
QueryBuilders
.
wildcardQuery
(
"SAFETY_MANAGER"
,
"*"
+
fuzzyValue
+
"*"
));
queryBuilder
.
should
(
QueryBuilders
.
wildcardQuery
(
"ORG_BRANCH_NAME"
,
"*"
+
fuzzyValue
+
"*"
));
queryBuilder
.
should
(
QueryBuilders
.
wildcardQuery
(
"MAINTAIN_UNIT_NAME"
,
"*"
+
fuzzyValue
+
"*"
));
queryBuilder
.
minimumShouldMatch
(
1
);
boolMust
.
must
(
queryBuilder
);
}
else
if
(
k
.
equals
(
"WHETHER_VEHICLE_CYLINDER"
))
{
if
(!
""
.
equals
(
v
))
{
boolMust
.
must
(
QueryBuilders
.
matchQuery
(
k
,
v
.
toString
()));
}
}
}
}
});
}
else
{
JSONArray
leftGroup
=
filterParams
.
getJSONArray
(
"group1"
);
JSONArray
rightGroup
=
filterParams
.
getJSONArray
(
"group2"
);
JSONArray
equListCodes
=
new
JSONArray
();
leftGroup
.
forEach
(
item
->
{
JSONObject
left
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
item
));
String
leftField
=
left
.
getString
(
"field"
);
String
leftValue
=
left
.
getString
(
"value"
);
if
(!
ObjectUtils
.
isEmpty
(
leftField
)
&&
leftField
.
equals
(
"EQU_LIST_CODE"
)
&&
!
ObjectUtils
.
isEmpty
(
leftValue
))
{
equListCodes
.
add
(
leftValue
);
}
});
rightGroup
.
forEach
(
item
->
{
JSONObject
left
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
item
));
String
rightField
=
left
.
getString
(
"field"
);
String
rightValue
=
left
.
getString
(
"value"
);
if
(!
ObjectUtils
.
isEmpty
(
rightField
)
&&
rightField
.
equals
(
"EQU_LIST_CODE"
)
&&
!
ObjectUtils
.
isEmpty
(
rightValue
))
{
equListCodes
.
add
(
rightValue
);
}
});
filterParams
.
put
(
"EQU_LIST"
,
equListCodes
);
Boolean
isOrGroup
=
or
.
equals
(
filterParams
.
getString
(
"groupAndOr"
))
?
Boolean
.
TRUE
:
Boolean
.
FALSE
;
handleAdvancedFilter
(
boolMust
,
leftGroup
,
rightGroup
,
isOrGroup
);
}
}
}
// 排序
// 排序
...
@@ -1065,6 +899,177 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
...
@@ -1065,6 +899,177 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
return
result
;
return
result
;
}
}
private
void
getEquipmentBoolQueryBuilder
(
BoolQueryBuilder
boolMust
,
JSONObject
filterParams
,
String
filterType
)
{
//快捷筛选和自定义筛选解析筛选规则不一致
if
(
filterType
.
equals
(
"advanced"
))
{
JSONObject
finalFilterParams
=
filterParams
;
filterParams
.
forEach
((
k
,
v
)
->
{
if
(
k
.
equals
(
"techParam"
))
{
JSONArray
techParams
=
(
JSONArray
)
v
;
if
(!
techParams
.
contains
(
"all"
)
&&
techParams
.
size
()
==
1
)
{
JSONObject
paramRangeJson
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
finalFilterParams
.
get
(
"paramRange"
)));
String
paramKey
=
techParams
.
getString
(
0
);
String
condition
=
paramRangeJson
.
getString
(
"condition"
);
Object
value
=
paramRangeJson
.
getString
(
"value"
);
String
fieldType
=
paramRangeJson
.
getString
(
"fieldType"
);
if
(!
ObjectUtils
.
isEmpty
(
condition
)
&&
!
ObjectUtils
.
isEmpty
(
value
)
&&
!
ObjectUtils
.
isEmpty
(
fieldType
))
{
getParamQuery
(
paramKey
,
condition
,
value
,
fieldType
,
false
,
boolMust
,
null
,
null
);
}
}
}
else
if
(!
k
.
equals
(
"paramRange"
))
{
if
(
v
instanceof
JSONArray
)
{
// 判断是否需要解析参数
Boolean
parseParam
=
getParamAnalysis
(
v
);
if
(
parseParam
)
{
String
field
=
k
;
if
(
k
.
equals
(
"NEXT_INSPECT_DATE"
))
{
String
finalField
=
field
;
EnhancedDynamicQueryBuilder
queryBuilder
=
new
EnhancedDynamicQueryBuilder
();
((
JSONArray
)
v
).
forEach
(
item
->
{
if
(
item
.
equals
(
"overdue"
))
{
// 超期:小于当前日期
queryBuilder
.
add
(
QueryBuilders
.
boolQuery
().
filter
(
QueryBuilders
.
rangeQuery
(
finalField
).
lt
(
LocalDate
.
now
().
format
(
formatter
))),
or
);
}
else
if
(
item
.
equals
(
"near"
))
{
// 临期:小于等于当前日期加上30天
queryBuilder
.
add
(
QueryBuilders
.
boolQuery
().
filter
(
QueryBuilders
.
rangeQuery
(
finalField
).
gte
(
LocalDate
.
now
().
format
(
formatter
)).
lte
(
LocalDate
.
now
().
plusDays
(
30
).
format
(
formatter
))),
or
);
}
else
if
(
item
.
equals
(
"normal"
))
{
// 正常:大于当前日期加上30天
queryBuilder
.
add
(
QueryBuilders
.
boolQuery
().
filter
(
QueryBuilders
.
rangeQuery
(
finalField
).
gt
(
LocalDate
.
now
().
plusDays
(
30
).
format
(
formatter
))),
or
);
}
else
{
queryBuilder
.
add
(
QueryBuilders
.
boolQuery
().
mustNot
(
QueryBuilders
.
existsQuery
(
finalField
)),
or
);
}
});
boolMust
.
must
(
queryBuilder
.
build
());
}
else
if
(
k
.
equals
(
"registerStatus"
))
{
EnhancedDynamicQueryBuilder
enhancedDynamicQueryBuilder
=
new
EnhancedDynamicQueryBuilder
();
((
JSONArray
)
v
).
forEach
(
item
->
{
BoolQueryBuilder
queryBuilder
=
QueryBuilders
.
boolQuery
();
if
(
"1"
.
equals
(
item
))
{
queryBuilder
.
must
(
QueryBuilders
.
termsQuery
(
"IS_INTO_MANAGEMENT"
,
Boolean
.
TRUE
))
.
must
(
QueryBuilders
.
existsQuery
(
"USE_ORG_CODE"
));
}
else
{
queryBuilder
.
should
(
QueryBuilders
.
boolQuery
().
mustNot
(
QueryBuilders
.
existsQuery
(
"IS_INTO_MANAGEMENT"
)))
.
should
(
QueryBuilders
.
matchQuery
(
"IS_INTO_MANAGEMENT"
,
Boolean
.
FALSE
))
.
should
(
QueryBuilders
.
boolQuery
().
mustNot
(
QueryBuilders
.
existsQuery
(
"USE_ORG_CODE"
)))
.
minimumShouldMatch
(
1
);
}
enhancedDynamicQueryBuilder
.
add
(
queryBuilder
,
or
);
});
boolMust
.
must
(
enhancedDynamicQueryBuilder
.
build
());
}
else
if
(
k
.
equals
(
"PRODUCE_DATE"
)
||
k
.
equals
(
"issueDate"
)
||
k
.
equals
(
"designDate"
)
||
k
.
equals
(
"nextInspectDate"
)
||
k
.
equals
(
"USE_DATE"
))
{
field
=
k
.
equals
(
"nextInspectDate"
)
?
"NEXT_INSPECT_DATE"
:
k
;
JSONArray
dates
=
(
JSONArray
)
v
;
String
startDate
=
dates
.
getString
(
0
);
String
endDate
=
dates
.
getString
(
1
);
if
(
k
.
equals
(
"USE_DATE"
)
||
k
.
equals
(
"issueDate"
))
{
boolMust
.
filter
(
QueryBuilders
.
rangeQuery
(
field
).
gte
(
startDate
).
lt
(
endDate
));
}
else
{
boolMust
.
filter
(
QueryBuilders
.
rangeQuery
(
field
).
gte
(
startDate
).
lte
(
endDate
));
}
}
else
if
(
k
.
equals
(
"EQU_LIST"
)
||
k
.
equals
(
"EQU_CATEGORY"
)
||
k
.
equals
(
"EQU_DEFINE"
)
||
k
.
equals
(
"DATA_QUALITY_SCORE"
))
{
if
(
k
.
equals
(
"EQU_LIST"
))
{
field
=
"EQU_LIST_CODE"
;
}
else
if
(
k
.
equals
(
"EQU_CATEGORY"
))
{
field
=
"EQU_CATEGORY_CODE"
;
}
else
if
(
k
.
equals
(
"EQU_DEFINE"
))
{
field
=
"EQU_DEFINE_CODE"
;
}
TermsQueryBuilder
termsQuery
=
QueryBuilders
.
termsQuery
(
field
,
(
JSONArray
)
v
);
boolMust
.
must
(
termsQuery
);
}
else
if
(
k
.
equals
(
"EQU_STATE"
))
{
EnhancedDynamicQueryBuilder
queryBuilder
=
new
EnhancedDynamicQueryBuilder
();
((
JSONArray
)
v
).
forEach
(
item
->
{
if
(!
item
.
equals
(
"99"
))
{
queryBuilder
.
add
(
QueryBuilders
.
matchQuery
(
k
,
item
.
toString
()),
or
);
}
else
{
queryBuilder
.
add
(
QueryBuilders
.
boolQuery
().
mustNot
(
QueryBuilders
.
existsQuery
(
k
)),
or
);
}
});
boolMust
.
must
(
queryBuilder
.
build
());
}
else
if
(
k
.
equals
(
"JDJY"
)
||
k
.
equals
(
"DQJY"
)
||
k
.
equals
(
"SCJY"
)
||
k
.
equals
(
"DTJY"
))
{
String
path
=
"inspections"
;
String
typeField
=
path
+
".inspectType"
;
String
dateField
=
path
+
".inspectDate"
;
BoolQueryBuilder
queryBuilder
=
QueryBuilders
.
boolQuery
();
if
(
k
.
equals
(
"JDJY"
))
{
queryBuilder
.
must
(
QueryBuilders
.
wildcardQuery
(
typeField
,
"*JDJY*"
));
}
else
{
queryBuilder
.
must
(
QueryBuilders
.
termsQuery
(
typeField
,
k
));
}
NestedQueryBuilder
fieldQuery
=
QueryBuilders
.
nestedQuery
(
path
,
queryBuilder
,
ScoreMode
.
None
);
JSONArray
dates
=
(
JSONArray
)
v
;
String
startDate
=
dates
.
getString
(
0
);
String
endDate
=
dates
.
getString
(
1
);
NestedQueryBuilder
dateQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
rangeQuery
(
dateField
).
gte
(
startDate
).
lte
(
endDate
),
ScoreMode
.
None
);
boolMust
.
must
(
fieldQuery
);
boolMust
.
filter
(
dateQuery
);
}
else
if
(
k
.
equals
(
"QZ_OR_TANK"
))
{
EnhancedDynamicQueryBuilder
queryBuilder
=
new
EnhancedDynamicQueryBuilder
();
((
JSONArray
)
v
).
forEach
(
item
->
{
if
(!
""
.
equals
(
item
))
{
queryBuilder
.
add
(
QueryBuilders
.
matchQuery
(
item
.
toString
(),
"1"
),
or
);
}
});
boolMust
.
must
(
queryBuilder
.
build
());
}
}
}
else
if
(
v
instanceof
String
)
{
if
(
k
.
equals
(
"fuzzyInput"
))
{
String
fuzzyValue
=
String
.
valueOf
(
v
);
BoolQueryBuilder
queryBuilder
=
QueryBuilders
.
boolQuery
();
queryBuilder
.
should
(
QueryBuilders
.
wildcardQuery
(
"EQU_LIST"
,
"*"
+
fuzzyValue
+
"*"
));
queryBuilder
.
should
(
QueryBuilders
.
wildcardQuery
(
"EQU_CATEGORY"
,
"*"
+
fuzzyValue
+
"*"
));
queryBuilder
.
should
(
QueryBuilders
.
wildcardQuery
(
"EQU_DEFINE"
,
"*"
+
fuzzyValue
+
"*"
));
queryBuilder
.
should
(
QueryBuilders
.
wildcardQuery
(
"PRODUCT_NAME"
,
"*"
+
fuzzyValue
+
"*"
));
queryBuilder
.
should
(
QueryBuilders
.
wildcardQuery
(
"USE_ORG_CODE"
,
"*"
+
fuzzyValue
+
"*"
));
queryBuilder
.
should
(
QueryBuilders
.
wildcardQuery
(
"USE_UNIT_NAME"
,
"*"
+
fuzzyValue
+
"*"
));
queryBuilder
.
should
(
QueryBuilders
.
wildcardQuery
(
"SAFETY_MANAGER"
,
"*"
+
fuzzyValue
+
"*"
));
queryBuilder
.
should
(
QueryBuilders
.
wildcardQuery
(
"ORG_BRANCH_NAME"
,
"*"
+
fuzzyValue
+
"*"
));
queryBuilder
.
should
(
QueryBuilders
.
wildcardQuery
(
"MAINTAIN_UNIT_NAME"
,
"*"
+
fuzzyValue
+
"*"
));
queryBuilder
.
minimumShouldMatch
(
1
);
boolMust
.
must
(
queryBuilder
);
}
else
if
(
k
.
equals
(
"WHETHER_VEHICLE_CYLINDER"
))
{
if
(!
""
.
equals
(
v
))
{
boolMust
.
must
(
QueryBuilders
.
matchQuery
(
k
,
v
.
toString
()));
}
}
}
}
});
}
else
{
JSONArray
leftGroup
=
filterParams
.
getJSONArray
(
"group1"
);
JSONArray
rightGroup
=
filterParams
.
getJSONArray
(
"group2"
);
JSONArray
equListCodes
=
new
JSONArray
();
leftGroup
.
forEach
(
item
->
{
JSONObject
left
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
item
));
String
leftField
=
left
.
getString
(
"field"
);
String
leftValue
=
left
.
getString
(
"value"
);
if
(!
ObjectUtils
.
isEmpty
(
leftField
)
&&
leftField
.
equals
(
"EQU_LIST_CODE"
)
&&
!
ObjectUtils
.
isEmpty
(
leftValue
))
{
equListCodes
.
add
(
leftValue
);
}
});
rightGroup
.
forEach
(
item
->
{
JSONObject
left
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
item
));
String
rightField
=
left
.
getString
(
"field"
);
String
rightValue
=
left
.
getString
(
"value"
);
if
(!
ObjectUtils
.
isEmpty
(
rightField
)
&&
rightField
.
equals
(
"EQU_LIST_CODE"
)
&&
!
ObjectUtils
.
isEmpty
(
rightValue
))
{
equListCodes
.
add
(
rightValue
);
}
});
filterParams
.
put
(
"EQU_LIST"
,
equListCodes
);
Boolean
isOrGroup
=
or
.
equals
(
filterParams
.
getString
(
"groupAndOr"
))
?
Boolean
.
TRUE
:
Boolean
.
FALSE
;
handleAdvancedFilter
(
boolMust
,
leftGroup
,
rightGroup
,
isOrGroup
);
}
}
private
void
getEquipStatusStatic
(
BoolQueryBuilder
boolMust
,
SearchSourceBuilder
builder
,
List
<
Map
<
String
,
Object
>>
statics
)
{
private
void
getEquipStatusStatic
(
BoolQueryBuilder
boolMust
,
SearchSourceBuilder
builder
,
List
<
Map
<
String
,
Object
>>
statics
)
{
SearchRequest
request
=
new
SearchRequest
();
SearchRequest
request
=
new
SearchRequest
();
request
.
indices
(
StatisticalAnalysisEnum
.
equip
.
getKey
());
request
.
indices
(
StatisticalAnalysisEnum
.
equip
.
getKey
());
...
@@ -2553,7 +2558,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
...
@@ -2553,7 +2558,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
}
}
public
JSONArray
queryQzOrTank
()
{
public
JSONArray
queryQzOrTank
()
{
//
是否车用气瓶
//
撬装球罐
JSONArray
qzOrTank
=
new
JSONArray
();
JSONArray
qzOrTank
=
new
JSONArray
();
for
(
int
i
=
0
;
i
<
2
;
i
++)
{
for
(
int
i
=
0
;
i
<
2
;
i
++)
{
JSONObject
object
=
new
JSONObject
();
JSONObject
object
=
new
JSONObject
();
...
@@ -2572,7 +2577,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
...
@@ -2572,7 +2577,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
}
}
public
JSONArray
queryRegisterStatus
()
{
public
JSONArray
queryRegisterStatus
()
{
//
是否车用气瓶
//
登记状态
JSONArray
registerStatus
=
new
JSONArray
();
JSONArray
registerStatus
=
new
JSONArray
();
for
(
int
i
=
0
;
i
<
2
;
i
++)
{
for
(
int
i
=
0
;
i
<
2
;
i
++)
{
JSONObject
object
=
new
JSONObject
();
JSONObject
object
=
new
JSONObject
();
...
@@ -2590,4 +2595,130 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
...
@@ -2590,4 +2595,130 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
return
registerStatus
;
return
registerStatus
;
}
}
public
JSONObject
queryDpStatistics
(
JSONObject
filter
)
{
JSONObject
result
=
new
JSONObject
();
String
businessType
=
filter
.
getString
(
"businessType"
);
if
(
ObjectUtils
.
isEmpty
(
businessType
))
{
return
result
;
}
SearchRequest
request
=
new
SearchRequest
();
SearchSourceBuilder
builder
=
new
SearchSourceBuilder
();
builder
.
trackTotalHits
(
true
);
BoolQueryBuilder
boolMust
=
QueryBuilders
.
boolQuery
();
Map
<
String
,
Object
>
tabTotalMap
=
new
HashMap
<>();
String
orgCode
=
filter
.
getString
(
"orgCode"
);
if
(
StatisticalAnalysisEnum
.
equip
.
getCode
().
equals
(
businessType
))
{
boolMust
.
must
(
QueryBuilders
.
prefixQuery
(
"ORG_BRANCH_CODE"
,
orgCode
));
result
=
queryDpEquipStatistics
(
filter
,
request
,
builder
,
boolMust
,
tabTotalMap
);
}
else
if
(
StatisticalAnalysisEnum
.
company
.
getCode
().
equals
(
businessType
))
{
boolMust
.
must
(
QueryBuilders
.
prefixQuery
(
"superviseOrgCode"
,
orgCode
));
result
=
queryDpCompanyStatistics
(
filter
,
request
,
builder
,
boolMust
,
tabTotalMap
);
}
else
{
boolMust
.
must
(
QueryBuilders
.
prefixQuery
(
"superviseOrgCode"
,
orgCode
));
result
=
queryDpPersonStatistics
(
filter
,
request
,
builder
,
boolMust
,
tabTotalMap
);
}
getOtherTypeCount
(
businessType
,
tabTotalMap
,
orgCode
);
result
.
put
(
"tabTotalMap"
,
tabTotalMap
);
return
result
;
}
private
void
getOtherTypeCount
(
String
businessType
,
Map
<
String
,
Object
>
tabTotalMap
,
String
orgCode
)
{
BoolQueryBuilder
equipBoolMust
=
QueryBuilders
.
boolQuery
();
equipBoolMust
.
must
(
QueryBuilders
.
prefixQuery
(
"ORG_BRANCH_CODE"
,
orgCode
));
BoolQueryBuilder
companyBoolMust
=
QueryBuilders
.
boolQuery
();
companyBoolMust
.
must
(
QueryBuilders
.
prefixQuery
(
"superviseOrgCode"
,
orgCode
));
BoolQueryBuilder
personBoolMust
=
QueryBuilders
.
boolQuery
();
personBoolMust
.
must
(
QueryBuilders
.
prefixQuery
(
"superviseOrgCode"
,
orgCode
));
String
equipIndex
=
StatisticalAnalysisEnum
.
equip
.
getKey
();
String
companyIndex
=
StatisticalAnalysisEnum
.
company
.
getKey
();
String
personIndex
=
StatisticalAnalysisEnum
.
person
.
getKey
();
if
(
businessType
.
equals
(
StatisticalAnalysisEnum
.
equip
.
getCode
()))
{
// 获取企业总数
Long
companyCount
=
getStaticCount
(
companyBoolMust
,
companyIndex
);
// 获取人员总数
Long
personCount
=
getStaticCount
(
personBoolMust
,
personIndex
);
tabTotalMap
.
put
(
StatisticalAnalysisEnum
.
company
.
getCode
(),
companyCount
);
tabTotalMap
.
put
(
StatisticalAnalysisEnum
.
person
.
getCode
(),
personCount
);
}
else
if
(
businessType
.
equals
(
StatisticalAnalysisEnum
.
company
.
getCode
()))
{
// 获取设备总数
Long
equipCount
=
getStaticCount
(
equipBoolMust
,
equipIndex
);
// 获取人员总数
Long
personCount
=
getStaticCount
(
personBoolMust
,
personIndex
);
tabTotalMap
.
put
(
StatisticalAnalysisEnum
.
equip
.
getCode
(),
equipCount
);
tabTotalMap
.
put
(
StatisticalAnalysisEnum
.
person
.
getCode
(),
personCount
);
}
else
{
// 获取设备总数
Long
equipCount
=
getStaticCount
(
equipBoolMust
,
equipIndex
);
// 获取企业总数
Long
companyCount
=
getStaticCount
(
companyBoolMust
,
companyIndex
);
tabTotalMap
.
put
(
StatisticalAnalysisEnum
.
equip
.
getCode
(),
equipCount
);
tabTotalMap
.
put
(
StatisticalAnalysisEnum
.
company
.
getCode
(),
companyCount
);
}
}
private
JSONObject
queryDpPersonStatistics
(
JSONObject
filter
,
SearchRequest
request
,
SearchSourceBuilder
builder
,
BoolQueryBuilder
boolMust
,
Map
<
String
,
Object
>
tabTotalMap
)
{
return
null
;
}
private
JSONObject
queryDpCompanyStatistics
(
JSONObject
filter
,
SearchRequest
request
,
SearchSourceBuilder
builder
,
BoolQueryBuilder
boolMust
,
Map
<
String
,
Object
>
tabTotalMap
)
{
return
null
;
}
private
JSONObject
queryDpEquipStatistics
(
JSONObject
filter
,
SearchRequest
request
,
SearchSourceBuilder
builder
,
BoolQueryBuilder
boolMust
,
Map
<
String
,
Object
>
tabTotalMap
)
{
request
.
indices
(
StatisticalAnalysisEnum
.
equip
.
getKey
());
JSONObject
filterParams
=
new
JSONObject
();
// 筛选
if
(!
ObjectUtils
.
isEmpty
(
filter
.
get
(
"filterParams"
)))
{
filterParams
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
filter
.
get
(
"filterParams"
)));
String
filterType
=
"advanced"
;
// 组装查询条件
getEquipmentBoolQueryBuilder
(
boolMust
,
filterParams
,
filterType
);
}
JSONArray
typeData
=
filter
.
getJSONArray
(
"typeData"
);
String
groupField
=
"EQU_LIST_CODE"
;
if
(!
ObjectUtils
.
isEmpty
(
typeData
))
{
if
(
typeData
.
size
()
==
1
)
{
groupField
=
"EQU_LIST_CODE"
;
}
else
if
(
typeData
.
size
()
==
2
)
{
groupField
=
"EQU_CATEGORY_CODE"
;
}
else
if
(
typeData
.
size
()
==
3
)
{
groupField
=
"EQU_DEFINE_CODE"
;
}
}
Map
<
String
,
Object
>
staticCountByGroup
=
getStaticCountByGroup
(
request
,
builder
,
boolMust
,
groupField
);
return
JSONObject
.
parseObject
(
JSON
.
toJSONString
(
staticCountByGroup
));
}
private
Map
<
String
,
Object
>
getStaticCountByGroup
(
SearchRequest
request
,
SearchSourceBuilder
builder
,
BoolQueryBuilder
boolMust
,
String
groupField
)
{
builder
.
query
(
boolMust
);
builder
.
aggregation
(
AggregationBuilders
.
terms
(
groupField
).
field
(
groupField
).
missing
(
"null"
));
request
.
source
(
builder
);
try
{
SearchResponse
response
=
restHighLevelClient
.
search
(
request
,
RequestOptions
.
DEFAULT
);
Terms
terms
=
response
.
getAggregations
().
get
(
groupField
);
Map
<
String
,
Object
>
tabTotalMap
=
new
HashMap
<>();
for
(
Terms
.
Bucket
bucket
:
terms
.
getBuckets
())
{
tabTotalMap
.
put
(
bucket
.
getKeyAsString
(),
bucket
.
getDocCount
());
}
return
tabTotalMap
;
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
}
}
}
\ No newline at end of file
amos-boot-system-tzs/amos-boot-module-statistics/amos-boot-module-statistics-biz/src/main/java/com/yeejoin/amos/boot/module/statistcs/biz/utils/QueryBuilderUtils.java
View file @
d3970aba
...
@@ -4,7 +4,7 @@ import org.elasticsearch.index.query.BoolQueryBuilder;
...
@@ -4,7 +4,7 @@ import org.elasticsearch.index.query.BoolQueryBuilder;
import
org.elasticsearch.index.query.QueryBuilders
;
import
org.elasticsearch.index.query.QueryBuilders
;
public
class
QueryBuilderUtils
{
public
class
QueryBuilderUtils
{
// 复制BoolQueryBuilder
public
static
BoolQueryBuilder
copyBoolQuery
(
BoolQueryBuilder
original
)
{
public
static
BoolQueryBuilder
copyBoolQuery
(
BoolQueryBuilder
original
)
{
if
(
original
==
null
)
{
if
(
original
==
null
)
{
return
QueryBuilders
.
boolQuery
();
return
QueryBuilders
.
boolQuery
();
...
...
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