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
46f4ab12
Commit
46f4ab12
authored
Mar 14, 2023
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 添加路口信息缓存
parent
976d75e1
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
90 additions
and
2 deletions
+90
-2
CrossInfoCache.java
...ice/src/main/java/net/wanji/opt/cache/CrossInfoCache.java
+59
-0
CrossOptimizeServiceImpl.java
.../net/wanji/opt/service/impl/CrossOptimizeServiceImpl.java
+31
-2
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/cache/CrossInfoCache.java
0 → 100644
View file @
46f4ab12
package
net
.
wanji
.
opt
.
cache
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.databus.dao.mapper.CrossInfoMapper
;
import
net.wanji.databus.po.CrossInfoPO
;
import
net.wanji.databus.vo.CrossInfoVO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.CommandLineRunner
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* @author duanruiming
* @date 2023/03/14 10:42
*/
@Component
@Slf4j
public
class
CrossInfoCache
implements
CommandLineRunner
{
@Autowired
private
CrossInfoMapper
crossInfoMapper
;
private
static
final
List
<
CrossInfoPO
>
crossInfoList
=
new
ArrayList
<>();
/**
* 获取所有路口信息
*
* @return
*/
public
List
<
CrossInfoPO
>
getCrossInfoCache
()
{
return
crossInfoList
;
}
/**
* 获取所有信控路口的路口编号
*
* @return
*/
public
List
<
String
>
getIsSignalCrossIdList
()
{
List
<
String
>
isSignalCrossIdList
=
crossInfoList
.
stream
().
filter
(
crossInfoPO
->
crossInfoPO
.
getIsSignal
()
==
1
).
map
(
CrossInfoPO:
:
getId
).
collect
(
Collectors
.
toList
());
return
isSignalCrossIdList
;
}
@Override
public
void
run
(
String
...
args
)
throws
Exception
{
init
();
}
public
void
init
()
{
List
<
CrossInfoPO
>
crossInfoPOS
=
crossInfoMapper
.
selectAll
(
new
CrossInfoVO
());
if
(!
CollectionUtils
.
isEmpty
(
crossInfoPOS
))
{
crossInfoList
.
addAll
(
crossInfoPOS
);
}
}
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/CrossOptimizeServiceImpl.java
View file @
46f4ab12
...
...
@@ -20,6 +20,7 @@ import net.wanji.databus.vo.SchemeSendVO;
import
net.wanji.databus.vo.SignalStatusVO
;
import
net.wanji.feign.service.UtcFeignClients
;
import
net.wanji.opt.cache.CrossDirTurnPhaseCache
;
import
net.wanji.opt.cache.CrossInfoCache
;
import
net.wanji.opt.cache.CrossRidInfoCache
;
import
net.wanji.opt.common.exception.OptServiceException
;
import
net.wanji.opt.dao.mapper.CrossSchemeOptLogMapper
;
...
...
@@ -63,6 +64,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
private
final
SceneService
sceneService
;
private
final
CrossTurnDataRealtimeMapper
crossTurnDataRealtimeMapper
;
private
final
CrossDirDataRealtimeMapper
crossDirDataRealtimeMapper
;
private
final
CrossInfoCache
crossInfoCache
;
@Value
(
"${crossOptParam.maxVehheadDist}"
)
private
Double
maxVehheadDist
;
...
...
@@ -84,8 +86,6 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
public
String
realtimeOptimize
(
List
<
CrossDataRealtimePO
>
abnormalCrossList
,
List
<
CrossDataRealtimePO
>
crossDataRealtimePOList
)
{
try
{
// todo 当前路口不是信控路口,需要跳过
// utcFeignClients.listCrossInfo()
// todo 系统管理,路口管理,信控标志关闭,优化下发也要关闭
// 相位配时信息,key: 路口编号_方向类型_转向类型,value: 相位配时信息
...
...
@@ -144,6 +144,10 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
for
(
CrossDataRealtimePO
cross
:
abnormalCrossList
)
{
crossId
=
cross
.
getCrossId
();
// 不是信控路口跳过
if
(!
isSignalCross
(
crossId
))
{
continue
;
}
// 判断信号机是否在线 todo 是否某些故障也不需要优化
// 判断当前路口是否存在特殊控制操作
if
(
isOffLineOrSpecialControlMode
(
crossId
))
{
...
...
@@ -206,6 +210,20 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
}
}
/**
* 是否是信控路口
*
* @param crossId
* @return
*/
private
boolean
isSignalCross
(
String
crossId
)
{
List
<
String
>
isSignalCrossIdList
=
crossInfoCache
.
getIsSignalCrossIdList
();
if
(
isSignalCrossIdList
.
contains
(
crossId
))
{
return
true
;
}
return
false
;
}
/**
* 路口拥堵优化
*
...
...
@@ -226,6 +244,11 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
for
(
CrossDataRealtimePO
cross
:
abnormalCrossList
)
{
crossId
=
cross
.
getCrossId
();
// 不是信控路口跳过
if
(!
isSignalCross
(
crossId
))
{
continue
;
}
// 判断信号机是否在线 todo 是否某些故障也不需要优化
// 判断当前路口是否存在特殊控制操作
if
(
isOffLineOrSpecialControlMode
(
crossId
))
{
...
...
@@ -304,6 +327,12 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
for
(
CrossDataRealtimePO
cross
:
abnormalCrossList
)
{
crossId
=
cross
.
getCrossId
();
// 不是信控路口跳过
if
(!
isSignalCross
(
crossId
))
{
continue
;
}
// 判断信号机是否在线 todo 是否某些故障也不需要优化
// 判断当前路口是否存在特殊控制操作
if
(
isOffLineOrSpecialControlMode
(
crossId
))
{
...
...
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