Commit f373637c authored by hanbing's avatar hanbing

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

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