|
|
@@ -207,7 +207,13 @@ public class InfraredReadingMeterServiceImpl extends ServiceImpl<InfraredReading
|
|
|
List<InfraredReadingMeter> list = this.list(wrapper);
|
|
|
|
|
|
Map<Integer, Map<String, List<InfraredReadingMeter>>> groupedByMonthAndMeter =
|
|
|
- list.stream().collect(Collectors.groupingBy(
|
|
|
+ list.stream()
|
|
|
+ // TODO 过滤掉电表号为空、创建时间为空、总电能为空的行
|
|
|
+ .filter(item -> item.getElectricNumber() != null
|
|
|
+ && !item.getElectricNumber().isEmpty()
|
|
|
+ && item.getCreateTime() != null
|
|
|
+ && item.getElectricEnergy() != null)
|
|
|
+ .collect(Collectors.groupingBy(
|
|
|
item -> item.getCreateTime()
|
|
|
.toInstant()
|
|
|
.atZone(ZoneId.systemDefault())
|
|
|
@@ -268,6 +274,11 @@ public class InfraredReadingMeterServiceImpl extends ServiceImpl<InfraredReading
|
|
|
}
|
|
|
|
|
|
Map<Integer,Map<String,List<InfraredReadingMeter>>> groupedByDayAndMeter=list.stream()
|
|
|
+ // TODO 过滤掉电表号为空、创建时间为空、总电能为空的行
|
|
|
+ .filter(item -> item.getElectricNumber() != null
|
|
|
+ && !item.getElectricNumber().isEmpty()
|
|
|
+ && item.getCreateTime() != null
|
|
|
+ && item.getElectricEnergy() != null)
|
|
|
.collect(Collectors.groupingBy(item->item.getCreateTime()
|
|
|
.toInstant()
|
|
|
.atZone(ZoneId.systemDefault())
|
|
|
@@ -294,21 +305,25 @@ public class InfraredReadingMeterServiceImpl extends ServiceImpl<InfraredReading
|
|
|
}
|
|
|
|
|
|
Map<String, List<InfraredReadingMeter>> groupedByMeter = list.stream()
|
|
|
+ // TODO 过滤掉电表号为空、创建时间为空、总电能为空的行
|
|
|
+ .filter(item -> item.getElectricNumber() != null
|
|
|
+ && !item.getElectricNumber().isEmpty()
|
|
|
+ && item.getCreateTime() != null
|
|
|
+ && item.getElectricEnergy() != null)
|
|
|
.collect(Collectors.groupingBy(InfraredReadingMeter::getElectricNumber));
|
|
|
|
|
|
BigDecimal totalElectricity = BigDecimal.ZERO;
|
|
|
|
|
|
for (List<InfraredReadingMeter> meterList : groupedByMeter.values()) {
|
|
|
|
|
|
+ // 找到当月最早一条数据(优化逻辑)
|
|
|
InfraredReadingMeter firstRecord = meterList.stream()
|
|
|
- .filter(r -> r.getCreateTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate().equals(firstDayOfMonth))
|
|
|
- .findFirst()
|
|
|
+ .min(Comparator.comparing(InfraredReadingMeter::getCreateTime))
|
|
|
.orElse(null);
|
|
|
|
|
|
-
|
|
|
+ // 找到当月最晚一条数据(优化逻辑)
|
|
|
InfraredReadingMeter lastRecord = meterList.stream()
|
|
|
- .filter(r -> r.getCreateTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate().equals(lastDayOfMonth))
|
|
|
- .reduce((first, second) -> second)
|
|
|
+ .max(Comparator.comparing(InfraredReadingMeter::getCreateTime))
|
|
|
.orElse(null);
|
|
|
|
|
|
if (firstRecord != null && lastRecord != null) {
|
|
|
@@ -351,7 +366,13 @@ public class InfraredReadingMeterServiceImpl extends ServiceImpl<InfraredReading
|
|
|
}
|
|
|
|
|
|
Map<Integer, Map<String, List<InfraredReadingMeter>>> groupedByMonthAndMeter =
|
|
|
- list.stream().collect(Collectors.groupingBy(
|
|
|
+ list.stream()
|
|
|
+ // TODO 过滤掉电表号为空、创建时间为空、总电能为空的行
|
|
|
+ .filter(item -> item.getElectricNumber() != null
|
|
|
+ && !item.getElectricNumber().isEmpty()
|
|
|
+ && item.getCreateTime() != null
|
|
|
+ && item.getElectricEnergy() != null)
|
|
|
+ .collect(Collectors.groupingBy(
|
|
|
item -> item.getCreateTime().toInstant()
|
|
|
.atZone(ZoneId.systemDefault())
|
|
|
.toLocalDate()
|