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
c807b63f
Commit
c807b63f
authored
Mar 04, 2023
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 实时监控->添加诊断优化通过场景策略方法获取指标数据,通过指标数据优化方案
parent
6ad8efb0
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
75 additions
and
37 deletions
+75
-37
SceneStrategyIdeaMapper.java
...anji/opt/dao/mapper/strategy/SceneStrategyIdeaMapper.java
+2
-0
CrossOptimizeServiceImpl.java
.../net/wanji/opt/service/impl/CrossOptimizeServiceImpl.java
+49
-36
SceneService.java
...ain/java/net/wanji/opt/service/strategy/SceneService.java
+8
-0
SceneServiceImpl.java
...net/wanji/opt/service/strategy/impl/SceneServiceImpl.java
+5
-0
CrossMonitorTask.java
...ce/src/main/java/net/wanji/opt/task/CrossMonitorTask.java
+0
-1
SceneStrategyIdeaMapper.xml
...ain/resources/mapper/strategy/SceneStrategyIdeaMapper.xml
+11
-0
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/dao/mapper/strategy/SceneStrategyIdeaMapper.java
View file @
c807b63f
...
@@ -21,4 +21,6 @@ public interface SceneStrategyIdeaMapper {
...
@@ -21,4 +21,6 @@ public interface SceneStrategyIdeaMapper {
void
deleteByIdeaIds
(
List
<
Integer
>
ids
);
void
deleteByIdeaIds
(
List
<
Integer
>
ids
);
void
deleteByStrategyIds
(
List
<
Integer
>
ids
);
void
deleteByStrategyIds
(
List
<
Integer
>
ids
);
int
selectIdBySceneNum
(
Integer
sceneNum
);
}
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/CrossOptimizeServiceImpl.java
View file @
c807b63f
...
@@ -24,6 +24,7 @@ import net.wanji.opt.po.base.CrossSchemeOptLogPO;
...
@@ -24,6 +24,7 @@ import net.wanji.opt.po.base.CrossSchemeOptLogPO;
import
net.wanji.opt.po.base.CrossSchemePO
;
import
net.wanji.opt.po.base.CrossSchemePO
;
import
net.wanji.opt.po.trend.CrossDataRealtimePO
;
import
net.wanji.opt.po.trend.CrossDataRealtimePO
;
import
net.wanji.opt.service.CrossOptimizeService
;
import
net.wanji.opt.service.CrossOptimizeService
;
import
net.wanji.opt.service.strategy.SceneService
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
...
@@ -59,6 +60,8 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
...
@@ -59,6 +60,8 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
UtcFeignClients
utcFeignClients
;
UtcFeignClients
utcFeignClients
;
@Resource
@Resource
CrossDirTurnPhaseCache
crossDirTurnPhaseCache
;
CrossDirTurnPhaseCache
crossDirTurnPhaseCache
;
@Resource
SceneService
sceneService
;
@Value
(
"${crossOptParam.maxVehheadDist}"
)
@Value
(
"${crossOptParam.maxVehheadDist}"
)
private
Double
maxVehheadDist
;
private
Double
maxVehheadDist
;
...
@@ -132,6 +135,9 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
...
@@ -132,6 +135,9 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
private
void
spilloverOpt
(
List
<
CrossDataRealtimePO
>
abnormalCrossList
,
Map
<
String
,
List
<
CrossTurnDataRealtimeDTO
>>
turnDataRealtimeMap
,
private
void
spilloverOpt
(
List
<
CrossDataRealtimePO
>
abnormalCrossList
,
Map
<
String
,
List
<
CrossTurnDataRealtimeDTO
>>
turnDataRealtimeMap
,
Map
<
String
,
CrossPhaseDTO
>
phaseMap
)
throws
Exception
{
Map
<
String
,
CrossPhaseDTO
>
phaseMap
)
throws
Exception
{
// todo 获取溢出场景当前执行的策略方法的指标数据,通过指标数据进行下发方案
Integer
sceneStrategyIdeaId
=
sceneService
.
selectIdBySceneNum
(
CrossStatusEnum
.
SPILLOVER
.
getCode
());
// 溢出路口集合
Map
<
String
,
List
<
CrossDataRealtimePO
>>
congestCrossMap
=
abnormalCrossList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossDataRealtimePO:
:
getCrossId
));
Map
<
String
,
List
<
CrossDataRealtimePO
>>
congestCrossMap
=
abnormalCrossList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossDataRealtimePO:
:
getCrossId
));
String
crossId
;
String
crossId
;
...
@@ -212,6 +218,9 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
...
@@ -212,6 +218,9 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
private
void
congestionOpt
(
List
<
CrossDataRealtimePO
>
abnormalCrossList
,
Map
<
String
,
List
<
CrossTurnDataRealtimeDTO
>>
turnDataRealtimeMap
,
private
void
congestionOpt
(
List
<
CrossDataRealtimePO
>
abnormalCrossList
,
Map
<
String
,
List
<
CrossTurnDataRealtimeDTO
>>
turnDataRealtimeMap
,
Map
<
String
,
CrossPhaseDTO
>
phaseMap
)
throws
Exception
{
Map
<
String
,
CrossPhaseDTO
>
phaseMap
)
throws
Exception
{
// 获取拥堵场景当前执行的策略方法的指标数据,通过指标数据进行下发方案
Integer
sceneStrategyIdeaId
=
sceneService
.
selectIdBySceneNum
(
CrossStatusEnum
.
CONGESTION
.
getCode
());
// 拥堵路口集合
// 拥堵路口集合
Map
<
String
,
List
<
CrossDataRealtimePO
>>
congestCrossMap
=
abnormalCrossList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossDataRealtimePO:
:
getCrossId
));
Map
<
String
,
List
<
CrossDataRealtimePO
>>
congestCrossMap
=
abnormalCrossList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossDataRealtimePO:
:
getCrossId
));
...
@@ -281,6 +290,46 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
...
@@ -281,6 +290,46 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
}
}
}
}
/**
* 路口失衡优化
*
* @param abnormalCrossList 失衡路口实时数据
* @param turnDataRealtimeMap 路口转向实时数据
* @param phaseMap 路口相位配时数据
*/
private
void
unbalanceOpt
(
List
<
CrossDataRealtimePO
>
abnormalCrossList
,
Map
<
String
,
List
<
CrossTurnDataRealtimeDTO
>>
turnDataRealtimeMap
,
Map
<
String
,
CrossPhaseDTO
>
phaseMap
)
throws
Exception
{
// 获取失衡场景当前执行的策略方法的指标数据,通过指标数据进行下发方案
Integer
sceneStrategyIdeaId
=
sceneService
.
selectIdBySceneNum
(
CrossStatusEnum
.
CONGESTION
.
getCode
());
String
crossId
;
for
(
CrossDataRealtimePO
cross
:
abnormalCrossList
)
{
crossId
=
cross
.
getCrossId
();
// 判断信号机是否在线 todo 是否某些故障也不需要优化
// 判断当前路口是否存在特殊控制操作
if
(
isOffLineOrSpecialControlMode
(
crossId
))
{
continue
;
}
// 判断当前路口是否已优化
if
(
CROSS_OPT
.
contains
(
crossId
))
{
continue
;
}
// 判断路口是否是绿波
// 计算路口各转向所需的通行时长(秒)
List
<
CrossTurnDataRealtimeDTO
>
crossTurnDataRealtimeDTOS
=
turnDataRealtimeMap
.
get
(
crossId
);
crossTurnDataRealtimeDTOS
.
forEach
(
item
->
item
.
setPassTime
(
calPassTime
(
item
)));
// 执行路口优化
doExecuteCrossOpt
(
crossTurnDataRealtimeDTOS
,
phaseMap
,
crossId
,
"1"
);
// 记录已优化的路口
CROSS_OPT
.
add
(
crossId
);
}
}
/**
/**
* 当前路口异常转向列表 element:进口方向
* 当前路口异常转向列表 element:进口方向
*
*
...
@@ -368,42 +417,6 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
...
@@ -368,42 +417,6 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
}
}
}
}
/**
* 路口失衡优化
*
* @param abnormalCrossList 失衡路口实时数据
* @param turnDataRealtimeMap 路口转向实时数据
* @param phaseMap 路口相位配时数据
*/
private
void
unbalanceOpt
(
List
<
CrossDataRealtimePO
>
abnormalCrossList
,
Map
<
String
,
List
<
CrossTurnDataRealtimeDTO
>>
turnDataRealtimeMap
,
Map
<
String
,
CrossPhaseDTO
>
phaseMap
)
throws
Exception
{
String
crossId
;
for
(
CrossDataRealtimePO
cross
:
abnormalCrossList
)
{
crossId
=
cross
.
getCrossId
();
// 判断信号机是否在线 todo 是否某些故障也不需要优化
// 判断当前路口是否存在特殊控制操作
if
(
isOffLineOrSpecialControlMode
(
crossId
))
{
continue
;
}
// 判断当前路口是否已优化
if
(
CROSS_OPT
.
contains
(
crossId
))
{
continue
;
}
// 判断路口是否是绿波
// 计算路口各转向所需的通行时长(秒)
List
<
CrossTurnDataRealtimeDTO
>
crossTurnDataRealtimeDTOS
=
turnDataRealtimeMap
.
get
(
crossId
);
crossTurnDataRealtimeDTOS
.
forEach
(
item
->
item
.
setPassTime
(
calPassTime
(
item
)));
// 执行路口优化
doExecuteCrossOpt
(
crossTurnDataRealtimeDTOS
,
phaseMap
,
crossId
,
"1"
);
// 记录已优化的路口
CROSS_OPT
.
add
(
crossId
);
}
}
/**
/**
* 执行路口优化逻辑
* 执行路口优化逻辑
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/strategy/SceneService.java
View file @
c807b63f
...
@@ -17,4 +17,12 @@ public interface SceneService {
...
@@ -17,4 +17,12 @@ public interface SceneService {
void
deleteScene
(
IntegerIdsDTO
integerIdsDTO
);
void
deleteScene
(
IntegerIdsDTO
integerIdsDTO
);
PageInfo
<
AddOrUpdateSceneDTO
>
queryScene
(
QuerySceneDTO
querySceneDTO
);
PageInfo
<
AddOrUpdateSceneDTO
>
queryScene
(
QuerySceneDTO
querySceneDTO
);
/**
* 通过场景编号获取当前执行的场景-策略-方法的id
*
* @param sceneNum
* @return
*/
Integer
selectIdBySceneNum
(
Integer
sceneNum
);
}
}
signal-optimize-service/src/main/java/net/wanji/opt/service/strategy/impl/SceneServiceImpl.java
View file @
c807b63f
...
@@ -50,6 +50,11 @@ public class SceneServiceImpl implements SceneService {
...
@@ -50,6 +50,11 @@ public class SceneServiceImpl implements SceneService {
this
.
ideaMapper
=
ideaMapper
;
this
.
ideaMapper
=
ideaMapper
;
}
}
@Override
public
Integer
selectIdBySceneNum
(
Integer
sceneNum
)
{
return
sceneStrategyIdeaMapper
.
selectIdBySceneNum
(
sceneNum
);
}
@Override
@Override
@Transactional
@Transactional
public
void
addOrUpdateScene
(
AddOrUpdateSceneDTO
addOrUpdateSceneDTO
)
{
public
void
addOrUpdateScene
(
AddOrUpdateSceneDTO
addOrUpdateSceneDTO
)
{
...
...
signal-optimize-service/src/main/java/net/wanji/opt/task/CrossMonitorTask.java
View file @
c807b63f
...
@@ -110,7 +110,6 @@ public class CrossMonitorTask {
...
@@ -110,7 +110,6 @@ public class CrossMonitorTask {
// todo 对数据进行处理,可能主要是CrossTurnDataRealtimeDTO中的车间距,车时距等配置修改
// todo 对数据进行处理,可能主要是CrossTurnDataRealtimeDTO中的车间距,车时距等配置修改
CrossTurnDataRealtimeDTO
crossTurnDataRealtimeDTO
=
new
CrossTurnDataRealtimeDTO
();
CrossTurnDataRealtimeDTO
crossTurnDataRealtimeDTO
=
new
CrossTurnDataRealtimeDTO
();
// todo 通过获取场景,策略,方法参数,判断下发方案数据
return
crossDataRealtimePOList
;
return
crossDataRealtimePOList
;
}
}
...
...
signal-optimize-service/src/main/resources/mapper/strategy/SceneStrategyIdeaMapper.xml
View file @
c807b63f
...
@@ -38,4 +38,15 @@
...
@@ -38,4 +38,15 @@
where scene_id = #{sceneId} and strategy_id = #{strategyId}
where scene_id = #{sceneId} and strategy_id = #{strategyId}
</select>
</select>
<select
id=
"selectIdBySceneNum"
>
select
max( id )
from
t_strategy_scene_strategy_idea t1
inner join ( select scene_id, strategy_id from t_strategy_scene_strategy where
scene_id = ( select id from t_strategy_scene where scene_num = #{sceneNum} )
and scene_strategy_priority = 1 ) t2
on t1.scene_id = t2.scene_id and t1.strategy_id = t2.strategy_id;
</select>
</mapper>
</mapper>
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