Commit 539d5509 authored by hanbing's avatar hanbing

[update] 优化后绿灯时长计算

parent 26c52ebc
......@@ -65,7 +65,7 @@ public class CrossPhaseInfoCache implements CommandLineRunner {
}
public void init() {
List<CrossPhasePO> crossPhasePOS = crossPhaseMapper.listCrossPhase(Constants.SystemParam.NULL, Constants.SystemParam.NULL);
List<CrossPhasePO> crossPhasePOS = crossPhaseMapper.listCrossPhase(Constants.SystemParam.NULL, Constants.SystemParam.NULL_INT);
if (!CollectionUtils.isEmpty(crossPhasePOS)) {
crossPhaseInfoMap = crossPhasePOS.stream().collect(Collectors.groupingBy(CrossPhasePO::getCrossId));
}
......
......@@ -18,5 +18,5 @@ public interface CrossPhaseMapper {
* 查询相位基础信息列表
* @return
*/
List<CrossPhasePO> listCrossPhase(@Param("crossId") String crossId, @Param("schemeId") String schemeId);
List<CrossPhasePO> listCrossPhase(@Param("crossId") String crossId, @Param("schemeId") Integer schemeId);
}
package net.wanji.opt.service.impl;
import net.wanji.common.framework.Constants;
import net.wanji.common.utils.tool.BeanListUtils;
import net.wanji.opt.dao.mapper.CrossPhaseLightsMapper;
import net.wanji.opt.dao.mapper.CrossPhaseMapper;
......@@ -40,7 +41,7 @@ public class CrossPhaseServiceImpl implements CrossPhaseService {
public List<CrossPhaseDTO> listCrossPhase() {
// 获取相位信息
List<CrossPhasePO> crossPhasePOList = crossPhaseMapper.listCrossPhase("", "");
List<CrossPhasePO> crossPhasePOList = crossPhaseMapper.listCrossPhase("", Constants.SystemParam.NULL_INT);
return BeanListUtils.populateList(crossPhasePOList, new ArrayList<>(), CrossPhaseDTO.class);
}
......
......@@ -213,15 +213,15 @@ public class DiagnoServiceImpl implements DiagnoService {
CrossSchemeOptLogPO crossSchemeOptLogPO = maxList.get(0);
String optType = crossSchemeOptLogPO.getOptType();
schemeOptVO.setOptType(Integer.parseInt(optType));
Integer schemeId = crossSchemeOptLogPO.getSchemeId();
CrossSchemePO crossSchemePO = crossSchemeMapper.selectById(schemeId);
Integer schemeNo = crossSchemeOptLogPO.getSchemeId();
CrossSchemePO crossSchemePO = crossSchemeMapper.selectByCrossIdAndSchemeNo(crossId, schemeNo.toString());
if (crossSchemePO != null) {
schemeOptVO.setCycle(crossSchemePO.getCycle());
schemeOptVO.setSchemeId(crossSchemePO.getId());
schemeOptVO.setOffset(crossSchemeOptLogPO.getOffset());
}
// 构造调整时间列表
List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = buildPhaseOptTimeList(collect, schemeId);
List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = buildPhaseOptTimeList(collect, schemeNo, crossId);
schemeOptVO.setPhaseOptTimeList(phaseOptTimeList);
} else {
List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = new ArrayList<>();
......@@ -328,7 +328,7 @@ public class DiagnoServiceImpl implements DiagnoService {
Map<String, Integer> phaseOffsetTimeMap) {
List<SchemeSendVO.Pattern.Ring> rings = new ArrayList<>();
// 根据路口ID和方案ID查询相位集合,根据ringNo分组,特殊控制ringNo为0
List<CrossPhasePO> crossPhasePOList = crossPhaseMapper.listCrossPhase(sendCrossId, schemeId.toString());
List<CrossPhasePO> crossPhasePOList = crossPhaseMapper.listCrossPhase(sendCrossId, schemeId);
Map<Integer, List<CrossPhasePO>> collectMap = crossPhasePOList.stream()
.collect(Collectors.groupingBy(CrossPhasePO::getRingNo));
for (Map.Entry<Integer, List<CrossPhasePO>> entry : collectMap.entrySet()) {
......@@ -650,7 +650,7 @@ public class DiagnoServiceImpl implements DiagnoService {
}
private Integer getNewGreenTime(String crossId, Integer schemeId, String phaseNo) {
List<CrossPhasePO> crossPhasePOList = crossPhaseMapper.listCrossPhase(crossId, String.valueOf(schemeId));
List<CrossPhasePO> crossPhasePOList = crossPhaseMapper.listCrossPhase(crossId, schemeId);
for (CrossPhasePO crossPhasePO : crossPhasePOList) {
String newPhaseNo = crossPhasePO.getPhaseNo();
if (Objects.equals(phaseNo, newPhaseNo)) {
......@@ -661,26 +661,29 @@ public class DiagnoServiceImpl implements DiagnoService {
}
private List<SchemeOptVO.PhaseOptTime> buildPhaseOptTimeList(
Collection<CrossSchemeOptLogPO> crossSchemeOptLogPOList, Integer schemeId) {
Collection<CrossSchemeOptLogPO> crossSchemeOptLogPOList, Integer schemeNo, String crossId) {
// 初始化列表
List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = new ArrayList<>();
initPhaseOptTimeList(schemeId, phaseOptTimeList);
initPhaseOptTimeList(schemeNo, phaseOptTimeList, crossId);
for (CrossSchemeOptLogPO crossSchemeOptLogPO : crossSchemeOptLogPOList) {
for (SchemeOptVO.PhaseOptTime phaseOptTime : phaseOptTimeList) {
String phaseNo1 = crossSchemeOptLogPO.getPhaseNo();
String phaseNo2 = phaseOptTime.getPhaseNo();
if (Objects.equals(phaseNo1, phaseNo2)) {
phaseOptTime.setOriGreenTime(crossSchemeOptLogPO.getOriGreenTime());
phaseOptTime.setOptGreenTime(crossSchemeOptLogPO.getOptGreenTime());
phaseOptTime.setOptTime(crossSchemeOptLogPO.getOptTime());
int optTime = crossSchemeOptLogPO.getOptTime();
int oriGreenTime = crossSchemeOptLogPO.getOriGreenTime();
phaseOptTime.setOriGreenTime(oriGreenTime);
phaseOptTime.setOptGreenTime(oriGreenTime + optTime);
phaseOptTime.setOptTime(optTime);
}
}
}
return phaseOptTimeList;
}
private void initPhaseOptTimeList(Integer schemeId, List<SchemeOptVO.PhaseOptTime> phaseOptTimeList) {
List<CrossPhasePO> crossPhasePOList = crossPhaseMapper.listCrossPhase(null, schemeId.toString());
private void initPhaseOptTimeList(Integer schemeNo, List<SchemeOptVO.PhaseOptTime> phaseOptTimeList, String crossId) {
Integer schemeId = crossSchemeMapper.selectIdByCrossIdAndSchemeNo(crossId, schemeNo.toString());
List<CrossPhasePO> crossPhasePOList = crossPhaseMapper.listCrossPhase(crossId, schemeId);
for (CrossPhasePO crossPhasePO : crossPhasePOList) {
SchemeOptVO.PhaseOptTime phaseOptTime = new SchemeOptVO.PhaseOptTime();
phaseOptTime.setPhaseNo(crossPhasePO.getPhaseNo());
......
......@@ -453,6 +453,7 @@ public final class Constants {
* null
*/
public static final String NULL = null;
public static final Integer NULL_INT = null;
/**
* 否
......
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