Commit 1e855690 authored by duanruiming's avatar duanruiming

[add] 实时监控-监控参数设置转向参数

parent 06cf65d0
......@@ -59,10 +59,12 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
public String realtimeOptimize(List<CrossDataRealtimeDTO> abnormalCrossList) {
try {
// 获取所有信控路口转向实时数据
Map<String, List<CrossTurnDataRealtimeDTO>> turnDataRealtime = listTurnDataRealtime(abnormalCrossList);
// 相位配时信息,key:路口编号_方向类型_转向类型,value 相位配时信息
Map<String, CrossPhaseDTO> phaseMap = listPhaseList();
setTurnList(abnormalCrossList, phaseMap);
// 获取所有信控路口转向实时数据
Map<String, List<CrossTurnDataRealtimeDTO>> turnDataRealtime = listTurnDataRealtime(abnormalCrossList);
// 恢复优化路口原始方案
restoreOptCrossOriPlan(abnormalCrossList, phaseMap);
......@@ -87,6 +89,33 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
return null;
}
/**
* 设置异常数据转向数据
*
* @param abnormalCrossList
* @param phaseMap
*/
private static void setTurnList(List<CrossDataRealtimeDTO> abnormalCrossList, Map<String, CrossPhaseDTO> phaseMap) {
for (CrossDataRealtimeDTO crossDataRealtimeDTO : abnormalCrossList) {
List<CrossTurnInfoDTO> turnList = new ArrayList<>();
for (Map.Entry<String, CrossPhaseDTO> entry : phaseMap.entrySet()) {
String crossDirTurn = entry.getKey();
String[] split = crossDirTurn.split(Constants.SystemParam.SEPARATOR_UNDER_LINE);
String crossId = split[0];
String dir = split[1];
String turn = split[2];
CrossTurnInfoDTO crossTurnInfoDTO = new CrossTurnInfoDTO();
if (StringUtils.equalsIgnoreCase(crossId, crossDataRealtimeDTO.getCrossId())) {
crossTurnInfoDTO.setTurnType(Integer.valueOf(turn));
crossTurnInfoDTO.setInDir(Integer.valueOf(dir));
turnList.add(crossTurnInfoDTO);
}
}
crossDataRealtimeDTO.setTurnList(turnList);
}
}
/**
* 通过第二批次列表,判断需要恢复的优化路口原始方案
*
......@@ -410,7 +439,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
int week = DateUtil.getWeek(new Date()) == Constants.SystemParam.ZERO ? WeekEnum.SUNDAY.getCode() : DateUtil.getWeek(new Date()); // 获取当前星期
for (CrossSchedulesDTO schedules : schedulesDTOList) {
if (schedules.getWeek() == Constants.SystemParam.ZERO &&
if (Objects.equals(schedules.getWeek(), Constants.SystemParam.ZERO) &&
!DateUtil.getDate().equals(schedules.getSpecialDate())) { // 先判断是否为特殊日期,如果特殊日期与当前日期不相同,则跳过
continue;
} else if (schedules.getWeek() != week) {
......@@ -453,19 +482,19 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
List<CrossTurnDataRealtimeDTO> crossTurnDataRealtimeDTOS = new ArrayList<>();
realTimeData.forEach(realData -> {
List<CrossDirInfoDTO> dirList = realData.getDirList();
List<CrossTurnInfoDTO> turnList = realData.getTurnList();
dirList.forEach(dirInfo -> {
turnList.forEach(turnInfo -> {
CrossTurnDataRealtimeDTO crossTurnDataRealtimeDTO = new CrossTurnDataRealtimeDTO();
BeanUtils.copyProperties(realData, crossTurnDataRealtimeDTO);
});
turnList.forEach(crossTurnInfoDTO -> {
CrossTurnDataRealtimeDTO crossTurnDataRealtimeDTO = new CrossTurnDataRealtimeDTO();
BeanUtils.copyProperties(realData, crossTurnDataRealtimeDTO);
crossTurnDataRealtimeDTO.setTurnType(crossTurnInfoDTO.getTurnType());
crossTurnDataRealtimeDTO.setInDir(crossTurnInfoDTO.getInDir());
crossTurnDataRealtimeDTO.setOutDir(crossTurnInfoDTO.getOutDir());
crossTurnDataRealtimeDTOS.add(crossTurnDataRealtimeDTO);
});
});
turnDataRealtimeDTOList.put(crossId, crossTurnDataRealtimeDTOS);
});
return turnDataRealtimeDTOList;
}
......
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