Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
T
traffic-signal-platform
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
jinan
traffic-signal-platform
Commits
10ed91dd
Commit
10ed91dd
authored
Apr 28, 2025
by
fengyasheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
干线周报2.1,干线频发问题监测
parent
8cca9705
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
41 additions
and
122 deletions
+41
-122
AnalysisProblemCrossDayServiceImpl.java
...udgeanalysis/impl/AnalysisProblemCrossDayServiceImpl.java
+39
-120
GreenWaveWeekDataServiceImpl.java
...t/servicev2/report/impl/GreenWaveWeekDataServiceImpl.java
+2
-2
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/servicev2/judgeanalysis/impl/AnalysisProblemCrossDayServiceImpl.java
View file @
10ed91dd
...
...
@@ -4,6 +4,10 @@ import cn.hutool.core.util.ObjectUtil;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
net.wanji.common.utils.tool.DateUtil
;
import
net.wanji.databus.dao.entity.GreenwaveCrossPO
;
import
net.wanji.databus.dao.mapper.BaseCrossInfoMapper
;
import
net.wanji.databus.dao.mapper.GreenwaveCrossMapper
;
import
net.wanji.databus.po.BaseCrossInfoPO
;
import
net.wanji.opt.common.EsDateIndexUtil
;
import
net.wanji.opt.dao.mapper.judgeanalysis.AnalysisProblemCrossDayMapper
;
import
net.wanji.opt.entity.judgeanalysis.AnalysisProblemCrossDay
;
...
...
@@ -17,6 +21,7 @@ import net.wanji.opt.vo2.JudTrunkLineCrossProblemEntityVO;
import
net.wanji.opt.vo2.report.JudTrunkLineCrossProblemEntityDTO
;
import
org.locationtech.jts.geom.Geometry
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
...
...
@@ -38,6 +43,10 @@ public class AnalysisProblemCrossDayServiceImpl extends ServiceImpl<AnalysisProb
@Resource
private
AnalysisProblemCrossDayMapper
analysisProblemCrossDayMapper
;
@Autowired
private
GreenwaveCrossMapper
greenwaveCrossMapper
;
@Autowired
private
BaseCrossInfoMapper
baseCrossInfoMapper
;
/**
...
...
@@ -229,149 +238,59 @@ public class AnalysisProblemCrossDayServiceImpl extends ServiceImpl<AnalysisProb
Map
<
String
,
List
<
GreenwaveCrossResult
>>
crossIdMap
=
greenwaveCrossResults
.
stream
().
collect
(
Collectors
.
groupingBy
(
GreenwaveCrossResult:
:
getCrossId
));
int
slowCount
=
greenwaveCrossResults
.
stream
().
filter
(
x
->
2
==
x
.
getStatus
()).
mapToInt
(
GreenwaveCrossResult:
:
getDirCount
).
sum
();
int
conCount
=
greenwaveCrossResults
.
stream
().
filter
(
x
->
3
==
x
.
getStatus
()
||
4
==
x
.
getStatus
()).
mapToInt
(
GreenwaveCrossResult:
:
getDirCount
).
sum
();
for
(
List
<
GreenwaveCrossResult
>
crossResults
:
crossIdMap
.
values
())
{
List
<
GreenwaveCrossPO
>
greenwaveCrossPOS
=
greenwaveCrossMapper
.
selectByGreenwaveId
(
greenId
);
for
(
GreenwaveCrossPO
greenwaveCrossPO
:
greenwaveCrossPOS
)
{
BaseCrossInfoPO
baseCrossInfoPO
=
baseCrossInfoMapper
.
selectById
(
greenwaveCrossPO
.
getCrossId
());
JudTrunkLineCrossProblemEntityDTO
judTrunkLineCrossProblemEntityDTO
=
new
JudTrunkLineCrossProblemEntityDTO
();
judTrunkLineCrossProblemEntityDTO
.
setGreenId
(
crossResults
.
get
(
0
).
getGreenId
());
judTrunkLineCrossProblemEntityDTO
.
setCrossId
(
crossResults
.
get
(
0
).
getCrossId
());
judTrunkLineCrossProblemEntityDTO
.
setCrossName
(
crossResults
.
get
(
0
).
getName
());
if
(
ObjectUtil
.
isEmpty
(
status
)
||
status
==
2
)
{
int
slowCountCross
=
crossResults
.
stream
().
filter
(
x
->
2
==
x
.
getStatus
()).
mapToInt
(
GreenwaveCrossResult:
:
getDirCount
).
sum
();
if
(
slowCount
>
0
&&
slowCountCross
*
100
/
slowCount
>
10
)
{
judTrunkLineCrossProblemEntityDTO
.
setCount
(
slowCountCross
);
Map
<
Integer
,
Integer
>
dirTypeCountMap
=
crossResults
.
stream
().
collect
(
Collectors
.
groupingBy
(
GreenwaveCrossResult:
:
getDirType
,
Collectors
.
summingInt
(
GreenwaveCrossResult:
:
getDirCount
)
));
if
(
ObjectUtil
.
isNotEmpty
(
dirTypeCountMap
)){
AtomicInteger
atomicIntegerDir
=
new
AtomicInteger
(
1
);
judTrunkLineCrossProblemEntityDTO
.
setGreenId
(
greenwaveCrossPO
.
getGreenId
());
judTrunkLineCrossProblemEntityDTO
.
setCrossId
(
greenwaveCrossPO
.
getCrossId
());
judTrunkLineCrossProblemEntityDTO
.
setCrossName
(
baseCrossInfoPO
.
getName
());
judTrunkLineCrossProblemEntityDTO
.
setSort
(
greenwaveCrossPO
.
getSort
());
judTrunkLineCrossProblemEntityDTO
.
setInDir
(
greenwaveCrossPO
.
getInDir
());
judTrunkLineCrossProblemEntityDTO
.
setOutDir
(
greenwaveCrossPO
.
getOutDir
());
judTrunkLineCrossProblemEntityDTO
.
setStatusR
(
1
);
judTrunkLineCrossProblemEntityDTO
.
setStatusL
(
1
);
List
<
GreenwaveCrossResult
>
crossResults
=
crossIdMap
.
get
(
greenwaveCrossPO
.
getCrossId
());
if
(
ObjectUtil
.
isNotEmpty
(
crossResults
))
{
judTrunkLineCrossProblemEntityDTO
.
setCrossName
(
crossResults
.
get
(
0
).
getName
());
if
(
ObjectUtil
.
isEmpty
(
status
)
||
status
==
2
)
{
int
slowCountCross
=
crossResults
.
stream
().
filter
(
x
->
2
==
x
.
getStatus
()).
mapToInt
(
GreenwaveCrossResult:
:
getDirCount
).
sum
();
if
(
slowCount
>
0
&&
slowCountCross
*
100
/
slowCount
>
10
)
{
Map
<
Integer
,
Integer
>
dirTypeCountMap
=
crossResults
.
stream
().
filter
(
x
->
2
==
x
.
getStatus
()).
collect
(
Collectors
.
groupingBy
(
GreenwaveCrossResult:
:
getDirType
,
Collectors
.
summingInt
(
GreenwaveCrossResult:
:
getDirCount
)
));
for
(
Integer
dirType
:
dirTypeCountMap
.
keySet
())
{
if
(
atomicIntegerDir
.
get
()>
1
){
judTrunkLineCrossProblemEntityDTO
.
setOutDir
(
dirType
);
if
(
dirTypeCountMap
.
get
(
dirType
)
==
0
){
judTrunkLineCrossProblemEntityDTO
.
setStatusR
(
1
);
}
else
{
judTrunkLineCrossProblemEntityDTO
.
setStatusR
(
2
);
}
}
else
{
judTrunkLineCrossProblemEntityDTO
.
setInDir
(
dirType
);
if
(
dirTypeCountMap
.
get
(
dirType
)
==
0
){
judTrunkLineCrossProblemEntityDTO
.
setStatusL
(
1
);
}
else
{
judTrunkLineCrossProblemEntityDTO
.
setStatusL
(
2
);
}
if
(
dirType
==
crossResults
.
get
(
0
).
getInDir
())
{
judTrunkLineCrossProblemEntityDTO
.
setStatusL
(
2
);
}
}
}
if
(
ObjectUtil
.
isNotEmpty
(
crossResults
.
get
(
0
))){
if
(
ObjectUtil
.
isNotEmpty
(
judTrunkLineCrossProblemEntityDTO
.
getInDir
())){
if
(
crossResults
.
get
(
0
).
getInDir
()
==
judTrunkLineCrossProblemEntityDTO
.
getInDir
()){
if
(
ObjectUtil
.
isEmpty
(
judTrunkLineCrossProblemEntityDTO
.
getOutDir
())){
judTrunkLineCrossProblemEntityDTO
.
setOutDir
(
crossResults
.
get
(
0
).
getOutDir
());
judTrunkLineCrossProblemEntityDTO
.
setStatusR
(
1
);
}
if
(
dirType
==
crossResults
.
get
(
0
).
getOutDir
())
{
judTrunkLineCrossProblemEntityDTO
.
setStatusR
(
2
);
}
if
(
crossResults
.
get
(
0
).
getOutDir
()
==
judTrunkLineCrossProblemEntityDTO
.
getInDir
()){
if
(
ObjectUtil
.
isEmpty
(
judTrunkLineCrossProblemEntityDTO
.
getOutDir
())){
judTrunkLineCrossProblemEntityDTO
.
setOutDir
(
crossResults
.
get
(
0
).
getInDir
());
judTrunkLineCrossProblemEntityDTO
.
setStatusR
(
1
);
}
}
}
if
(
ObjectUtil
.
isNotEmpty
(
judTrunkLineCrossProblemEntityDTO
.
getOutDir
())){
if
(
crossResults
.
get
(
0
).
getOutDir
()
==
judTrunkLineCrossProblemEntityDTO
.
getOutDir
()){
if
(
ObjectUtil
.
isEmpty
(
judTrunkLineCrossProblemEntityDTO
.
getInDir
())){
judTrunkLineCrossProblemEntityDTO
.
setInDir
(
crossResults
.
get
(
0
).
getInDir
());
judTrunkLineCrossProblemEntityDTO
.
setStatusR
(
1
);
}
}
if
(
crossResults
.
get
(
0
).
getInDir
()
==
judTrunkLineCrossProblemEntityDTO
.
getOutDir
()){
if
(
ObjectUtil
.
isEmpty
(
judTrunkLineCrossProblemEntityDTO
.
getInDir
())){
judTrunkLineCrossProblemEntityDTO
.
setInDir
(
crossResults
.
get
(
0
).
getOutDir
());
judTrunkLineCrossProblemEntityDTO
.
setStatusR
(
1
);
}
}
}
}
}
else
{
continue
;
}
}
if
(
ObjectUtil
.
isEmpty
(
status
)
||
status
==
3
||
status
==
4
)
{
int
conCountCross
=
crossResults
.
stream
().
filter
(
x
->
3
==
x
.
getStatus
()
||
4
==
x
.
getStatus
()).
mapToInt
(
GreenwaveCrossResult:
:
getDirCount
).
sum
();
if
(
conCount
>
0
&&
conCountCross
*
100
/
conCount
>
10
)
{
if
(
ObjectUtil
.
isEmpty
(
judTrunkLineCrossProblemEntityDTO
.
getCount
())){
judTrunkLineCrossProblemEntityDTO
.
setCount
(
conCountCross
);
}
Map
<
Integer
,
Integer
>
dirTypeCountMap
=
crossResults
.
stream
().
collect
(
Collectors
.
groupingBy
(
GreenwaveCrossResult:
:
getDirType
,
Collectors
.
summingInt
(
GreenwaveCrossResult:
:
getDirCount
)
));
if
(
ObjectUtil
.
isNotEmpty
(
dirTypeCountMap
)){
AtomicInteger
atomicIntegerDir
=
new
AtomicInteger
(
1
);
for
(
Integer
dirType
:
dirTypeCountMap
.
keySet
())
{
if
(
atomicIntegerDir
.
get
()>
1
){
if
(
ObjectUtil
.
isEmpty
(
judTrunkLineCrossProblemEntityDTO
.
getOutDir
())){
judTrunkLineCrossProblemEntityDTO
.
setOutDir
(
dirType
);
}
if
(
dirTypeCountMap
.
get
(
dirType
)
==
0
){
judTrunkLineCrossProblemEntityDTO
.
setStatusR
(
1
);
}
else
{
judTrunkLineCrossProblemEntityDTO
.
setStatusR
(
3
);
}
}
else
{
if
(
ObjectUtil
.
isEmpty
(
judTrunkLineCrossProblemEntityDTO
.
getInDir
())){
judTrunkLineCrossProblemEntityDTO
.
setInDir
(
dirType
);
}
if
(
dirTypeCountMap
.
get
(
dirType
)
==
0
){
judTrunkLineCrossProblemEntityDTO
.
setStatusL
(
1
);
}
else
{
judTrunkLineCrossProblemEntityDTO
.
setStatusL
(
3
);
}
}
for
(
Integer
dirType
:
dirTypeCountMap
.
keySet
())
{
if
(
dirType
==
crossResults
.
get
(
0
).
getInDir
())
{
judTrunkLineCrossProblemEntityDTO
.
setStatusL
(
3
);
}
}
if
(
ObjectUtil
.
isNotEmpty
(
crossResults
.
get
(
0
))){
if
(
ObjectUtil
.
isNotEmpty
(
judTrunkLineCrossProblemEntityDTO
.
getInDir
())){
if
(
crossResults
.
get
(
0
).
getInDir
()
==
judTrunkLineCrossProblemEntityDTO
.
getInDir
()){
if
(
ObjectUtil
.
isEmpty
(
judTrunkLineCrossProblemEntityDTO
.
getOutDir
())){
judTrunkLineCrossProblemEntityDTO
.
setOutDir
(
crossResults
.
get
(
0
).
getOutDir
());
judTrunkLineCrossProblemEntityDTO
.
setStatusR
(
1
);
}
}
if
(
crossResults
.
get
(
0
).
getOutDir
()
==
judTrunkLineCrossProblemEntityDTO
.
getInDir
()){
if
(
ObjectUtil
.
isEmpty
(
judTrunkLineCrossProblemEntityDTO
.
getOutDir
())){
judTrunkLineCrossProblemEntityDTO
.
setOutDir
(
crossResults
.
get
(
0
).
getInDir
());
judTrunkLineCrossProblemEntityDTO
.
setStatusR
(
1
);
}
}
}
if
(
ObjectUtil
.
isNotEmpty
(
judTrunkLineCrossProblemEntityDTO
.
getOutDir
())){
if
(
crossResults
.
get
(
0
).
getOutDir
()
==
judTrunkLineCrossProblemEntityDTO
.
getOutDir
()){
if
(
ObjectUtil
.
isEmpty
(
judTrunkLineCrossProblemEntityDTO
.
getInDir
())){
judTrunkLineCrossProblemEntityDTO
.
setInDir
(
crossResults
.
get
(
0
).
getInDir
());
judTrunkLineCrossProblemEntityDTO
.
setStatusR
(
1
);
}
}
if
(
crossResults
.
get
(
0
).
getInDir
()
==
judTrunkLineCrossProblemEntityDTO
.
getOutDir
()){
if
(
ObjectUtil
.
isEmpty
(
judTrunkLineCrossProblemEntityDTO
.
getInDir
())){
judTrunkLineCrossProblemEntityDTO
.
setInDir
(
crossResults
.
get
(
0
).
getOutDir
());
judTrunkLineCrossProblemEntityDTO
.
setStatusR
(
1
);
}
}
if
(
dirType
==
crossResults
.
get
(
0
).
getOutDir
())
{
judTrunkLineCrossProblemEntityDTO
.
setStatusR
(
3
);
}
}
}
else
{
continue
;
}
}
crossProblemEntityDTOS
.
add
(
judTrunkLineCrossProblemEntityDTO
);
}
}
AtomicInteger
atomicInteger
=
new
AtomicInteger
(
1
);
crossProblemEntityDTOS
.
stream
().
sorted
(
Comparator
.
comparingInt
(
JudTrunkLineCrossProblemEntityDTO:
:
getCount
)).
forEach
(
x
->
x
.
setSort
(
atomicInteger
.
getAndIncrement
()));
List
<
JudTrunkLineCrossProblemEntityVO
>
judTrunkLineCrossProblemEntityVOS
=
crossProblemEntityDTOS
.
stream
().
map
(
x
->
{
JudTrunkLineCrossProblemEntityVO
judTrunkLineCrossProblemEntityVO
=
new
JudTrunkLineCrossProblemEntityVO
();
BeanUtils
.
copyProperties
(
x
,
judTrunkLineCrossProblemEntityVO
);
...
...
signal-optimize-service/src/main/java/net/wanji/opt/servicev2/report/impl/GreenWaveWeekDataServiceImpl.java
View file @
10ed91dd
...
...
@@ -316,7 +316,7 @@ public class GreenWaveWeekDataServiceImpl extends ServiceImpl<GreenWaveWeekDataM
greenWaveWeekDataVO
.
setGreenRoadType
(
RoadLevelEnum
.
getDesc
(
greenInfoList
.
get
(
0
).
getLevel
()));
greenWaveWeekDataVOList
.
add
(
greenWaveWeekDataVO
);
}
List
<
GreenWaveWeekDataVO
>
collect
=
greenWaveWeekDataVOList
.
stream
().
sorted
(
Comparator
.
comparingDouble
(
GreenWaveWeekDataVO:
:
getCongest
Count
).
reversed
()).
collect
(
Collectors
.
toList
());
List
<
GreenWaveWeekDataVO
>
collect
=
greenWaveWeekDataVOList
.
stream
().
sorted
(
Comparator
.
comparingDouble
(
GreenWaveWeekDataVO:
:
getCongest
Index
).
reversed
()).
collect
(
Collectors
.
toList
());
collect
.
forEach
(
x
->{
x
.
setRank
(
collect
.
indexOf
(
x
)+
1
);
});
...
...
@@ -430,7 +430,7 @@ public class GreenWaveWeekDataServiceImpl extends ServiceImpl<GreenWaveWeekDataM
}
else
if
(
travelTime
==
0
){
samePeriodData
.
setPmTravelTimeSituation
(
"相等"
);
}
else
{
samePeriodData
.
setPmTravelTimeSituation
(
"增加"
+
Math
.
abs
(
travelTime
)+
"s"
);
samePeriodData
.
setPmTravelTimeSituation
(
"增加"
);
}
if
(
waveWeekData
.
getSpeed
()!=
0
){
greenReportSamePeriodData
.
setAvgSpeedRatio
(
Math
.
round
((
speed
/
waveWeekData
.
getSpeed
()*
10000
))/
100.0
);
...
...
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