Commit f8243f8c authored by duanruiming's avatar duanruiming

[update] 绿波实时数据状态优化

parent 80ab35e8
......@@ -32,4 +32,6 @@ public class Constant {
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";
private Constant() {}
}
......@@ -699,7 +699,6 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService {
for (Map.Entry<Integer, List<GreenwaveCrossPO>> entry : greenWaveInfoMap.entrySet()) {
List<GreenwaveCrossPO> greenWaveCrossIds = entry.getValue();
if (!CollectionUtils.isEmpty(greenWaveCrossIds)) {
int status = 1;
double trafficIndex = 1.0;
Double speedSum = 0.0;
Double stopTimes = 0.0;
......@@ -735,7 +734,6 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService {
String crossIdDir = dirDataRealtimePO.getCrossId();
Integer dirType = dirDataRealtimePO.getDirType();
if (StringUtils.equals(crossIdDir, crossId) && Objects.equals(inDir, dirType)) {
status = status > dirDataRealtimePO.getStatus() ? status : dirDataRealtimePO.getStatus();
trafficIndex = trafficIndex > dirDataRealtimePO.getTrafficIndex() ? trafficIndex : dirDataRealtimePO.getTrafficIndex();
speedSum += dirDataRealtimePO.getSpeed();
stopTimes += dirDataRealtimePO.getStopTimes();
......@@ -755,10 +753,10 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService {
noparkPassRateAvg = noparkPassRate / (greenwaveCount);
congRate = congCount / greenwaveCount;
}
setTraffixIndex(decimalFormat, speedAvg, freeFlowSpeedAvg, greenwaveRealtimePO);
// 计算交通指数,并设置status
setTraffixIndexAndStatus(decimalFormat, speedAvg, freeFlowSpeedAvg, greenwaveRealtimePO);
greenwaveRealtimePO.setGreenId(greenWaveId);
greenwaveRealtimePO.setStartTime(date);
greenwaveRealtimePO.setStatus(status);
greenwaveRealtimePO.setType(1);
greenwaveRealtimePO.setSpeed(speedAvg);
if (speedAvg != 0) {
......@@ -795,7 +793,7 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService {
}
}
private static void setTraffixIndex(DecimalFormat decimalFormat, double speedAvg, Double freeFlowSpeedAvg, GreenwaveRealtimePO greenwaveRealtimePO) {
private static void setTraffixIndexAndStatus(DecimalFormat decimalFormat, double speedAvg, Double freeFlowSpeedAvg, GreenwaveRealtimePO greenwaveRealtimePO) {
Double greenwaveIndex = Double.valueOf(decimalFormat.format(freeFlowSpeedAvg / speedAvg));
if (greenwaveIndex >= 10) {
greenwaveRealtimePO.setTrafficIndex(10.0);
......@@ -804,6 +802,18 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService {
} else {
greenwaveRealtimePO.setTrafficIndex(1.0);
}
// 根据指数设置status
int status = 1;
if (greenwaveIndex <= 1.8) {
status = 1;
} else if (greenwaveIndex > 1.8 && greenwaveIndex <= 2.5) {
status = 2;
} else if (greenwaveIndex > 2.5 && greenwaveIndex <= 3.5) {
status = 3;
} else if (greenwaveIndex > 3.5) {
status = 4;
}
greenwaveRealtimePO.setStatus(status);
}
private static Double getFreeFlowSpeed(Double freeFlowSpeed, String crossId, Map<String, Double> crossFreeFlowSpeedMap, Integer dirType) {
......@@ -858,8 +868,8 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService {
// 替换干线旅行速度
po.setSpeed(lineCongestion.getSpeed());
// 替换状态
String congestionCode = lineCongestion.getCongestionCode();
if (EventAbnormalEnum.NO_CONGEST.getType().equals(congestionCode)) {
String congestionType = lineCongestion.getCongestionType();
if (EventAbnormalEnum.NO_CONGEST.getType().equals(congestionType)) {
po.setStatus(1);
} else {
po.setStatus(3);
......
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