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
684eef49
Commit
684eef49
authored
Feb 25, 2023
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 实时监控异常优化
parent
44545b62
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
103 additions
and
67 deletions
+103
-67
CrossTurnDataRealtimeDTO.java
...main/java/net/wanji/opt/dto/CrossTurnDataRealtimeDTO.java
+4
-1
CrossDataRealtimePO.java
...main/java/net/wanji/opt/po/trend/CrossDataRealtimePO.java
+9
-0
CrossOptimizeService.java
...main/java/net/wanji/opt/service/CrossOptimizeService.java
+2
-2
CrossOptimizeServiceImpl.java
.../net/wanji/opt/service/impl/CrossOptimizeServiceImpl.java
+82
-57
CrossMonitorTask.java
...ce/src/main/java/net/wanji/opt/task/CrossMonitorTask.java
+6
-7
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/dto/CrossTurnDataRealtimeDTO.java
View file @
684eef49
...
...
@@ -81,7 +81,10 @@ public class CrossTurnDataRealtimeDTO {
currentVehheadTime
=
2.8
;
}
// 排队车辆
Double
queuedVehicles
=
entity
.
getQueueLength
()
/
currentVehheadDist
;
Double
queuedVehicles
=
null
;
if
(
Objects
.
nonNull
(
entity
.
getQueueLength
()))
{
queuedVehicles
=
entity
.
getQueueLength
()
/
currentVehheadDist
;
}
// 通行时长
Double
calPassTime
=
queuedVehicles
*
currentVehheadTime
;
return
calPassTime
;
...
...
signal-optimize-service/src/main/java/net/wanji/opt/po/trend/CrossDataRealtimePO.java
View file @
684eef49
...
...
@@ -2,8 +2,11 @@ package net.wanji.opt.po.trend;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
net.wanji.opt.dto.CrossDirInfoDTO
;
import
net.wanji.opt.dto.CrossTurnInfoDTO
;
import
java.util.Date
;
import
java.util.List
;
/**
* @author hfx
...
...
@@ -87,4 +90,10 @@ public class CrossDataRealtimePO {
/** 修改时间 */
@ApiModelProperty
(
value
=
"修改时间"
,
notes
=
""
)
private
Date
gmtModified
;
@ApiModelProperty
(
name
=
"路口方向列表"
,
notes
=
""
)
List
<
CrossDirInfoDTO
>
dirList
;
@ApiModelProperty
(
name
=
"路口转向列表"
,
notes
=
""
)
List
<
CrossTurnInfoDTO
>
turnList
;
}
signal-optimize-service/src/main/java/net/wanji/opt/service/CrossOptimizeService.java
View file @
684eef49
package
net
.
wanji
.
opt
.
service
;
import
net.wanji.opt.
dto.CrossDataRealtimeDT
O
;
import
net.wanji.opt.
po.trend.CrossDataRealtimeP
O
;
import
java.util.List
;
...
...
@@ -16,7 +16,7 @@ public interface CrossOptimizeService {
* 路口实时优化
* @return
*/
String
realtimeOptimize
(
List
<
CrossDataRealtime
DT
O
>
abnormalCrossList
);
String
realtimeOptimize
(
List
<
CrossDataRealtime
P
O
>
abnormalCrossList
);
/**
* 路口方案优化
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/CrossOptimizeServiceImpl.java
View file @
684eef49
...
...
@@ -6,7 +6,6 @@ import net.wanji.common.enums.CrossStatusEnum;
import
net.wanji.common.enums.TurnConvertEnum
;
import
net.wanji.common.enums.WeekEnum
;
import
net.wanji.common.framework.Constants
;
import
net.wanji.common.utils.tool.BeanListUtils
;
import
net.wanji.common.utils.tool.DateUtil
;
import
net.wanji.common.utils.tool.StringUtils
;
import
net.wanji.databus.dao.entity.RidInfoEntity
;
...
...
@@ -23,6 +22,7 @@ import net.wanji.opt.dto.*;
import
net.wanji.opt.po.base.CrossPhasePO
;
import
net.wanji.opt.po.base.CrossSchemeOptLogPO
;
import
net.wanji.opt.po.base.CrossSchemePO
;
import
net.wanji.opt.po.trend.CrossDataRealtimePO
;
import
net.wanji.opt.service.CrossOptimizeService
;
import
net.wanji.opt.service.CrossSchedulesService
;
import
net.wanji.opt.service.CrossSchemeService
;
...
...
@@ -66,7 +66,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
@Override
@Transactional
public
String
realtimeOptimize
(
List
<
CrossDataRealtime
DT
O
>
abnormalCrossList
)
{
public
String
realtimeOptimize
(
List
<
CrossDataRealtime
P
O
>
abnormalCrossList
)
{
try
{
// 相位配时信息,key:路口编号_方向类型_转向类型,value 相位配时信息
...
...
@@ -79,7 +79,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
// 恢复优化路口原始方案:上一批次优化后,路口正常需要恢复原始方案
restoreOptCrossOriSchema
(
abnormalCrossList
,
phaseMap
);
Map
<
Integer
,
List
<
CrossDataRealtime
DTO
>>
crossDataMap
=
abnormalCrossList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossDataRealtimeDT
O:
:
getStatus
));
Map
<
Integer
,
List
<
CrossDataRealtime
PO
>>
crossDataMap
=
abnormalCrossList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossDataRealtimeP
O:
:
getStatus
));
abnormalCrossList
=
crossDataMap
.
get
(
CrossStatusEnum
.
SPILLOVER
.
getCode
());
// 溢出
if
(
abnormalCrossList
!=
null
&&
!
abnormalCrossList
.
isEmpty
())
{
spilloverOpt
(
abnormalCrossList
,
turnDataRealtime
,
phaseMap
);
...
...
@@ -106,13 +106,13 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
* @param turnDataRealtimeMap
* @param phaseMap
*/
private
void
spilloverOpt
(
List
<
CrossDataRealtime
DT
O
>
abnormalCrossList
,
Map
<
String
,
List
<
CrossTurnDataRealtimeDTO
>>
turnDataRealtimeMap
,
private
void
spilloverOpt
(
List
<
CrossDataRealtime
P
O
>
abnormalCrossList
,
Map
<
String
,
List
<
CrossTurnDataRealtimeDTO
>>
turnDataRealtimeMap
,
Map
<
String
,
CrossPhaseDTO
>
phaseMap
)
throws
Exception
{
Map
<
String
,
List
<
CrossDataRealtime
DTO
>>
congestCrossMap
=
abnormalCrossList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossDataRealtimeDT
O:
:
getCrossId
));
Map
<
String
,
List
<
CrossDataRealtime
PO
>>
congestCrossMap
=
abnormalCrossList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossDataRealtimeP
O:
:
getCrossId
));
String
crossId
;
for
(
CrossDataRealtime
DT
O
cross
:
abnormalCrossList
)
{
for
(
CrossDataRealtime
P
O
cross
:
abnormalCrossList
)
{
crossId
=
cross
.
getCrossId
();
// 判断信号机是否在线 todo 是否某些故障也不需要优化
...
...
@@ -178,13 +178,13 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
* @param turnDataRealtimeMap
* @param phaseMap
*/
private
void
congestionOpt
(
List
<
CrossDataRealtime
DT
O
>
abnormalCrossList
,
Map
<
String
,
List
<
CrossTurnDataRealtimeDTO
>>
turnDataRealtimeMap
,
private
void
congestionOpt
(
List
<
CrossDataRealtime
P
O
>
abnormalCrossList
,
Map
<
String
,
List
<
CrossTurnDataRealtimeDTO
>>
turnDataRealtimeMap
,
Map
<
String
,
CrossPhaseDTO
>
phaseMap
)
throws
Exception
{
Map
<
String
,
List
<
CrossDataRealtime
DTO
>>
congestCrossMap
=
abnormalCrossList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossDataRealtimeDT
O:
:
getCrossId
));
Map
<
String
,
List
<
CrossDataRealtime
PO
>>
congestCrossMap
=
abnormalCrossList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossDataRealtimeP
O:
:
getCrossId
));
String
crossId
;
for
(
CrossDataRealtime
DT
O
cross
:
abnormalCrossList
)
{
for
(
CrossDataRealtime
P
O
cross
:
abnormalCrossList
)
{
crossId
=
cross
.
getCrossId
();
// 判断信号机是否在线 todo 是否某些故障也不需要优化
...
...
@@ -246,7 +246,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
* @param cross
* @return
*/
private
static
List
<
String
>
getOptCrossDirTurnList
(
CrossDataRealtime
DT
O
cross
)
{
private
static
List
<
String
>
getOptCrossDirTurnList
(
CrossDataRealtime
P
O
cross
)
{
List
<
String
>
crossIdDirTurnList
=
new
ArrayList
<>();
List
<
CrossDirInfoDTO
>
dirList
=
cross
.
getDirList
();
List
<
CrossTurnInfoDTO
>
turnList
=
cross
.
getTurnList
();
...
...
@@ -274,8 +274,8 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
* @param abnormalCrossList
* @param phaseMap
*/
private
static
void
setTurnList
(
List
<
CrossDataRealtime
DT
O
>
abnormalCrossList
,
Map
<
String
,
CrossPhaseDTO
>
phaseMap
)
{
for
(
CrossDataRealtime
DT
O
crossDataRealtimeDTO
:
abnormalCrossList
)
{
private
static
void
setTurnList
(
List
<
CrossDataRealtime
P
O
>
abnormalCrossList
,
Map
<
String
,
CrossPhaseDTO
>
phaseMap
)
{
for
(
CrossDataRealtime
P
O
crossDataRealtimeDTO
:
abnormalCrossList
)
{
List
<
CrossTurnInfoDTO
>
turnList
=
new
ArrayList
<>();
List
<
CrossDirInfoDTO
>
dirList
=
new
ArrayList
<>();
for
(
Map
.
Entry
<
String
,
CrossPhaseDTO
>
entry
:
phaseMap
.
entrySet
())
{
...
...
@@ -296,6 +296,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
crossTurnInfoDTO
.
setTurnType
(
turn
);
crossTurnInfoDTO
.
setInDir
(
Integer
.
valueOf
(
dir
));
crossTurnInfoDTO
.
setCrossId
(
crossId
);
turnList
.
add
(
crossTurnInfoDTO
);
}
}
...
...
@@ -309,8 +310,8 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
*
* @param abnormalCrossList
*/
private
void
restoreOptCrossOriSchema
(
List
<
CrossDataRealtime
DT
O
>
abnormalCrossList
,
Map
<
String
,
CrossPhaseDTO
>
phaseMap
)
throws
Exception
{
List
<
String
>
abnormalCrossIdList
=
abnormalCrossList
.
stream
().
map
(
CrossDataRealtime
DT
O:
:
getCrossId
).
collect
(
Collectors
.
toList
());
private
void
restoreOptCrossOriSchema
(
List
<
CrossDataRealtime
P
O
>
abnormalCrossList
,
Map
<
String
,
CrossPhaseDTO
>
phaseMap
)
throws
Exception
{
List
<
String
>
abnormalCrossIdList
=
abnormalCrossList
.
stream
().
map
(
CrossDataRealtime
P
O:
:
getCrossId
).
collect
(
Collectors
.
toList
());
for
(
String
optCrossId
:
CROSS_OPT
)
{
if
(!
abnormalCrossIdList
.
contains
(
optCrossId
))
{
// 下发原始方案
...
...
@@ -331,11 +332,11 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
* @param turnDataRealtimeMap 路口转向实时数据
* @param phaseMap 路口相位配时数据
*/
private
void
unbalanceOpt
(
List
<
CrossDataRealtime
DT
O
>
abnormalCrossList
,
Map
<
String
,
List
<
CrossTurnDataRealtimeDTO
>>
turnDataRealtimeMap
,
private
void
unbalanceOpt
(
List
<
CrossDataRealtime
P
O
>
abnormalCrossList
,
Map
<
String
,
List
<
CrossTurnDataRealtimeDTO
>>
turnDataRealtimeMap
,
Map
<
String
,
CrossPhaseDTO
>
phaseMap
)
throws
Exception
{
String
crossId
;
for
(
CrossDataRealtime
DT
O
cross
:
abnormalCrossList
)
{
for
(
CrossDataRealtime
P
O
cross
:
abnormalCrossList
)
{
crossId
=
cross
.
getCrossId
();
// 判断信号机是否在线 todo 是否某些故障也不需要优化
...
...
@@ -427,11 +428,9 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
crossSchemeOptLogPO
.
setOriGreenTime
(
crossPhaseDTO
.
getGreenTime
());
}
}
insertList
.
add
(
crossSchemeOptLogPO
);
}
//
crossSchemeOptLogMapper.insertBatch(insertList);
crossSchemeOptLogMapper
.
insertBatch
(
insertList
);
}
/**
...
...
@@ -455,28 +454,51 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
SchemeSendVO
schemeSendVO
=
new
SchemeSendVO
();
List
<
SchemeSendVO
.
Pattern
>
patternList
=
new
ArrayList
<>();
BeanListUtils
.
populateList
(
crossSchemePOS
,
patternList
,
SchemeSendVO
.
Pattern
.
class
);
schemeSendVO
.
setPatternList
(
patternList
);
schemeSendVO
.
setCrossCode
(
crossId
);
List
<
SchemeSendVO
.
Pattern
.
Ring
>
rings
=
new
ArrayList
<>();
ringNoPhasePOMap
.
entrySet
().
forEach
(
entry
->
{
SchemeSendVO
.
Pattern
.
Ring
ring
=
new
SchemeSendVO
.
Pattern
.
Ring
();
List
<
SchemeSendVO
.
Pattern
.
Ring
.
Phase
>
phaseList
=
new
ArrayList
<>();
List
<
CrossPhasePO
>
value
=
entry
.
getValue
();
BeanListUtils
.
populateList
(
value
,
phaseList
,
SchemeSendVO
.
Pattern
.
Ring
.
Phase
.
class
);
ring
.
setRingNo
(
String
.
valueOf
(
entry
.
getKey
()));
// 在原始方案基础绿灯时间+可优化时间
if
(!
CollectionUtils
.
isEmpty
(
phaseTimeOptResultMap
))
{
phaseList
.
forEach
(
phaseInfo
->
{
Integer
optTime
=
phaseTimeOptResultMap
.
get
(
phaseInfo
.
getPhaseNo
());
String
greenTime
=
phaseInfo
.
getGreenTime
();
phaseInfo
.
setGreenTime
(
greenTime
+
optTime
);
});
}
ring
.
setPhaseList
(
phaseList
);
rings
.
add
(
ring
);
});
crossSchemePOS
.
forEach
(
crossSchemePO
->
{
SchemeSendVO
.
Pattern
pattern
=
new
SchemeSendVO
.
Pattern
();
pattern
.
setPatternName
(
"实时监测优化方案"
.
concat
(
crossSchemePO
.
getSchemeNo
()));
pattern
.
setPatternNo
(
String
.
valueOf
(
crossSchemePO
.
getId
()));
pattern
.
setCycle
(
String
.
valueOf
(
crossSchemePO
.
getCycle
()));
pattern
.
setOffset
(
String
.
valueOf
(
crossSchemePO
.
getOffset
()));
pattern
.
setCoordPhase
(
String
.
valueOf
(
crossSchemePO
.
getCoordPhase
()));
List
<
SchemeSendVO
.
Pattern
.
Ring
>
rings
=
new
ArrayList
<>();
ringNoPhasePOMap
.
entrySet
().
forEach
(
entry
->
{
SchemeSendVO
.
Pattern
.
Ring
ring
=
new
SchemeSendVO
.
Pattern
.
Ring
();
List
<
SchemeSendVO
.
Pattern
.
Ring
.
Phase
>
phaseList
=
new
ArrayList
<>();
List
<
CrossPhasePO
>
value
=
entry
.
getValue
();
value
.
forEach
(
crossPhasePO
->
{
SchemeSendVO
.
Pattern
.
Ring
.
Phase
phase
=
new
SchemeSendVO
.
Pattern
.
Ring
.
Phase
();
phase
.
setPhaseNo
(
crossPhasePO
.
getPhaseNo
());
phase
.
setPhaseName
(
crossPhasePO
.
getName
());
phase
.
setSort
(
String
.
valueOf
(
crossPhasePO
.
getSort
()));
phase
.
setControlMode
(
String
.
valueOf
(
crossPhasePO
.
getControlMode
()));
phase
.
setMinGreenTime
(
String
.
valueOf
(
crossPhasePO
.
getMinGreenTime
()));
phase
.
setMaxGreenTime
(
String
.
valueOf
(
crossPhasePO
.
getMaxGreenTime
()));
phase
.
setPhaseTime
(
String
.
valueOf
(
crossPhasePO
.
getPhaseTime
()));
phase
.
setGreenTime
(
String
.
valueOf
(
crossPhasePO
.
getGreenTime
()));
phase
.
setGreenFlashTime
(
String
.
valueOf
(
crossPhasePO
.
getGreenFlashTime
()));
phase
.
setPedFlashTime
(
String
.
valueOf
(
crossPhasePO
.
getPedFlashTime
()));
phase
.
setYellowTime
(
String
.
valueOf
(
crossPhasePO
.
getYellowTime
()));
phase
.
setRedTime
(
String
.
valueOf
(
crossPhasePO
.
getRedTime
()));
phaseList
.
add
(
phase
);
// 在原始方案基础绿灯时间+可优化时间
if
(!
phaseTimeOptResultMap
.
isEmpty
())
{
phaseList
.
forEach
(
phaseInfo
->
{
Integer
optTime
=
phaseTimeOptResultMap
.
get
(
phaseInfo
.
getPhaseNo
());
String
greenTime
=
phaseInfo
.
getGreenTime
();
phaseInfo
.
setGreenTime
(
greenTime
+
optTime
);
});
}
});
ring
.
setRingNo
(
String
.
valueOf
(
entry
.
getKey
()));
ring
.
setPhaseList
(
phaseList
);
rings
.
add
(
ring
);
});
pattern
.
setRings
(
rings
);
patternList
.
add
(
pattern
);
}
);
schemeSendVO
.
setCrossCode
(
crossId
);
schemeSendVO
.
setPatternList
(
patternList
);
...
...
@@ -652,11 +674,19 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
crossId
=
section
.
getCrossId
();
CrossSchemeDTO
scheme
=
schemeMap
.
get
(
section
.
getSchemeId
());
// 方案信息
if
(
Objects
.
isNull
(
scheme
.
getPhaseInfos
()))
{
log
.
error
(
"{}-路口, {}-方案,方案中相位信息不能为空"
,
crossId
,
scheme
.
getId
());
throw
new
Exception
(
"方案中相位信息不能为空"
);
}
for
(
CrossPhaseDTO
phase
:
scheme
.
getPhaseInfos
())
{
// 相位信息列表
for
(
CrossLightsDTO
lights
:
phase
.
getLightsInfos
())
{
// 灯组信息列表
dir
=
lights
.
getDir
();
if
(
Objects
.
isNull
(
lights
.
getLaneInfos
()))
{
log
.
error
(
"{}-路口, {}-方案,{}-灯组,灯组中车道信息不能为空"
,
crossId
,
scheme
.
getId
(),
lights
.
getId
());
throw
new
Exception
(
"灯组中车道信息不能为空"
);
}
for
(
LaneInfoDTO
lane
:
lights
.
getLaneInfos
())
{
// 车道转向转换为转向类型,并去重
turnArr
=
TurnConvertEnum
.
getCodeByKey
(
lane
.
getTurn
()).
split
(
Constants
.
SystemParam
.
SEPARATOR_UNDER_LINE
);
...
...
@@ -725,25 +755,20 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
*
* @return
*/
public
Map
<
String
,
List
<
CrossTurnDataRealtimeDTO
>>
listTurnDataRealtime
(
List
<
CrossDataRealtime
DT
O
>
abnormalCrossList
)
{
public
Map
<
String
,
List
<
CrossTurnDataRealtimeDTO
>>
listTurnDataRealtime
(
List
<
CrossDataRealtime
P
O
>
abnormalCrossList
)
{
Map
<
String
,
List
<
CrossTurnDataRealtimeDTO
>>
turnDataRealtimeDTOList
=
new
HashMap
<>();
Map
<
String
,
List
<
CrossDataRealtimeDTO
>>
abnormalCrossGroupMap
=
abnormalCrossList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossDataRealtimeDTO:
:
getCrossId
));
abnormalCrossGroupMap
.
entrySet
().
forEach
(
entry
->
{
String
crossId
=
entry
.
getKey
();
List
<
CrossDataRealtimeDTO
>
realTimeData
=
entry
.
getValue
();
abnormalCrossList
.
forEach
(
entry
->
{
List
<
CrossTurnDataRealtimeDTO
>
crossTurnDataRealtimeDTOS
=
new
ArrayList
<>();
realTimeData
.
forEach
(
realData
->
{
List
<
CrossTurnInfoDTO
>
turnList
=
realData
.
getTurnList
();
turnList
.
forEach
(
crossTurnInfoDTO
->
{
CrossTurnDataRealtimeDTO
crossTurnDataRealtimeDTO
=
new
CrossTurnDataRealtimeDTO
();
BeanUtils
.
copyProperties
(
realData
,
crossTurnDataRealtimeDTO
);
crossTurnDataRealtimeDTO
.
setTurnType
(
crossTurnInfoDTO
.
getTurnType
());
crossTurnDataRealtimeDTO
.
setInDir
(
crossTurnInfoDTO
.
getInDir
());
crossTurnDataRealtimeDTO
.
setOutDir
(
crossTurnInfoDTO
.
getOutDir
());
crossTurnDataRealtimeDTOS
.
add
(
crossTurnDataRealtimeDTO
);
});
String
crossId
=
entry
.
getCrossId
();
List
<
CrossTurnInfoDTO
>
turnList
=
entry
.
getTurnList
();
turnList
.
forEach
(
crossTurnInfoDTO
->
{
CrossTurnDataRealtimeDTO
crossTurnDataRealtimeDTO
=
new
CrossTurnDataRealtimeDTO
();
BeanUtils
.
copyProperties
(
entry
,
crossTurnDataRealtimeDTO
);
crossTurnDataRealtimeDTO
.
setTurnType
(
crossTurnInfoDTO
.
getTurnType
());
crossTurnDataRealtimeDTO
.
setInDir
(
crossTurnInfoDTO
.
getInDir
());
crossTurnDataRealtimeDTO
.
setOutDir
(
crossTurnInfoDTO
.
getOutDir
());
crossTurnDataRealtimeDTOS
.
add
(
crossTurnDataRealtimeDTO
);
});
turnDataRealtimeDTOList
.
put
(
crossId
,
crossTurnDataRealtimeDTOS
);
});
...
...
signal-optimize-service/src/main/java/net/wanji/opt/task/CrossMonitorTask.java
View file @
684eef49
...
...
@@ -4,7 +4,6 @@ import lombok.extern.slf4j.Slf4j;
import
net.wanji.common.enums.CrossStatusEnum
;
import
net.wanji.common.framework.Constants
;
import
net.wanji.opt.dao.mapper.trend.CrossDataRealtimeMapper
;
import
net.wanji.opt.dto.CrossDataRealtimeDTO
;
import
net.wanji.opt.po.trend.CrossDataRealtimePO
;
import
net.wanji.opt.service.CrossOptimizeService
;
import
org.springframework.beans.BeanUtils
;
...
...
@@ -46,7 +45,7 @@ public class CrossMonitorTask {
// }
// 获取所有信控路口异常数据(失衡/拥堵/溢出/死锁)
List
<
CrossDataRealtime
DT
O
>
abnormalCrossList
=
listAbnormalCross
(
crossDataRealtimePOList
);
List
<
CrossDataRealtime
P
O
>
abnormalCrossList
=
listAbnormalCross
(
crossDataRealtimePOList
);
log
.
info
(
"加载异常路口:{}条"
,
abnormalCrossList
.
size
());
// if(abnormalCrossList.isEmpty()) {
// return ;
...
...
@@ -62,15 +61,15 @@ public class CrossMonitorTask {
*
* @return
*/
public
List
<
CrossDataRealtime
DT
O
>
listAbnormalCross
(
List
<
CrossDataRealtimePO
>
crossDataRealtimePOList
)
{
public
List
<
CrossDataRealtime
P
O
>
listAbnormalCross
(
List
<
CrossDataRealtimePO
>
crossDataRealtimePOList
)
{
List
<
CrossDataRealtime
DT
O
>
dtoList
=
new
ArrayList
<>();
CrossDataRealtime
DT
O
dto
=
null
;
List
<
CrossDataRealtime
P
O
>
dtoList
=
new
ArrayList
<>();
CrossDataRealtime
P
O
dto
=
null
;
int
status
=
0
;
for
(
CrossDataRealtimePO
po
:
crossDataRealtimePOList
)
{
// 获取失衡、拥堵、溢出路口数据
if
(
Constants
.
SystemParam
.
NO
.
equals
(
po
.
getIsSpillover
())
||
Constants
.
SystemParam
.
NO
.
equals
(
po
.
getIsCongestion
())
||
Constants
.
SystemParam
.
NO
.
equals
(
po
.
getIsUnbalance
()))
{
if
(
Constants
.
SystemParam
.
NO
.
equals
(
po
.
getIsSpillover
())
&&
Constants
.
SystemParam
.
NO
.
equals
(
po
.
getIsCongestion
())
&&
Constants
.
SystemParam
.
NO
.
equals
(
po
.
getIsUnbalance
()))
{
continue
;
}
...
...
@@ -81,7 +80,7 @@ public class CrossMonitorTask {
}
else
if
(
Constants
.
SystemParam
.
YES
.
equals
(
po
.
getIsUnbalance
()))
{
// 失衡
status
=
CrossStatusEnum
.
UNBALANCE
.
getCode
();
}
dto
=
new
CrossDataRealtime
DT
O
();
dto
=
new
CrossDataRealtime
P
O
();
BeanUtils
.
copyProperties
(
po
,
dto
);
dto
.
setCrossId
(
po
.
getCrossId
());
dto
.
setStatus
(
status
);
...
...
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