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
5ce060da
Commit
5ce060da
authored
Aug 16, 2024
by
tianyiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
气瓶下钻页面功能-修改
parent
b3d7dc54
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
80 additions
and
12 deletions
+80
-12
CylinderDPStatisticsServiceImpl.java
...tcs/biz/service/impl/CylinderDPStatisticsServiceImpl.java
+80
-12
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/CylinderDPStatisticsServiceImpl.java
View file @
5ce060da
...
...
@@ -42,6 +42,7 @@ import org.elasticsearch.search.builder.SearchSourceBuilder;
import
org.elasticsearch.search.sort.SortOrder
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
java.io.IOException
;
import
java.math.BigDecimal
;
...
...
@@ -511,21 +512,30 @@ public class CylinderDPStatisticsServiceImpl {
public
Map
<
String
,
Object
>
getFillingSubChart
(
DPFilterParamForDetailDto
dpFilterParamForDetailDto
)
{
List
<
RegionModel
>
regionModels
=
stCommonService
.
setRegionIfRootParentAndNoAccessIf3Level
(
dpFilterParamForDetailDto
.
getCityCode
());
List
<
String
>
xdata
=
stCommonService
.
buildXData
(
regionModels
);
List
<
Long
>
fillingQuantitys
=
new
ArrayList
<>();
List
<
Long
>
offloadingVolumes
=
new
ArrayList
<>();
String
startTime
,
endTime
;
List
<
Double
>
fillingQuantitys
=
new
ArrayList
<>();
List
<
Double
>
offloadingVolumes
=
new
ArrayList
<>();
String
fillingStartTime
,
fillingEndTime
;
if
(
ObjectUtils
.
isEmpty
(
dpFilterParamForDetailDto
.
getTimeSearchOne
().
getBeginDate
()))
{
startTime
=
LocalDate
.
now
().
minusDays
(
29
).
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd"
))
;
endTime
=
LocalDate
.
now
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd"
))
;
fillingStartTime
=
LocalDate
.
now
().
minusDays
(
29
).
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd"
))
+
" 00:00:00"
;
fillingEndTime
=
LocalDate
.
now
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd"
))
+
" 23:59:59"
;
}
else
{
startTime
=
dpFilterParamForDetailDto
.
getTimeSearchOne
().
getBeginDate
()
;
endTime
=
dpFilterParamForDetailDto
.
getTimeSearchOne
().
getBeginDate
()
;
fillingStartTime
=
dpFilterParamForDetailDto
.
getTimeSearchOne
().
getBeginDate
()
+
" 00:00:00"
;
fillingEndTime
=
dpFilterParamForDetailDto
.
getTimeSearchOne
().
getBeginDate
()
+
" 23:59:59"
;
}
String
cylinderVarietyName
=
CylinderTypeEnum
.
of
(
dpFilterParamForDetailDto
.
getTreeValue
()
);
List
<
Map
<
String
,
Object
>>
list
=
getFillingQuantity
(
dpFilterParamForDetailDto
,
fillingStartTime
,
fillingEndTime
);
regionModels
.
forEach
(
r
->
{
long
fillingQuantity
=
cylinderInfoMapper
.
queryFillingRecordByOrgCode
(
r
.
getRegionCode
().
toString
(),
startTime
,
endTime
).
stream
().
map
(
e
->
e
.
getFillingQuantity
()).
collect
(
Collectors
.
toList
()).
stream
().
count
();
long
offloadingVolume
=
cylinderInfoMapper
.
queryoffloadingByOrgCode
(
r
.
getRegionCode
().
toString
(),
startTime
,
endTime
).
stream
().
map
(
e
->
e
.
getOffloadingVolume
()).
collect
(
Collectors
.
toList
()).
stream
().
count
();
//充装量和
List
<
Map
<
String
,
Object
>>
regionCode
=
list
.
stream
().
filter
(
e
->
e
.
get
(
"regionCode"
).
toString
().
contains
(
r
.
getRegionCode
().
toString
())).
collect
(
Collectors
.
toList
());
Double
fillingQuantity
=
0.0d
;
if
(!
CollectionUtils
.
isEmpty
(
regionCode
))
{
fillingQuantity
=
regionCode
.
stream
().
mapToDouble
(
e
->
Double
.
valueOf
(
e
.
get
(
"fillingQuantity"
).
toString
())).
sum
();
}
//卸液量和
String
orgCode
=
stCommonService
.
getAndSetOrgCode
(
r
.
getRegionCode
().
toString
());
List
<
String
>
collect1
=
cylinderInfoMapper
.
queryoffloadingByOrgCode
(
orgCode
,
fillingStartTime
,
fillingEndTime
).
stream
().
map
(
e
->
e
.
getOffloadingVolume
()).
collect
(
Collectors
.
toList
());
Double
offloadingVolume
=
collect1
.
stream
().
mapToDouble
(
Double:
:
valueOf
).
sum
();
fillingQuantitys
.
add
(
fillingQuantity
);
offloadingVolumes
.
add
(
offloadingVolume
);
});
...
...
@@ -548,10 +558,68 @@ public class CylinderDPStatisticsServiceImpl {
result
.
put
(
"fillingQuantity"
,
fillingQuantitys
);
result
.
put
(
"offloadingVolume"
,
offloadingVolumes
);
result
.
put
(
"legendData"
,
legendData
);
return
result
;
}
private
List
<
Map
<
String
,
Object
>>
getFillingQuantity
(
DPFilterParamForDetailDto
dpFilterParamForDetailDto
,
String
fillingStartTime
,
String
fillingEndTime
)
{
SearchRequest
request
=
new
SearchRequest
();
request
.
indices
(
"cylinder_filling"
);
SearchSourceBuilder
builder
=
new
SearchSourceBuilder
();
BoolQueryBuilder
boolMust
=
QueryBuilders
.
boolQuery
();
// 按照管辖机构区域信息模糊查询
boolMust
.
must
(
QueryBuilders
.
wildcardQuery
(
"regionCode"
,
"*"
+
dpFilterParamForDetailDto
.
getCityCode
()
+
"*"
));
//匹配气瓶类型
if
(!
ObjectUtils
.
isEmpty
(
dpFilterParamForDetailDto
.
getTreeValue
())
&&
!
CylinderTypeEnum
.
CYLINDER
.
getCode
().
equals
(
dpFilterParamForDetailDto
.
getTreeValue
()))
{
BoolQueryBuilder
query
=
QueryBuilders
.
boolQuery
();
// 是车用气瓶,进行in查询(特种气瓶包含以下三个)
if
(
CylinderTypeEnum
.
SPECIAL_CYLINDER
.
getCode
().
equals
(
dpFilterParamForDetailDto
.
getTreeValue
()))
{
Collection
<
String
>
collections
=
new
ArrayList
<>();
collections
.
add
(
"缠绕气瓶"
);
collections
.
add
(
"绝热气瓶"
);
collections
.
add
(
"内装填料气瓶"
);
query
.
must
(
QueryBuilders
.
termsQuery
(
"cylinderVarietyName"
,
collections
.
toArray
()));
}
else
{
String
cylinderVarietyName
=
CylinderTypeEnum
.
of
(
dpFilterParamForDetailDto
.
getTreeValue
());
query
.
must
(
QueryBuilders
.
wildcardQuery
(
"cylinderVarietyName"
,
"*"
+
cylinderVarietyName
+
"*"
));
}
boolMust
.
must
(
query
);
}
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
DateUtils
.
DATE_TIME_PATTERN
);
//充装时间
if
(!
ObjectUtils
.
isEmpty
(
fillingStartTime
)
&&
!
ObjectUtils
.
isEmpty
(
fillingStartTime
)
)
{
BoolQueryBuilder
query
=
QueryBuilders
.
boolQuery
();
try
{
query
.
must
(
QueryBuilders
.
rangeQuery
(
"inspectionDateMs"
).
gte
(
sdf
.
parse
(
fillingStartTime
).
getTime
()));
query
.
must
(
QueryBuilders
.
rangeQuery
(
"inspectionDateAfterMS"
).
lte
(
sdf
.
parse
(
fillingEndTime
).
getTime
()));
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
boolMust
.
must
(
query
);
}
builder
.
query
(
boolMust
);
builder
.
sort
(
"inspectionDateMs"
,
SortOrder
.
DESC
);
builder
.
sort
(
"sequenceNbr"
,
SortOrder
.
DESC
);
builder
.
trackTotalHits
(
true
);
request
.
source
(
builder
);
List
<
Map
<
String
,
Object
>>
list
=
new
LinkedList
<>();
try
{
SearchResponse
response
=
restHighLevelClient
.
search
(
request
,
RequestOptions
.
DEFAULT
);
for
(
org
.
elasticsearch
.
search
.
SearchHit
hit
:
response
.
getHits
())
{
JSONObject
jsonObject
=
(
JSONObject
)
JSONObject
.
toJSON
(
hit
);
Map
<
String
,
Object
>
map
=
JSONObject
.
toJavaObject
(
jsonObject
.
getJSONObject
(
"sourceAsMap"
),
Map
.
class
);
list
.
add
(
map
);
}
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
return
list
;
}
public
Page
<
ESCylinderFillingRecordDto
>
getFillingSubPage
(
DPFilterParamForDetailDto
dpFilterParamForDetailDto
)
{
int
current
=
dpFilterParamForDetailDto
.
getCurrent
();
int
pageSize
=
dpFilterParamForDetailDto
.
getSize
();
...
...
@@ -583,7 +651,7 @@ public class CylinderDPStatisticsServiceImpl {
}
//匹配气瓶类型
if
(
ObjectUtils
.
isEmpty
(
dpFilterParamForDetailDto
.
getTreeValue
())
&&
!
CylinderTypeEnum
.
CYLINDER
.
getCode
().
equals
(
dpFilterParamForDetailDto
.
getTreeValue
()))
{
if
(
!
ObjectUtils
.
isEmpty
(
dpFilterParamForDetailDto
.
getTreeValue
())
&&
!
CylinderTypeEnum
.
CYLINDER
.
getCode
().
equals
(
dpFilterParamForDetailDto
.
getTreeValue
()))
{
flag
=
false
;
BoolQueryBuilder
query
=
QueryBuilders
.
boolQuery
();
// 是车用气瓶,进行in查询(特种气瓶包含以下三个)
...
...
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