Commit 12a20911 authored by duwei's avatar duwei

信号灯倒计时

parent 180e73da
...@@ -69,7 +69,7 @@ public class RealTimeStateInfoPO { ...@@ -69,7 +69,7 @@ public class RealTimeStateInfoPO {
private List<PhaseChannelRelationPO> phaseChannelRelation; private List<PhaseChannelRelationPO> phaseChannelRelation;
/** /**
* 列表 * 列表
*/ */
private List<RingsPO> rings; private List<RingsPO> rings;
} }
...@@ -110,6 +110,7 @@ public class HkLightsStatusServiceImpl implements HkLightsStatusService { ...@@ -110,6 +110,7 @@ public class HkLightsStatusServiceImpl implements HkLightsStatusService {
RealTimeStateInfoListPO realTimeStateInfoListPO = JSONObject.parseObject(String.valueOf(data), RealTimeStateInfoListPO.class); RealTimeStateInfoListPO realTimeStateInfoListPO = JSONObject.parseObject(String.valueOf(data), RealTimeStateInfoListPO.class);
LightsStatusVO infoVo = new LightsStatusVO(); LightsStatusVO infoVo = new LightsStatusVO();
if (!CollectionUtils.isEmpty(realTimeStateInfoListPO.getList())) { if (!CollectionUtils.isEmpty(realTimeStateInfoListPO.getList())) {
//循环路口
for (RealTimeStateInfoPO resultPO : realTimeStateInfoListPO.getList()) { for (RealTimeStateInfoPO resultPO : realTimeStateInfoListPO.getList()) {
infoVo = new LightsStatusVO(); infoVo = new LightsStatusVO();
Integer patternNo = resultPO.getPatternNo(); Integer patternNo = resultPO.getPatternNo();
...@@ -134,10 +135,11 @@ public class HkLightsStatusServiceImpl implements HkLightsStatusService { ...@@ -134,10 +135,11 @@ public class HkLightsStatusServiceImpl implements HkLightsStatusService {
infoVo.setCrossId(crossId); infoVo.setCrossId(crossId);
infoVo.setCycleCountDown(cycleCountDown); infoVo.setCycleCountDown(cycleCountDown);
infoVo.setCycleLen(cycleLen); infoVo.setCycleLen(cycleLen);
// 循环相位列表 // 循环环 和 相位列表
Map<String, Object> phaseMap = new HashMap<>(); Map<String, Object> phaseMap = new HashMap<>();
for (RingsPO ring : rings) { for (RingsPO ring : rings) {//环
List<PhaseInfoPO> phaseList = ring.getPhaseList(); List<PhaseInfoPO> phaseList = ring.getPhaseList();
//循环相位列表
for (PhaseInfoPO phaseInfoPO : phaseList) { for (PhaseInfoPO phaseInfoPO : phaseList) {
Integer phaseNo = phaseInfoPO.getPhaseNo(); Integer phaseNo = phaseInfoPO.getPhaseNo();
Integer countdown = phaseInfoPO.getCountdown(); Integer countdown = phaseInfoPO.getCountdown();
......
...@@ -128,7 +128,7 @@ public class SignalStatusTask { ...@@ -128,7 +128,7 @@ public class SignalStatusTask {
/** /**
* 消费孪生灯态kafka数据 * 消费孪生灯态kafka数据
*/ */
@KafkaListener(topics = {"WHSpatData"}, groupId = "utc-whspat-consumer-03") @KafkaListener(topics = {"WHSpatData"}, groupId = "utc-whspat-consumer-04")
public void consumeTwinSpat(ConsumerRecord<Object, Object> record, Acknowledgment ack) { public void consumeTwinSpat(ConsumerRecord<Object, Object> record, Acknowledgment ack) {
try { try {
String lightStatusJson = String.valueOf(record.value()); String lightStatusJson = String.valueOf(record.value());
...@@ -228,6 +228,9 @@ public class SignalStatusTask { ...@@ -228,6 +228,9 @@ public class SignalStatusTask {
try { try {
// 相同路口不同websocket统一发送灯态 // 相同路口不同websocket统一发送灯态
List<LightsStatusVO2> listResult2 = convertDirLampGroupMap2Entity(lightsStatusVOS); List<LightsStatusVO2> listResult2 = convertDirLampGroupMap2Entity(lightsStatusVOS);
if (CollectionUtil.isEmpty(listResult2)) {
continue;
}
String json = mapper.writeValueAsString(listResult2); String json = mapper.writeValueAsString(listResult2);
for (Map.Entry<String, RealTimeDataWebSocket> socketEntry : value) { for (Map.Entry<String, RealTimeDataWebSocket> socketEntry : value) {
String crossIdStr = socketEntry.getKey(); String crossIdStr = socketEntry.getKey();
...@@ -304,15 +307,14 @@ public class SignalStatusTask { ...@@ -304,15 +307,14 @@ public class SignalStatusTask {
//转向-方向-灯态 //转向-方向-灯态
Map<String, Boolean> m = Maps.newHashMap(); Map<String, Boolean> m = Maps.newHashMap();
//循环每一个相位,获取该相位相关字段:如周期时间、周期倒计时、相位灯态倒计时、方向、车道转向、灯态 //循环每一个相位,获取该相位相关字段:如周期时间、周期倒计时、相位灯态倒计时、方向、车道转向、灯态
LightsStatusVO infoVo = new LightsStatusVO();
infoVo.setRunMode("8");// 控制模式
infoVo.setPhasePlanId("1");// 相位方案号
infoVo.setSchemeId("1");
infoVo.setCode(light.getRsuId());
infoVo.setCrossId(crossId);
infoVo.setCycleCountDown(0);
for (Phase p : phases) { for (Phase p : phases) {
LightsStatusVO infoVo = new LightsStatusVO();
infoVo.setRunMode("8");// 控制模式
infoVo.setPhasePlanId("1");// 相位方案号
infoVo.setSchemeId("1");
infoVo.setCode(light.getRsuId());
infoVo.setCrossId(crossId);
infoVo.setCycleCountDown(0);
String cycleLenKey = crossId + "_" + p.getPhaseId(); String cycleLenKey = crossId + "_" + p.getPhaseId();
Integer len = phaseCountdownCacheMap.get(cycleLenKey); Integer len = phaseCountdownCacheMap.get(cycleLenKey);
if (len != null){ if (len != null){
...@@ -328,18 +330,31 @@ public class SignalStatusTask { ...@@ -328,18 +330,31 @@ public class SignalStatusTask {
} }
infoVo.setPhaseId(p.getPhaseId() + ""); infoVo.setPhaseId(p.getPhaseId() + "");
infoVo.setCyclePhaseCountDown(p.getLimitEndTime()); infoVo.setCyclePhaseCountDown(p.getLimitEndTime());
//map<方向,倒计时> //map<方向_转向,倒计时>
Map<String, Object> phaseMap = new HashMap<>(); Map<String, Object> phaseMap = infoVo.getPhaseMap();
infoVo.setPhaseMap(phaseMap); if (phaseMap == null){
phaseMap = new HashMap<>();
infoVo.setPhaseMap(phaseMap);
}
//后两个参数是map<方向,倒计时>, 倒计时 //后两个参数是map<方向,倒计时>, 倒计时
Map<String, Object> dirLampGroupMap1 = infoVo.getDirLampGroupMap();
Map<String, Object> dirLampGroupMap = getDirLampGroupMap(p, m, phaseMap, p.getLimitEndTime()); Map<String, Object> dirLampGroupMap = getDirLampGroupMap(p, m, phaseMap, p.getLimitEndTime());
infoVo.setDirLampGroupMap(dirLampGroupMap); if (dirLampGroupMap1 != null) {
infoVo.setTimeStamp(light.getTimestamp() + ""); if (dirLampGroupMap != null) {
infoVo.setSchemeStartTime(light.getTimestamp() + ""); dirLampGroupMap1.putAll(dirLampGroupMap);
}
result.add(infoVo); }else {
if (dirLampGroupMap != null){
infoVo.setDirLampGroupMap(dirLampGroupMap);
}else{
infoVo.setDirLampGroupMap(Maps.newHashMap());
}
}
} }
infoVo.setTimeStamp(light.getTimestamp() + "");
infoVo.setSchemeStartTime(light.getTimestamp() + "");
result.add(infoVo);
} }
return result; return result;
} }
...@@ -351,7 +366,7 @@ public class SignalStatusTask { ...@@ -351,7 +366,7 @@ public class SignalStatusTask {
//进口方向 //进口方向
int importDirect = phase.getImportDirect(); int importDirect = phase.getImportDirect();
int dir = DirectionConverter.convertDirection(importDirect);//进口方向适配 int dir = DirectionConverter.convertDirection(importDirect);//进口方向适配
phaseMap.put(dir + "", limitEndTime);//方向,倒计时
//Map<车道转向, 对应灯态> //Map<车道转向, 对应灯态>
Map<Integer, String> turnMap = new HashMap<>(); Map<Integer, String> turnMap = new HashMap<>();
...@@ -369,6 +384,7 @@ public class SignalStatusTask { ...@@ -369,6 +384,7 @@ public class SignalStatusTask {
return null; return null;
}else { }else {
m.put(dir + "-" + turnDir + "-" + color, true); m.put(dir + "-" + turnDir + "-" + color, true);
phaseMap.put(dir + "_" + turnDir, limitEndTime);//方向_转向,倒计时
} }
turnMap.put(turnDir, color); turnMap.put(turnDir, color);
return dirLampGroupMap; return dirLampGroupMap;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment