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
b13b8f7b
Commit
b13b8f7b
authored
Sep 22, 2023
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 优化海信灯态接入方式
parent
aac17b1e
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
228 additions
and
47 deletions
+228
-47
CrossSchemePhaseTimeCountCache.java
...nji/utc/hisense/cache/CrossSchemePhaseTimeCountCache.java
+91
-0
SignalDataCache.java
...ain/java/net/wanji/utc/hisense/cache/SignalDataCache.java
+2
-2
NettyServerHandler.java
...t/wanji/utc/hisense/netty/handler/NettyServerHandler.java
+1
-1
GetRunningStateInfoService.java
...e/netty/response/impl/get/GetRunningStateInfoService.java
+1
-1
HisenseLightStatusPojo.java
...anji/utc/hisense/pojo/convert/HisenseLightStatusPojo.java
+3
-5
CrossSchemePhaseCountDownDTO.java
...ji/utc/hisense/pojo/dto/CrossSchemePhaseCountDownDTO.java
+16
-0
PhaseCountDownDTO.java
...ava/net/wanji/utc/hisense/pojo/dto/PhaseCountDownDTO.java
+16
-0
SignalStatusServiceImpl.java
...nji/utc/hisense/service/impl/SignalStatusServiceImpl.java
+43
-37
HisensePhaseCountDownTask.java
...net/wanji/utc/hisense/task/HisensePhaseCountDownTask.java
+55
-1
No files found.
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/cache/CrossSchemePhaseTimeCountCache.java
0 → 100644
View file @
b13b8f7b
package
net
.
wanji
.
utc
.
hisense
.
cache
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.databus.dao.entity.CrossPhasePO
;
import
net.wanji.databus.dao.entity.CrossSchemePO
;
import
net.wanji.databus.dao.mapper.CrossInfoMapper
;
import
net.wanji.databus.dao.mapper.CrossPhaseMapper
;
import
net.wanji.databus.dao.mapper.CrossSchemeMapper
;
import
net.wanji.databus.po.CrossInfoPO
;
import
net.wanji.utc.hisense.pojo.dto.CrossSchemePhaseCountDownDTO
;
import
net.wanji.utc.hisense.pojo.dto.PhaseCountDownDTO
;
import
org.springframework.boot.CommandLineRunner
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
javax.annotation.Resource
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* @author duanruiming
* @date 2023/09/22 14:19
*/
@Slf4j
@Component
@SuppressWarnings
(
"unchecked"
)
@RequiredArgsConstructor
public
class
CrossSchemePhaseTimeCountCache
implements
CommandLineRunner
{
public
static
final
List
<
CrossSchemePhaseCountDownDTO
>
crossSchemePhaseCountDownList
=
new
ArrayList
<>();
@Resource
private
CrossPhaseMapper
crossPhaseMapper
;
@Resource
private
CrossSchemeMapper
crossSchemeMapper
;
@Resource
private
CrossInfoMapper
crossInfoMapper
;
@Override
public
void
run
(
String
...
args
)
throws
Exception
{
init
();
}
public
void
init
()
{
List
<
CrossInfoPO
>
crossInfoPOList
=
crossInfoMapper
.
selectAll
();
if
(!
CollectionUtils
.
isEmpty
(
crossInfoPOList
))
{
for
(
CrossInfoPO
crossInfoPO
:
crossInfoPOList
)
{
String
crossId
=
crossInfoPO
.
getId
();
List
<
CrossPhasePO
>
crossPhasePOS
=
crossPhaseMapper
.
selectByCrossId
(
crossId
);
if
(!
CollectionUtils
.
isEmpty
(
crossPhasePOS
))
{
Map
<
Integer
,
List
<
CrossPhasePO
>>
schemeIdListMap
=
crossPhasePOS
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossPhasePO:
:
getPlanId
));
for
(
Map
.
Entry
<
Integer
,
List
<
CrossPhasePO
>>
entry
:
schemeIdListMap
.
entrySet
())
{
Integer
schemeId
=
entry
.
getKey
();
CrossSchemePhaseCountDownDTO
crossSchemePhaseCountDownDTO
=
new
CrossSchemePhaseCountDownDTO
();
CrossSchemePO
crossSchemePO
=
crossSchemeMapper
.
selectSchemePOById
(
schemeId
);
if
(
Objects
.
isNull
(
crossSchemePO
))
{
continue
;
}
Integer
cycle
=
crossSchemePO
.
getCycle
();
String
schemeNo
=
crossSchemePO
.
getSchemeNo
();
List
<
CrossPhasePO
>
schemeNoList
=
entry
.
getValue
();
if
(!
CollectionUtils
.
isEmpty
(
schemeNoList
))
{
List
<
CrossPhasePO
>
phaseSortList
=
schemeNoList
.
stream
().
sorted
(
Comparator
.
comparingInt
(
CrossPhasePO:
:
getSort
)).
collect
(
Collectors
.
toList
());
Integer
changePhaseTime
=
0
;
List
<
PhaseCountDownDTO
>
phaseCountDownDTOS
=
new
ArrayList
<>(
phaseSortList
.
size
());
for
(
CrossPhasePO
crossPhasePO
:
phaseSortList
)
{
String
phaseNo
=
crossPhasePO
.
getPhaseNo
();
Integer
phaseTime
=
crossPhasePO
.
getPhaseTime
();
Integer
yellowTime
=
crossPhasePO
.
getYellowTime
();
Integer
redTime
=
crossPhasePO
.
getRedTime
();
changePhaseTime
+=
phaseTime
;
PhaseCountDownDTO
phaseCountDownDTO
=
new
PhaseCountDownDTO
();
phaseCountDownDTO
.
setPhaseNo
(
phaseNo
);
phaseCountDownDTO
.
setPhaseTime
(
phaseTime
);
phaseCountDownDTO
.
setChangePhaseTime
(
changePhaseTime
);
phaseCountDownDTO
.
setYellowTime
(
yellowTime
);
phaseCountDownDTO
.
setRedTime
(
redTime
);
phaseCountDownDTOS
.
add
(
phaseCountDownDTO
);
}
crossSchemePhaseCountDownDTO
.
setPhaseCountDownDTOList
(
phaseCountDownDTOS
);
}
crossSchemePhaseCountDownDTO
.
setCrossId
(
crossId
);
crossSchemePhaseCountDownDTO
.
setSchemeNo
(
schemeNo
);
crossSchemePhaseCountDownList
.
add
(
crossSchemePhaseCountDownDTO
);
}
}
}
}
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/cache/SignalDataCache.java
View file @
b13b8f7b
...
...
@@ -21,7 +21,7 @@ public class SignalDataCache {
public
static
final
Map
<
String
,
List
<
PhaseStageInfoPojo
>>
phaseStageInfoCache
=
new
HashMap
<>();
public
static
final
Map
<
String
,
List
<
PhaseInfoPojo
>>
phaseInfoCache
=
new
HashMap
<>();
// 海信推送灯态数据
public
static
final
Map
<
String
,
RunningLightsStatusPojo
>
runningStateInfoCache
=
new
HashMap
<>();
public
static
final
Map
<
String
,
LightsStatusVO
>
runningStateInfoCache
4DataBrain
=
new
HashMap
<>();
public
static
final
Map
<
String
,
RunningLightsStatusPojo
>
runningStateInfoCache
Udp
=
new
HashMap
<>();
public
static
final
Map
<
String
,
LightsStatusVO
>
runningStateInfoCache
=
new
HashMap
<>();
public
static
final
Map
<
String
,
Long
>
runningStatusStampMap
=
new
HashMap
<>();
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/handler/NettyServerHandler.java
View file @
b13b8f7b
...
...
@@ -75,7 +75,7 @@ public class NettyServerHandler extends SimpleChannelInboundHandler<DatagramPack
RunningLightsStatusPojo
pojo
=
(
RunningLightsStatusPojo
)
resultPojo
;
String
signalCode
=
pojo
.
getCID
();
String
crossId
=
signalMap
.
get
(
signalCode
);
Map
<
String
,
RunningLightsStatusPojo
>
cache
=
SignalDataCache
.
runningStateInfoCache
;
Map
<
String
,
RunningLightsStatusPojo
>
cache
=
SignalDataCache
.
runningStateInfoCache
Udp
;
if
(
crossId
!=
null
)
{
cache
.
put
(
crossId
,
pojo
);
}
...
...
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/get/GetRunningStateInfoService.java
View file @
b13b8f7b
...
...
@@ -16,7 +16,7 @@ import org.springframework.stereotype.Service;
public
class
GetRunningStateInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
SignalDataCache
.
runningStateInfoCache
.
put
(
commandPojo
.
getCrossId
(),
(
RunningLightsStatusPojo
)
commandPojo
.
getResponseMsg
());
SignalDataCache
.
runningStateInfoCache
Udp
.
put
(
commandPojo
.
getCrossId
(),
(
RunningLightsStatusPojo
)
commandPojo
.
getResponseMsg
());
return
commandPojo
;
}
...
...
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/pojo/convert/HisenseLightStatusPojo.java
View file @
b13b8f7b
...
...
@@ -13,7 +13,7 @@ import java.util.List;
@Data
@ApiModel
(
value
=
"来自滴滴海信灯态实体类"
)
public
class
HisenseLightStatusPojo
{
private
String
headers
;
private
Headers
headers
;
private
String
body
;
...
...
@@ -23,8 +23,6 @@ public class HisenseLightStatusPojo {
private
String
name
;
@ApiModelProperty
(
value
=
"滴滴数据大脑数据来源"
)
private
String
from
;
@ApiModelProperty
(
value
=
"唯一标识"
)
private
String
taskId
;
}
@Data
...
...
@@ -50,9 +48,9 @@ public class HisenseLightStatusPojo {
"22:单点感应控制,23:打点自适应控制,31:线协调控制,41:区域协调控制,51:干预控制-手动控制,"
+
"52:干预控制-锁定阶段控制,53:干预控制-指定方案,54:干预控制-锁定相位控制"
)
private
int
controlMode
;
@ApiModelProperty
(
value
=
"
路口编号,编号规则:6位行政区编号+5位数字,例如:64010400001
"
)
@ApiModelProperty
(
value
=
"
海信定义路口编号
"
)
private
String
crossId
;
@ApiModelProperty
(
value
=
"信号机实时状态,0-正常1-掉线"
)
@ApiModelProperty
(
value
=
"信号机实时状态,0-正常
,
1-掉线"
)
private
int
crossRealStatus
;
@ApiModelProperty
(
value
=
"周期剩余时间"
)
private
int
cycleCountDown
;
...
...
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/pojo/dto/CrossSchemePhaseCountDownDTO.java
0 → 100644
View file @
b13b8f7b
package
net
.
wanji
.
utc
.
hisense
.
pojo
.
dto
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author duanruiming
* @date 2023/09/22 14:26
*/
@Data
public
class
CrossSchemePhaseCountDownDTO
{
private
String
crossId
;
private
String
schemeNo
;
private
List
<
PhaseCountDownDTO
>
phaseCountDownDTOList
;
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/pojo/dto/PhaseCountDownDTO.java
0 → 100644
View file @
b13b8f7b
package
net
.
wanji
.
utc
.
hisense
.
pojo
.
dto
;
import
lombok.Data
;
/**
* @author duanruiming
* @date 2023/09/22 14:23
*/
@Data
public
class
PhaseCountDownDTO
{
private
String
phaseNo
;
private
Integer
changePhaseTime
;
private
Integer
phaseTime
;
private
Integer
yellowTime
;
private
Integer
redTime
;
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/service/impl/SignalStatusServiceImpl.java
View file @
b13b8f7b
...
...
@@ -4,17 +4,21 @@ import com.fasterxml.jackson.core.type.TypeReference;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.utils.tool.JacksonUtils
;
import
net.wanji.common.utils.tool.StringUtils
;
import
net.wanji.databus.po.CrossInfoPO
;
import
net.wanji.databus.po.SignalStatusLogPO
;
import
net.wanji.databus.vo.LightsStatusVO
;
import
net.wanji.utc.hisense.cache.CrossInfoCache
;
import
net.wanji.utc.hisense.cache.CrossPhaseDirTurnCache
;
import
net.wanji.utc.hisense.cache.CrossSchemePhaseTimeCountCache
;
import
net.wanji.utc.hisense.cache.SignalDataCache
;
import
net.wanji.utc.hisense.common.enums.*
;
import
net.wanji.utc.hisense.common.enums.CrossLisghtsLaneDirEnum
;
import
net.wanji.utc.hisense.common.enums.DataBrainControlModeEnum
;
import
net.wanji.utc.hisense.pojo.CrossPhaseDirTurnPojo
;
import
net.wanji.utc.hisense.pojo.convert.HisenseLightStatusPojo
;
import
net.wanji.utc.hisense.pojo.dto.CrossSchemePhaseCountDownDTO
;
import
net.wanji.utc.hisense.pojo.dto.PhaseCountDownDTO
;
import
net.wanji.utc.hisense.service.SignalStatusService
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
...
...
@@ -34,14 +38,22 @@ public class SignalStatusServiceImpl implements SignalStatusService {
return
null
;
}
@Override
public
List
<
LightsStatusVO
>
lightStatus
(
String
crossId
)
{
List
<
LightsStatusVO
>
lightsStatusVOS
=
new
ArrayList
<>();
LightsStatusVO
lightsStatusVO
=
SignalDataCache
.
runningStateInfoCache4DataBrain
.
get
(
crossId
);
Map
<
String
,
LightsStatusVO
>
runningStateInfoCache
=
SignalDataCache
.
runningStateInfoCache
;
if
(!
runningStateInfoCache
.
isEmpty
())
{
LightsStatusVO
lightsStatusVO
=
runningStateInfoCache
.
get
(
crossId
);
lightsStatusVOS
.
add
(
lightsStatusVO
);
return
lightsStatusVOS
;
}
return
lightsStatusVOS
;
}
/**
* @param hisenseLightStatusPojo
* @throws Exception
* @description 通过http形式接收海信灯态
*/
@Override
public
void
receiveLightStatus
(
HisenseLightStatusPojo
hisenseLightStatusPojo
)
throws
Exception
{
ObjectMapper
jackson
=
JacksonUtils
.
getInstance
();
...
...
@@ -67,9 +79,13 @@ public class SignalStatusServiceImpl implements SignalStatusService {
}
SignalDataCache
.
runningStatusStampMap
.
put
(
crossId
,
signalMachineStamp
);
}
int
cycleCountDown
=
content
.
getCycleCountDown
();
Date
date
=
new
Date
();
Long
time
=
date
.
getTime
();
int
offsetTime
=
(
int
)
((
time
-
signalMachineStamp
)
/
1000
);
int
cycleCountDown
=
content
.
getCycleCountDown
()
-
offsetTime
;
int
hiControlMode
=
content
.
getControlMode
();
int
period
=
content
.
getPeriod
();
int
runTime
=
period
-
cycleCountDown
;
int
planId
=
(
content
.
getPlanId
()
+
2
)
/
3
;
lightsStatusVO
.
setCrossId
(
crossId
);
lightsStatusVO
.
setSchemeId
(
String
.
valueOf
(
planId
));
...
...
@@ -84,41 +100,31 @@ public class SignalStatusServiceImpl implements SignalStatusService {
lightsStatusVO
.
setManufacturerCode
(
"Hisense"
);
lightsStatusVO
.
setPhasePlanId
(
String
.
valueOf
(
planId
));
List
<
HisenseLightStatusPojo
.
ContentBody
.
LampRealInfos
>
lampRealInfos
=
content
.
getLampRealInfos
();
if
(!
CollectionUtils
.
isEmpty
(
lampRealInfos
))
{
Map
<
Integer
,
List
<
HisenseLightStatusPojo
.
ContentBody
.
LampRealInfos
>>
dirLampMap
=
lampRealInfos
.
stream
().
collect
(
Collectors
.
groupingBy
(
HisenseLightStatusPojo
.
ContentBody
.
LampRealInfos
::
getRoadDirection
));
Map
<
String
,
Object
>
dirMap
=
new
HashMap
<>();
Map
<
Integer
,
List
<
Integer
>>
dirTurnMap
=
new
HashMap
<>();
for
(
Map
.
Entry
<
Integer
,
List
<
HisenseLightStatusPojo
.
ContentBody
.
LampRealInfos
>>
dirEntry
:
dirLampMap
.
entrySet
())
{
Integer
roadDirection
=
DataBrainDirEnum
.
getWjLightsDir
(
dirEntry
.
getKey
());
List
<
HisenseLightStatusPojo
.
ContentBody
.
LampRealInfos
>
dirLampList
=
dirEntry
.
getValue
();
Map
<
String
,
String
>
turnMap
=
new
HashMap
<>();
List
<
Integer
>
hisTurnList
=
new
ArrayList
<>();
for
(
HisenseLightStatusPojo
.
ContentBody
.
LampRealInfos
lampRealInfo
:
dirLampList
)
{
String
lampStatus
=
lampRealInfo
.
getLampStatus
();
Integer
countDown
=
lampRealInfo
.
getCountDown
();
Integer
roadFlowDirection
=
lampRealInfo
.
getRoadFlowDirection
();
Integer
wjTurn
=
DataBrainTurnEnum
.
getWjTurn
(
roadFlowDirection
);
if
(
StringUtils
.
endsWithIgnoreCase
(
lampStatus
,
"23"
))
{
lightsStatusVO
.
setCyclePhaseCountDown
(
countDown
);
lightsStatusVO
.
setCycleCountDown
(
countDown
);
hisTurnList
.
add
(
wjTurn
);
}
turnMap
.
put
(
String
.
valueOf
(
wjTurn
),
DataBrainLampStatusEnum
.
getWjLampStatus
(
lampStatus
));
}
dirMap
.
put
(
String
.
valueOf
(
roadDirection
),
turnMap
);
// 获取当前绿灯方向转向
if
(!
CollectionUtils
.
isEmpty
(
hisTurnList
))
{
dirTurnMap
.
put
(
roadDirection
,
hisTurnList
);
}
}
// 通过路口编号获取当前相位缓存
Integer
currentPhaseNo
=
getCurrentPhagetseNo
(
crossId
,
planId
,
dirTurnMap
);
lightsStatusVO
.
setPhaseId
(
String
.
valueOf
(
currentPhaseNo
));
lightsStatusVO
.
setDirLampGroupMap
(
dirMap
);
SignalDataCache
.
runningStateInfoCache4DataBrain
.
put
(
crossId
,
lightsStatusVO
);
}
List
<
CrossSchemePhaseCountDownDTO
>
crossSchemePhaseCountDownList
=
CrossSchemePhaseTimeCountCache
.
crossSchemePhaseCountDownList
;
if
(!
CollectionUtils
.
isEmpty
(
crossSchemePhaseCountDownList
))
{
for
(
CrossSchemePhaseCountDownDTO
dto
:
crossSchemePhaseCountDownList
)
{
String
crossIdCache
=
dto
.
getCrossId
();
String
schemeNoCache
=
dto
.
getSchemeNo
();
if
(
StringUtils
.
equalsIgnoreCase
(
crossIdCache
,
crossId
)
&&
StringUtils
.
equalsIgnoreCase
(
schemeNoCache
,
String
.
valueOf
(
planId
)))
{
List
<
PhaseCountDownDTO
>
phaseCountDownDTOList
=
dto
.
getPhaseCountDownDTOList
();
int
lastPhaseCountTime
=
0
;
int
phaseTimeCountDown
=
0
;
String
phaseNo
=
null
;
for
(
PhaseCountDownDTO
phaseCountDownDTO
:
phaseCountDownDTOList
)
{
phaseNo
=
phaseCountDownDTO
.
getPhaseNo
();
Integer
changePhaseTime
=
phaseCountDownDTO
.
getChangePhaseTime
();
if
(
lastPhaseCountTime
<=
runTime
&&
runTime
<
changePhaseTime
)
{
phaseTimeCountDown
=
changePhaseTime
-
runTime
;
break
;
}
lastPhaseCountTime
=
changePhaseTime
;
}
lightsStatusVO
.
setPhaseId
(
phaseNo
);
lightsStatusVO
.
setCyclePhaseCountDown
(
phaseTimeCountDown
);
}
}
}
SignalDataCache
.
runningStateInfoCache
.
put
(
crossId
,
lightsStatusVO
);
}
}
}
...
...
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/task/HisensePhaseCountDownTask.java
View file @
b13b8f7b
...
...
@@ -7,12 +7,15 @@ import net.wanji.databus.dao.entity.CrossSchemePO;
import
net.wanji.databus.dao.mapper.CrossPhaseMapper
;
import
net.wanji.databus.dao.mapper.CrossSchemeMapper
;
import
net.wanji.databus.vo.LightsStatusVO
;
import
net.wanji.utc.hisense.cache.CrossPhaseDirTurnCache
;
import
net.wanji.utc.hisense.cache.SignalDataCache
;
import
net.wanji.utc.hisense.pojo.CrossPhaseDirTurnPojo
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
javax.annotation.Resource
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
...
...
@@ -32,7 +35,7 @@ public class HisensePhaseCountDownTask {
@Scheduled
(
fixedRate
=
1000
,
initialDelay
=
1000
)
public
void
phaseTimeCountDown
()
{
Map
<
String
,
LightsStatusVO
>
runningStateInfoCache4DataBrain
=
SignalDataCache
.
runningStateInfoCache
4DataBrain
;
Map
<
String
,
LightsStatusVO
>
runningStateInfoCache4DataBrain
=
SignalDataCache
.
runningStateInfoCache
;
Map
<
String
,
Long
>
runningStatusStampMap
=
SignalDataCache
.
runningStatusStampMap
;
if
(!
runningStateInfoCache4DataBrain
.
isEmpty
())
{
for
(
Map
.
Entry
<
String
,
LightsStatusVO
>
entry
:
runningStateInfoCache4DataBrain
.
entrySet
())
{
...
...
@@ -68,10 +71,61 @@ public class HisensePhaseCountDownTask {
}
else
{
lightsStatusVO
.
setCyclePhaseCountDown
(
lightsStatusVO
.
getCyclePhaseCountDown
()
-
1
);
}
setDirLampGroupMap
(
lightsStatusVO
);
runningStateInfoCache4DataBrain
.
put
(
crossId
,
lightsStatusVO
);
}
}
}
}
public
void
setDirLampGroupMap
(
LightsStatusVO
lightsStatusVO
)
{
String
crossId
=
lightsStatusVO
.
getCrossId
();
String
currentSchemeNo
=
lightsStatusVO
.
getSchemeId
();
String
currentPhaseNo
=
lightsStatusVO
.
getPhaseId
();
Integer
cyclePhaseCountDown
=
lightsStatusVO
.
getCyclePhaseCountDown
();
List
<
CrossPhaseDirTurnPojo
>
crossPhaseDirTurnCache
=
CrossPhaseDirTurnCache
.
getCrossPhaseDirTurnCache
(
crossId
);
if
(!
CollectionUtils
.
isEmpty
(
crossPhaseDirTurnCache
))
{
Map
<
String
,
Object
>
dirLampGroupMap
=
new
HashMap
<>();
for
(
CrossPhaseDirTurnPojo
phaseDirTurnPojo
:
crossPhaseDirTurnCache
)
{
String
schemeNo
=
String
.
valueOf
(
phaseDirTurnPojo
.
getSchemeNo
());
String
phaseNo
=
String
.
valueOf
(
phaseDirTurnPojo
.
getPhaseNo
());
if
(
StringUtils
.
equalsIgnoreCase
(
schemeNo
,
currentSchemeNo
)
&&
StringUtils
.
equalsIgnoreCase
(
currentPhaseNo
,
String
.
valueOf
(
phaseNo
)))
{
Map
<
Integer
,
List
<
Integer
>>
dirTurnMap
=
phaseDirTurnPojo
.
getDirTurnMap
();
if
(!
dirTurnMap
.
isEmpty
())
{
for
(
Map
.
Entry
<
Integer
,
List
<
Integer
>>
dirEntry
:
dirTurnMap
.
entrySet
())
{
Integer
dir
=
dirEntry
.
getKey
();
List
<
Integer
>
turnList
=
dirEntry
.
getValue
();
if
(
CollectionUtils
.
isEmpty
(
turnList
))
{
continue
;
}
HashMap
<
String
,
String
>
turnColor
=
new
HashMap
<>();
for
(
Integer
turn
:
turnList
)
{
String
turnStr
=
String
.
valueOf
(
turn
);
if
(
cyclePhaseCountDown
>
5
)
{
turnColor
.
put
(
turnStr
,
"green"
);
if
(
turn
==
20
)
{
turnColor
.
put
(
turnStr
,
"red"
);
}
}
if
(
cyclePhaseCountDown
<=
5
&&
cyclePhaseCountDown
>
2
)
{
turnColor
.
put
(
turnStr
,
"yellow"
);
if
(
turn
==
20
)
{
turnColor
.
put
(
turnStr
,
"red"
);
}
}
if
(
cyclePhaseCountDown
<
2
)
{
turnColor
.
put
(
turnStr
,
"red"
);
if
(
turn
==
20
)
{
turnColor
.
put
(
turnStr
,
"green"
);
}
}
}
dirLampGroupMap
.
put
(
String
.
valueOf
(
dir
),
turnColor
);
}
}
}
lightsStatusVO
.
setDirLampGroupMap
(
dirLampGroupMap
);
}
}
}
}
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