/*
* 获取ProductId索引(获取ProductId索引去重)
* 通过ProductId索引查询当前ProductId对应的PurchaseItemEntity集合数据
*/
List<Long> singleProductId = purchaseItemEntities.stream().collect(
Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getProductId()))),
ArrayList::new)).stream().map(PurchaseItemEntity::getProductId).collect(Collectors.toList());
//遍历ProductId索引获得对应ProductId的集合数据
BigDecimal[] totalPrice = {BigDecimal.valueOf(0)};
for (int i=0;i<singleProductId.size();i++){
int finalI = i;
//根据ProductId过滤出的数据
List<PurchaseItemEntity> PurchaseItemEntityBySingleProductId = purchaseItemEntities.stream().filter(p -> p.getProductId().equals(singleProductId.get(finalI))).collect(Collectors.toList());
//获取当前ProductId对应集合数据中 num 的总和
double sum = PurchaseItemEntityBySingleProductId.stream().mapToDouble(p -> p.getNum().doubleValue()).sum();
double unitPrice = PurchaseItemEntityBySingleProductId.stream().mapToDouble(p -> (p.getNum().doubleValue()*p.getUnitPrice().doubleValue())).sum();
}