数据统计补全没有数据的日期
程序员文章站
2022-07-12 12:51:54
...
缺失日期数据的补全
做数据统计时有时某天没有丝毫数据,从数据库查出来就断了几天,这些数据直接做成折线图就达不到想要的效果,这时就得对数据库查出的数据进行一些处理。
代码
//想要查询的开始截止时间
String startTime = "2020-08-01 00:00:00";
String endTime = "2020-08-05 23:59:59";
//此集合为数据库中查出的数据
List<DataDTO> dataDTOS = new ArrayList<>();
//使用Hutool工具类里面的时间工具
DateTime dateStartTime = DateUtil.parse(startTime);
DateTime dateEndTime = DateUtil.parse(endTime);
//获取不间断日期
List<String> dateList = new ArrayList<>();
long between = DateUtil.between(dateStartTime, dateEndTime, DateUnit.DAY);
int num = (int) between;
for (int i=0;i<=num;i++){
DateTime dateTime = DateUtil.offsetDay(dateStartTime, i);
String time = dateTime.toString("yyyy-MM-dd");
dateList.add(time);
}
//不间断日期补全数据
List<DataDTO> dataList=new ArrayList<>();
for (String time:dateList){
List<DataDTO> collect = dataDTOS.parallelStream()
.filter(e -> e.getDate().equals(time)).collect(Collectors.toList());
if (ParamUtil.isBlank(collect)){
dataList.add(new DataDTO(time,0));
}else {
dataList.add(collect.get(0));
}
}