Commit 910b05da authored by duanruiming's avatar duanruiming

[update] 优化海信获取灯态

parent 8d012997
......@@ -7,14 +7,14 @@ import net.wanji.common.utils.tool.JacksonUtils;
import net.wanji.databus.po.CrossInfoPO;
import net.wanji.databus.po.SignalStatusLogPO;
import net.wanji.databus.vo.LightsStatusVO;
import net.wanji.utc.hisense.cache.ComplexCrossCache;
import net.wanji.utc.hisense.cache.CrossInfoCache;
import net.wanji.utc.hisense.cache.SignalDataCache;
import net.wanji.utc.hisense.common.enums.*;
import net.wanji.utc.hisense.common.enums.DataBrainControlModeEnum;
import net.wanji.utc.hisense.common.enums.DataBrainDirEnum;
import net.wanji.utc.hisense.common.enums.DataBrainLampStatusEnum;
import net.wanji.utc.hisense.common.enums.DataBrainTurnEnum;
import net.wanji.utc.hisense.pojo.convert.HisenseLightStatusPojo;
import net.wanji.utc.hisense.pojo.convert.RunningLightsStatusPojo;
import net.wanji.utc.hisense.service.SignalStatusService;
import net.wanji.utc.hisense.util.CommonUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
......@@ -38,69 +38,8 @@ public class SignalStatusServiceImpl implements SignalStatusService {
@Override
public List<LightsStatusVO> lightStatus(String crossId) {
List<LightsStatusVO> lightsStatusVOS = new ArrayList<>();
Map<String, RunningLightsStatusPojo> runningStateInfoCache = SignalDataCache.runningStateInfoCache;
log.error("============>当前海信灯态缓存为空");
if (!runningStateInfoCache.isEmpty()) {
RunningLightsStatusPojo runningLightsStatusPojo = runningStateInfoCache.get(crossId);
LightsStatusVO lightsStatusVO = new LightsStatusVO();
lightsStatusVO.setCrossId(crossId);
String runMode = String.valueOf(ControlModelEnum.getWjControlMode(runningLightsStatusPojo.getCCT()));
lightsStatusVO.setRunMode(runMode);
lightsStatusVO.setCycleLen(runningLightsStatusPojo.getCC());
// 相位剩余时长
List<RunningLightsStatusPojo.Phase> phaseList = runningLightsStatusPojo.getPHASE();
Integer phaseId = 0;
Integer phaseCountDown = 0;
for (RunningLightsStatusPojo.Phase phase : phaseList) {
Integer ls = phase.getLS();
if (Objects.equals(ls, 1)) { // 当前相位绿灯
phaseId = phase.getPHN();
phaseCountDown = phase.getPCD();
}
}
lightsStatusVO.setCycleCountDown(phaseCountDown);
lightsStatusVO.setPhaseId(String.valueOf(phaseId));
lightsStatusVO.setSchemeId(String.valueOf(runningLightsStatusPojo.getPLN()));
RunningLightsStatusPojo.Channel channel = runningLightsStatusPojo.getCHANNEL();
Map<String, Object> dirLampGroupMap = new HashMap<>();
List<Integer> scs = channel.getSCS();
if (!CollectionUtils.isEmpty(scs)) {
for (int i = 0; i < scs.size(); i++) {
Map<Integer, String> turnColorMap = new HashMap<>();
String lightsColor = String.valueOf(scs.get(i));
String wjLightColor = PhaseLightColorEnum.getWjLightColor(lightsColor);
Integer turn = null;
turn = CommonUtils.getTurnByLightsId(i);
// 复杂路口处理
Map<String, Map<Integer, Integer>> turnCacheMap = ComplexCrossCache.getTurnCacheMap();
if (turnCacheMap.containsKey(crossId)) {
Map<Integer, Integer> innerMap = turnCacheMap.get(crossId);
turn = innerMap.get(i);
}
turnColorMap.put(turn, wjLightColor);
String dir = String.valueOf(CommonUtils.getDirByLightsId(i));
// 复杂路口处理
Map<String, Map<Integer, Integer>> dirCacheMap = ComplexCrossCache.getDirCacheMap();
if (dirCacheMap.containsKey(crossId)) {
Map<Integer, Integer> innerMap = dirCacheMap.get(crossId);
dir = String.valueOf(innerMap.get(i));
}
if (dirLampGroupMap.isEmpty() || Objects.isNull(dirLampGroupMap.get(dir))) {
dirLampGroupMap.put(dir, turnColorMap);
} else {
Map<Integer, String> currentTurnColorMap = (Map<Integer, String>) dirLampGroupMap.get(dir);
currentTurnColorMap.put(turn, wjLightColor);
dirLampGroupMap.put(dir, currentTurnColorMap);
}
}
}
lightsStatusVO.setDirLampGroupMap(dirLampGroupMap);
lightsStatusVOS.add(lightsStatusVO);
}
LightsStatusVO lightsStatusVO = SignalDataCache.runningStateInfoCache4DataBrain.get(crossId);
lightsStatusVOS.add(lightsStatusVO);
return lightsStatusVOS;
}
......@@ -154,8 +93,8 @@ public class SignalStatusServiceImpl implements SignalStatusService {
dirMap.put(String.valueOf(DataBrainDirEnum.getWjLightsDir(roadDirection)), turnMap);
}
lightsStatusVO.setDirLampGroupMap(dirMap);
log.error(" ========== {}", lightsStatusVO);
SignalDataCache.runningStateInfoCache4DataBrain.put(crossId, lightsStatusVO);
log.error("接收滴滴数据大脑后缓存路口灯态:{}", SignalDataCache.runningStateInfoCache4DataBrain);
}
}
}
......
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