Browse Source

导出交通指标时间分布

develop
lau572 8 months ago
parent
commit
a499665efa
  1. 46
      zc-business/src/main/java/com/zc/business/controller/DcTrafficStatisticsController.java

46
zc-business/src/main/java/com/zc/business/controller/DcTrafficStatisticsController.java

@ -2,6 +2,7 @@ package com.zc.business.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
@ -33,6 +34,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.DecimalFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.function.Function;
@ -524,7 +526,27 @@ public AjaxResult realTimeTrafficFlow(String startDate, String direction,String
endDate = String.valueOf(year);
}
List<Map<String, Object>> thisYearList = dcGantryMetricsStatisticsDataService.passIndicatorTimeDistribution(startDate,direction,periodType);
Map<String,List<Map<String, Object>>> thisYearData = thisYearList.stream().collect(Collectors.groupingBy(item -> item.get("groupTime").toString()));
Map<String,List<Map<String, Object>>> thisYearData = new HashMap<>();
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm");
if (UniversalEnum.FOUR.getValue().equals(periodType)){
thisYearData = thisYearList.stream().collect(Collectors.groupingBy(item -> {
LocalDateTime dateTime = LocalDateTime.parse(item.get("groupTime").toString(), inputFormatter);
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("HH时");
return outputFormatter.format(dateTime);
}));
} else if (UniversalEnum.THREE.getValue().equals(periodType)){
thisYearData = thisYearList.stream().collect(Collectors.groupingBy(item -> {
LocalDateTime dateTime = LocalDateTime.parse(item.get("groupTime").toString(), inputFormatter);
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("M月d日");
return dateTime.format(outputFormatter);
}));
} else if (UniversalEnum.ONE.getValue().equals(periodType)){
thisYearData = thisYearList.stream().collect(Collectors.groupingBy(item -> {
LocalDateTime dateTime = LocalDateTime.parse(item.get("groupTime").toString(), inputFormatter);
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("M月");
return dateTime.format(outputFormatter);
}));
}
List<Map<String, Object>> lastYearList = dcGantryMetricsStatisticsDataService.passIndicatorTimeDistribution(endDate,direction,periodType);
Map<String,List<Map<String, Object>>> lastYearData = lastYearList.stream().collect(Collectors.groupingBy(item -> item.get("groupTime").toString()));
@ -536,20 +558,36 @@ public AjaxResult realTimeTrafficFlow(String startDate, String direction,String
allKey.addAll(lastYearData.keySet());
}
for (String key : allKey) {
List<String> keyList = new ArrayList<>(allKey);
Collections.sort(keyList);
for (String key : keyList) {
PassIndicatorTimeDistribution passIndicatorTimeDistribution = new PassIndicatorTimeDistribution();
passIndicatorTimeDistribution.setTime(key);
if (thisYearData != null && thisYearData.containsKey(key)){
Map<String, Object> sectionData = thisYearData.get(key).get(UniversalEnum.ZERO.getNumber());
passIndicatorTimeDistribution.setCrowdingRate(sectionData.get("crowdingRate").toString());
passIndicatorTimeDistribution.setSaturationRate(sectionData.get("saturationRate").toString());
if (sectionData.get("saturationRate") instanceof Double){
double saturationRate = (Double)sectionData.get("saturationRate");
passIndicatorTimeDistribution.setSaturationRate(String.format("%.4f", saturationRate));
} else {
passIndicatorTimeDistribution.setSaturationRate("0");
}
// passIndicatorTimeDistribution.setSaturationRate(sectionData.get("saturationRate").toString());
passIndicatorTimeDistribution.setTrafficCompositionRate(sectionData.get("trafficCompositionRate").toString());
}
if (lastYearData != null && lastYearData.containsKey(key)){
Map<String, Object> sectionData = lastYearData.get(key).get(UniversalEnum.ZERO.getNumber());
passIndicatorTimeDistribution.setCrowdingRateLastYear(sectionData.get("crowdingRate").toString());
passIndicatorTimeDistribution.setSaturationRateLastYear(sectionData.get("saturationRate").toString());
// passIndicatorTimeDistribution.setSaturationRateLastYear(sectionData.get("saturationRate").toString());
if (sectionData.get("saturationRate") instanceof Double){
double saturationRate = (Double)sectionData.get("saturationRate");
passIndicatorTimeDistribution.setSaturationRateLastYear(String.format("%.4f", saturationRate));
} else {
passIndicatorTimeDistribution.setSaturationRateLastYear("0");
}
passIndicatorTimeDistribution.setTrafficCompositionRateLastYear(sectionData.get("trafficCompositionRate").toString());
}
list.add(passIndicatorTimeDistribution);

Loading…
Cancel
Save