Commit 56882d8d authored by duanruiming's avatar duanruiming

[update] 济南测试平台-添加同比环比指标

parent e6d0eb2a
...@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil; ...@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import net.wanji.common.enums.*; import net.wanji.common.enums.*;
import net.wanji.common.utils.tool.CrossUtil; import net.wanji.common.utils.tool.CrossUtil;
import net.wanji.databus.bo.CrossIdBO; import net.wanji.databus.bo.CrossIdBO;
...@@ -85,6 +86,7 @@ public class TrendServiceImpl implements TrendService { ...@@ -85,6 +86,7 @@ public class TrendServiceImpl implements TrendService {
private final CrossLaneDataHistMapper crossLaneDataHistMapper; private final CrossLaneDataHistMapper crossLaneDataHistMapper;
private final LaneSnapshotDataQueryService laneSnapshotDataQueryService; private final LaneSnapshotDataQueryService laneSnapshotDataQueryService;
private final DirectionMappingsConfig directionMappingsConfig; private final DirectionMappingsConfig directionMappingsConfig;
private final CrossDataHistMapper crossDataHistMapper;
// 用于计算路口状态,key为方向,value为状态 // 用于计算路口状态,key为方向,value为状态
private Map<Integer, Integer> preStatus = new HashMap<Integer, Integer>() {{ private Map<Integer, Integer> preStatus = new HashMap<Integer, Integer>() {{
...@@ -110,7 +112,8 @@ public class TrendServiceImpl implements TrendService { ...@@ -110,7 +112,8 @@ public class TrendServiceImpl implements TrendService {
CrossTurnDataRealtimeMapper crossTurnDataRealtimeMapper, CrossTurnDataRealtimeMapper crossTurnDataRealtimeMapper,
CrossDirDataHistMapper crossDirDataHistMapper, EventAlarmMapper eventAlarmMapper, CrossDirDataHistMapper crossDirDataHistMapper, EventAlarmMapper eventAlarmMapper,
RidInfoMapper ridInfoMapper, BaseCrossDirInfoMapper baseCrossDirInfoMapper, RidInfoMapper ridInfoMapper, BaseCrossDirInfoMapper baseCrossDirInfoMapper,
CrossSchemeOptLogMapper crossSchemeOptLogMapper, GreenwaveCrossMapper greenwaveCrossMapper, CrossDirDataRealtimeMapper crossDirDataRealtimeMapper, GreenwaveHistMapper greenwaveHistMapper, GreenwaveRealtimeMapper greenwaveRealtimeMapper, SceneStrategyIdeaMapper strategyIdeaMapper, StrategyMapper strategyMapper, BaseCrossSchedulesMapper baseCrossSchedulesMapper, BaseCrossSchedulesPlanMapper baseCrossSchedulesPlanMapper, BaseCrossSectionMapper baseCrossSectionMapper, BaseCrossSchemeMapper crossSchemeMapper, BaseCrossSchemeMapper baseCrossSchemeMapper, BaseCrossPhaseMapper baseCrossPhaseMapper, BaseCrossPhaseLightsMapper crossPhaseLightsMapper, BaseCrossLaneLightsMapper baseCrossLaneLightsMapper, CrossBaseLaneInfoMapper crossBaseLaneInfoMapper, CrossTurnDataHistMapper crossTurnDataHistMapper, @Qualifier("greenwaveSceneMapper") GreenwaveSceneMapper greenwaveSceneMapper, @Qualifier("sceneStrategyMapper") SceneStrategyMapper sceneStrategyMapper, @Qualifier("sceneMapper") SceneMapper sceneMapper, @Qualifier("baseCrossPlanMapper") BaseCrossPlanMapper baseCrossPlanMapper, MainlineEvaluateServiceImpl mainlineEvaluateServiceImpl, CrossLaneDataHistMapper crossLaneDataHistMapper, LaneSnapshotDataQueryService laneSnapshotDataQueryService, DirectionMappingsConfig directionMappingsConfig) { CrossSchemeOptLogMapper crossSchemeOptLogMapper, GreenwaveCrossMapper greenwaveCrossMapper, CrossDirDataRealtimeMapper crossDirDataRealtimeMapper, GreenwaveHistMapper greenwaveHistMapper, GreenwaveRealtimeMapper greenwaveRealtimeMapper, SceneStrategyIdeaMapper strategyIdeaMapper, StrategyMapper strategyMapper, BaseCrossSchedulesMapper baseCrossSchedulesMapper, BaseCrossSchedulesPlanMapper baseCrossSchedulesPlanMapper, BaseCrossSectionMapper baseCrossSectionMapper, BaseCrossSchemeMapper crossSchemeMapper, BaseCrossSchemeMapper baseCrossSchemeMapper, BaseCrossPhaseMapper baseCrossPhaseMapper, BaseCrossPhaseLightsMapper crossPhaseLightsMapper, BaseCrossLaneLightsMapper baseCrossLaneLightsMapper, CrossBaseLaneInfoMapper crossBaseLaneInfoMapper, CrossTurnDataHistMapper crossTurnDataHistMapper, @Qualifier("greenwaveSceneMapper") GreenwaveSceneMapper greenwaveSceneMapper, @Qualifier("sceneStrategyMapper") SceneStrategyMapper sceneStrategyMapper, @Qualifier("sceneMapper") SceneMapper sceneMapper, @Qualifier("baseCrossPlanMapper") BaseCrossPlanMapper baseCrossPlanMapper, MainlineEvaluateServiceImpl mainlineEvaluateServiceImpl, CrossLaneDataHistMapper crossLaneDataHistMapper, LaneSnapshotDataQueryService laneSnapshotDataQueryService, DirectionMappingsConfig directionMappingsConfig,
CrossDataHistMapper crossDataHistMapper) {
this.greenwaveInfoMapper = greenwaveInfoMapper; this.greenwaveInfoMapper = greenwaveInfoMapper;
this.baseCrossInfoMapper = baseCrossInfoMapper; this.baseCrossInfoMapper = baseCrossInfoMapper;
this.crossDataRealtimeMapper = crossDataRealtimeMapper; this.crossDataRealtimeMapper = crossDataRealtimeMapper;
...@@ -142,6 +145,7 @@ public class TrendServiceImpl implements TrendService { ...@@ -142,6 +145,7 @@ public class TrendServiceImpl implements TrendService {
this.crossLaneDataHistMapper = crossLaneDataHistMapper; this.crossLaneDataHistMapper = crossLaneDataHistMapper;
this.laneSnapshotDataQueryService = laneSnapshotDataQueryService; this.laneSnapshotDataQueryService = laneSnapshotDataQueryService;
this.directionMappingsConfig = directionMappingsConfig; this.directionMappingsConfig = directionMappingsConfig;
this.crossDataHistMapper = crossDataHistMapper;
} }
@Override @Override
...@@ -240,6 +244,26 @@ public class TrendServiceImpl implements TrendService { ...@@ -240,6 +244,26 @@ public class TrendServiceImpl implements TrendService {
} }
CrossComparator crossComparator = new CrossComparator(); CrossComparator crossComparator = new CrossComparator();
abnormalCrossListVOList.sort(crossComparator); abnormalCrossListVOList.sort(crossComparator);
// 设置拥堵指数同比 环比
for (AbnormalCrossListVO abnormalCrossListVO : abnormalCrossListVOList) {
String crossId = abnormalCrossListVO.getId();
Integer batchTime = abnormalCrossListVO.getBatchTime();
Double congestionIndex = abnormalCrossListVO.getCongestionIndex();
double lastWeekIndex = getIndex(congestionIndex, crossId, batchTime - 604800);
double lastPeriodIndex = getIndex(congestionIndex, crossId, batchTime - 300);
abnormalCrossListVO.setLastWeekIndex(lastWeekIndex);
abnormalCrossListVO.setLastPeriodIndex(lastPeriodIndex);
// 常发性偶发性 一个月内超过三次
int frequent = getFrequent(crossId, batchTime);
abnormalCrossListVO.setFrequent(frequent);
}
abnormalCrossVO.setAbnormalCrossList(abnormalCrossListVOList); abnormalCrossVO.setAbnormalCrossList(abnormalCrossListVOList);
// 构造统计信息 // 构造统计信息
List<AbnormalCrossListVO> listForStats = List<AbnormalCrossListVO> listForStats =
...@@ -249,6 +273,27 @@ public class TrendServiceImpl implements TrendService { ...@@ -249,6 +273,27 @@ public class TrendServiceImpl implements TrendService {
return abnormalCrossVO; return abnormalCrossVO;
} }
private int getFrequent(String crossId, Integer batchTime) {
LambdaQueryWrapper<CrossDataHistPO> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CrossDataHistPO::getCrossId, crossId);
queryWrapper.between(CrossDataHistPO::getBatchTime, batchTime - 30 * 86400 , batchTime);
List<CrossDataHistPO> crossDataHistPOS = crossDataHistMapper.selectList(queryWrapper);
int frequent = crossDataHistPOS.size() > 3 ? 1 : 0;
return frequent;
}
private double getIndex(Double congestionIndex, String crossId, Integer batchTime) {
LambdaQueryWrapper<CrossDataHistPO> lastWeekQuery = new LambdaQueryWrapper<>();
lastWeekQuery.eq(CrossDataHistPO::getCrossId, crossId);
lastWeekQuery.eq(CrossDataHistPO::getBatchTime, batchTime);
CrossDataHistPO lastHistPO = crossDataHistMapper.selectOne(lastWeekQuery);
if (Objects.isNull(lastHistPO)) {
return 0.0;
}
Double lastCongestionIndex = lastHistPO.getCongestionIndex();
return Math.abs((congestionIndex - lastCongestionIndex))/ lastCongestionIndex * 100;
}
private static class CrossComparator implements Comparator<AbnormalCrossListVO> { private static class CrossComparator implements Comparator<AbnormalCrossListVO> {
@Override @Override
public int compare(AbnormalCrossListVO o1, AbnormalCrossListVO o2) { public int compare(AbnormalCrossListVO o1, AbnormalCrossListVO o2) {
......
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