既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
1、生成还款计划
LendServiceImpl
@Resource
private LendReturnService lendReturnService;@Resource
private LendItemReturnService lendItemReturnService;
/**
* 还款计划
*
* @param lend
*/
private void repaymentPlan(Lend lend) {
//还款计划列表
List<LendReturn> lendReturnList = new ArrayList<>();
//按还款时间生成还款计划
int len = lend.getPeriod().intValue();
for (int i = 1; i <= len; i++) {
//创建还款计划对象
LendReturn lendReturn = new LendReturn();
lendReturn.setReturnNo(LendNoUtils.getReturnNo());
lendReturn.setLendId(lend.getId());
lendReturn.setBorrowInfoId(lend.getBorrowInfoId());
lendReturn.setUserId(lend.getUserId());
lendReturn.setAmount(lend.getAmount());
lendReturn.setBaseAmount(lend.getInvestAmount());
lendReturn.setLendYearRate(lend.getLendYearRate());
lendReturn.setCurrentPeriod(i);//当前期数
lendReturn.setReturnMethod(lend.getReturnMethod());
//说明:还款计划中的这三项 = 回款计划中对应的这三项和:因此需要先生成对应的回款计划
// lendReturn.setPrincipal();
// lendReturn.setInterest();
// lendReturn.setTotal();
lendReturn.setFee(new BigDecimal(0));
lendReturn.setReturnDate(lend.getLendStartDate().plusMonths(i)); //第二个月开始还款
lendReturn.setOverdue(false);
if (i == len) { //最后一个月
//标识为最后一次还款
lendReturn.setLast(true);
} else {
lendReturn.setLast(false);
}
lendReturn.setStatus(0);
lendReturnList.add(lendReturn);
}
//批量保存
lendReturnService.saveBatch(lendReturnList);
//获取lendReturnList中还款期数与还款计划id对应map
Map<Integer, Long> lendReturnMap = lendReturnList.stream().collect(
Collectors.toMap(LendReturn::getCurrentPeriod, LendReturn::getId)
);
//======================================================
//=============获取所有投资者,生成回款计划===================
//======================================================
//回款计划列表
List<LendItemReturn> lendItemReturnAllList = new ArrayList<>();
//获取投资成功的投资记录
List<LendItem> lendItemList = lendItemService.selectByLendId(lend.getId(), 1);
for (LendItem lendItem : lendItemList) {
//创建回款计划列表
List<LendItemReturn> lendItemReturnList = this.returnInvest(lendItem.getId(), lendReturnMap, lend);
lendItemReturnAllList.addAll(lendItemReturnList);
}
//更新还款计划中的相关金额数据
for (LendReturn lendReturn : lendReturnList) {
BigDecimal sumPrincipal = lendItemReturnAllList.stream()
//过滤条件:当回款计划中的还款计划id == 当前还款计划id的时候
.filter(item -> item.getLendReturnId().longValue() == lendReturn.getId().longValue())
//将所有回款计划中计算的每月应收本金相加
.map(LendItemReturn::getPrincipal)
.reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal sumInterest = lendItemReturnAllList.stream()
.filter(item -> item.getLendReturnId().longValue() == lendReturn.getId().longValue())
.map(LendItemReturn::getInterest)
.reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal sumTotal = lendItemReturnAllList.stream()
.filter(item -> item.getLendReturnId().longValue() == lendReturn.getId().longValue())
.map(LendItemReturn::getTotal)
.reduce(BigDecimal.ZERO, BigDecimal::add);
lendReturn.setPrincipal(sumPrincipal); //每期还款本金
lendReturn.setInterest(sumInterest); //每期还款利息
lendReturn.setTotal(sumTotal); //每期还款本息
}
lendReturnService.updateBatchById(lendReturnList);
}
//说明:还款计划中的这三项 = 回款计划中对应的这三项和:因此需要先生成对应的回款计划
// lendReturn.setPrincipal();
// lendReturn.setInterest();
// lendReturn.setTotal();
BigDecimal sumPrincipal = lendItemReturnAllList.stream() //过滤条件:当回款计划中的还款计划id == 当前还款计划id的时候
.filter(item -> item.getLendReturnId().longValue() == lendReturn.getId().longValue()) //将所有回款计划中计算的每月应收本金相加
.map(LendItemReturn::getPrincipal)
.reduce(BigDecimal.ZERO, BigDecimal::add);
2、生成回款计划
LendServiceImpl
* @param lendItemId
* @param lendReturnMap 还款期数与还款计划id对应map
* @param lend
* @return
public List<LendItemReturn> returnInvest(Long lendItemId, Map<Integer, Long> lendReturnMap, Lend lend) {
//投标信息
LendItem lendItem = lendItemService.getById(lendItemId);
//投资金额
BigDecimal amount = lendItem.getInvestAmount();
//年化利率
BigDecimal yearRate = lendItem.getLendYearRate();
//投资期数
int totalMonth = lend.getPeriod();
![img](https://img-blog.csdnimg.cn/img_convert/01e2cf3e5bea49e36081431bcdd0f733.png)
![img](https://img-blog.csdnimg.cn/img_convert/6cf89915c0c01fb89f47f693fb2333f3.png)
![img](https://i-blog.csdnimg.cn/blog_migrate/c24fe06f7fef073ebfae00a712ee803f.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**