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
e63ee483
Commit
e63ee483
authored
Jun 30, 2025
by
tianyiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(statistics): 完善设备技术参数相关查询
parent
2aefe430
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
131 additions
and
7 deletions
+131
-7
ComprehensiveStatisticalAnalysisServiceImpl.java
...ice/impl/ComprehensiveStatisticalAnalysisServiceImpl.java
+131
-7
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 @
e63ee483
...
...
@@ -37,6 +37,8 @@ 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.FieldSortBuilder
;
import
org.elasticsearch.search.sort.SortBuilders
;
import
org.elasticsearch.search.sort.SortOrder
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
...
...
@@ -294,7 +296,10 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
// 排序
if
(!
ObjectUtils
.
isEmpty
(
filter
.
get
(
"sort"
)))
{
JSONObject
sort
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
filter
.
get
(
"sort"
)));
builder
.
sort
(
sort
.
getString
(
"field"
),
sort
.
getString
(
"order"
).
equals
(
"desc"
)
?
SortOrder
.
DESC
:
SortOrder
.
ASC
);
String
field
=
sort
.
getString
(
"filed"
);
SortOrder
sortOrder
=
sort
.
getString
(
"order"
).
equals
(
"desc"
)
?
SortOrder
.
DESC
:
SortOrder
.
ASC
;
FieldSortBuilder
sortBuilder
=
SortBuilders
.
fieldSort
(
field
+
".keyword"
).
order
(
sortOrder
);
builder
.
sort
(
sortBuilder
);
}
builder
.
query
(
boolMust
);
builder
.
from
((
current
-
1
)
*
size
);
...
...
@@ -412,7 +417,10 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
// 排序
if
(!
ObjectUtils
.
isEmpty
(
filter
.
get
(
"sort"
)))
{
JSONObject
sort
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
filter
.
get
(
"sort"
)));
builder
.
sort
(
sort
.
getString
(
"field"
),
sort
.
getString
(
"order"
).
equals
(
"desc"
)
?
SortOrder
.
DESC
:
SortOrder
.
ASC
);
String
field
=
sort
.
getString
(
"filed"
);
SortOrder
sortOrder
=
sort
.
getString
(
"order"
).
equals
(
"desc"
)
?
SortOrder
.
DESC
:
SortOrder
.
ASC
;
FieldSortBuilder
sortBuilder
=
SortBuilders
.
fieldSort
(
field
+
".keyword"
).
order
(
sortOrder
);
builder
.
sort
(
sortBuilder
);
}
builder
.
query
(
boolMust
);
...
...
@@ -461,7 +469,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
String
orgCode
=
filter
.
getString
(
"orgCode"
);
boolMust
.
must
(
QueryBuilders
.
prefixQuery
(
"ORG_BRANCH_CODE"
,
orgCode
));
JSONObject
filterParams
=
null
;
JSONObject
filterParams
;
// 筛选
if
(!
ObjectUtils
.
isEmpty
(
filter
.
get
(
"filterParams"
)))
{
filterParams
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
filter
.
get
(
"filterParams"
)));
...
...
@@ -470,9 +478,15 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
if
(
filterType
.
equals
(
"advanced"
))
{
filterParams
.
forEach
((
k
,
v
)
->
{
if
(
k
.
equals
(
"techParam"
))
{
// todo 计数参数筛选
}
else
{
JSONArray
techParams
=
(
JSONArray
)
v
;
if
(!
techParams
.
contains
(
"all"
)
&&
techParams
.
size
()
==
1
)
{
JSONObject
paramRangeJson
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
filterParams
.
get
(
"paramRange"
)));
String
paramKey
=
techParams
.
getString
(
0
);
String
condition
=
paramRangeJson
.
getString
(
"condition"
);
Object
value
=
paramRangeJson
.
getString
(
"value"
);
getParamQuery
(
paramKey
,
condition
,
value
,
boolMust
);
}
}
else
if
(!
k
.
equals
(
"paramRange"
))
{
if
(
v
instanceof
JSONArray
)
{
if
(!((
JSONArray
)
v
).
contains
(
"all"
))
{
String
field
=
k
;
...
...
@@ -548,18 +562,22 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
// todo 自定义筛选
}
}
else
{
filterParams
=
null
;
}
// 排序
if
(!
ObjectUtils
.
isEmpty
(
filter
.
get
(
"sort"
)))
{
JSONObject
sort
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
filter
.
get
(
"sort"
)));
String
field
=
sort
.
getString
(
"fi
el
d"
);
String
field
=
sort
.
getString
(
"fi
le
d"
);
if
(
field
.
equals
(
"EQU_LIST"
))
{
field
=
"EQU_LIST_CODE"
;
}
else
if
(
field
.
equals
(
"EQU_CATEGORY"
))
{
field
=
"EQU_CATEGORY_CODE"
;
}
else
if
(
field
.
equals
(
"EQU_DEFINE"
))
{
field
=
"EQU_DEFINE_CODE"
;
}
else
{
field
=
field
+
".keyword"
;
}
builder
.
sort
(
field
,
sort
.
getString
(
"order"
).
equals
(
"desc"
)
?
SortOrder
.
DESC
:
SortOrder
.
ASC
);
}
...
...
@@ -634,6 +652,112 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
return
result
;
}
private
void
getParamQuery
(
String
paramKey
,
String
condition
,
Object
value
,
BoolQueryBuilder
boolMust
)
{
String
path
=
"techParams"
;
String
nestedFieldKey
=
path
+
".paramKey"
;
String
nestedFieldValue
=
path
+
".strValue"
;
NestedQueryBuilder
keyNestedQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
boolQuery
().
must
(
QueryBuilders
.
termsQuery
(
nestedFieldKey
,
paramKey
)),
ScoreMode
.
Avg
);
boolMust
.
must
(
keyNestedQuery
);
switch
(
condition
)
{
case
"eq"
:
NestedQueryBuilder
eqQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
boolQuery
().
must
(
QueryBuilders
.
termsQuery
(
nestedFieldValue
,
value
)),
ScoreMode
.
Avg
);
boolMust
.
must
(
eqQuery
);
break
;
case
"neq"
:
boolMust
.
must
(
keyNestedQuery
);
NestedQueryBuilder
neqQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
boolQuery
().
mustNot
(
QueryBuilders
.
termsQuery
(
nestedFieldValue
,
value
)),
ScoreMode
.
Avg
);
boolMust
.
mustNot
(
neqQuery
);
break
;
case
"like"
:
NestedQueryBuilder
likeQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
boolQuery
().
should
(
QueryBuilders
.
wildcardQuery
(
nestedFieldValue
,
"*"
+
value
+
"*"
)),
ScoreMode
.
Avg
);
boolMust
.
must
(
likeQuery
);
break
;
case
"notLike"
:
NestedQueryBuilder
notLikeQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
boolQuery
().
should
(
QueryBuilders
.
wildcardQuery
(
nestedFieldValue
,
"*"
+
value
+
"*"
)),
ScoreMode
.
Avg
);
boolMust
.
mustNot
(
notLikeQuery
);
break
;
case
"gt"
:
NestedQueryBuilder
gtQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
boolQuery
().
must
(
QueryBuilders
.
rangeQuery
(
nestedFieldValue
).
gt
(
Double
.
parseDouble
(
value
.
toString
()))),
ScoreMode
.
Avg
);
boolMust
.
must
(
gtQuery
);
break
;
case
"gte"
:
NestedQueryBuilder
gteQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
boolQuery
().
must
(
QueryBuilders
.
rangeQuery
(
nestedFieldValue
).
gte
(
Double
.
parseDouble
(
value
.
toString
()))),
ScoreMode
.
Avg
);
boolMust
.
must
(
gteQuery
);
break
;
case
"lt"
:
NestedQueryBuilder
ltQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
boolQuery
().
must
(
QueryBuilders
.
rangeQuery
(
nestedFieldValue
).
lt
(
Double
.
parseDouble
(
value
.
toString
()))),
ScoreMode
.
Avg
);
boolMust
.
must
(
ltQuery
);
break
;
case
"lte"
:
NestedQueryBuilder
lteQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
boolQuery
().
must
(
QueryBuilders
.
rangeQuery
(
nestedFieldValue
).
lte
(
Double
.
parseDouble
(
value
.
toString
()))),
ScoreMode
.
Avg
);
boolMust
.
must
(
lteQuery
);
break
;
case
"between"
:
JSONArray
btValues
=
(
JSONArray
)
value
;
NestedQueryBuilder
betweenQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
boolQuery
().
must
(
QueryBuilders
.
rangeQuery
(
nestedFieldValue
).
gte
(
Double
.
parseDouble
(
btValues
.
get
(
0
).
toString
())).
lte
(
Double
.
parseDouble
(
btValues
.
get
(
1
).
toString
()))),
ScoreMode
.
Avg
);
boolMust
.
must
(
betweenQuery
);
break
;
case
"in"
:
JSONArray
inValues
=
(
JSONArray
)
value
;
NestedQueryBuilder
inQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
boolQuery
().
must
(
QueryBuilders
.
termsQuery
(
nestedFieldValue
,
inValues
)),
ScoreMode
.
Avg
);
boolMust
.
must
(
inQuery
);
break
;
case
"notIn"
:
JSONArray
notInValues
=
(
JSONArray
)
value
;
NestedQueryBuilder
notInQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
boolQuery
().
must
(
QueryBuilders
.
termsQuery
(
nestedFieldValue
,
notInValues
)),
ScoreMode
.
Avg
);
boolMust
.
mustNot
(
notInQuery
);
break
;
}
}
public
JSONArray
queryUnitType
()
{
return
UnitTypeEnum
.
getAll
();
}
...
...
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