示例:两个bean,一个汇总bean
@Data
public class RepaymentPlanUserDTO implements Serializable {
/*** 当前期数**/
private Integer period;
/*** 应还日期 按账单生成规则进行生成,格式:yyyy-mm-dd hh:mm:ss(默认零点)**/
private LocalDateTime shouldRepayTime;
/*** 应还总额**/
private BigDecimal shouldRepayTotal;
}
@Data
public class CashPreRepayInfoDTO implements Serializable {/*** 提前结清应付金额*/private BigDecimal clearanceAmount;/*** 期数*/private Integer periodNum;}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RepaymentPlanTrialDTO implements Serializable {/*** 当前期数*/private Integer period;/*** 应还日*/private LocalDate shouldRepayDate;/*** 每期应还金额*/private BigDecimal shouldRepayAmount;/*** 提前结清金额*/private BigDecimal preClearAmount;
}
//构建两个list
List<RepaymentPlanUserDTO> udtos = new ArrayList<>();
RepaymentPlanUserDTO r1 = new RepaymentPlanUserDTO();
r1.setPeriod(1);
r1.setShouldRepayTotal(BigDecimal.ONE);
r1.w());
RepaymentPlanUserDTO r2 = new RepaymentPlanUserDTO();
r2.setPeriod(2);
r2.setShouldRepayTotal(BigDecimal.valueOf(2));
r2.w().plusDays(2));
RepaymentPlanUserDTO r3 = new RepaymentPlanUserDTO();
r3.setPeriod(3);
r3.setShouldRepayTotal(BigDecimal.valueOf(3));
r3.w().plusDays(3));
final List<CashPreRepayInfoDTO> pdtos = new ArrayList<>();
CashPreRepayInfoDTO c1 = new CashPreRepayInfoDTO();
c1.setPeriodNum(1);
c1.setClearanceAmount(BigDecimal.valueOf(11));
CashPreRepayInfoDTO c2 = new CashPreRepayInfoDTO();
c2.setPeriodNum(2);
c2.setClearanceAmount(BigDecimal.valueOf(12));
CashPreRepayInfoDTO c3 = new CashPreRepayInfoDTO();
c3.setPeriodNum(3);
c3.setClearanceAmount(BigDecimal.valueOf(13));
pdtos.addAll(Arrays.asList(c1,c2,c3));
udtos.addAll(Arrays.asList(r1,r2,r3));
//根据period合并两个bean
List<RepaymentPlanTrialDTO> list = udtos.stream().flatMap(x -> pdtos.stream().filter(y -> x.getPeriod().intValue() == y.getPeriodNum()).map(z -> new Period(), x.getShouldRepayTime().toLocalDate(), x.getShouldRepayTotal(), z.getClearanceAmount()))).List());
List<RepaymentPlanTrialDTO> list = udtos.stream().flatMap(x -> pdtos.stream().filter(y -> x.getPeriod().intValue() == y.getPeriodNum()).map(z -> new Period(), x.getShouldRepayTime().toLocalDate(), x.getShouldRepayTotal(), z.getClearanceAmount()))).List());
//输出
RepaymentPlanTrialDTO(period=1, shouldRepayDate=2019-07-02, shouldRepayAmount=1, preClearAmount=11)
RepaymentPlanTrialDTO(period=2, shouldRepayDate=2019-07-04, shouldRepayAmount=2, preClearAmount=12)
RepaymentPlanTrialDTO(period=3, shouldRepayDate=2019-07-05, shouldRepayAmount=3, preClearAmount=13)
本文发布于:2024-02-02 21:01:10,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170687887046416.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |