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
c1d8cfad
Commit
c1d8cfad
authored
Jun 30, 2025
by
tianyiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
综合统计分析列表查询设备/企业/人员快捷筛选完善嵌套查询逻辑
parent
14c4564e
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
119 additions
and
38 deletions
+119
-38
ComprehensiveStatisticalAnalysisServiceImpl.java
...ice/impl/ComprehensiveStatisticalAnalysisServiceImpl.java
+119
-38
No files found.
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 @
c1d8cfad
...
...
@@ -31,8 +31,10 @@ import org.elasticsearch.action.search.SearchRequest;
import
org.elasticsearch.action.search.SearchResponse
;
import
org.elasticsearch.client.RequestOptions
;
import
org.elasticsearch.client.RestHighLevelClient
;
import
org.elasticsearch.index.query.*
;
import
org.elasticsearch.script.Script
;
import
org.elasticsearch.index.query.BoolQueryBuilder
;
import
org.elasticsearch.index.query.NestedQueryBuilder
;
import
org.elasticsearch.index.query.QueryBuilders
;
import
org.elasticsearch.index.query.TermsQueryBuilder
;
import
org.elasticsearch.search.SearchHit
;
import
org.elasticsearch.search.builder.SearchSourceBuilder
;
import
org.elasticsearch.search.sort.SortOrder
;
...
...
@@ -144,11 +146,11 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
public
JSONArray
queryAdvancedSearch
(
String
type
)
{
JSONArray
all
=
new
JSONArray
();
if
(
"equip"
.
equals
(
type
))
{
if
(
"equip"
.
equals
(
type
))
{
all
=
AdvanceSearchEnum
.
getAll
();
}
else
if
(
"company"
.
equals
(
type
))
{
}
else
if
(
"company"
.
equals
(
type
))
{
}
else
if
(
"person"
.
equals
(
type
))
{
}
else
if
(
"person"
.
equals
(
type
))
{
}
return
all
;
...
...
@@ -211,21 +213,75 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
boolMust
.
must
(
QueryBuilders
.
existsQuery
(
field
));
TermsQueryBuilder
termsQuery
=
QueryBuilders
.
termsQuery
(
field
,
(
JSONArray
)
v
);
boolMust
.
must
(
termsQuery
);
}
else
if
(
k
.
equals
(
"licenses"
))
{
}
else
if
(
k
.
equals
(
"certNo"
)
||
k
.
equals
(
"expiryDate"
)
||
k
.
equals
(
"permissionLevel"
)
||
k
.
equals
(
"certType"
)
||
k
.
equals
(
"jobItem"
)
||
k
.
equals
(
"issueDate"
))
{
String
path
=
"licenses"
;
((
JSONArray
)
v
).
forEach
(
item
->
{
String
compareString
=
"doc['"
+
k
+
"'].length"
+
(
item
.
equals
(
"1"
)
?
" > 0"
:
"= 0"
);
// 检查嵌套字段存在且长度大于0
Script
script
=
new
Script
(
compareString
);
ScriptQueryBuilder
scriptQuery
=
QueryBuilders
.
scriptQuery
(
script
);
NestedQueryBuilder
nestedExistsQuery
=
QueryBuilders
.
nestedQuery
(
k
,
scriptQuery
,
ScoreMode
.
None
String
nestedField
=
path
+
"."
+
k
;
// 根据证书编号判断有无资质
if
(
k
.
equals
(
"certNo"
))
{
NestedQueryBuilder
nestedQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
existsQuery
(
nestedField
),
ScoreMode
.
Avg
);
if
(
item
.
equals
(
"1"
))
{
boolMust
.
must
(
nestedQuery
);
}
else
{
boolMust
.
mustNot
(
nestedQuery
);
}
}
else
if
(
k
.
equals
(
"expiryDate"
))
{
if
(
item
.
equals
(
"overdue"
))
{
// 超期:小于当前日期
NestedQueryBuilder
nestedQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
boolQuery
().
filter
(
QueryBuilders
.
rangeQuery
(
nestedField
).
lt
(
LocalDate
.
now
().
format
(
formatter
))),
ScoreMode
.
Avg
);
boolMust
.
must
(
nestedQuery
);
}
else
if
(
item
.
equals
(
"near"
))
{
// 临期:小于等于当前日期加上30天
NestedQueryBuilder
nestedQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
boolQuery
().
filter
(
QueryBuilders
.
rangeQuery
(
nestedField
).
lte
(
LocalDate
.
now
().
plusDays
(
30
).
format
(
formatter
))),
ScoreMode
.
Avg
);
boolMust
.
must
(
nestedQuery
);
}
else
if
(
item
.
equals
(
"normal"
))
{
// 正常:大于当前日期加上30天
NestedQueryBuilder
nestedQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
boolQuery
().
filter
(
QueryBuilders
.
rangeQuery
(
nestedField
).
gt
(
LocalDate
.
now
().
plusDays
(
30
).
format
(
formatter
))),
ScoreMode
.
Avg
);
boolMust
.
must
(
nestedQuery
);
}
else
{
// 无资质要求
NestedQueryBuilder
nestedQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
existsQuery
(
nestedField
),
ScoreMode
.
Avg
);
boolMust
.
mustNot
(
nestedQuery
);
}
}
else
if
(
k
.
equals
(
"certType"
)
||
k
.
equals
(
"permissionLevel"
)
||
k
.
equals
(
"jobItem"
))
{
NestedQueryBuilder
nestedQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
boolQuery
().
must
(
QueryBuilders
.
termsQuery
(
nestedField
,
(
JSONArray
)
v
)),
ScoreMode
.
Avg
);
BoolQueryBuilder
query
=
QueryBuilders
.
boolQuery
()
.
must
(
nestedExistsQuery
);
boolMust
.
must
(
query
);
boolMust
.
must
(
nestedQuery
);
}
});
}
else
if
(
k
.
equals
(
"issueDate"
))
{
JSONArray
issueDates
=
(
JSONArray
)
v
;
String
startDate
=
DateUtils
.
convertDateToString
(
issueDates
.
getDate
(
0
),
DateUtils
.
DATE_PATTERN
);
String
endDate
=
DateUtils
.
convertDateToString
(
issueDates
.
getDate
(
1
),
DateUtils
.
DATE_PATTERN
);
NestedQueryBuilder
nestedQuery
=
QueryBuilders
.
nestedQuery
(
"licenses"
,
QueryBuilders
.
rangeQuery
(
"issueDate"
).
gte
(
startDate
).
lte
(
endDate
),
ScoreMode
.
Avg
);
boolMust
.
filter
(
nestedQuery
);
}
}
else
{
//todo 高级筛选
...
...
@@ -305,22 +361,46 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
boolMust
.
must
(
QueryBuilders
.
existsQuery
(
field
));
TermsQueryBuilder
termsQuery
=
QueryBuilders
.
termsQuery
(
field
,
(
JSONArray
)
v
);
boolMust
.
must
(
termsQuery
);
}
else
if
(
k
.
equals
(
"itemCode"
)
||
k
.
equals
(
"subItemCode"
))
{
}
else
if
(
k
.
equals
(
"itemCode"
)
||
k
.
equals
(
"subItemCode"
)
||
k
.
equals
(
"permitStatus"
)
)
{
String
path
=
"licenses"
;
((
JSONArray
)
v
).
forEach
(
item
->
{
String
nestedField
=
path
+
"."
+
k
+
".keyword"
;
String
nestedField
=
path
+
"."
+
(
k
.
equals
(
"permitStatus"
)
?
"expiryDate"
:
k
+
".keyword"
);
if
(
k
.
equals
(
"permitStatus"
))
{
if
(
item
.
equals
(
"overdue"
))
{
// 超期:小于当前日期
NestedQueryBuilder
nestedQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
boolQuery
().
filter
(
QueryBuilders
.
rangeQuery
(
nestedField
).
lt
(
LocalDate
.
now
().
format
(
formatter
))),
ScoreMode
.
Avg
);
boolMust
.
must
(
nestedQuery
);
}
else
if
(
item
.
equals
(
"near"
))
{
// 临期:小于等于当前日期加上30天
NestedQueryBuilder
nestedQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
boolQuery
().
filter
(
QueryBuilders
.
rangeQuery
(
nestedField
).
lte
(
LocalDate
.
now
().
plusDays
(
30
).
format
(
formatter
)).
gte
(
LocalDate
.
now
().
format
(
formatter
))),
ScoreMode
.
Avg
);
boolMust
.
must
(
nestedQuery
);
}
else
if
(
item
.
equals
(
"normal"
))
{
// 正常:大于当前日期加上30天
NestedQueryBuilder
nestedQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
boolQuery
().
filter
(
QueryBuilders
.
rangeQuery
(
nestedField
).
gt
(
LocalDate
.
now
().
plusDays
(
30
).
format
(
formatter
))),
ScoreMode
.
Avg
);
boolMust
.
must
(
nestedQuery
);
}
}
else
{
// 创建嵌套查询
NestedQueryBuilder
nestedQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
boolQuery
()
.
must
(
QueryBuilders
.
termQuery
(
nestedField
,
v
)),
QueryBuilders
.
termsQuery
(
nestedField
,
item
),
ScoreMode
.
Avg
);
boolMust
.
must
(
nestedQuery
);
System
.
out
.
println
(
boolMust
.
toString
());
}
});
}
else
if
(
k
.
equals
(
"permitStatus"
))
{
}
}
}
...
...
@@ -432,8 +512,8 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
boolMust
.
filter
(
QueryBuilders
.
rangeQuery
(
finalField
).
lt
(
LocalDate
.
now
().
minusYears
(
5
).
format
(
formatter
)));
}
});
}
else
if
(
k
.
equals
(
"IS_SUPERVISORY"
))
{
String
finalField
=
"SUPERVISORY_CODE"
;
}
else
if
(
k
.
equals
(
"IS_SUPERVISORY
_CODE
"
))
{
String
finalField
=
"
IS_
SUPERVISORY_CODE"
;
((
JSONArray
)
v
).
forEach
(
item
->
{
if
(
item
.
equals
(
"1"
))
{
boolMust
.
must
(
QueryBuilders
.
existsQuery
(
finalField
));
...
...
@@ -444,8 +524,8 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
});
}
else
if
(
k
.
equals
(
"createDate"
))
{
JSONArray
createDates
=
(
JSONArray
)
v
;
String
startDate
=
DateUtils
.
convertDateToString
(
createDates
.
getDate
(
0
),
"yyyy-MM-dd HH:mm:ss"
);
String
endDate
=
DateUtils
.
convertDateToString
(
createDates
.
getDate
(
1
),
"yyyy-MM-dd HH:mm:ss"
);
String
startDate
=
DateUtils
.
convertDateToString
(
createDates
.
getDate
(
0
),
DateUtils
.
DATE_TIME_PATTERN
);
String
endDate
=
DateUtils
.
convertDateToString
(
createDates
.
getDate
(
1
),
DateUtils
.
DATE_TIME_PATTERN
);
boolMust
.
filter
(
QueryBuilders
.
rangeQuery
(
"createDate"
).
gte
(
startDate
.
replace
(
" "
,
"T"
)).
lte
(
endDate
.
replace
(
" "
,
"T"
)));
}
else
if
(
k
.
equals
(
"EQU_LIST"
)
||
k
.
equals
(
"EQU_CATEGORY"
)
||
k
.
equals
(
"EQU_DEFINE"
)
||
k
.
equals
(
"EQU_STATE"
)
||
k
.
equals
(
"DATA_QUALITY_SCORE"
)
||
k
.
equals
(
"DATA_SOURCE"
))
{
if
(
k
.
equals
(
"EQU_LIST"
))
{
...
...
@@ -573,17 +653,17 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
//许可状态
JSONArray
permitStatusData
=
new
JSONArray
();
for
(
int
i
=
0
;
i
<
3
;
i
++)
{
for
(
int
i
=
0
;
i
<
3
;
i
++)
{
JSONObject
object
=
new
JSONObject
();
if
(
0
==
i
)
{
if
(
0
==
i
)
{
object
.
put
(
"key"
,
"0"
);
object
.
put
(
"value"
,
"0"
);
object
.
put
(
"label"
,
"超期"
);
}
else
if
(
1
==
i
)
{
}
else
if
(
1
==
i
)
{
object
.
put
(
"key"
,
"1"
);
object
.
put
(
"value"
,
"1"
);
object
.
put
(
"label"
,
"临期"
);
}
else
{
}
else
{
object
.
put
(
"key"
,
"2"
);
object
.
put
(
"value"
,
"2"
);
object
.
put
(
"label"
,
"正常"
);
...
...
@@ -595,7 +675,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
//监管设备类型
List
<
EquipmentCategoryDto
>
equipmentCategoryDtos
=
equipmentCategoryMapper
.
selectClassify
();
JSONArray
equipCategoryData
=
new
JSONArray
();
for
(
int
i
=
0
;
i
<
equipmentCategoryDtos
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
equipmentCategoryDtos
.
size
();
i
++)
{
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"key"
,
equipmentCategoryDtos
.
get
(
i
).
getCode
());
object
.
put
(
"value"
,
equipmentCategoryDtos
.
get
(
i
).
getCode
());
...
...
@@ -629,10 +709,10 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
public
JSONArray
queryXK
(
String
type
)
{
JSONArray
result
=
new
JSONArray
();
if
(
ValidationUtil
.
isEmpty
(
type
))
{
if
(
ValidationUtil
.
isEmpty
(
type
))
{
List
<
DataDictionary
>
xkxm
=
dataDictionaryService
.
lambdaQuery
().
like
(
DataDictionary:
:
getType
,
"XKXM"
).
eq
(
BaseEntity:
:
getIsDelete
,
false
).
list
();
result
=
deployDictionary
(
xkxm
);
}
else
{
}
else
{
List
<
DataDictionary
>
childrenxkxm
=
dataDictionaryService
.
lambdaQuery
().
eq
(
DataDictionary:
:
getTypeDesc
,
type
).
eq
(
BaseEntity:
:
getIsDelete
,
false
).
list
();
result
=
deployDictionary
(
childrenxkxm
);
}
...
...
@@ -642,7 +722,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
public
JSONArray
queryRYLX
(
String
type
)
{
JSONArray
result
=
new
JSONArray
();
if
(
ValidationUtil
.
isEmpty
(
type
))
{
if
(
ValidationUtil
.
isEmpty
(
type
))
{
List
<
String
>
typeList
=
new
ArrayList
<>(
Arrays
.
asList
(
"QYRYGW"
,
"QYRYGW-SYDW"
,
...
...
@@ -656,12 +736,13 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
.
isNull
(
DataDictionary:
:
getParent
)
.
in
(
DataDictionary:
:
getType
,
typeList
)
.
list
());
}
else
{
}
else
{
List
<
DataDictionary
>
childrenrylx
=
dataDictionaryService
.
lambdaQuery
()
.
in
(
DataDictionary:
:
getParent
,
type
)
.
like
(
DataDictionary:
:
getType
,
"QYRYGW"
)
.
orderByAsc
(
DataDictionary:
:
getSortNum
)
.
list
();;
.
list
();
;
result
=
deployDictionary
(
childrenrylx
);
}
return
result
;
...
...
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