Commit 12a20911 authored by duwei's avatar duwei

信号灯倒计时

parent 180e73da
......@@ -69,7 +69,7 @@ public class RealTimeStateInfoPO {
private List<PhaseChannelRelationPO> phaseChannelRelation;
/**
* 列表
* 列表
*/
private List<RingsPO> rings;
}
......@@ -110,6 +110,7 @@ public class HkLightsStatusServiceImpl implements HkLightsStatusService {
RealTimeStateInfoListPO realTimeStateInfoListPO = JSONObject.parseObject(String.valueOf(data), RealTimeStateInfoListPO.class);
LightsStatusVO infoVo = new LightsStatusVO();
if (!CollectionUtils.isEmpty(realTimeStateInfoListPO.getList())) {
//循环路口
for (RealTimeStateInfoPO resultPO : realTimeStateInfoListPO.getList()) {
infoVo = new LightsStatusVO();
Integer patternNo = resultPO.getPatternNo();
......@@ -134,10 +135,11 @@ public class HkLightsStatusServiceImpl implements HkLightsStatusService {
infoVo.setCrossId(crossId);
infoVo.setCycleCountDown(cycleCountDown);
infoVo.setCycleLen(cycleLen);
// 循环相位列表
// 循环环 和 相位列表
Map<String, Object> phaseMap = new HashMap<>();
for (RingsPO ring : rings) {
for (RingsPO ring : rings) {//环
List<PhaseInfoPO> phaseList = ring.getPhaseList();
//循环相位列表
for (PhaseInfoPO phaseInfoPO : phaseList) {
Integer phaseNo = phaseInfoPO.getPhaseNo();
Integer countdown = phaseInfoPO.getCountdown();
......
......@@ -128,7 +128,7 @@ public class SignalStatusTask {
/**
* 消费孪生灯态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) {
try {
String lightStatusJson = String.valueOf(record.value());
......@@ -228,6 +228,9 @@ public class SignalStatusTask {
try {
// 相同路口不同websocket统一发送灯态
List<LightsStatusVO2> listResult2 = convertDirLampGroupMap2Entity(lightsStatusVOS);
if (CollectionUtil.isEmpty(listResult2)) {
continue;
}
String json = mapper.writeValueAsString(listResult2);
for (Map.Entry<String, RealTimeDataWebSocket> socketEntry : value) {
String crossIdStr = socketEntry.getKey();
......@@ -304,15 +307,14 @@ public class SignalStatusTask {
//转向-方向-灯态
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) {
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();
Integer len = phaseCountdownCacheMap.get(cycleLenKey);
if (len != null){
......@@ -328,18 +330,31 @@ public class SignalStatusTask {
}
infoVo.setPhaseId(p.getPhaseId() + "");
infoVo.setCyclePhaseCountDown(p.getLimitEndTime());
//map<方向,倒计时>
Map<String, Object> phaseMap = new HashMap<>();
infoVo.setPhaseMap(phaseMap);
//map<方向_转向,倒计时>
Map<String, Object> phaseMap = infoVo.getPhaseMap();
if (phaseMap == null){
phaseMap = new HashMap<>();
infoVo.setPhaseMap(phaseMap);
}
//后两个参数是map<方向,倒计时>, 倒计时
Map<String, Object> dirLampGroupMap1 = infoVo.getDirLampGroupMap();
Map<String, Object> dirLampGroupMap = getDirLampGroupMap(p, m, phaseMap, p.getLimitEndTime());
infoVo.setDirLampGroupMap(dirLampGroupMap);
infoVo.setTimeStamp(light.getTimestamp() + "");
infoVo.setSchemeStartTime(light.getTimestamp() + "");
result.add(infoVo);
if (dirLampGroupMap1 != null) {
if (dirLampGroupMap != null) {
dirLampGroupMap1.putAll(dirLampGroupMap);
}
}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;
}
......@@ -351,7 +366,7 @@ public class SignalStatusTask {
//进口方向
int importDirect = phase.getImportDirect();
int dir = DirectionConverter.convertDirection(importDirect);//进口方向适配
phaseMap.put(dir + "", limitEndTime);//方向,倒计时
//Map<车道转向, 对应灯态>
Map<Integer, String> turnMap = new HashMap<>();
......@@ -369,6 +384,7 @@ public class SignalStatusTask {
return null;
}else {
m.put(dir + "-" + turnDir + "-" + color, true);
phaseMap.put(dir + "_" + turnDir, limitEndTime);//方向_转向,倒计时
}
turnMap.put(turnDir, color);
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