Commit f373637c authored by hanbing's avatar hanbing

[update] 信号优化,态势监测-从绿波路口关系获取路段长度

parent 12c6ac11
...@@ -546,32 +546,24 @@ public class TrendServiceImpl implements TrendService { ...@@ -546,32 +546,24 @@ public class TrendServiceImpl implements TrendService {
if (i != lastCrossIndex) { if (i != lastCrossIndex) {
GreenwaveCrossPO nextCross = greenwaveCrossList.get(i + 1); GreenwaveCrossPO nextCross = greenwaveCrossList.get(i + 1);
String nextCrossId = nextCross.getCrossId(); String nextCrossId = nextCross.getCrossId();
// 计算当前路口出口方向 // 当前路口出口方向
RidInfoEntity ridInfoEntity = ridInfoMapper.selectByStartEnd(currentCrossId, nextCrossId); Integer outDir = greenwaveCrossPO.getOutDir();
if (ObjectUtil.isEmpty(ridInfoEntity)) {
throw new RuntimeException("路网数据不连续");
}
Integer outDir = ridInfoEntity.getOutDir();
List<CrossDirDataHistPO> listForNoPark = List<CrossDirDataHistPO> listForNoPark =
crossDirDataHistMapper.selectNoPark(currentCrossId, outDir, currentSeconds, preSeconds); crossDirDataHistMapper.selectNoPark(currentCrossId, outDir, currentSeconds, preSeconds);
List<CrossDirDataHistPO> listForPhaseQueue = List<CrossDirDataHistPO> listForPhaseQueue =
crossDirDataHistMapper.selectPhaseQueue(currentCrossId, outDir, currentSeconds, preSeconds); crossDirDataHistMapper.selectPhaseQueue(currentCrossId, outDir, currentSeconds, preSeconds);
setMetrics(greenwaveCrossMetricsVO, ridInfoEntity, listForNoPark, listForPhaseQueue); setMetrics(greenwaveCrossMetricsVO, greenwaveCrossPO, listForNoPark, listForPhaseQueue);
} else { } else {
// 最后一个路口 // 最后一个路口
GreenwaveCrossPO preCross = greenwaveCrossList.get(i - 1); GreenwaveCrossPO preCross = greenwaveCrossList.get(i - 1);
String preCrossId = preCross.getCrossId(); String preCrossId = preCross.getCrossId();
// 计算当前路口入口方向 // 当前路口入口方向
RidInfoEntity ridInfoEntity = ridInfoMapper.selectByStartEnd(preCrossId, currentCrossId); Integer inDir = greenwaveCrossPO.getInDir();
if (ObjectUtil.isEmpty(ridInfoEntity)) {
throw new RuntimeException("路网数据不连续");
}
Integer inDir = ridInfoEntity.getInDir();
List<CrossDirDataHistPO> listForNoPark = List<CrossDirDataHistPO> listForNoPark =
crossDirDataHistMapper.selectNoParkEnd(currentCrossId, inDir, currentSeconds, preSeconds); crossDirDataHistMapper.selectNoParkEnd(currentCrossId, inDir, currentSeconds, preSeconds);
List<CrossDirDataHistPO> listForPhaseQueue = List<CrossDirDataHistPO> listForPhaseQueue =
crossDirDataHistMapper.selectPhaseQueueEnd(currentCrossId, inDir, currentSeconds, preSeconds); crossDirDataHistMapper.selectPhaseQueueEnd(currentCrossId, inDir, currentSeconds, preSeconds);
setMetrics(greenwaveCrossMetricsVO, ridInfoEntity, listForNoPark, listForPhaseQueue); setMetrics(greenwaveCrossMetricsVO, greenwaveCrossPO, listForNoPark, listForPhaseQueue);
} }
res.add(greenwaveCrossMetricsVO); res.add(greenwaveCrossMetricsVO);
...@@ -594,14 +586,14 @@ public class TrendServiceImpl implements TrendService { ...@@ -594,14 +586,14 @@ public class TrendServiceImpl implements TrendService {
} }
} }
private void setMetrics(GreenwaveCrossMetricsVO greenwaveCrossMetricsVO, RidInfoEntity ridInfoEntity, private void setMetrics(GreenwaveCrossMetricsVO greenwaveCrossMetricsVO, GreenwaveCrossPO greenwaveCrossPO,
List<CrossDirDataHistPO> listForNoPark, List<CrossDirDataHistPO> listForPhaseQueue) { List<CrossDirDataHistPO> listForNoPark, List<CrossDirDataHistPO> listForPhaseQueue) {
if (CollectionUtil.isNotEmpty(listForNoPark) && CollectionUtil.isNotEmpty(listForPhaseQueue)) { if (CollectionUtil.isNotEmpty(listForNoPark) && CollectionUtil.isNotEmpty(listForPhaseQueue)) {
Integer noparkPassRate = getAveRate(listForNoPark); Integer noparkPassRate = getAveRate(listForNoPark);
greenwaveCrossMetricsVO.setNoparkPassRate(noparkPassRate); greenwaveCrossMetricsVO.setNoparkPassRate(noparkPassRate);
Integer uncoordinatePhaseQueue = getPhaseQueue(listForPhaseQueue); Integer uncoordinatePhaseQueue = getPhaseQueue(listForPhaseQueue);
greenwaveCrossMetricsVO.setUncoordinatePhaseQueue(uncoordinatePhaseQueue); greenwaveCrossMetricsVO.setUncoordinatePhaseQueue(uncoordinatePhaseQueue);
Double length = ridInfoEntity.getLength(); Double length = greenwaveCrossPO.getNextCrossLen();
Double speed = getSpeed(listForNoPark); Double speed = getSpeed(listForNoPark);
double travelTime = length / speed; double travelTime = length / speed;
greenwaveCrossMetricsVO.setTrvalTime((int)travelTime); greenwaveCrossMetricsVO.setTrvalTime((int)travelTime);
......
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