1. public class PayDetailToBabModel implements Serializable { private static final long serialVersionUID = -5197016274254913057L; private String productCode; private String productName; private Long money; private BigDecimal amount; private BigDecimal price; private Integer cityId; public String getProductCode() { return productCode; } public void setProductCode(String productCode) { this.productCode = productCode; } public String getProductName() { return productName; } public void setProductName(String productName) { this.productName = productName; } public Long getMoney() { return money; } public void setMoney(Long money) { this.money = money; } public BigDecimal getAmount() { return amount; } public void setAmount(BigDecimal amount) { this.amount = amount; } public BigDecimal getPrice() { return price; } public void setPrice(BigDecimal price) { this.price = price; } public Integer getCityId() { return cityId; } public void setCityId(Integer cityId) { this.cityId = cityId; } public String getCodeAndCityId() { if (money >= 0) { return productCode+"_"+cityId; } else { return "2"+productCode+"_"+cityId; } } } 2. public List<PayDetailToBabModel> getPayDetail(PayDetailToBabQuery model) { List<PayDetailToBabModel> payDetail = payDetailMapper.getPayDetail(model); // 分组 Map<String, List<PayDetailToBabModel>> collect = payDetail.stream().collect(Collectors.groupingBy(PayDetailToBabModel::getCodeAndCityId)); List<PayDetailToBabModel> results = collect.values().stream().map((List<PayDetailToBabModel> details) ->{ Long totalMoney = 0L; BigDecimal totalAmount = new BigDecimal(0); for (PayDetailToBabModel detail : details) { totalMoney += detail.getMoney(); totalAmount = totalAmount.add(detail.getAmount()); } BigDecimal price = null; if (totalAmount.equals(new BigDecimal(0))) { price = new BigDecimal(totalMoney); totalAmount = new BigDecimal(1); } else { price = new BigDecimal(totalMoney).divide(new BigDecimal(100),6).divide(totalAmount,6); } PayDetailToBabModel babModel = new PayDetailToBabModel(); babModel.setMoney(totalMoney); babModel.setAmount(totalAmount); babModel.setPrice(price); babModel.setProductName(details.get(0).getProductName()); babModel.setProductCode(details.get(0).getProductCode()); return babModel; }).collect(Collectors.toList()); return results; }
lambda 表达式 分组 ,多字段求和
猜你喜欢
转载自blog.csdn.net/xu990128638/article/details/81211665
今日推荐
周排行