Commit 329ff11d authored by hanbing's avatar hanbing

[update] 城市大脑-干线评价-干线路口评价返回时段指标

parent 02627882
......@@ -1230,15 +1230,61 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
}
private List<MainlineCrossEvaluateVO.TimeAndValue> buildQueueList(List<CrossDirDataHistPOExt> filteredList) {
return null;
List<MainlineCrossEvaluateVO.TimeAndValue> result = new ArrayList<>();
Map<String, List<Double>> groupedByTime = filteredList.stream()
.collect(Collectors.groupingBy(
item -> LocalDateTime.ofInstant(item.getStartTime().toInstant(), ZoneId.systemDefault())
.format(safeHourMinuteFormat),
Collectors.mapping(CrossDirDataHistPOExt::getQueueLength, Collectors.toList())
));
for (Map.Entry<String, List<Double>> entry : groupedByTime.entrySet()) {
double average = entry.getValue().stream()
.mapToDouble(Double::doubleValue)
.average()
.orElse(0.0);
result.add(new MainlineCrossEvaluateVO.TimeAndValue(entry.getKey(), (int) Math.round(average)));
}
result.sort(Comparator.comparing(MainlineCrossEvaluateVO.TimeAndValue::getTime));
return result;
}
private List<MainlineCrossEvaluateVO.TimeAndValue> buildStopList(List<CrossDirDataHistPOExt> filteredList) {
return null;
List<MainlineCrossEvaluateVO.TimeAndValue> result = new ArrayList<>();
Map<String, List<Double>> groupedByTime = filteredList.stream()
.collect(Collectors.groupingBy(
item -> LocalDateTime.ofInstant(item.getStartTime().toInstant(), ZoneId.systemDefault())
.format(safeHourMinuteFormat),
Collectors.mapping(CrossDirDataHistPOExt::getStopTimes, Collectors.toList())
));
for (Map.Entry<String, List<Double>> entry : groupedByTime.entrySet()) {
double average = entry.getValue().stream()
.mapToDouble(Double::doubleValue)
.average()
.orElse(0.0);
double v = BigDecimal.valueOf(average).setScale(2, RoundingMode.HALF_UP).doubleValue();
result.add(new MainlineCrossEvaluateVO.TimeAndValue(entry.getKey(), v));
}
result.sort(Comparator.comparing(MainlineCrossEvaluateVO.TimeAndValue::getTime));
return result;
}
private List<MainlineCrossEvaluateVO.TimeAndValue> buildTwoStopRateList(List<CrossDirDataHistPOExt> filteredList) {
return null;
List<MainlineCrossEvaluateVO.TimeAndValue> result = new ArrayList<>();
Map<String, List<Double>> groupedByTime = filteredList.stream()
.collect(Collectors.groupingBy(
item -> LocalDateTime.ofInstant(item.getStartTime().toInstant(), ZoneId.systemDefault())
.format(safeHourMinuteFormat),
Collectors.mapping(CrossDirDataHistPOExt::getTwoStopRate, Collectors.toList())
));
for (Map.Entry<String, List<Double>> entry : groupedByTime.entrySet()) {
double average = entry.getValue().stream()
.mapToDouble(Double::doubleValue)
.average()
.orElse(0.0);
result.add(new MainlineCrossEvaluateVO.TimeAndValue(entry.getKey(), (int)(average * 100)));
}
result.sort(Comparator.comparing(MainlineCrossEvaluateVO.TimeAndValue::getTime));
return result;
}
private List<String> buildCrossEvaluateList(
......
......@@ -60,7 +60,12 @@ public class MainlineCrossEvaluateVO {
private String time;
@ApiModelProperty(value = "指标数值")
private Integer value;
private Double value;
public TimeAndValue(String key, double round) {
this.time = key;
this.value = round;
}
}
}
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