List<PrintValueVO> printValueVOListAllDeal = new ArrayList<>();
Map<String, List<PrintValueVO>> groupMap = printValueVOListAll.stream().collect(Collectors.groupingBy(a -> a.getSupplierCommodityId() + "," + a.getLotNumber() + "," + a.getExpiryDate() + "," + a.getPrice()));
for(Map.Entry<String, List<PrintValueVO>> entry : groupMap.entrySet()){
PrintValueVO printValueVO = new PrintValueVO();
BeanUtils.copyProperties(entry.getValue().get(0), printValueVO);
BigDecimal baseValue = BigDecimal.ZERO;
BigDecimal inputValue = BigDecimal.ZERO;
BigDecimal amount = BigDecimal.ZERO;
for(PrintValueVO subDTO: entry.getValue()){
baseValue = baseValue.add(subDTO.getBaseNumber() != null ? subDTO.getBaseNumber(): BigDecimal.ZERO);
inputValue = inputValue.add(subDTO.getInputNumber() != null ? subDTO.getInputNumber(): BigDecimal.ZERO);
amount = amount.add(subDTO.getEachPrice() != null ? subDTO.getEachPrice(): BigDecimal.ZERO);
}
printValueVO.setBaseNumber(baseValue);
printValueVO.setInputNumber(inputValue);
printValueVO.setEachPrice(amount);
printValueVO.setAmount(amount);
printValueVOListAllDeal.add(printValueVO);
}
java8多个字段分组实战
最新推荐文章于 2024-08-04 03:51:09 发布