Commit 8b8f1620 authored by duanruiming's avatar duanruiming

[update] review-代码逻辑优化

parent 439eb54a
...@@ -62,6 +62,17 @@ public class DataCenterTask { ...@@ -62,6 +62,17 @@ public class DataCenterTask {
int greenDelayTime = 0; // 每个路口绿波开始时间 int greenDelayTime = 0; // 每个路口绿波开始时间
List<GreenwaveCrossPO> greenwaveCrossPOList = entry.getValue(); List<GreenwaveCrossPO> greenwaveCrossPOList = entry.getValue();
if (!CollectionUtils.isEmpty(greenwaveCrossPOList)) { if (!CollectionUtils.isEmpty(greenwaveCrossPOList)) {
greenwaveWidth = calculate(greenwaveWidth, lastCrossDistance, crossTimeOffset, greenDelayTime, greenwaveCrossPOList);
}
log.info("当前绿波编号:{}, 绿波带宽:{}", greenId, greenwaveWidth);
}
} catch (Exception e) {
log.error("获取绿波带宽异常", e);
throw new Exception("获取绿波带宽异常", e);
}
}
private int calculate(int greenwaveWidth, Double lastCrossDistance, int crossTimeOffset, int greenDelayTime, List<GreenwaveCrossPO> greenwaveCrossPOList) {
for (GreenwaveCrossPO greenwaveCrossPO : greenwaveCrossPOList) { for (GreenwaveCrossPO greenwaveCrossPO : greenwaveCrossPOList) {
String crossId = greenwaveCrossPO.getCrossId(); String crossId = greenwaveCrossPO.getCrossId();
Integer sectionId = greenwaveCrossPO.getSectionId(); Integer sectionId = greenwaveCrossPO.getSectionId();
...@@ -101,12 +112,6 @@ public class DataCenterTask { ...@@ -101,12 +112,6 @@ public class DataCenterTask {
} }
lastCrossDistance = greenwaveCrossPO.getNextCrossLen(); lastCrossDistance = greenwaveCrossPO.getNextCrossLen();
} }
} return greenwaveWidth;
log.info("当前绿波编号:{}, 绿波带宽:{}", greenId, greenwaveWidth);
}
} catch (Exception e) {
log.error("获取绿波带宽异常", e);
throw new Exception("获取绿波带宽异常", e);
}
} }
} }
...@@ -12,7 +12,6 @@ import net.wanji.datacenter.cache.CrossSchemePhaseLightsCache; ...@@ -12,7 +12,6 @@ import net.wanji.datacenter.cache.CrossSchemePhaseLightsCache;
import net.wanji.datacenter.kafka.ConsumerHandler; import net.wanji.datacenter.kafka.ConsumerHandler;
import net.wanji.datacenter.pojo.dto.CrossSchemePhaseDirTurnDTO; import net.wanji.datacenter.pojo.dto.CrossSchemePhaseDirTurnDTO;
import net.wanji.datacenter.pojo.dto.CrossSnapshotDataDTO; import net.wanji.datacenter.pojo.dto.CrossSnapshotDataDTO;
import net.wanji.datacenter.pojo.dto.LanePeriodicDataDTO;
import net.wanji.datacenter.service.impl.LanePeriodicDataProcessServiceImpl; import net.wanji.datacenter.service.impl.LanePeriodicDataProcessServiceImpl;
import net.wanji.feign.service.UtcFeignClients; import net.wanji.feign.service.UtcFeignClients;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
...@@ -52,8 +51,14 @@ public class DataProcessTask { ...@@ -52,8 +51,14 @@ public class DataProcessTask {
return; return;
} }
List<LightsStatusVO> lightsStatusVOS = JacksonUtils.getInstance().convertValue(jsonViewObject.getContent(), new TypeReference<List<LightsStatusVO>>() { List<LightsStatusVO> lightsStatusVOS = JacksonUtils.getInstance().convertValue(jsonViewObject.getContent(), new TypeReference<List<LightsStatusVO>>() {});
}); calculateData(lightsStatusVOS);
}catch (Exception e) {
// log.error("",e);
}
}
private void calculateData(List<LightsStatusVO> lightsStatusVOS) throws Exception {
for (LightsStatusVO lightsStatusVO : lightsStatusVOS) { for (LightsStatusVO lightsStatusVO : lightsStatusVOS) {
String crossId = lightsStatusVO.getCrossId(); String crossId = lightsStatusVO.getCrossId();
String schemeNo = lightsStatusVO.getSchemeId(); String schemeNo = lightsStatusVO.getSchemeId();
...@@ -62,21 +67,8 @@ public class DataProcessTask { ...@@ -62,21 +67,8 @@ public class DataProcessTask {
ConcurrentHashMap<String, Integer> crossIdPhaseIdClearGreenMap = CrossRealTimeCache.crossPhaseCarNumsMap; ConcurrentHashMap<String, Integer> crossIdPhaseIdClearGreenMap = CrossRealTimeCache.crossPhaseCarNumsMap;
getClearRateCache(crossId, currentPhaseId, crossIdPhaseIdClearGreenMap); getClearRateCache(crossId, currentPhaseId, crossIdPhaseIdClearGreenMap);
Map<String, Object> dirLampGroupMap = lightsStatusVO.getDirLampGroupMap(); Map<String, Object> dirLampGroupMap = lightsStatusVO.getDirLampGroupMap();
boolean isAllRed = true; // 是否是全场红
if (!dirLampGroupMap.isEmpty()) { boolean isAllRed = getAllRed(dirLampGroupMap);
for (Map.Entry<String, Object> entry : dirLampGroupMap.entrySet()) {
Map<String, String> turnLightColorMap = (Map<String, String>) entry.getValue();
for (Map.Entry<String, String> colorEntry : turnLightColorMap.entrySet()) {
String lightColor = colorEntry.getValue();
// 全场红,如果有一个绿灯就不计算 20行人跳过
String key = colorEntry.getKey();
if (Objects.equals(lightColor, "green") && !StringUtils.equals(key, "20")) {
isAllRed = false;
}
}
}
}
// 如果全场红 // 如果全场红
if (isAllRed) { if (isAllRed) {
List<CrossSchemePhaseDirTurnDTO> crossSchemePhaseDirTurnDTOList = CrossSchemePhaseLightsCache.crossSchemePhaseDirTurnDTOList; List<CrossSchemePhaseDirTurnDTO> crossSchemePhaseDirTurnDTOList = CrossSchemePhaseLightsCache.crossSchemePhaseDirTurnDTOList;
...@@ -102,9 +94,24 @@ public class DataProcessTask { ...@@ -102,9 +94,24 @@ public class DataProcessTask {
LanePeriodicDataProcessServiceImpl.periodHaveAllRedMap.put(crossId, 1); LanePeriodicDataProcessServiceImpl.periodHaveAllRedMap.put(crossId, 1);
} }
} }
}catch (Exception e) {
// log.error("",e);
} }
private static boolean getAllRed(Map<String, Object> dirLampGroupMap) {
boolean isAllRed = true;
if (!dirLampGroupMap.isEmpty()) {
for (Map.Entry<String, Object> entry : dirLampGroupMap.entrySet()) {
Map<String, String> turnLightColorMap = (Map<String, String>) entry.getValue();
for (Map.Entry<String, String> colorEntry : turnLightColorMap.entrySet()) {
String lightColor = colorEntry.getValue();
// 全场红,如果有一个绿灯就不计算 20行人跳过
String key = colorEntry.getKey();
if (Objects.equals(lightColor, "green") && !StringUtils.equals(key, "20")) {
isAllRed = false;
}
}
}
}
return isAllRed;
} }
private void getClearRateCache(String crossId, String currentPhaseId, Map<String, Integer> crossIdPhaseIdClearGreenMap) throws JsonProcessingException { private void getClearRateCache(String crossId, String currentPhaseId, Map<String, Integer> crossIdPhaseIdClearGreenMap) throws JsonProcessingException {
......
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