|
@@ -87,29 +87,18 @@ public class StNzydkController extends BaseRestController {
|
|
|
// 获取所有数据
|
|
|
List<StNzydkVO> allList = StNzydkConvert.INSTANCE.convertVOList(stNzydkService.list(queryWrapper));
|
|
|
|
|
|
- // 按pch分组,统计每组dkmj总和,并保留objectid最小的记录
|
|
|
+ // 按pch去重,保留id最小的记录
|
|
|
List<StNzydkVO> distinctList = allList.stream()
|
|
|
- .collect(Collectors.groupingBy(StNzydkVO::getPch))
|
|
|
- .values()
|
|
|
- .stream()
|
|
|
- .map(list -> {
|
|
|
- // 计算总面积
|
|
|
- BigDecimal sumDkmj = list.stream()
|
|
|
- .map(StNzydkVO::getDkMj)
|
|
|
- .filter(Objects::nonNull)
|
|
|
- .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- // 找到objectid最小的记录
|
|
|
- StNzydkVO minObj = list.stream()
|
|
|
- .min(Comparator.comparing(StNzydkVO::getObjectid))
|
|
|
- .orElse(null);
|
|
|
- if (minObj != null) {
|
|
|
- minObj.setDkMj(sumDkmj);
|
|
|
- }
|
|
|
- return minObj;
|
|
|
- })
|
|
|
- .filter(Objects::nonNull)
|
|
|
- .sorted(Comparator.comparing(StNzydkVO::getObjectid).reversed())
|
|
|
- .collect(Collectors.toList());
|
|
|
+ .collect(Collectors.groupingBy(
|
|
|
+ StNzydkVO::getPch,
|
|
|
+ Collectors.minBy(Comparator.comparing(StNzydkVO::getObjectid))
|
|
|
+ ))
|
|
|
+ .values()
|
|
|
+ .stream()
|
|
|
+ .filter(Optional::isPresent)
|
|
|
+ .map(Optional::get)
|
|
|
+ .sorted(Comparator.comparing(StNzydkVO::getObjectid).reversed())
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
|
// 计算总记录数
|
|
|
long total = distinctList.size();
|