Commit 539d5509 authored by hanbing's avatar hanbing

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

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