Commit d72234de authored by duanruiming's avatar duanruiming

Merge remote-tracking branch 'origin/master'

parents ded93519 3b908bf9
......@@ -22,7 +22,6 @@ import net.wanji.opt.dao.mapper.trend.CrossDataRealtimeMapper;
import net.wanji.opt.dao.mapper.trend.CrossDirDataHistMapper;
import net.wanji.opt.dto.CrossIdAndDirDTO;
import net.wanji.opt.dto.CrossIdAndSchemeIdDTO;
import net.wanji.opt.dto.OptDataExtend;
import net.wanji.opt.dto.SendManualDTO;
import net.wanji.opt.dto.strategy.AddOrUpdateSceneDTO;
import net.wanji.opt.dto.strategy.QuerySceneDTO;
......@@ -44,11 +43,14 @@ import net.wanji.opt.vo.SchemeOptVO;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.TreeSet;
import java.util.stream.Collectors;
/**
......@@ -159,6 +161,10 @@ public class DiagnoServiceImpl implements DiagnoService {
schemeOptVO.setCrossId(crossId);
// 选择数据批次时间最大的记录
List<CrossSchemeOptLogPO> maxList = crossSchemeOptLogMapper.selectMaxByCrossId(crossId);
// 根据相位去重
TreeSet<CrossSchemeOptLogPO> collect = maxList.stream()
.collect(Collectors.toCollection(
() -> new TreeSet<>(Comparator.comparing(CrossSchemeOptLogPO::getPhaseNo))));
CrossSchemeOptLogPO crossSchemeOptLogPO = maxList.get(0);
String optType = crossSchemeOptLogPO.getOptType();
schemeOptVO.setOptType(Integer.parseInt(optType));
......@@ -168,7 +174,7 @@ public class DiagnoServiceImpl implements DiagnoService {
schemeOptVO.setSchemeId(crossSchemePO.getId());
schemeOptVO.setOffset(crossSchemeOptLogPO.getOffset());
// 构造调整时间列表
List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = buildPhaseOptTimeList(maxList);
List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = buildPhaseOptTimeList(collect, schemeId);
schemeOptVO.setPhaseOptTimeList(phaseOptTimeList);
return schemeOptVO;
}
......@@ -315,13 +321,8 @@ public class DiagnoServiceImpl implements DiagnoService {
try {
crossSchemeOptLogPO = maxList.get(0);
} catch (IndexOutOfBoundsException e) {
throw new RuntimeException("优化日志数据库中无此路口记录");
throw new RuntimeException("没有该路口优化日志数据");
}
String dataExtend = crossSchemeOptLogPO.getDataExtend();
OptDataExtend optDataExtend = gson.fromJson(dataExtend, OptDataExtend.class);
optEffectVO.setSceneName(optDataExtend.getSceneName());
optEffectVO.setStrategyName(optDataExtend.getStrategyName());
optEffectVO.setIdeaName(optDataExtend.getIdeaName());
optEffectVO.setOptStartTime(crossSchemeOptLogPO.getStartTime());
Date endTime = crossSchemeOptLogPO.getEndTime();
if (ObjectUtil.isEmpty(endTime)) {
......@@ -427,17 +428,34 @@ public class DiagnoServiceImpl implements DiagnoService {
return 0;
}
private List<SchemeOptVO.PhaseOptTime> buildPhaseOptTimeList(List<CrossSchemeOptLogPO> crossSchemeOptLogPOList) {
private List<SchemeOptVO.PhaseOptTime> buildPhaseOptTimeList(
Collection<CrossSchemeOptLogPO> crossSchemeOptLogPOList, Integer schemeId) {
// 初始化列表
List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = new ArrayList<>();
initPhaseOptTimeList(schemeId, phaseOptTimeList);
for (CrossSchemeOptLogPO crossSchemeOptLogPO : crossSchemeOptLogPOList) {
SchemeOptVO.PhaseOptTime phaseOptTime = new SchemeOptVO.PhaseOptTime();
phaseOptTime.setPhaseNo(crossSchemeOptLogPO.getPhaseNo());
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());
phaseOptTimeList.add(phaseOptTime);
}
}
}
return phaseOptTimeList;
}
private void initPhaseOptTimeList(Integer schemeId, List<SchemeOptVO.PhaseOptTime> phaseOptTimeList) {
List<CrossPhasePO> crossPhasePOList = crossPhaseMapper.listCrossPhase(null, schemeId.toString());
for (CrossPhasePO crossPhasePO : crossPhasePOList) {
SchemeOptVO.PhaseOptTime phaseOptTime = new SchemeOptVO.PhaseOptTime();
phaseOptTime.setPhaseNo(crossPhasePO.getPhaseNo());
phaseOptTime.setOriGreenTime(crossPhasePO.getGreenTime());
phaseOptTime.setOptGreenTime(crossPhasePO.getGreenTime());
phaseOptTime.setOptTime(0);
phaseOptTimeList.add(phaseOptTime);
}
}
}
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