DrawRewardServiceImpl.java

    1. //语法上:
    2. Map<Long, ActivityOrderEntity> orderMaps = orders.stream()
    3. .collect(Collectors.groupingBy(ActivityOrderEntity::getUserId,
    4. Collectors.collectingAndThen(
    5. Collectors.reducing((c1, c2) -> c1.getRoundNum() > c2.getRoundNum() ? c1 : c2), Optional::get)
    6. ));
    7. //推荐以下:
    8. Map<Long, ActivityOrderEntity> orderMaps = orders.stream()
    9. .collect(Collectors.toMap(ActivityOrderEntity::getUserId,
    10. Function.identity(), (c1, c2) -> c1.getRoundNum() > c2.getRoundNum() ? c1 : c2));
    11. // 分组求和
    12. fundTradeFlowList.stream()
    13. .filter(r -> FundBizCodeEnum.BUY.getCode().equals(r.getBizCode()))
    14. .collect(Collectors.groupingBy(FundTradeFlowBO::getFundCode,
    15. Collectors.reducing(BigDecimal.ZERO, FundTradeFlowBO::getAmount, this::sumBigDecimal)));
    16. private BigDecimal sumBigDecimal(BigDecimal assetA, BigDecimal assetB) {
    17. if (assetA == null && assetB == null) {
    18. return BigDecimal.ZERO;
    19. }
    20. if (assetA == null) {
    21. return assetB;
    22. }
    23. if (assetB == null) {
    24. return assetA;
    25. }
    26. return assetA.add(assetB);
    27. }