Commit f0f150fb authored by duanruiming's avatar duanruiming

[update] 实时监控->当前运行方案相位参数优化

parent d72234de
...@@ -10,6 +10,7 @@ import net.wanji.opt.common.exception.OptServiceException; ...@@ -10,6 +10,7 @@ import net.wanji.opt.common.exception.OptServiceException;
import net.wanji.opt.dto.*; import net.wanji.opt.dto.*;
import net.wanji.opt.service.CrossSchedulesService; import net.wanji.opt.service.CrossSchedulesService;
import net.wanji.opt.service.CrossSchemeService; import net.wanji.opt.service.CrossSchemeService;
import org.springframework.beans.BeanUtils;
import org.springframework.boot.CommandLineRunner; import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -104,11 +105,12 @@ public class CrossDirTurnPhaseCache implements CommandLineRunner { ...@@ -104,11 +105,12 @@ public class CrossDirTurnPhaseCache implements CommandLineRunner {
turnSet.addAll(Arrays.stream(turnArr).collect(Collectors.toSet())); turnSet.addAll(Arrays.stream(turnArr).collect(Collectors.toSet()));
} }
for (String turn : turnSet) { for (String turn : turnSet) {
CrossPhaseDTO crossPhaseDTO = new CrossPhaseDTO();
BeanUtils.copyProperties(phase, crossPhaseDTO);
key = crossId + Constants.SystemParam.SEPARATOR_UNDER_LINE + dir + Constants.SystemParam.SEPARATOR_UNDER_LINE + turn; key = crossId + Constants.SystemParam.SEPARATOR_UNDER_LINE + dir + Constants.SystemParam.SEPARATOR_UNDER_LINE + turn;
phase.setDirType(dir); crossPhaseDTO.setDirType(dir);
phase.setTurnType(turn); crossPhaseDTO.setTurnType(turn);
phaseMap.put(key, phase); phaseMap.put(key, crossPhaseDTO);
} }
turnSet.clear(); turnSet.clear();
} }
......
...@@ -317,7 +317,6 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService { ...@@ -317,7 +317,6 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
} }
} }
/** /**
* 当前路口异常转向列表 element:进口方向 * 当前路口异常转向列表 element:进口方向
* *
...@@ -425,6 +424,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService { ...@@ -425,6 +424,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
} else { } else {
phaseTimeOptResultMap = getPhaseTimeOptMap(phaseTimeOffset); phaseTimeOptResultMap = getPhaseTimeOptMap(phaseTimeOffset);
} }
if (!phaseTimeOptResultMap.isEmpty()) {
// 修改原始方案绿灯时间为优化后时间,方案下发 // 修改原始方案绿灯时间为优化后时间,方案下发
SchemeSendVO schemeSendVO = getSchemeSendVO(crossId, phaseMap, phaseTimeOptResultMap); SchemeSendVO schemeSendVO = getSchemeSendVO(crossId, phaseMap, phaseTimeOptResultMap);
JsonViewObject jsonViewObject = utcFeignClients.schemeSend(schemeSendVO); JsonViewObject jsonViewObject = utcFeignClients.schemeSend(schemeSendVO);
...@@ -439,6 +439,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService { ...@@ -439,6 +439,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
// 将优化记录插入方案优化记录表 // 将优化记录插入方案优化记录表
insertCrossSchemeOptLog(phaseTimeOptResultMap, phaseMap, optType); insertCrossSchemeOptLog(phaseTimeOptResultMap, phaseMap, optType);
} }
}
/** /**
* 将优化记录数据[按路口相位转向]插入到优化记录表这种 * 将优化记录数据[按路口相位转向]插入到优化记录表这种
...@@ -454,6 +455,9 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService { ...@@ -454,6 +455,9 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
CrossSchemeOptLogPO crossSchemeOptLogPO = new CrossSchemeOptLogPO(); CrossSchemeOptLogPO crossSchemeOptLogPO = new CrossSchemeOptLogPO();
CrossPhaseDTO crossPhaseDTO = item.getValue(); CrossPhaseDTO crossPhaseDTO = item.getValue();
String phaseNo = crossPhaseDTO.getPhaseNo();
for (Map.Entry<String, Integer> entry : phaseTimeOptResultMap.entrySet()) {
if (Objects.equals(phaseNo, entry.getKey())) {
BeanUtils.copyProperties(crossPhaseDTO, crossSchemeOptLogPO); BeanUtils.copyProperties(crossPhaseDTO, crossSchemeOptLogPO);
crossSchemeOptLogPO.setSchemeId(crossPhaseDTO.getSchemeId()); crossSchemeOptLogPO.setSchemeId(crossPhaseDTO.getSchemeId());
crossSchemeOptLogPO.setPhaseOrderId(crossPhaseDTO.getSort()); crossSchemeOptLogPO.setPhaseOrderId(crossPhaseDTO.getSort());
...@@ -467,14 +471,11 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService { ...@@ -467,14 +471,11 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
// todo 测试数据 // todo 测试数据
crossSchemeOptLogPO.setDataExtend("{\"sceneName\": \"测试JSON\",\"strategyName\": \"测试JSON\",\"ideaName\": \"测试JSON\"}");// todo 需要通过场景策略方法 crossSchemeOptLogPO.setDataExtend("{\"sceneName\": \"测试JSON\",\"strategyName\": \"测试JSON\",\"ideaName\": \"测试JSON\"}");// todo 需要通过场景策略方法
String phaseNo = crossPhaseDTO.getPhaseNo();
for (Map.Entry<String, Integer> entry : phaseTimeOptResultMap.entrySet()) {
if (Objects.equals(phaseNo, entry.getKey())) {
crossSchemeOptLogPO.setOptTime(entry.getValue()); crossSchemeOptLogPO.setOptTime(entry.getValue());
crossSchemeOptLogPO.setOriGreenTime(crossPhaseDTO.getGreenTime()); crossSchemeOptLogPO.setOriGreenTime(crossPhaseDTO.getGreenTime());
insertList.add(crossSchemeOptLogPO);
} }
} }
insertList.add(crossSchemeOptLogPO);
} }
crossSchemeOptLogMapper.insertBatch(insertList); crossSchemeOptLogMapper.insertBatch(insertList);
} }
...@@ -697,7 +698,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService { ...@@ -697,7 +698,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
} }
private Integer getRealOptGreenTime(Double passTime, CrossPhaseDTO crossPhaseDTO) { private Integer getRealOptGreenTime(Double passTime, CrossPhaseDTO crossPhaseDTO) {
int passTimeInt = passTime == null ? 0 : passTime.intValue(); Integer passTimeInt = passTime == null ? 0 : passTime.intValue();
if (passTimeInt <= crossPhaseDTO.getMinGreenTime()) { if (passTimeInt <= crossPhaseDTO.getMinGreenTime()) {
passTimeInt = crossPhaseDTO.getMinGreenTime(); passTimeInt = crossPhaseDTO.getMinGreenTime();
} }
......
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