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; ...@@ -22,7 +22,6 @@ import net.wanji.opt.dao.mapper.trend.CrossDataRealtimeMapper;
import net.wanji.opt.dao.mapper.trend.CrossDirDataHistMapper; import net.wanji.opt.dao.mapper.trend.CrossDirDataHistMapper;
import net.wanji.opt.dto.CrossIdAndDirDTO; import net.wanji.opt.dto.CrossIdAndDirDTO;
import net.wanji.opt.dto.CrossIdAndSchemeIdDTO; import net.wanji.opt.dto.CrossIdAndSchemeIdDTO;
import net.wanji.opt.dto.OptDataExtend;
import net.wanji.opt.dto.SendManualDTO; import net.wanji.opt.dto.SendManualDTO;
import net.wanji.opt.dto.strategy.AddOrUpdateSceneDTO; import net.wanji.opt.dto.strategy.AddOrUpdateSceneDTO;
import net.wanji.opt.dto.strategy.QuerySceneDTO; import net.wanji.opt.dto.strategy.QuerySceneDTO;
...@@ -44,11 +43,14 @@ import net.wanji.opt.vo.SchemeOptVO; ...@@ -44,11 +43,14 @@ import net.wanji.opt.vo.SchemeOptVO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.TreeSet;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -159,6 +161,10 @@ public class DiagnoServiceImpl implements DiagnoService { ...@@ -159,6 +161,10 @@ public class DiagnoServiceImpl implements DiagnoService {
schemeOptVO.setCrossId(crossId); schemeOptVO.setCrossId(crossId);
// 选择数据批次时间最大的记录 // 选择数据批次时间最大的记录
List<CrossSchemeOptLogPO> maxList = crossSchemeOptLogMapper.selectMaxByCrossId(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); CrossSchemeOptLogPO crossSchemeOptLogPO = maxList.get(0);
String optType = crossSchemeOptLogPO.getOptType(); String optType = crossSchemeOptLogPO.getOptType();
schemeOptVO.setOptType(Integer.parseInt(optType)); schemeOptVO.setOptType(Integer.parseInt(optType));
...@@ -168,7 +174,7 @@ public class DiagnoServiceImpl implements DiagnoService { ...@@ -168,7 +174,7 @@ public class DiagnoServiceImpl implements DiagnoService {
schemeOptVO.setSchemeId(crossSchemePO.getId()); schemeOptVO.setSchemeId(crossSchemePO.getId());
schemeOptVO.setOffset(crossSchemeOptLogPO.getOffset()); schemeOptVO.setOffset(crossSchemeOptLogPO.getOffset());
// 构造调整时间列表 // 构造调整时间列表
List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = buildPhaseOptTimeList(maxList); List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = buildPhaseOptTimeList(collect, schemeId);
schemeOptVO.setPhaseOptTimeList(phaseOptTimeList); schemeOptVO.setPhaseOptTimeList(phaseOptTimeList);
return schemeOptVO; return schemeOptVO;
} }
...@@ -315,13 +321,8 @@ public class DiagnoServiceImpl implements DiagnoService { ...@@ -315,13 +321,8 @@ public class DiagnoServiceImpl implements DiagnoService {
try { try {
crossSchemeOptLogPO = maxList.get(0); crossSchemeOptLogPO = maxList.get(0);
} catch (IndexOutOfBoundsException e) { } 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()); optEffectVO.setOptStartTime(crossSchemeOptLogPO.getStartTime());
Date endTime = crossSchemeOptLogPO.getEndTime(); Date endTime = crossSchemeOptLogPO.getEndTime();
if (ObjectUtil.isEmpty(endTime)) { if (ObjectUtil.isEmpty(endTime)) {
...@@ -427,17 +428,34 @@ public class DiagnoServiceImpl implements DiagnoService { ...@@ -427,17 +428,34 @@ public class DiagnoServiceImpl implements DiagnoService {
return 0; return 0;
} }
private List<SchemeOptVO.PhaseOptTime> buildPhaseOptTimeList(
private List<SchemeOptVO.PhaseOptTime> buildPhaseOptTimeList(List<CrossSchemeOptLogPO> crossSchemeOptLogPOList) { Collection<CrossSchemeOptLogPO> crossSchemeOptLogPOList, Integer schemeId) {
// 初始化列表
List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = new ArrayList<>(); List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = new ArrayList<>();
initPhaseOptTimeList(schemeId, phaseOptTimeList);
for (CrossSchemeOptLogPO crossSchemeOptLogPO : crossSchemeOptLogPOList) { 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());
}
}
}
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(); SchemeOptVO.PhaseOptTime phaseOptTime = new SchemeOptVO.PhaseOptTime();
phaseOptTime.setPhaseNo(crossSchemeOptLogPO.getPhaseNo()); phaseOptTime.setPhaseNo(crossPhasePO.getPhaseNo());
phaseOptTime.setOriGreenTime(crossSchemeOptLogPO.getOriGreenTime()); phaseOptTime.setOriGreenTime(crossPhasePO.getGreenTime());
phaseOptTime.setOptGreenTime(crossSchemeOptLogPO.getOptGreenTime()); phaseOptTime.setOptGreenTime(crossPhasePO.getGreenTime());
phaseOptTime.setOptTime(crossSchemeOptLogPO.getOptTime()); phaseOptTime.setOptTime(0);
phaseOptTimeList.add(phaseOptTime); phaseOptTimeList.add(phaseOptTime);
} }
return phaseOptTimeList;
} }
} }
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