Commit aa0fd27e authored by duanruiming's avatar duanruiming

[update] UTC模拟灯态优化,测试使用V2版本灯态

parent c98cd06f
......@@ -13,6 +13,7 @@ import net.wanji.databus.po.CrossInfoPO;
import net.wanji.databus.po.ManufacturerInfoPO;
import net.wanji.databus.po.SignalStatusLogPO;
import net.wanji.databus.vo.LightsStatusVO;
import net.wanji.databus.vo.LightsStatusVO2;
import net.wanji.feign.service.UtcDTFeignClients;
import net.wanji.feign.service.UtcHisenseFeignClients;
import net.wanji.utc.common.constant.Constants;
......@@ -22,6 +23,7 @@ import net.wanji.utc.service.runninginfo.HkLightsStatusService;
import net.wanji.utc.service.runninginfo.SignalStatusService;
import net.wanji.utc.websocket.RealTimeDataWebSocket;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.scheduling.annotation.Scheduled;
......@@ -122,7 +124,10 @@ public class SignalStatusTask {
if (Objects.equals(lightsStatusVO.getCrossId(), crossId)) {
calculateContolCountDown(crossId, lightsStatusVO);
try { // 相同路口不同websocket统一发送灯态
String json = mapper.writeValueAsString(lightsStatusVOS);
// 切换socket
List<LightsStatusVO2> listResult = lightsStatusVOCopy(lightsStatusVOS);
String json = mapper.writeValueAsString(listResult);
for (Map.Entry<String, RealTimeDataWebSocket> socketEntry : value) {
String crossIdStr = socketEntry.getKey();
RealTimeDataWebSocket webSocket = socketEntry.getValue();
......@@ -145,6 +150,48 @@ public class SignalStatusTask {
}
}
private static List<LightsStatusVO2> lightsStatusVOCopy(List<LightsStatusVO> lightsStatusVOS) throws Exception{
List<LightsStatusVO2> listResult = null;
try {
listResult = new ArrayList<>(lightsStatusVOS.size());
for (LightsStatusVO lightsStatusVO : lightsStatusVOS) {
Integer cyclePhaseCountDown = lightsStatusVO.getCyclePhaseCountDown();
LightsStatusVO2 lightsStatusVO2 = new LightsStatusVO2();
BeanUtils.copyProperties(lightsStatusVO, lightsStatusVO2);
Map<String, Object> dirLampGroupMap = lightsStatusVO.getDirLampGroupMap();
List<LightsStatusVO2.DirInfo> dirList = new ArrayList<>();
Map<String, Object> phaseMap = lightsStatusVO.getPhaseMap();
for (Map.Entry<String, Object> groupEntry : dirLampGroupMap.entrySet()) {
LightsStatusVO2.DirInfo dirInfo = new LightsStatusVO2.DirInfo();
String dir = groupEntry.getKey();
Map<Integer, String> turnColorMap = (Map<Integer, String>) groupEntry.getValue();
List<LightsStatusVO2.TurnInfo> turnList = new ArrayList<>();
for (Map.Entry<Integer, String> turnEntry : turnColorMap.entrySet()) {
Integer turn = turnEntry.getKey();
String color = turnEntry.getValue();
LightsStatusVO2.TurnInfo turnInfo = new LightsStatusVO2.TurnInfo();
turnInfo.setTurn(String.valueOf(turn));
turnInfo.setColor(color);
String key = dir.concat(Constants.SEPARATOR_UNDER_LINE).concat(String.valueOf(turn));
Map<Integer, Integer> turnMap = (Map<Integer, Integer>) phaseMap.get(dir);
Integer countDown = turnMap.get(turn);
turnInfo.setCountDown(countDown);
turnList.add(turnInfo);
}
dirInfo.setDir(dir);
dirInfo.setTurnList(turnList);
dirList.add(dirInfo);
}
lightsStatusVO2.setDirLampGroupMapList(dirList);
listResult.add(lightsStatusVO2);
}
} catch (Exception e) {
log.error("灯态推送转换V2异常:", e);
throw new Exception(e);
}
return listResult;
}
/**
* 灯态数据发送kafka
*/
......
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