Commit 7a4969cd authored by duanruiming's avatar duanruiming

[add] 绿波干线运行监测

parent d64c2b36
......@@ -2,15 +2,16 @@ package net.wanji.opt.dao.mapper;
import net.wanji.common.framework.mapper.BaseInterfaceMapper;
import net.wanji.databus.dao.entity.GreenwaveHistPOExt;
import net.wanji.databus.po.CrossDataHistPO;
import net.wanji.databus.po.CrossDirDataHistPO;
import net.wanji.databus.po.CrossTurnDataHistPO;
import net.wanji.opt.entity.GreenwaveHist;
import net.wanji.opt.po.base.CrossLaneDataHistPoExtend;
import net.wanji.opt.po.trend.GreenwaveCrossTrendPo;
import net.wanji.opt.vo.GreenWaveRunStateVO;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
import java.util.Map;
......@@ -109,5 +110,14 @@ public interface GreenwaveHistoryMapper extends BaseInterfaceMapper<GreenwaveHis
*/
List<CrossLaneDataHistPoExtend> findCrossExitRoadIndex(Map<String,Object> params);
/**
* 优化监测-干线运行监测V2版本
* @param greenId
* @param date
* @return
*/
List<GreenwaveHistPOExt> selectRunMonitorV2(@Param("greenId") Integer greenId, @Param("date") Date date);
}
......@@ -29,6 +29,7 @@ import net.wanji.opt.common.enums.EventInfoTypeEnum;
import net.wanji.opt.common.exception.OptServiceException;
import net.wanji.opt.config.DirectionMappingsConfig;
import net.wanji.opt.dao.mapper.CrossSchemeOptLogMapper;
import net.wanji.opt.dao.mapper.GreenwaveHistoryMapper;
import net.wanji.opt.dao.mapper.HoloEventMapper;
import net.wanji.opt.dao.mapper.strategy.SceneMapper;
import net.wanji.opt.dao.mapper.strategy.SceneStrategyIdeaMapper;
......@@ -116,6 +117,7 @@ public class TrendServiceImpl implements TrendService {
private final BaseCrossInfoCache crossInfoCache;
@Value("${spring.kafka.bootstrap-servers}")
private String bootstrapServers;
private final GreenwaveHistoryMapper greenwaveHistoryMapper;
// 用于计算路口状态,key为方向,value为状态
private Map<Integer, Integer> preStatus = new HashMap<Integer, Integer>() {{
......@@ -147,7 +149,7 @@ public class TrendServiceImpl implements TrendService {
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, RunningEvaluateServiceImpl runningEvaluateService,
AnalysisRidTurnIndicatorsMapper ridTurnIndicatorsMapper, HoloEventMapper holoEventMapper,
BaseCrossInfoCache crossInfoCache) {
BaseCrossInfoCache crossInfoCache, GreenwaveHistoryMapper greenwaveHistoryMapper) {
this.greenwaveInfoMapper = greenwaveInfoMapper;
this.baseCrossInfoMapper = baseCrossInfoMapper;
this.crossDataRealtimeMapper = crossDataRealtimeMapper;
......@@ -184,6 +186,7 @@ public class TrendServiceImpl implements TrendService {
this.ridTurnIndicatorsMapper = ridTurnIndicatorsMapper;
this.holoEventMapper = holoEventMapper;
this.crossInfoCache = crossInfoCache;
this.greenwaveHistoryMapper = greenwaveHistoryMapper;
}
@Override
......@@ -533,24 +536,18 @@ public class TrendServiceImpl implements TrendService {
@Override
public List<GreenwaveRunMonitorVO> greenwaveRunMonitor(GreenwaveIdBO greenwaveIdBO) {
List<GreenwaveRunMonitorVO> res = new ArrayList<>();
Date nowTime = new Date();
List<GreenwaveHistPOExt> extList = greenwaveHistMapper.selectRunMonitor(nowTime);
Date date = new Date();
List<GreenwaveHistPOExt> extList = greenwaveHistoryMapper.selectRunMonitorV2(greenwaveIdBO.getGreenwaveId(), date);
for (GreenwaveHistPOExt greenwaveHistPOExt : extList) {
GreenwaveRunMonitorVO greenWaveRunMonitorVO = new GreenwaveRunMonitorVO();
String hour = greenwaveHistPOExt.getHour();
String hourSub = hour.substring(11, 16); // 截取小时
greenWaveRunMonitorVO.setHour(hourSub);
greenWaveRunMonitorVO.setHour(hour);
greenWaveRunMonitorVO.setAvgSpeed(greenwaveHistPOExt.getAvgSpeed());
Double congestionIndex = greenwaveHistPOExt.getCongestionIndex();
if (Objects.isNull(congestionIndex)) {
congestionIndex = 1.0;
}
greenWaveRunMonitorVO.setCongestionIndex(congestionIndex);
Double trvalTime = greenwaveHistPOExt.getTrvalTime();
if (Objects.isNull(trvalTime)) {
trvalTime = 1.0;
}
greenWaveRunMonitorVO.setTravelTime(trvalTime.intValue());
greenWaveRunMonitorVO.setRoadDirection(greenwaveHistPOExt.getRoadDirection());
res.add(greenWaveRunMonitorVO);
}
return res;
......
......@@ -210,8 +210,7 @@ public class StrategyControlServiceImpl implements StrategyControlService {
log.error("优化策略查询失败:", e);
JsonViewObject.newInstance().fail("优化策略查询失败");
}
List<StrategyControlHistVO> sorted = results.stream().sorted(Comparator.comparing(StrategyControlHistVO::getOptTime).reversed())
.limit(3000).collect(Collectors.toList());
List<StrategyControlHistVO> sorted = results.stream().sorted(Comparator.comparing(StrategyControlHistVO::getOptTime).reversed()).collect(Collectors.toList());
return JsonViewObject.newInstance().success(sorted);
}
......@@ -245,9 +244,9 @@ public class StrategyControlServiceImpl implements StrategyControlService {
} else {
queryWrapper.ne(StrategyCrossResultEntity::getResponseCode, 200);
}
queryWrapper.orderByDesc(StrategyCrossResultEntity::getIssueTime);
queryWrapper.last("limit 3000");
}
queryWrapper.orderByDesc(StrategyCrossResultEntity::getIssueTime);
queryWrapper.last("limit 3000");
List<StrategyCrossResultEntity> resultEntities = strategyCrossResultMapper.selectList(queryWrapper);
if (!CollectionUtils.isEmpty(resultEntities)) {
for (StrategyCrossResultEntity resultEntity : resultEntities) {
......@@ -500,8 +499,11 @@ public class StrategyControlServiceImpl implements StrategyControlService {
queryWrapper.orderByAsc(StrategyGreenOptHistEntity::getControlTime);
List<StrategyGreenOptHistEntity> entities = strategyGreenOptHistMapper.selectList(queryWrapper);
if (!CollectionUtils.isEmpty(entities)) {
for (StrategyGreenOptHistEntity entity : entities) {
Integer greenId = entity.getGreenId();
Map<Integer, Optional<StrategyGreenOptHistEntity>> groupMap = entities.stream().collect(Collectors.groupingBy(StrategyGreenOptHistEntity::getGreenId, Collectors.maxBy(Comparator.comparing(StrategyGreenOptHistEntity::getControlTime))));
for (Map.Entry<Integer, Optional<StrategyGreenOptHistEntity>> entry : groupMap.entrySet()) {
Integer greenId = entry.getKey();
Optional<StrategyGreenOptHistEntity> value = entry.getValue();
StrategyGreenOptHistEntity entity = value.get();
StrategyControlDataExt ext = new StrategyControlDataExt();
Integer controlMethod = entity.getControlMethod();
if (Objects.equals(-1, controlMethod)) {
......@@ -525,7 +527,6 @@ public class StrategyControlServiceImpl implements StrategyControlService {
results.add(ext);
}
}
results.sort(Comparator.comparing(StrategyControlDataExt::getStatus).reversed());
return results;
}
......
......@@ -17,4 +17,6 @@ public class GreenwaveRunMonitorVO {
private Double congestionIndex;
@ApiModelProperty(value = "行程时间")
private Integer travelTime;
@ApiModelProperty(value = "绿波方向")
private String roadDirection;
}
......@@ -77,6 +77,24 @@
GROUP BY green_id,road_direction,DATE_FORMAT( start_time, '%Y-%m-%d %H:%i:00' );
</select>
<select id="selectRunMonitorV2" resultType="net.wanji.databus.dao.entity.GreenwaveHistPOExt">
SELECT green_id,
(case
when road_direction='n2s' then '南向北'
when road_direction='s2n' then '北向南'
when road_direction='e2w' then '东向西'
when road_direction='w2e' then '西向东'
end ) roadDirection,
DATE_FORMAT(start_time, '%Y-%m-%d %H:%i:00') AS hour,
speed AS avg_speed,
traffic_index AS congestion_index,
trval_time AS trval_time
FROM t_greenwave_hist
WHERE gmt_modified &gt; DATE_FORMAT(#{date}, '%Y-%m-%d 00:00:00')
AND gmt_modified &lt; DATE_FORMAT(DATE_ADD(#{date}, INTERVAL 1 HOUR), '%Y-%m-%d %H:00:00')
and green_id = #{greenId}
</select>
<!-- 查看路口协调/非协调方向5分钟粒度平均指标 -->
<select id="findUnCoordinateCrossIndex" resultType="map">
SELECT t.cross_id,
......
......@@ -17,4 +17,6 @@ public class GreenwaveHistPOExt {
private Double congestionIndex;
@ApiModelProperty(value = "行程时间")
private Double trvalTime;
@ApiModelProperty(value = "绿波方向")
private String roadDirection;
}
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