注:这里只有 12个月和24小时可行,一个月多少天还需做判断
//查出的list 数据
List<Time> list = connectionMapper.time3(time);
//可以换时间和月份
String[] monthAndDay = new String[]{"1","2","3","4","5","6","7","8","9","10","11","12"};
List<Time> list1 = new ArrayList<>();
for (Time data : list) {
list1.add(data);
for (String s : monthAndDay) {
Time time1 = new Time();
String date = s;
//根据时间字段对比,其他字段设为0
if (!date.equals(data.getYtd())) {
time1.setYtd(date);
time1.setSum(0);
time1.setNumber(0);
time1.setAnswers(0);
list1.add(time1);
}
}
}
//list 根据指定字段去重,其他字段合并(也是相加)
List<Time> list2 = list1.stream()
// 表示name为key,接着如果有重复的,那么从DataTrans对象o1与o2中筛选出一个,这里选择o1,
// 并把name重复,需要将value与o1进行合并的o2, 赋值给o1,最后返回o1
.collect(Collectors.toMap(Time::getYtd, a -> a, (o1, o2) -> {
o1.setSum(o1.getSum() + o2.getSum());
o1.setAnswers(o1.getAnswers() + o2.getAnswers());
o1.setNumber(o1.getNumber() + o2.getNumber());
return o1;
})).values().stream().collect(Collectors.toList());
return list2;