Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
B
bill-platform
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵啸非
bill-platform
Commits
525b5555
Commit
525b5555
authored
Jul 24, 2024
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改排队统计更新与组合查询
parent
a2502573
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
216 additions
and
188 deletions
+216
-188
bill-manager/src/main/java/com/mortals/xhx/module/ph/service/impl/PhQueueStatServiceImpl.java
...ls/xhx/module/ph/service/impl/PhQueueStatServiceImpl.java
+216
-188
No files found.
bill-manager/src/main/java/com/mortals/xhx/module/ph/service/impl/PhQueueStatServiceImpl.java
View file @
525b5555
...
...
@@ -72,202 +72,240 @@ public class PhQueueStatServiceImpl extends AbstractCRUDServiceImpl<PhQueueStatD
updateSiteBussinessPhCount
(
currentDate
,
entity
,
phQueueEntities
);
//窗口
updateSiteWindowPhCount
(
currentDate
,
entity
,
phQueueEntities
);
//平均等待时间
//组合条件更新
updateSiteConditionPhCount
(
entity
,
phQueueEntities
);
return
Rest
.
ok
();
}
private
void
updateSitePhCount
(
PhQueueStatEntity
entity
,
List
<
PhQueueEntity
>
phQueueEntities
)
{
PhQueueStatQuery
phQueueStatQuery
=
new
PhQueueStatQuery
();
PhQueueStatEntity
phQueueStatEntity
=
this
.
selectOne
(
phQueueStatQuery
.
siteId
(
entity
.
getSiteId
())
.
year
(
entity
.
getYear
())
.
month
(
entity
.
getMonth
())
.
day
(
entity
.
getDay
()));
Double
intAvg
=
phQueueEntities
.
stream
().
mapToInt
(
e
->
e
.
getWaitTime
()).
average
().
orElse
(
0
D
);
PhQueueStatQuery
phQueueStatQuery
=
getPhQueueStatQuery
(
entity
);
Double
intAvg
=
phQueueEntities
.
parallelStream
().
mapToInt
(
e
->
e
.
getWaitTime
()).
average
().
orElse
(
0
D
);
PhQueueStatEntity
phQueueStatEntity
=
getPhQueueStatEntity
(
entity
,
phQueueEntities
,
intAvg
,
phQueueStatQuery
);
if
(
ObjectUtils
.
isEmpty
(
phQueueStatEntity
))
{
if
(
phQueueStatEntity
.
newEntity
(
))
{
//统计当前站点新增所有评价数量
phQueueStatEntity
=
new
PhQueueStatEntity
();
phQueueStatEntity
.
initAttrValue
();
phQueueStatEntity
.
setSiteId
(
entity
.
getSiteId
());
phQueueStatEntity
.
setSiteCode
(
entity
.
getSiteCode
());
phQueueStatEntity
.
setSiteName
(
entity
.
getSiteName
());
phQueueStatEntity
.
setPhCount
(
phQueueEntities
.
size
());
//计算平均等待时间
phQueueStatEntity
.
setWaitTime
(
intAvg
.
intValue
());
phQueueStatEntity
.
setYear
(
entity
.
getYear
());
phQueueStatEntity
.
setMonth
(
entity
.
getMonth
());
phQueueStatEntity
.
setDay
(
entity
.
getDay
());
phQueueStatEntity
.
setCreateTime
(
new
Date
());
phQueueStatEntity
.
setCreateUserId
(
1L
);
this
.
save
(
phQueueStatEntity
);
}
else
{
phQueueStatEntity
.
setPhCount
(
phQueueEntities
.
size
());
phQueueStatEntity
.
setWaitTime
(
intAvg
.
intValue
());
phQueueStatEntity
.
setYear
(
entity
.
getYear
());
phQueueStatEntity
.
setMonth
(
entity
.
getMonth
());
phQueueStatEntity
.
setDay
(
entity
.
getDay
());
phQueueStatEntity
.
setUpdateTime
(
new
Date
());
phQueueStatEntity
.
setUpdateUserId
(
1L
);
this
.
update
(
phQueueStatEntity
);
}
}
private
void
updateSiteSectionNamePhCount
(
String
currentDate
,
PhQueueStatEntity
entity
,
List
<
PhQueueEntity
>
phQueueEntities
)
{
Map
<
String
,
List
<
PhQueueEntity
>>
collect
=
phQueueEntities
.
stream
().
collect
(
Collectors
.
groupingBy
(
x
->
x
.
getSectionName
()));
collect
.
entrySet
().
stream
().
forEach
(
item
->
{
Map
<
String
,
List
<
PhQueueEntity
>>
collect
=
phQueueEntities
.
parallelStream
().
collect
(
Collectors
.
groupingBy
(
x
->
x
.
getSectionName
()));
List
<
PhQueueStatEntity
>
saveAndUpdatelist
=
collect
.
entrySet
().
parallelStream
().
map
(
item
->
{
String
sectionName
=
item
.
getKey
();
if
(
ObjectUtils
.
isEmpty
(
sectionName
))
return
;
if
(
ObjectUtils
.
isEmpty
(
sectionName
))
return
null
;
List
<
PhQueueEntity
>
value
=
item
.
getValue
();
Double
intAvg
=
value
.
stream
().
mapToInt
(
e
->
e
.
getWaitTime
()).
average
().
orElse
(
0
D
);
log
.
info
(
"更新站点排队统计数据,站点名称:{},日期:{},部门:{},排队数量:{}"
,
entity
.
getSiteName
(),
currentDate
,
sectionName
,
phQueueEntities
.
size
());
PhQueueStatEntity
phQueueStatEntity
=
this
.
selectOne
(
new
PhQueueStatQuery
()
.
siteId
(
entity
.
getSiteId
())
.
sectionName
(
sectionName
)
.
year
(
entity
.
getYear
())
.
month
(
entity
.
getMonth
())
.
day
(
entity
.
getDay
()));
if
(
ObjectUtils
.
isEmpty
(
phQueueStatEntity
))
{
//统计当前站点新增所有评价数量
phQueueStatEntity
=
new
PhQueueStatEntity
();
phQueueStatEntity
.
initAttrValue
();
phQueueStatEntity
.
setSiteId
(
entity
.
getSiteId
());
phQueueStatEntity
.
setSiteCode
(
entity
.
getSiteCode
());
phQueueStatEntity
.
setSiteName
(
entity
.
getSiteName
());
Double
intAvg
=
value
.
parallelStream
().
mapToInt
(
e
->
e
.
getWaitTime
()).
average
().
orElse
(
0
D
);
// log.info("更新站点排队统计数据,站点名称:{},日期:{},部门:{},排队数量:{}", entity.getSiteName(), currentDate,sectionName, phQueueEntities.size());
PhQueueStatQuery
phQueueStatQuery
=
getPhQueueStatQuery
(
entity
);
phQueueStatQuery
.
setSectionName
(
sectionName
);
PhQueueStatEntity
phQueueStatEntity
=
getPhQueueStatEntity
(
entity
,
value
,
intAvg
,
phQueueStatQuery
);
phQueueStatEntity
.
setSectionName
(
sectionName
);
phQueueStatEntity
.
setPhCount
(
value
.
size
());
phQueueStatEntity
.
setWaitTime
(
intAvg
.
intValue
());
phQueueStatEntity
.
setYear
(
entity
.
getYear
());
phQueueStatEntity
.
setMonth
(
entity
.
getMonth
());
phQueueStatEntity
.
setDay
(
entity
.
getDay
());
phQueueStatEntity
.
setCreateTime
(
new
Date
());
phQueueStatEntity
.
setCreateUserId
(
1L
);
this
.
save
(
phQueueStatEntity
);
}
else
{
phQueueStatEntity
.
setPhCount
(
value
.
size
());
phQueueStatEntity
.
setWaitTime
(
intAvg
.
intValue
());
phQueueStatEntity
.
setYear
(
entity
.
getYear
());
phQueueStatEntity
.
setMonth
(
entity
.
getMonth
());
phQueueStatEntity
.
setDay
(
entity
.
getDay
());
phQueueStatEntity
.
setUpdateTime
(
new
Date
());
phQueueStatEntity
.
setUpdateUserId
(
1L
);
this
.
update
(
phQueueStatEntity
);
}
});
}
return
phQueueStatEntity
;
}).
filter
(
f
->
f
!=
null
).
collect
(
Collectors
.
toList
());
saveUpdatePhqueueStatList
(
saveAndUpdatelist
);
}
private
void
updateSiteHallPhCount
(
String
currentDate
,
PhQueueStatEntity
entity
,
List
<
PhQueueEntity
>
phQueueEntities
)
{
Map
<
String
,
List
<
PhQueueEntity
>>
collect
=
phQueueEntities
.
s
tream
().
collect
(
Collectors
.
groupingBy
(
x
->
x
.
getHallName
()));
collect
.
entrySet
().
stream
().
forEach
(
item
->
{
Map
<
String
,
List
<
PhQueueEntity
>>
collect
=
phQueueEntities
.
parallelS
tream
().
collect
(
Collectors
.
groupingBy
(
x
->
x
.
getHallName
()));
List
<
PhQueueStatEntity
>
saveAndUpdatelist
=
collect
.
entrySet
().
parallelStream
().
map
(
item
->
{
String
hallName
=
item
.
getKey
();
if
(
ObjectUtils
.
isEmpty
(
hallName
))
return
;
if
(
ObjectUtils
.
isEmpty
(
hallName
))
return
null
;
List
<
PhQueueEntity
>
value
=
item
.
getValue
();
Double
intAvg
=
value
.
stream
().
mapToInt
(
e
->
e
.
getWaitTime
()).
average
().
orElse
(
0
D
);
log
.
info
(
"更新站点排队统计数据,站点名称:{},日期:{},大厅:{},排队数量:{}"
,
entity
.
getSiteName
(),
currentDate
,
hallName
,
phQueueEntities
.
size
());
PhQueueStatEntity
phQueueStatEntity
=
this
.
selectOne
(
new
PhQueueStatQuery
()
.
siteId
(
entity
.
getSiteId
())
.
hallName
(
hallName
)
.
year
(
entity
.
getYear
())
.
month
(
entity
.
getMonth
())
.
day
(
entity
.
getDay
()));
if
(
ObjectUtils
.
isEmpty
(
phQueueStatEntity
))
{
//统计当前站点新增所有评价数量
phQueueStatEntity
=
new
PhQueueStatEntity
();
phQueueStatEntity
.
initAttrValue
();
phQueueStatEntity
.
setSiteId
(
entity
.
getSiteId
());
phQueueStatEntity
.
setSiteCode
(
entity
.
getSiteCode
());
phQueueStatEntity
.
setSiteName
(
entity
.
getSiteName
());
Double
intAvg
=
value
.
parallelStream
().
mapToInt
(
e
->
e
.
getWaitTime
()).
average
().
orElse
(
0
D
);
//log.info("更新站点排队统计数据,站点名称:{},日期:{},大厅:{},排队数量:{}", entity.getSiteName(), currentDate, hallName, phQueueEntities.size());
PhQueueStatQuery
phQueueStatQuery
=
getPhQueueStatQuery
(
entity
);
phQueueStatQuery
.
setHallName
(
hallName
);
PhQueueStatEntity
phQueueStatEntity
=
getPhQueueStatEntity
(
entity
,
value
,
intAvg
,
phQueueStatQuery
);
phQueueStatEntity
.
setHallName
(
hallName
);
phQueueStatEntity
.
setPhCount
(
value
.
size
());
phQueueStatEntity
.
setWaitTime
(
intAvg
.
intValue
());
phQueueStatEntity
.
setYear
(
entity
.
getYear
());
phQueueStatEntity
.
setMonth
(
entity
.
getMonth
());
phQueueStatEntity
.
setDay
(
entity
.
getDay
());
phQueueStatEntity
.
setCreateTime
(
new
Date
());
phQueueStatEntity
.
setCreateUserId
(
1L
);
this
.
save
(
phQueueStatEntity
);
}
else
{
phQueueStatEntity
.
setPhCount
(
value
.
size
());
phQueueStatEntity
.
setWaitTime
(
intAvg
.
intValue
());
phQueueStatEntity
.
setYear
(
entity
.
getYear
());
phQueueStatEntity
.
setMonth
(
entity
.
getMonth
());
phQueueStatEntity
.
setDay
(
entity
.
getDay
());
phQueueStatEntity
.
setUpdateTime
(
new
Date
());
phQueueStatEntity
.
setUpdateUserId
(
1L
);
this
.
update
(
phQueueStatEntity
);
}
});
return
phQueueStatEntity
;
}).
filter
(
f
->
f
!=
null
).
collect
(
Collectors
.
toList
());
saveUpdatePhqueueStatList
(
saveAndUpdatelist
);
}
private
void
updateSiteBussinessPhCount
(
String
currentDate
,
PhQueueStatEntity
entity
,
List
<
PhQueueEntity
>
phQueueEntities
)
{
Map
<
String
,
List
<
PhQueueEntity
>>
collect
=
phQueueEntities
.
stream
().
collect
(
Collectors
.
groupingBy
(
x
->
x
.
getBusiness
()));
collect
.
entrySet
().
stream
().
forEach
(
item
->
{
Map
<
String
,
List
<
PhQueueEntity
>>
collect
=
phQueueEntities
.
parallelStream
().
collect
(
Collectors
.
groupingBy
(
x
->
x
.
getBusiness
()));
List
<
PhQueueStatEntity
>
saveAndUpdatelist
=
collect
.
entrySet
().
parallelStream
().
map
(
item
->
{
String
bussiness
=
item
.
getKey
();
if
(
ObjectUtils
.
isEmpty
(
bussiness
))
return
;
if
(
ObjectUtils
.
isEmpty
(
bussiness
))
return
null
;
List
<
PhQueueEntity
>
value
=
item
.
getValue
();
Double
intAvg
=
value
.
stream
().
mapToInt
(
e
->
e
.
getWaitTime
()).
average
().
orElse
(
0
D
);
log
.
info
(
"更新站点排队统计数据,站点名称:{},日期:{},业务:{},排队数量:{}"
,
entity
.
getSiteName
(),
currentDate
,
bussiness
,
phQueueEntities
.
size
());
PhQueueStatEntity
phQueueStatEntity
=
this
.
selectOne
(
new
PhQueueStatQuery
()
.
siteId
(
entity
.
getSiteId
())
.
business
(
bussiness
)
.
year
(
entity
.
getYear
())
.
month
(
entity
.
getMonth
())
.
day
(
entity
.
getDay
()));
if
(
ObjectUtils
.
isEmpty
(
phQueueStatEntity
))
{
//统计当前站点新增所有评价数量
phQueueStatEntity
=
new
PhQueueStatEntity
();
phQueueStatEntity
.
initAttrValue
();
phQueueStatEntity
.
setSiteId
(
entity
.
getSiteId
());
phQueueStatEntity
.
setSiteCode
(
entity
.
getSiteCode
());
phQueueStatEntity
.
setSiteName
(
entity
.
getSiteName
());
Double
intAvg
=
value
.
parallelStream
().
mapToInt
(
e
->
e
.
getWaitTime
()).
average
().
orElse
(
0
D
);
// log.info("更新站点排队统计数据,站点名称:{},日期:{},业务:{},排队数量:{}", entity.getSiteName(), currentDate, bussiness, phQueueEntities.size());
PhQueueStatQuery
phQueueStatQuery
=
getPhQueueStatQuery
(
entity
);
phQueueStatQuery
.
setBusiness
(
bussiness
);
PhQueueStatEntity
phQueueStatEntity
=
getPhQueueStatEntity
(
entity
,
value
,
intAvg
,
phQueueStatQuery
);
phQueueStatEntity
.
setBusiness
(
bussiness
);
phQueueStatEntity
.
setPhCount
(
value
.
size
());
phQueueStatEntity
.
setWaitTime
(
intAvg
.
intValue
());
phQueueStatEntity
.
setYear
(
entity
.
getYear
());
phQueueStatEntity
.
setMonth
(
entity
.
getMonth
());
phQueueStatEntity
.
setDay
(
entity
.
getDay
());
phQueueStatEntity
.
setCreateTime
(
new
Date
());
phQueueStatEntity
.
setCreateUserId
(
1L
);
this
.
save
(
phQueueStatEntity
);
}
else
{
phQueueStatEntity
.
setPhCount
(
value
.
size
());
phQueueStatEntity
.
setWaitTime
(
intAvg
.
intValue
());
phQueueStatEntity
.
setYear
(
entity
.
getYear
());
phQueueStatEntity
.
setMonth
(
entity
.
getMonth
());
phQueueStatEntity
.
setDay
(
entity
.
getDay
());
phQueueStatEntity
.
setUpdateTime
(
new
Date
());
phQueueStatEntity
.
setUpdateUserId
(
1L
);
this
.
update
(
phQueueStatEntity
);
}
});
return
phQueueStatEntity
;
}).
filter
(
f
->
f
!=
null
).
collect
(
Collectors
.
toList
());
saveUpdatePhqueueStatList
(
saveAndUpdatelist
);
}
private
void
updateSiteWindowPhCount
(
String
currentDate
,
PhQueueStatEntity
entity
,
List
<
PhQueueEntity
>
phQueueEntities
)
{
Map
<
String
,
List
<
PhQueueEntity
>>
collect
=
phQueueEntities
.
s
tream
().
collect
(
Collectors
.
groupingBy
(
x
->
x
.
getWindowFromnum
()));
collect
.
entrySet
().
stream
().
forEach
(
item
->
{
Map
<
String
,
List
<
PhQueueEntity
>>
collect
=
phQueueEntities
.
parallelS
tream
().
collect
(
Collectors
.
groupingBy
(
x
->
x
.
getWindowFromnum
()));
List
<
PhQueueStatEntity
>
saveAndUpdatelist
=
collect
.
entrySet
().
parallelStream
().
map
(
item
->
{
String
window
=
item
.
getKey
();
if
(
ObjectUtils
.
isEmpty
(
window
))
return
;
if
(
ObjectUtils
.
isEmpty
(
window
))
return
null
;
List
<
PhQueueEntity
>
value
=
item
.
getValue
();
Double
intAvg
=
value
.
s
tream
().
mapToInt
(
e
->
e
.
getWaitTime
()).
average
().
orElse
(
0
D
);
Double
intAvg
=
value
.
parallelS
tream
().
mapToInt
(
e
->
e
.
getWaitTime
()).
average
().
orElse
(
0
D
);
// log.info("更新站点排队统计数据,站点名称:{},日期:{},窗口:{},排队数量:{}", entity.getSiteName(), currentDate,window, phQueueEntities.size());
PhQueueStatEntity
phQueueStatEntity
=
this
.
selectOne
(
new
PhQueueStatQuery
()
.
siteId
(
entity
.
getSiteId
())
.
windowFromnum
(
window
)
PhQueueStatQuery
phQueueStatQuery
=
getPhQueueStatQuery
(
entity
);
phQueueStatQuery
.
setWindowFromnum
(
window
);
PhQueueStatEntity
phQueueStatEntity
=
getPhQueueStatEntity
(
entity
,
value
,
intAvg
,
phQueueStatQuery
);
phQueueStatEntity
.
setWindowFromnum
(
window
);
return
phQueueStatEntity
;
}).
filter
(
f
->
f
!=
null
).
collect
(
Collectors
.
toList
());
saveUpdatePhqueueStatList
(
saveAndUpdatelist
);
}
@Override
public
Result
<
PhQueueStatEntity
>
find
(
PhQueueStatEntity
entity
,
PageInfo
pageInfo
,
Context
context
)
throws
AppException
{
Result
<
PhQueueStatEntity
>
result
=
new
Result
<>();
PhQueueStatQuery
query
=
new
PhQueueStatQuery
();
BeanUtils
.
copyProperties
(
entity
,
query
,
BeanUtil
.
getNullPropertyNames
(
entity
));
List
<
PhQueueStatEntity
>
billInfos
=
this
.
getBillInfos
(
query
,
pageInfo
,
context
);
result
.
setList
(
billInfos
);
result
.
setPageInfo
(
pageInfo
);
return
result
;
}
@Override
public
List
<
PhQueueStatEntity
>
getBillInfos
(
PhQueueStatQuery
query
,
PageInfo
pageInfo
,
Context
context
)
{
if
(!
ObjectUtils
.
isEmpty
(
query
.
getGroupList
()))
{
//针对groupList分组 进行排序
if
(
query
.
getGroupList
().
contains
(
"year"
)
&&
query
.
getGroupList
().
contains
(
"month"
)
&&
query
.
getGroupList
().
contains
(
"day"
))
{
query
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"year"
,
OrderCol
.
DESCENDING
),
new
OrderCol
(
"month"
,
OrderCol
.
DESCENDING
),
new
OrderCol
(
"day"
,
OrderCol
.
DESCENDING
)));
}
else
if
(
query
.
getGroupList
().
contains
(
"year"
)
&&
query
.
getGroupList
().
contains
(
"month"
))
{
query
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"year"
,
OrderCol
.
DESCENDING
),
new
OrderCol
(
"month"
,
OrderCol
.
DESCENDING
)));
}
else
if
(
query
.
getGroupList
().
contains
(
"year"
))
{
query
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"year"
,
OrderCol
.
DESCENDING
)));
}
}
return
this
.
getDao
().
getStatList
(
query
,
pageInfo
);
}
private
void
updateSiteConditionPhCount
(
PhQueueStatEntity
entity
,
List
<
PhQueueEntity
>
phQueueEntities
)
{
//业务+部门 busniess+sectionName
updateBusinessAndSectionName
(
entity
,
phQueueEntities
);
//业务+窗口 busniess+WindowFromnum
updateBusinessAndWindowFromnum
(
entity
,
phQueueEntities
);
//部门+窗口 sectionName+WindowFromnum
updateSectionNameAndWindowFromnum
(
entity
,
phQueueEntities
);
//业务+部门+窗口 busniess+sectionName+WindowFromnum
updateBusinessAndSectionNameAndWindow
(
entity
,
phQueueEntities
);
}
private
void
updateBusinessAndSectionName
(
PhQueueStatEntity
entity
,
List
<
PhQueueEntity
>
phQueueEntities
)
{
Map
<
String
,
List
<
PhQueueEntity
>>
businessAndSectionCollect
=
phQueueEntities
.
parallelStream
()
.
collect
(
Collectors
.
groupingBy
(
x
->
x
.
getBusiness
()
+
"&"
+
x
.
getSectionName
()));
List
<
PhQueueStatEntity
>
saveAndUpdatelist
=
businessAndSectionCollect
.
entrySet
().
parallelStream
().
map
(
item
->
{
String
vals
=
item
.
getKey
();
String
[]
split
=
vals
.
split
(
"&"
);
if
(
ObjectUtils
.
isEmpty
(
split
[
0
])||
ObjectUtils
.
isEmpty
(
split
[
1
]))
return
null
;
Double
intAvg
=
item
.
getValue
().
parallelStream
().
mapToInt
(
e
->
e
.
getWaitTime
()).
average
().
orElse
(
0
D
);
// log.info("更新站点排队统计数据,站点名称:{},日期:{},窗口:{},排队数量:{}", entity.getSiteName(), currentDate,window, phQueueEntities.size());
PhQueueStatQuery
phQueueStatQuery
=
getPhQueueStatQuery
(
entity
);
phQueueStatQuery
.
setBusiness
(
split
[
0
]);
phQueueStatQuery
.
setSectionName
(
split
[
1
]);
PhQueueStatEntity
phQueueStatEntity
=
getPhQueueStatEntity
(
entity
,
item
.
getValue
(),
intAvg
,
phQueueStatQuery
);
phQueueStatEntity
.
setBusiness
(
split
[
0
]);
phQueueStatEntity
.
setSectionName
(
split
[
1
]);
return
phQueueStatEntity
;
}).
filter
(
f
->
f
!=
null
).
collect
(
Collectors
.
toList
());
saveUpdatePhqueueStatList
(
saveAndUpdatelist
);
}
private
void
updateBusinessAndWindowFromnum
(
PhQueueStatEntity
entity
,
List
<
PhQueueEntity
>
phQueueEntities
)
{
Map
<
String
,
List
<
PhQueueEntity
>>
businessAndSectionCollect
=
phQueueEntities
.
parallelStream
()
.
collect
(
Collectors
.
groupingBy
(
x
->
x
.
getBusiness
()
+
"&"
+
x
.
getWindowFromnum
()));
List
<
PhQueueStatEntity
>
saveAndUpdatelist
=
businessAndSectionCollect
.
entrySet
().
parallelStream
().
map
(
item
->
{
String
vals
=
item
.
getKey
();
String
[]
split
=
vals
.
split
(
"&"
);
if
(
ObjectUtils
.
isEmpty
(
split
[
0
])||
ObjectUtils
.
isEmpty
(
split
[
1
]))
return
null
;
Double
intAvg
=
item
.
getValue
().
parallelStream
().
mapToInt
(
e
->
e
.
getWaitTime
()).
average
().
orElse
(
0
D
);
// log.info("更新站点排队统计数据,站点名称:{},日期:{},窗口:{},排队数量:{}", entity.getSiteName(), currentDate,window, phQueueEntities.size());
PhQueueStatQuery
phQueueStatQuery
=
getPhQueueStatQuery
(
entity
);
phQueueStatQuery
.
setBusiness
(
split
[
0
]);
phQueueStatQuery
.
setWindowFromnum
(
split
[
1
]);
PhQueueStatEntity
phQueueStatEntity
=
getPhQueueStatEntity
(
entity
,
item
.
getValue
(),
intAvg
,
phQueueStatQuery
);
phQueueStatEntity
.
setBusiness
(
split
[
0
]);
phQueueStatEntity
.
setWindowFromnum
(
split
[
1
]);
return
phQueueStatEntity
;
}).
filter
(
f
->
f
!=
null
).
collect
(
Collectors
.
toList
());
saveUpdatePhqueueStatList
(
saveAndUpdatelist
);
}
private
void
updateSectionNameAndWindowFromnum
(
PhQueueStatEntity
entity
,
List
<
PhQueueEntity
>
phQueueEntities
)
{
Map
<
String
,
List
<
PhQueueEntity
>>
businessAndSectionCollect
=
phQueueEntities
.
parallelStream
()
.
collect
(
Collectors
.
groupingBy
(
x
->
x
.
getSectionName
()
+
"&"
+
x
.
getWindowFromnum
()));
List
<
PhQueueStatEntity
>
saveAndUpdatelist
=
businessAndSectionCollect
.
entrySet
().
parallelStream
().
map
(
item
->
{
String
vals
=
item
.
getKey
();
String
[]
split
=
vals
.
split
(
"&"
);
if
(
ObjectUtils
.
isEmpty
(
split
[
0
])||
ObjectUtils
.
isEmpty
(
split
[
1
]))
return
null
;
Double
intAvg
=
item
.
getValue
().
parallelStream
().
mapToInt
(
e
->
e
.
getWaitTime
()).
average
().
orElse
(
0
D
);
// log.info("更新站点排队统计数据,站点名称:{},日期:{},窗口:{},排队数量:{}", entity.getSiteName(), currentDate,window, phQueueEntities.size());
PhQueueStatQuery
phQueueStatQuery
=
getPhQueueStatQuery
(
entity
);
phQueueStatQuery
.
setSectionName
(
split
[
0
]);
phQueueStatQuery
.
setWindowFromnum
(
split
[
1
]);
PhQueueStatEntity
phQueueStatEntity
=
getPhQueueStatEntity
(
entity
,
item
.
getValue
(),
intAvg
,
phQueueStatQuery
);
phQueueStatEntity
.
setSectionName
(
split
[
0
]);
phQueueStatEntity
.
setWindowFromnum
(
split
[
1
]);
return
phQueueStatEntity
;
}).
filter
(
f
->
f
!=
null
).
collect
(
Collectors
.
toList
());
saveUpdatePhqueueStatList
(
saveAndUpdatelist
);
}
private
void
updateBusinessAndSectionNameAndWindow
(
PhQueueStatEntity
entity
,
List
<
PhQueueEntity
>
phQueueEntities
)
{
Map
<
String
,
List
<
PhQueueEntity
>>
businessAndSectionCollect
=
phQueueEntities
.
parallelStream
()
.
collect
(
Collectors
.
groupingBy
(
x
->
x
.
getBusiness
()
+
"&"
+
x
.
getSectionName
()+
"&"
+
x
.
getWindowFromnum
()));
List
<
PhQueueStatEntity
>
saveAndUpdatelist
=
businessAndSectionCollect
.
entrySet
().
parallelStream
().
map
(
item
->
{
String
vals
=
item
.
getKey
();
String
[]
split
=
vals
.
split
(
"&"
);
if
(
ObjectUtils
.
isEmpty
(
split
[
0
])||
ObjectUtils
.
isEmpty
(
split
[
1
])||
ObjectUtils
.
isEmpty
(
split
[
2
]))
return
null
;
Double
intAvg
=
item
.
getValue
().
parallelStream
().
mapToInt
(
e
->
e
.
getWaitTime
()).
average
().
orElse
(
0
D
);
// log.info("更新站点排队统计数据,站点名称:{},日期:{},窗口:{},排队数量:{}", entity.getSiteName(), currentDate,window, phQueueEntities.size());
PhQueueStatQuery
phQueueStatQuery
=
getPhQueueStatQuery
(
entity
);
phQueueStatQuery
.
setBusiness
(
split
[
0
]);
phQueueStatQuery
.
setSectionName
(
split
[
1
]);
phQueueStatQuery
.
setWindowFromnum
(
split
[
2
]);
PhQueueStatEntity
phQueueStatEntity
=
getPhQueueStatEntity
(
entity
,
item
.
getValue
(),
intAvg
,
phQueueStatQuery
);
phQueueStatEntity
.
setBusiness
(
split
[
0
]);
phQueueStatEntity
.
setSectionName
(
split
[
1
]);
phQueueStatEntity
.
setWindowFromnum
(
split
[
2
]);
return
phQueueStatEntity
;
}).
filter
(
f
->
f
!=
null
).
collect
(
Collectors
.
toList
());
saveUpdatePhqueueStatList
(
saveAndUpdatelist
);
}
private
static
PhQueueStatQuery
getPhQueueStatQuery
(
PhQueueStatEntity
entity
)
{
PhQueueStatQuery
phQueueStatQuery
=
new
PhQueueStatQuery
().
siteId
(
entity
.
getSiteId
())
.
year
(
entity
.
getYear
())
.
month
(
entity
.
getMonth
())
.
day
(
entity
.
getDay
()));
.
day
(
entity
.
getDay
());
return
phQueueStatQuery
;
}
private
PhQueueStatEntity
getPhQueueStatEntity
(
PhQueueStatEntity
entity
,
List
<
PhQueueEntity
>
value
,
Double
intAvg
,
PhQueueStatQuery
phQueueStatQuery
)
{
PhQueueStatEntity
phQueueStatEntity
=
this
.
selectOne
(
phQueueStatQuery
);
if
(
ObjectUtils
.
isEmpty
(
phQueueStatEntity
))
{
//统计当前站点新增所有评价数量
phQueueStatEntity
=
new
PhQueueStatEntity
();
...
...
@@ -275,7 +313,6 @@ public class PhQueueStatServiceImpl extends AbstractCRUDServiceImpl<PhQueueStatD
phQueueStatEntity
.
setSiteId
(
entity
.
getSiteId
());
phQueueStatEntity
.
setSiteCode
(
entity
.
getSiteCode
());
phQueueStatEntity
.
setSiteName
(
entity
.
getSiteName
());
phQueueStatEntity
.
setWindowFromnum
(
window
);
phQueueStatEntity
.
setPhCount
(
value
.
size
());
phQueueStatEntity
.
setWaitTime
(
intAvg
.
intValue
());
phQueueStatEntity
.
setYear
(
entity
.
getYear
());
...
...
@@ -283,7 +320,6 @@ public class PhQueueStatServiceImpl extends AbstractCRUDServiceImpl<PhQueueStatD
phQueueStatEntity
.
setDay
(
entity
.
getDay
());
phQueueStatEntity
.
setCreateTime
(
new
Date
());
phQueueStatEntity
.
setCreateUserId
(
1L
);
this
.
save
(
phQueueStatEntity
);
}
else
{
phQueueStatEntity
.
setPhCount
(
value
.
size
());
phQueueStatEntity
.
setWaitTime
(
intAvg
.
intValue
());
...
...
@@ -292,37 +328,29 @@ public class PhQueueStatServiceImpl extends AbstractCRUDServiceImpl<PhQueueStatD
phQueueStatEntity
.
setDay
(
entity
.
getDay
());
phQueueStatEntity
.
setUpdateTime
(
new
Date
());
phQueueStatEntity
.
setUpdateUserId
(
1L
);
this
.
update
(
phQueueStatEntity
);
}
})
;
return
phQueueStatEntity
;
}
@Override
public
Result
<
PhQueueStatEntity
>
find
(
PhQueueStatEntity
entity
,
PageInfo
pageInfo
,
Context
context
)
throws
AppException
{
Result
<
PhQueueStatEntity
>
result
=
new
Result
<>();
PhQueueStatQuery
query
=
new
PhQueueStatQuery
();
BeanUtils
.
copyProperties
(
entity
,
query
,
BeanUtil
.
getNullPropertyNames
(
entity
));
List
<
PhQueueStatEntity
>
billInfos
=
this
.
getBillInfos
(
query
,
pageInfo
,
context
);
result
.
setList
(
billInfos
);
result
.
setPageInfo
(
pageInfo
);
return
result
;
private
void
saveUpdatePhqueueStatList
(
List
<
PhQueueStatEntity
>
saveAndUpdatelist
)
{
if
(!
ObjectUtils
.
isEmpty
(
saveAndUpdatelist
))
{
Map
<
Boolean
,
List
<
PhQueueStatEntity
>>
saveUpdateCollect
=
saveAndUpdatelist
.
parallelStream
().
collect
(
Collectors
.
partitioningBy
(
i
->
i
.
newEntity
()));
if
(!
ObjectUtils
.
isEmpty
(
saveUpdateCollect
.
get
(
true
)))
{
//新增列表
log
.
info
(
"更新站点排队部门统计数据,数量:{}"
,
saveUpdateCollect
.
get
(
true
).
size
());
this
.
update
(
saveUpdateCollect
.
get
(
true
));
}
@Override
public
List
<
PhQueueStatEntity
>
getBillInfos
(
PhQueueStatQuery
query
,
PageInfo
pageInfo
,
Context
context
)
{
if
(!
ObjectUtils
.
isEmpty
(
query
.
getGroupList
()))
{
//针对groupList分组 进行排序
if
(
query
.
getGroupList
().
contains
(
"year"
)
&&
query
.
getGroupList
().
contains
(
"month"
)
&&
query
.
getGroupList
().
contains
(
"day"
))
{
query
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"year"
,
OrderCol
.
DESCENDING
),
new
OrderCol
(
"month"
,
OrderCol
.
DESCENDING
),
new
OrderCol
(
"day"
,
OrderCol
.
DESCENDING
)));
}
else
if
(
query
.
getGroupList
().
contains
(
"year"
)
&&
query
.
getGroupList
().
contains
(
"month"
))
{
query
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"year"
,
OrderCol
.
DESCENDING
),
new
OrderCol
(
"month"
,
OrderCol
.
DESCENDING
)));
}
else
if
(
query
.
getGroupList
().
contains
(
"year"
))
{
query
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"year"
,
OrderCol
.
DESCENDING
)));
if
(!
ObjectUtils
.
isEmpty
(
saveUpdateCollect
.
get
(
false
)))
{
//更新列表
log
.
info
(
"更新站点排队部门统计数据,数量:{}"
,
saveUpdateCollect
.
get
(
true
).
size
());
this
.
update
(
saveUpdateCollect
.
get
(
true
));
}
}
return
this
.
getDao
().
getStatList
(
query
,
pageInfo
);
}
}
\ No newline at end of file
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