Commit f76562ab authored by duanruiming's avatar duanruiming

[update] 优化路口恢复优化方案

parent a56798c3
......@@ -8,7 +8,6 @@ import net.wanji.common.enums.WeekEnum;
import net.wanji.common.framework.Constants;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.common.utils.tool.DateUtil;
import net.wanji.common.utils.tool.StringUtils;
import net.wanji.databus.dao.entity.RidInfoEntity;
import net.wanji.databus.dao.mapper.RidInfoMapper;
import net.wanji.databus.entity.develop.servicedevelop.develop.StatusCodeEnum;
......@@ -26,6 +25,7 @@ import net.wanji.opt.po.trend.CrossDataRealtimePO;
import net.wanji.opt.service.CrossOptimizeService;
import net.wanji.opt.service.CrossSchedulesService;
import net.wanji.opt.service.CrossSchemeService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
......@@ -301,7 +301,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
CrossTurnInfoDTO crossTurnInfoDTO = new CrossTurnInfoDTO();
CrossDirInfoDTO crossDirInfoDTO = new CrossDirInfoDTO();
if (StringUtils.equalsIgnoreCase(crossId, crossDataRealtimeDTO.getCrossId())) {
if (StringUtils.equals(crossId, crossDataRealtimeDTO.getCrossId())) {
crossDirInfoDTO.setCrossId(crossId);
crossDirInfoDTO.setInOutType(1);
......@@ -329,12 +329,13 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
for (String optCrossId : CROSS_OPT) {
if (!abnormalCrossIdList.contains(optCrossId)) {
// 下发原始方案
SchemeSendVO schemeSendVO = getSchemeSendVO(optCrossId, phaseMap, null);
SchemeSendVO schemeSendVO = getSchemeSendVO(optCrossId, phaseMap, Collections.EMPTY_MAP);
JsonViewObject jsonViewObject = utcFeignClients.schemeSend(schemeSendVO);
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
log.error("实时监控路口优化方案下发远程调用异常!", jsonViewObject);
throw new Exception();
}
CROSS_OPT.remove(optCrossId);
}
}
}
......@@ -489,21 +490,16 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
phase.setControlMode(String.valueOf(crossPhasePO.getControlMode()));
phase.setMinGreenTime(String.valueOf(crossPhasePO.getMinGreenTime()));
phase.setMaxGreenTime(String.valueOf(crossPhasePO.getMaxGreenTime()));
phase.setPhaseTime(String.valueOf(crossPhasePO.getPhaseTime()));
phase.setGreenTime(String.valueOf(crossPhasePO.getGreenTime()));
// 可优化时间
Integer currentPhaseOffset = getCurrentPhaseOptOffsetTime(phaseTimeOptResultMap, crossPhasePO.getPhaseNo());
phase.setPhaseTime(String.valueOf(crossPhasePO.getPhaseTime() + currentPhaseOffset));
phase.setGreenTime(String.valueOf(crossPhasePO.getGreenTime() + currentPhaseOffset));
phase.setGreenFlashTime(String.valueOf(crossPhasePO.getGreenFlashTime()));
phase.setPedFlashTime(String.valueOf(crossPhasePO.getPedFlashTime()));
phase.setYellowTime(String.valueOf(crossPhasePO.getYellowTime()));
phase.setRedTime(String.valueOf(crossPhasePO.getRedTime()));
phaseList.add(phase);
// 在原始方案基础绿灯时间+可优化时间
if (!phaseTimeOptResultMap.isEmpty()) {
phaseList.forEach(phaseInfo -> {
Integer optTime = phaseTimeOptResultMap.get(phaseInfo.getPhaseNo());
String greenTime = phaseInfo.getGreenTime();
phaseInfo.setGreenTime(greenTime + optTime);
});
}
});
ring.setRingNo(String.valueOf(entry.getKey()));
ring.setPhaseList(phaseList);
......@@ -519,6 +515,26 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
return schemeSendVO;
}
/**
* 获取当前相位的可优化时间,默认0
*
* @param phaseTimeOptResultMap
* @param phaseNo
* @return
*/
private static int getCurrentPhaseOptOffsetTime(Map<String, Integer> phaseTimeOptResultMap, String phaseNo) {
if (Objects.nonNull(phaseTimeOptResultMap) && !phaseTimeOptResultMap.isEmpty()) {
for (Map.Entry<String, Integer> phaseEntry : phaseTimeOptResultMap.entrySet()) {
if (StringUtils.equals(phaseNo, phaseEntry.getKey())) {
Integer optTime = phaseTimeOptResultMap.get(phaseNo);
return optTime;
}
}
}
return 0;
}
/**
* 在最大最小绿范围内,通过转向优化计算相位可优化时间
* key:相位号 value:offsetTime
......@@ -630,7 +646,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
CrossPhaseDTO crossPhaseDTO = entry.getValue();
String phaseNo = crossPhaseDTO.getPhaseNo();
if (StringUtils.equalsIgnoreCase(key, crossIdDirTurn)) {
if (StringUtils.equals(key, crossIdDirTurn)) {
Integer realOptGreenTime = getRealOptGreenTime(passTime, crossPhaseDTO);
Integer greenTimeOffset = realOptGreenTime - crossPhaseDTO.getGreenTime() - crossPhaseDTO.getGreenFlashTime();
Integer realGreenTimeOffset = 0;
......
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