Commit fe04dd77 authored by hanbing's avatar hanbing

[add] 信号评价,评价指标-溢流率

parent e2b2a4e6
......@@ -14,4 +14,6 @@ public class CrossDirDataHistAvgBO {
private Double avgQueueLength;
// 平均拥堵指数
private Double avgIndex;
// 平均溢流时长
private Double avgEffusionTime;
}
......@@ -75,6 +75,7 @@ public class EvaluateServiceImpl implements EvaluateService {
String crossId = crossIdAndMinutesDTO.getCrossId();
Integer minutes = crossIdAndMinutesDTO.getMinutes();
EvaluateMetricsVO evaluateMetricsVO = new EvaluateMetricsVO();
// 路口流量
List<EvaluateMetricsVO.CrossFlowElement> crossFlow = buildCrossFlow(crossId, minutes);
evaluateMetricsVO.setCrossFlow(crossFlow);
......@@ -84,11 +85,43 @@ public class EvaluateServiceImpl implements EvaluateService {
// 拥堵指数
List<EvaluateMetricsVO.TrafficIndexElement> trafficIndex = buildTrafficIndex(crossId, minutes);
evaluateMetricsVO.setTrafficIndex(trafficIndex);
// // todo 溢流率
// evaluateMetricsVO.setOverFlowRate(null);
// 溢流率
List<EvaluateMetricsVO.EffusionRateElement> effusionRate = buildEffusionRate(crossId, minutes);
evaluateMetricsVO.setEffusionRate(effusionRate);
return evaluateMetricsVO;
}
private List<EvaluateMetricsVO.EffusionRateElement> buildEffusionRate(String crossId, Integer minutes) {
List<EvaluateMetricsVO.EffusionRateElement> res = new ArrayList<>();
// 实时数据
Map<Integer, List<CrossDirDataRealtimePO>> dirObjMapRealtime = getRealTimeData(crossId);
// 历史数据
Map<Integer, List<CrossDirDataHistAvgBO>> dirObjMapHist = getHistData(crossId, minutes);
for (Integer dir : dirObjMapRealtime.keySet()) {
EvaluateMetricsVO.EffusionRateElement effusionRateElement = new EvaluateMetricsVO.EffusionRateElement();
effusionRateElement.setDir(dir);
List<CrossDirDataRealtimePO> realtimeObj = dirObjMapRealtime.get(dir);
if (CollectionUtil.isNotEmpty(realtimeObj)) {
CrossDirDataRealtimePO crossDirDataRealtimePO = realtimeObj.get(0);
Double effusionTime = crossDirDataRealtimePO.getEffusionTime();
Double effusionRate = effusionTime / minutes;
effusionRateElement.setCurrentRate(effusionRate);
}
List<CrossDirDataHistAvgBO> histObj = dirObjMapHist.get(dir);
if (CollectionUtil.isNotEmpty(histObj)) {
CrossDirDataHistAvgBO crossDirDataHistAvgBO = histObj.get(0);
Double avgEffusionTime = crossDirDataHistAvgBO.getAvgEffusionTime();
Double avgEffusionRate = avgEffusionTime / minutes;
effusionRateElement.setCompareRate(avgEffusionRate);
}
res.add(effusionRateElement);
}
return res;
}
private List<EvaluateMetricsVO.TrafficIndexElement> buildTrafficIndex(String crossId, Integer minutes) {
List<EvaluateMetricsVO.TrafficIndexElement> res = new ArrayList<>();
// 实时数据
......@@ -112,7 +145,6 @@ public class EvaluateServiceImpl implements EvaluateService {
res.add(trafficIndexElement);
}
return res;
}
......
......@@ -23,7 +23,7 @@ public class EvaluateMetricsVO {
@ApiModelProperty(value = "拥堵指数")
private List<TrafficIndexElement> trafficIndex;
@ApiModelProperty(value = "溢流率")
private List<OverFlowRateElement> overFlowRate;
private List<EffusionRateElement> effusionRate;
@NoArgsConstructor
@Data
......@@ -68,7 +68,7 @@ public class EvaluateMetricsVO {
@NoArgsConstructor
@Data
public static class OverFlowRateElement {
public static class EffusionRateElement {
@ApiModelProperty(value = "方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北")
private Integer dir;
@ApiModelProperty(value = "当前时段溢流率")
......
......@@ -27,7 +27,8 @@
<select id="selectByCrossIdInOutTimestamp" resultType="net.wanji.opt.bo.CrossDirDataHistAvgBO">
SELECT dir_type as dirType, avg(capacity) as avgCapacity, avg(flow) as avgFlow,
avg(queue_length) as avgQueueLength, avg(traffic_index) as avgIndex
avg(queue_length) as avgQueueLength, avg(traffic_index) as avgIndex,
avg(effusion_time) as avgEffusionTime
FROM t_cross_dir_data_hist
WHERE cross_id = #{crossId}
AND in_out_type = #{inOutType}
......
......@@ -16,7 +16,7 @@ import java.text.DecimalFormat;
*/
public class DoubleSerialize extends JsonSerializer<Double> {
private DecimalFormat df = new DecimalFormat("##.00");
private DecimalFormat df = new DecimalFormat("#0.00");
@Override
public void serialize(Double value, JsonGenerator gen, SerializerProvider serializers)
......
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