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;
}