package org.yeshi.utils.statistic;
|
|
import org.yeshi.utils.TimeUtil;
|
|
import java.math.BigDecimal;
|
import java.util.*;
|
|
/**
|
* @author hxh
|
* @title: StatisticResulterFilterUtil
|
* @description: 统计结果过滤
|
* @date 2021/11/18 19:11
|
*/
|
public class StatisticResulterFilterUtil {
|
|
|
public static List<StatisticNumberResult> filterNumberResult(List<StatisticNumberResult> list, BaseStatisticTimeQuery timeQuery) {
|
List<StatisticNumberResult> resultList = new ArrayList<>();
|
createEmptyList(timeQuery, new IAddEmptyData() {
|
@Override
|
public void onData(String time) {
|
StatisticNumberResult result = new StatisticNumberResult();
|
result.setNumber(0L);
|
result.setTime(time);
|
resultList.add(result);
|
}
|
});
|
Map<String, StatisticNumberResult> map = new HashMap<>();
|
for (StatisticNumberResult result : list) {
|
map.put(result.getTime(), result);
|
}
|
|
for (StatisticNumberResult result : resultList) {
|
if (map.get(result.getTime()) != null) {
|
result.setNumber(map.get(result.getTime()).getNumber());
|
}
|
}
|
|
|
return resultList;
|
}
|
|
|
public static List<StatisticValueResult> filterValueResult(List<StatisticValueResult> list, BaseStatisticTimeQuery timeQuery) {
|
List<StatisticValueResult> resultList = new ArrayList<>();
|
createEmptyList(timeQuery, new IAddEmptyData() {
|
@Override
|
public void onData(String time) {
|
StatisticValueResult result = new StatisticValueResult();
|
result.setValue(new BigDecimal(0));
|
result.setTime(time);
|
resultList.add(result);
|
}
|
});
|
|
Map<String, StatisticValueResult> map = new HashMap<>();
|
for (StatisticValueResult result : list) {
|
map.put(result.getTime(), result);
|
}
|
|
for (StatisticValueResult result : resultList) {
|
if (map.get(result.getTime()) != null) {
|
result.setValue(map.get(result.getTime()).getValue());
|
}
|
}
|
|
return resultList;
|
}
|
|
private static void createEmptyList(BaseStatisticTimeQuery timeQuery, IAddEmptyData addEmptyData) {
|
|
//开始时间与结束时间整形
|
Date startTime = new Date(timeQuery.getStartTime().getTime());
|
Date endTime = new Date(timeQuery.getEndTime().getTime());
|
startTime = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(startTime.getTime(), timeQuery.getTimeSpan().getLocalTimeFormat()), timeQuery.getTimeSpan().getLocalTimeFormat()));
|
endTime = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(endTime.getTime(), timeQuery.getTimeSpan().getLocalTimeFormat()), timeQuery.getTimeSpan().getLocalTimeFormat()));
|
|
|
Calendar calendar = Calendar.getInstance();
|
calendar.setTimeInMillis(startTime.getTime());
|
while (calendar.getTimeInMillis() <= endTime.getTime()) {
|
addEmptyData.onData(TimeUtil.getGernalTime(calendar.getTimeInMillis(), timeQuery.getTimeSpan().getLocalTimeFormat()));
|
//增加时间
|
if (timeQuery.getTimeSpan() == StatisticTimeSpan.minute) {
|
calendar.add(Calendar.SECOND, 60);
|
} else if (timeQuery.getTimeSpan() == StatisticTimeSpan.hour) {
|
calendar.add(Calendar.HOUR, 1);
|
} else if (timeQuery.getTimeSpan() == StatisticTimeSpan.day) {
|
calendar.add(Calendar.HOUR, 24);
|
} else if (timeQuery.getTimeSpan() == StatisticTimeSpan.month) {
|
calendar.add(Calendar.MONTH, 1);
|
} else if (timeQuery.getTimeSpan() == StatisticTimeSpan.year) {
|
calendar.add(Calendar.YEAR, 1);
|
}
|
//判断是否存在
|
}
|
}
|
|
interface IAddEmptyData {
|
|
public void onData(String time);
|
}
|
|
}
|