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
signal
traffic-signal-platform
Commits
e1fa78ea
Commit
e1fa78ea
authored
May 07, 2024
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 态势监测-全天流量
parent
d07dc610
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
85 additions
and
31 deletions
+85
-31
TrendController.java
...c/main/java/net/wanji/opt/controller/TrendController.java
+7
-0
TrendService.java
...ice/src/main/java/net/wanji/opt/service/TrendService.java
+2
-0
TrendServiceImpl.java
...ain/java/net/wanji/opt/service/impl/TrendServiceImpl.java
+74
-31
HotspotCrossVO.java
...ervice/src/main/java/net/wanji/opt/vo/HotspotCrossVO.java
+1
-0
RunningEvaluateMetricsDetailVO.java
...java/net/wanji/opt/vo/RunningEvaluateMetricsDetailVO.java
+1
-0
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/controller/TrendController.java
View file @
e1fa78ea
...
...
@@ -225,4 +225,11 @@ public class TrendController {
List
<
HotspotCrossVO
>
hotspotCrossVOS
=
trendService
.
hotspotCross
();
return
JsonViewObject
.
newInstance
().
success
(
hotspotCrossVOS
);
}
@ApiOperation
(
value
=
"前五交通流量"
,
notes
=
"前五交通流量"
,
response
=
JsonViewObject
.
class
)
@GetMapping
(
value
=
"/top5Flow"
)
public
JsonViewObject
top5Flow
()
throws
Exception
{
List
<
RunningEvaluateMetricsDetailVO
>
hotspotCrossVOS
=
trendService
.
top5Flow
();
return
JsonViewObject
.
newInstance
().
success
(
hotspotCrossVOS
);
}
}
\ No newline at end of file
signal-optimize-service/src/main/java/net/wanji/opt/service/TrendService.java
View file @
e1fa78ea
...
...
@@ -48,4 +48,6 @@ public interface TrendService {
OptTypeVO
optType
(
CrossIdBO
crossIdBO
);
List
<
HotspotCrossVO
>
hotspotCross
()
throws
Exception
;
List
<
RunningEvaluateMetricsDetailVO
>
top5Flow
()
throws
Exception
;
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/TrendServiceImpl.java
View file @
e1fa78ea
...
...
@@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUnit;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.enums.*
;
import
net.wanji.common.utils.tool.CrossUtil
;
import
net.wanji.common.utils.tool.StringUtils
;
...
...
@@ -57,6 +58,7 @@ import java.util.stream.Collectors;
* @date 2023/2/8 10:31
*/
@Service
@Slf4j
public
class
TrendServiceImpl
implements
TrendService
{
private
final
GreenwaveInfoMapper
greenwaveInfoMapper
;
private
final
BaseCrossInfoMapper
baseCrossInfoMapper
;
...
...
@@ -90,6 +92,7 @@ public class TrendServiceImpl implements TrendService {
private
final
LaneSnapshotDataQueryService
laneSnapshotDataQueryService
;
private
final
DirectionMappingsConfig
directionMappingsConfig
;
private
final
CrossDataHistMapper
crossDataHistMapper
;
private
final
RunningEvaluateServiceImpl
runningEvaluateService
;
// 用于计算路口状态,key为方向,value为状态
private
Map
<
Integer
,
Integer
>
preStatus
=
new
HashMap
<
Integer
,
Integer
>()
{{
...
...
@@ -116,7 +119,7 @@ public class TrendServiceImpl implements TrendService {
CrossDirDataHistMapper
crossDirDataHistMapper
,
EventAlarmMapper
eventAlarmMapper
,
RidInfoMapper
ridInfoMapper
,
BaseCrossDirInfoMapper
baseCrossDirInfoMapper
,
CrossSchemeOptLogMapper
crossSchemeOptLogMapper
,
GreenwaveCrossMapper
greenwaveCrossMapper
,
CrossDirDataRealtimeMapper
crossDirDataRealtimeMapper
,
GreenwaveHistMapper
greenwaveHistMapper
,
GreenwaveRealtimeMapper
greenwaveRealtimeMapper
,
SceneStrategyIdeaMapper
strategyIdeaMapper
,
StrategyMapper
strategyMapper
,
BaseCrossSchedulesMapper
baseCrossSchedulesMapper
,
BaseCrossSchedulesPlanMapper
baseCrossSchedulesPlanMapper
,
BaseCrossSectionMapper
baseCrossSectionMapper
,
BaseCrossSchemeMapper
crossSchemeMapper
,
BaseCrossSchemeMapper
baseCrossSchemeMapper
,
BaseCrossPhaseMapper
baseCrossPhaseMapper
,
BaseCrossPhaseLightsMapper
crossPhaseLightsMapper
,
BaseCrossLaneLightsMapper
baseCrossLaneLightsMapper
,
CrossBaseLaneInfoMapper
crossBaseLaneInfoMapper
,
CrossTurnDataHistMapper
crossTurnDataHistMapper
,
@Qualifier
(
"greenwaveSceneMapper"
)
GreenwaveSceneMapper
greenwaveSceneMapper
,
@Qualifier
(
"sceneStrategyMapper"
)
SceneStrategyMapper
sceneStrategyMapper
,
@Qualifier
(
"sceneMapper"
)
SceneMapper
sceneMapper
,
@Qualifier
(
"baseCrossPlanMapper"
)
BaseCrossPlanMapper
baseCrossPlanMapper
,
MainlineEvaluateServiceImpl
mainlineEvaluateServiceImpl
,
CrossLaneDataHistMapper
crossLaneDataHistMapper
,
LaneSnapshotDataQueryService
laneSnapshotDataQueryService
,
DirectionMappingsConfig
directionMappingsConfig
,
CrossDataHistMapper
crossDataHistMapper
)
{
CrossDataHistMapper
crossDataHistMapper
,
RunningEvaluateServiceImpl
runningEvaluateService
)
{
this
.
greenwaveInfoMapper
=
greenwaveInfoMapper
;
this
.
baseCrossInfoMapper
=
baseCrossInfoMapper
;
this
.
crossDataRealtimeMapper
=
crossDataRealtimeMapper
;
...
...
@@ -149,6 +152,7 @@ public class TrendServiceImpl implements TrendService {
this
.
laneSnapshotDataQueryService
=
laneSnapshotDataQueryService
;
this
.
directionMappingsConfig
=
directionMappingsConfig
;
this
.
crossDataHistMapper
=
crossDataHistMapper
;
this
.
runningEvaluateService
=
runningEvaluateService
;
}
@Override
...
...
@@ -1669,19 +1673,19 @@ public class TrendServiceImpl implements TrendService {
@Override
public
List
<
HotspotCrossVO
>
hotspotCross
()
throws
Exception
{
try
{
List
<
HotspotCrossVO
>
hotspotCrossVOS
=
new
ArrayList
<>();
LambdaQueryWrapper
<
CrossDataRealtimePO
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
select
(
CrossDataRealtimePO:
:
getCrossId
,
CrossDataRealtimePO:
:
getStartTime
,
CrossDataRealtimePO:
:
getBatchTime
)
.
orderByDesc
(
CrossDataRealtimePO:
:
getCongestionIndex
)
.
last
(
"limit 1"
);
List
<
CrossDataRealtimePO
>
crossRealtimePOS
=
crossDataRealtimeMapper
.
selectList
(
queryWrapper
);
if
(!
CollectionUtils
.
isEmpty
(
crossRealtimePOS
)
&&
crossRealtimePOS
.
size
()
==
1
)
{
CrossDataRealtimePO
crossDataRealtimePO
=
crossRealtimePOS
.
get
(
0
);
List
<
AbnormalCrossListVO
>
signalCrossRealTimeList
=
crossDataRealtimeMapper
.
selectAbnormalCross
(
null
,
null
,
null
);
if
(!
CollectionUtils
.
isEmpty
(
signalCrossRealTimeList
))
{
Optional
<
AbnormalCrossListVO
>
max
=
signalCrossRealTimeList
.
stream
().
max
(
Comparator
.
comparingDouble
(
AbnormalCrossListVO:
:
getCongestionIndex
));
AbnormalCrossListVO
abnormalCrossListVO
=
new
AbnormalCrossListVO
();
if
(
max
.
isPresent
())
{
abnormalCrossListVO
=
max
.
get
();
// 查询当前拥堵指数最大,历史表中一个小时以内数据
LambdaQueryWrapper
<
CrossDirDataHistPO
>
histQuery
=
new
LambdaQueryWrapper
<>();
histQuery
.
eq
(
CrossDirDataHistPO:
:
getCrossId
,
crossDataRealtimePO
.
getCross
Id
())
.
between
(
CrossDirDataHistPO:
:
getBatchTime
,
crossDataRealtimePO
.
getBatchTime
()
-
3600
,
crossDataRealtimeP
O
.
getBatchTime
());
histQuery
.
eq
(
CrossDirDataHistPO:
:
getCrossId
,
abnormalCrossListVO
.
get
Id
())
.
between
(
CrossDirDataHistPO:
:
getBatchTime
,
abnormalCrossListVO
.
getBatchTime
()
-
3600
,
abnormalCrossListV
O
.
getBatchTime
());
List
<
CrossDirDataHistPO
>
histPOS
=
crossDirDataHistMapper
.
selectList
(
histQuery
);
if
(!
CollectionUtils
.
isEmpty
(
histPOS
))
{
Map
<
Date
,
List
<
CrossDirDataHistPO
>>
map
=
histPOS
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossDirDataHistPO:
:
getStartTime
));
...
...
@@ -1699,12 +1703,51 @@ public class TrendServiceImpl implements TrendService {
}
hotspotCrossVO
.
setDetailList
(
detailVOS
);
hotspotCrossVO
.
setTimeStamp
(
entry
.
getKey
());
hotspotCrossVO
.
setCrossId
(
abnormalCrossListVO
.
getId
());
hotspotCrossVOS
.
add
(
hotspotCrossVO
);
}
}
}
}
}
}
return
hotspotCrossVOS
;
}
catch
(
Exception
e
)
{
log
.
error
(
"重点路口监测异常:"
,
e
);
throw
new
Exception
(
e
);
}
}
@Override
public
List
<
RunningEvaluateMetricsDetailVO
>
top5Flow
()
throws
Exception
{
List
<
RunningEvaluateMetricsDetailVO
>
hotspotCrossVOS
=
null
;
try
{
hotspotCrossVOS
=
new
ArrayList
<>();
List
<
AbnormalCrossListVO
>
signalCrossRealTimeList
=
crossDataRealtimeMapper
.
selectAbnormalCross
(
null
,
null
,
null
);
if
(!
CollectionUtils
.
isEmpty
(
signalCrossRealTimeList
))
{
List
<
AbnormalCrossListVO
>
top5
=
signalCrossRealTimeList
.
stream
()
.
sorted
(
Comparator
.
comparingDouble
(
AbnormalCrossListVO:
:
getCongestionIndex
))
.
collect
(
Collectors
.
toList
());
Collections
.
reverse
(
top5
);
top5
=
top5
.
subList
(
0
,
Math
.
min
(
top5
.
size
(),
5
));
if
(!
CollectionUtils
.
isEmpty
(
top5
))
{
for
(
AbnormalCrossListVO
abnormalCrossListVO
:
top5
)
{
String
crossId
=
abnormalCrossListVO
.
getId
();
MetricsDetailBO
metricsDetailBO
=
new
MetricsDetailBO
();
metricsDetailBO
.
setCrossId
(
crossId
);
metricsDetailBO
.
setDate
(
new
Date
(
1705456500000L
));
metricsDetailBO
.
setMinutes
(
60
*
2
);
RunningEvaluateMetricsDetailVO
result
=
runningEvaluateService
.
metricsDetail
(
metricsDetailBO
);
result
.
setCrossId
(
crossId
);
hotspotCrossVOS
.
add
(
result
);
}
}
}
}
catch
(
Exception
e
)
{
log
.
error
(
"全天流量监测异常:"
,
e
);
throw
new
Exception
(
e
);
}
return
hotspotCrossVOS
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/vo/HotspotCrossVO.java
View file @
e1fa78ea
...
...
@@ -15,6 +15,7 @@ import java.util.List;
@Data
@ApiModel
(
value
=
"重点路口监测实体"
,
description
=
"重点路口监测实体"
)
public
class
HotspotCrossVO
{
private
String
crossId
;
private
Date
timeStamp
;
private
List
<
DetailVO
>
detailList
;
@Data
...
...
signal-optimize-service/src/main/java/net/wanji/opt/vo/RunningEvaluateMetricsDetailVO.java
View file @
e1fa78ea
...
...
@@ -18,6 +18,7 @@ import java.util.Objects;
@NoArgsConstructor
@ApiModel
(
value
=
"RunningEvaluateMetricsDetailVO"
,
description
=
"评价指标查询返回值"
)
public
class
RunningEvaluateMetricsDetailVO
{
private
String
crossId
;
@ApiModelProperty
(
value
=
"状态列表"
)
private
List
<
ProblemStatus
>
problemStatusList
;
@ApiModelProperty
(
value
=
"问题方案列表"
)
...
...
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