Commit 81c64a90 authored by zhoushiguang's avatar zhoushiguang

Merge remote-tracking branch 'origin/master'

parents 2b0b1e67 5446910a
......@@ -43,14 +43,14 @@ public class CrossGreenWaveInfoCache implements InitializingBean {
}
private void init() throws Exception {
List<GreenwaveInfoPO> greenwaveInfoPOS = greenwaveInfoMapper.selectAll();
if (!CollectionUtils.isEmpty(greenwaveInfoPOS)) {
List<GreenwaveInfoPO> greenWaveInfoPOS = greenwaveInfoMapper.selectAll();
if (!CollectionUtils.isEmpty(greenWaveInfoPOS)) {
LocalTime now = LocalTime.now();
for (GreenwaveInfoPO greenwaveInfoPO : greenwaveInfoPOS) {
for (GreenwaveInfoPO greenwaveInfoPO : greenWaveInfoPOS) {
Integer greenWaveId = greenwaveInfoPO.getId();
List<GreenwaveCrossPO> greenwaveCrossPOS = greenwaveCrossMapper.selectByGreenwaveId(greenWaveId);
if (!CollectionUtils.isEmpty(greenwaveCrossPOS)) {
List<GreenwaveCrossPO> greenWaveCrossIds = greenwaveCrossPOS.stream()
List<GreenwaveCrossPO> greenWaveCrossPOS = greenwaveCrossMapper.selectByGreenwaveId(greenWaveId);
if (!CollectionUtils.isEmpty(greenWaveCrossPOS)) {
List<GreenwaveCrossPO> greenWaveCrossIds = greenWaveCrossPOS.stream()
.filter(po -> LocalTime.parse(po.getStartTime()).isBefore(now) && LocalTime.parse(po.getEndTime()).isAfter(now))
.sorted(Comparator.comparingInt(GreenwaveCrossPO::getSort))
.collect(Collectors.toList());
......
......@@ -27,7 +27,7 @@ public class CrossLaneInfoCache implements InitializingBean {
@Resource
private LaneInfoMapper laneInfoMapper;
private Map<String, LaneInfoPO> init() throws Exception {
private void init() throws Exception {
List<String> crossIds = CrossInfoCache.getSingalIds();
for (String crossId : crossIds) {
List<LaneInfoPO> laneInfoPOS = laneInfoMapper.selectBycrossId(crossId);
......@@ -36,7 +36,6 @@ public class CrossLaneInfoCache implements InitializingBean {
laneInfoMap.putAll(crossMap);
}
}
return laneInfoMap;
}
@Override
......
......@@ -28,7 +28,7 @@ public class CrossRidInfoCache implements CommandLineRunner {
public static RidInfoEntity getStartRidInfoEntity(String startCrossId, Integer inDir) {
for (RidInfoEntity ridInfoEntity : ridInfoEntityList) {
if (StringUtils.equalsIgnoreCase(startCrossId, ridInfoEntity.getStartCrossId()) && Objects.equals(inDir, ridInfoEntity.getId())) {
if (StringUtils.equalsIgnoreCase(startCrossId, ridInfoEntity.getStartCrossId()) && Objects.equals(inDir, Integer.parseInt(ridInfoEntity.getId()))) {
return ridInfoEntity;
}
}
......@@ -37,7 +37,7 @@ public class CrossRidInfoCache implements CommandLineRunner {
public static RidInfoEntity getEndRidInfoEntity(String endCrossId, Integer inDir) {
for (RidInfoEntity ridInfoEntity : ridInfoEntityList) {
if (StringUtils.equalsIgnoreCase(endCrossId, ridInfoEntity.getEndCrossId()) && Objects.equals(inDir, ridInfoEntity.getId())) {
if (StringUtils.equalsIgnoreCase(endCrossId, ridInfoEntity.getEndCrossId()) && Objects.equals(inDir, Integer.parseInt(ridInfoEntity.getId()))) {
return ridInfoEntity;
}
}
......
......@@ -39,47 +39,52 @@ public class CrossSchemePhaseLightsCache implements CommandLineRunner {
public static final List<CrossSchemePhaseDirTurnDTO> crossSchemePhaseDirTurnDTOList = new ArrayList<>();
public void init() throws Exception {
List<BaseCrossSchemePO> schemePOList = baseCrossSchemeMapper.listCrossSchemeInfo(Constants.SystemParam.NULL, Constants.SystemParam.NULL, Constants.SystemParam.NULL_INT);
if (!CollectionUtils.isEmpty(schemePOList)) {
for (BaseCrossSchemePO baseCrossSchemePO : schemePOList) {
String crossId = baseCrossSchemePO.getCrossId();
String schemeNo = baseCrossSchemePO.getSchemeNo();
Integer schemeId = baseCrossSchemePO.getId();
List<CrossPhasePO> crossPhasePOList = baseCrossPhaseMapper.selectByCrossIdAndSchemeId(crossId, schemeId);
if (!CollectionUtils.isEmpty(crossPhasePOList)) {
for (CrossPhasePO crossPhasePO : crossPhasePOList) {
Integer phaseId = crossPhasePO.getId();
String phaseNo = crossPhasePO.getPhaseNo();
Integer redTime = crossPhasePO.getRedTime();
Integer phaseTime = crossPhasePO.getPhaseTime();
Integer greenTime = crossPhasePO.getGreenTime();
List<CrossPhaseLightsPO> crossPhaseLightsPOList = baseCrossPhaseLightsMapper.selectByPhaseId(phaseId);
if (!CollectionUtils.isEmpty(crossPhaseLightsPOList)) {
for (CrossPhaseLightsPO crossPhaseLightsPO : crossPhaseLightsPOList) {
CrossSchemePhaseDirTurnDTO crossSchemePhaseDirTurnDTO = new CrossSchemePhaseDirTurnDTO();
crossSchemePhaseDirTurnDTO.setCrossId(crossId);
crossSchemePhaseDirTurnDTO.setSchemeNo(schemeNo);
crossSchemePhaseDirTurnDTO.setPhaseNo(phaseNo);
Integer lightsId = crossPhaseLightsPO.getLightsId();
BaseCrossLightsPO baseCrossLightsPO = baseCrossLightsMapper.selectById(lightsId);
Integer dir = baseCrossLightsPO.getDir();
crossSchemePhaseDirTurnDTO.setLightsDir(dir);
Integer turn = baseCrossLightsPO.getType();
if (turn == 20) {
continue;
try {
List<BaseCrossSchemePO> schemePOList = baseCrossSchemeMapper.listCrossSchemeInfo(Constants.SystemParam.NULL, Constants.SystemParam.NULL, Constants.SystemParam.NULL_INT);
if (!CollectionUtils.isEmpty(schemePOList)) {
for (BaseCrossSchemePO baseCrossSchemePO : schemePOList) {
String crossId = baseCrossSchemePO.getCrossId();
String schemeNo = baseCrossSchemePO.getSchemeNo();
Integer schemeId = baseCrossSchemePO.getId();
List<CrossPhasePO> crossPhasePOList = baseCrossPhaseMapper.selectByCrossIdAndSchemeId(crossId, schemeId);
if (!CollectionUtils.isEmpty(crossPhasePOList)) {
for (CrossPhasePO crossPhasePO : crossPhasePOList) {
Integer phaseId = crossPhasePO.getId();
String phaseNo = crossPhasePO.getPhaseNo();
Integer redTime = crossPhasePO.getRedTime();
Integer phaseTime = crossPhasePO.getPhaseTime();
Integer greenTime = crossPhasePO.getGreenTime();
List<CrossPhaseLightsPO> crossPhaseLightsPOList = baseCrossPhaseLightsMapper.selectByPhaseId(phaseId);
if (!CollectionUtils.isEmpty(crossPhaseLightsPOList)) {
for (CrossPhaseLightsPO crossPhaseLightsPO : crossPhaseLightsPOList) {
CrossSchemePhaseDirTurnDTO crossSchemePhaseDirTurnDTO = new CrossSchemePhaseDirTurnDTO();
crossSchemePhaseDirTurnDTO.setCrossId(crossId);
crossSchemePhaseDirTurnDTO.setSchemeNo(schemeNo);
crossSchemePhaseDirTurnDTO.setPhaseNo(phaseNo);
Integer lightsId = crossPhaseLightsPO.getLightsId();
BaseCrossLightsPO baseCrossLightsPO = baseCrossLightsMapper.selectById(lightsId);
Integer dir = baseCrossLightsPO.getDir();
crossSchemePhaseDirTurnDTO.setLightsDir(dir);
Integer turn = baseCrossLightsPO.getType();
if (turn == 20) {
continue;
}
crossSchemePhaseDirTurnDTO.setPhaseTime(phaseTime);
crossSchemePhaseDirTurnDTO.setGreenTime(greenTime);
crossSchemePhaseDirTurnDTO.setRedTime(redTime);
crossSchemePhaseDirTurnDTO.setLightsTurn(turn);
crossSchemePhaseDirTurnDTOList.add(crossSchemePhaseDirTurnDTO);
}
crossSchemePhaseDirTurnDTO.setPhaseTime(phaseTime);
crossSchemePhaseDirTurnDTO.setGreenTime(greenTime);
crossSchemePhaseDirTurnDTO.setRedTime(redTime);
crossSchemePhaseDirTurnDTO.setLightsTurn(turn);
crossSchemePhaseDirTurnDTOList.add(crossSchemePhaseDirTurnDTO);
}
}
}
}
}
log.info("路口缓存方案相位方向转向数据:{}", crossSchemePhaseDirTurnDTOList);
} catch (Exception e) {
log.error("路口缓存方案相位方向转向关系数据初始化失败", e);
throw new Exception(e);
}
log.info("路口缓存方案相位方向转向数据:{}", crossSchemePhaseDirTurnDTOList);
}
@Override
......
......@@ -15,6 +15,7 @@ import java.time.temporal.ChronoUnit;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.OptionalInt;
import java.util.stream.Collectors;
/**
......@@ -23,7 +24,7 @@ import java.util.stream.Collectors;
*/
@Component
@Slf4j
public class CrossTurnWeekMaxFlowCache implements CommandLineRunner {
public class CrossTurnWeekMaxFlowCache implements CommandLineRunner {
public static final Map<String, Integer> crossTurnWeekMaxFlowMap = new HashMap<>();
......@@ -52,9 +53,11 @@ public class CrossTurnWeekMaxFlowCache implements CommandLineRunner {
String turn = turnEntry.getKey();
List<CrossTurnDataHistPO> turnDataHistPOList = turnEntry.getValue();
if (!CollectionUtils.isEmpty(turnDataHistPOList)) {
int turnFlowsMax = turnDataHistPOList.stream().map(CrossTurnDataHistPO::getFlow).mapToInt(Integer::intValue).max().getAsInt();
String key = crossId.concat(Constants.underline).concat(String.valueOf(dir)).concat(Constants.underline).concat(turn);
crossTurnWeekMaxFlowMap.put(key, turnFlowsMax);
OptionalInt max = turnDataHistPOList.stream().map(CrossTurnDataHistPO::getFlow).mapToInt(Integer::intValue).max();
if (max.isPresent()) {
String key = crossId.concat(Constants.underline).concat(String.valueOf(dir)).concat(Constants.underline).concat(turn);
crossTurnWeekMaxFlowMap.put(key, max.getAsInt());
}
}
}
}
......
......@@ -66,8 +66,8 @@ public class WeekDirFreeFlowSpeedCache implements CommandLineRunner {
}
}
Map<String, List<CrossDirFreeFlowSpeedDTO>> map = new HashMap<>(1);
map.put("crossFreeFlowSpeed", crossDirFreeFlowSpeedDTOS);
producerHandler.send("cross_free_flow_speed", map);
map.put(Constants.CROSS_FREE_FLOW_SPEED_KEY, crossDirFreeFlowSpeedDTOS);
producerHandler.send(Constants.CROSS_FREE_FLOW_SPEED_TOPIC, map);
}
@Override
......
......@@ -15,6 +15,7 @@ import java.time.temporal.ChronoUnit;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.OptionalDouble;
import java.util.stream.Collectors;
/**
......@@ -58,9 +59,12 @@ public class WeekTurnFreeFlowSpeedCache implements CommandLineRunner {
if (startIndex == endIndex) {
startIndex = startIndex - 1;
}
Double freeFlowSpeed = weekTurnSpeeds.subList(startIndex, endIndex).stream().mapToDouble(Double::doubleValue).average().getAsDouble();
String key = currentCrossId.concat(Constants.underline).concat(String.valueOf(dir)).concat(Constants.underline).concat(turn);
crossTurnFreeFlowSpeedMap.put(key, freeFlowSpeed);
OptionalDouble average = weekTurnSpeeds.subList(startIndex, endIndex).stream().mapToDouble(Double::doubleValue).average();
if (average.isPresent()) {
double turnFreeFlowSpeed = average.getAsDouble();
String key = currentCrossId.concat(Constants.underline).concat(String.valueOf(dir)).concat(Constants.underline).concat(turn);
crossTurnFreeFlowSpeedMap.put(key, turnFreeFlowSpeed);
}
}
}
}
......
......@@ -9,12 +9,10 @@ import java.util.List;
*/
public class Constants {
public static final String underline = "_";
// 横向方向列表
public static final List<Integer> X_DIR_LIST = Arrays.asList(2, 3, 6, 7);
// 路口列表,后续可以缓存信控路口列表
public static final List<String> IS_SIGNAL_CROSS_LIST = Arrays.asList("13NF80B5QN0", "13NGH0B5RC0", "13NI00B5RM0");
public static final String LANE_SNAPSHOT_DATA_ES_INDEX = "datacenter_lane_snapshot_data";
public static final String CROSS_FREE_FLOW_SPEED_KEY = "crossFreeFlowSpeed";
public static final String CROSS_FREE_FLOW_SPEED_TOPIC = "cross_free_flow_speed";
}
\ No newline at end of file
......@@ -23,4 +23,13 @@ public class Constant {
public static final String WEBSOCKET_TOPIC_CAR_TRAIL_INFO = "carTrailInfo";
// WebSocket自动解锁路口topic
public static final String WEBSOCKET_AUTO_UNLOCK = "autoUnlock";
public static final String REAL_TIME_LANE_DATA_KEY = "crossRealTimeLaneData";
public static final String REAL_TIME_LANE_DATA_TOPIC = "cross_real_time_lane_data";
public static final String REAL_TIME_DIR_DATA_KEY = "crossRealTimeDirData";
public static final String REAL_TIME_DIR_DATA_TOPIC = "cross_real_time_dir_data";
public static final String REAL_TIME_TURN_DATA_KEY= "crossRealTimeTurnData";
public static final String REAL_TIME_TURN_DATA_TOPIC= "cross_real_time_turn_data";
public static final String REAL_TIME_CROSS_DATA_KEY= "crossRealTimeData";
public static final String REAL_TIME_CROSS_DATA_TOPIC= "cross_real_time_data";
}
......@@ -13,6 +13,7 @@ import net.wanji.databus.dao.mapper.*;
import net.wanji.databus.po.*;
import net.wanji.datacenter.cache.*;
import net.wanji.datacenter.common.Constants;
import net.wanji.datacenter.constant.Constant;
import net.wanji.datacenter.constant.EventAbnormalEnum;
import net.wanji.datacenter.kafka.ConsumerHandler;
import net.wanji.datacenter.kafka.ProducerHandler;
......@@ -142,13 +143,13 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService {
}
}
Map<String, List<CrossLaneDataRealTimePO>> laneDataMap = new HashMap<>();
laneDataMap.put("crossRealTimeLaneData", crossLaneDataRealTimePOS);
producerHandler.send("cross_real_time_lane_data", laneDataMap);
laneDataMap.put(Constant.REAL_TIME_LANE_DATA_KEY, crossLaneDataRealTimePOS);
producerHandler.send(Constant.REAL_TIME_LANE_DATA_TOPIC, laneDataMap);
List<CrossDirDataRealtimePO> insertCrossDirDataRealtimePOS = dealCrossDataDirRealTime(crossDirDataRealtimePOS, decimalFormat, producerHandler, startDate);
Map<String, List<CrossDirDataRealtimePO>> dirDataMap = new HashMap<>();
dirDataMap.put("crossRealTimeDirData", insertCrossDirDataRealtimePOS);
producerHandler.send("cross_real_time_dir_data", dirDataMap);
dirDataMap.put(Constant.REAL_TIME_DIR_DATA_KEY, insertCrossDirDataRealtimePOS);
producerHandler.send(Constant.REAL_TIME_DIR_DATA_TOPIC, dirDataMap);
dealCrossDataRealTime(crossDataRealtimePOS, decimalFormat, producerHandler, startDate);
dealCrossDataTurnRealTime(crossTurnDataRealtimePOS, decimalFormat, producerHandler, startDate);
......@@ -281,8 +282,8 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService {
}
}
HashMap<String, List<CrossTurnDataRealtimePO>> turnDataMap = new HashMap<>();
turnDataMap.put("crossRealTimeTurnData", insertCrossTurnDataRealtimePOS);
producerHandler.send("cross_real_time_turn_data", turnDataMap);
turnDataMap.put(Constant.REAL_TIME_TURN_DATA_KEY, insertCrossTurnDataRealtimePOS);
producerHandler.send(Constant.REAL_TIME_TURN_DATA_TOPIC, turnDataMap);
}
private List<CrossDirDataRealtimePO> dealCrossDataDirRealTime(List<CrossDirDataRealtimePO> crossDirDataRealtimePOS,
......@@ -894,8 +895,8 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService {
}
Map<String, List<CrossDataRealtimePO>> crossDataMap = new HashMap<>();
crossDataMap.put("crossRealTimeData", insertCrossDataRealtimePOS);
producerHandler.send("cross_real_time_data", crossDataMap);
crossDataMap.put(Constant.REAL_TIME_CROSS_DATA_KEY, insertCrossDataRealtimePOS);
producerHandler.send(Constant.REAL_TIME_CROSS_DATA_TOPIC, crossDataMap);
}
private void replaceCrossPartFields(CrossDataRealtimePO po, Date startDate) {
......
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