/**
* @Project: hehenian-biz-service
* @Package com.hehenian.biz.common.settle
* @Title: IIFPSettleCalculator.java
* @Description: TODO
* @author: liuzgmf
* @date 2015年1月6日 上午11:15:21
* @Copyright: HEHENIAN Co.,Ltd. All rights reserved.
* @version V1.0
*/
package com.hehenian.biz.common.settle;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.commons.lang.time.DateUtils;
import com.hehenian.biz.common.system.dataobject.SettDetailDo;
import com.hehenian.biz.common.util.CalculateUtils;
/**
* 先息后本结算方式,放款日扣除利息和服务费
*
* @author: liuzgmf
* @date 2015年1月6日 上午11:15:21
*/
public class IIFPSettleCalculator extends SettleCalculator {
@Override
public List<SettDetailDo> calSettDetail(Double loanAmount, Integer loanPeriod, Double annualRate,Date StartDate) {
// 当期,第一期
SettDetailDo settDetailDo = new SettDetailDo();
settDetailDo.setPeriod(1);// 期数
settDetailDo.setPrincipal(0.00);// 本金
Double interestAmount = calTotalInterestAmount(loanAmount, annualRate, loanPeriod);// 总还利息总额
settDetailDo.setInterest(interestAmount);// 利息
settDetailDo.setRemainingPrincipal(loanAmount);// 剩余本金
settDetailDo.setRepayDate(StartDate);// 还款日期
List<SettDetailDo> settDetailDoList = new ArrayList<SettDetailDo>();
settDetailDoList.add(settDetailDo);
// 最后一期
settDetailDo = new SettDetailDo();
settDetailDo.setPeriod(2);// 期数
settDetailDo.setPrincipal(loanAmount);// 本金
settDetailDo.setInterest(0.00);// 利息
settDetailDo.setRemainingPrincipal(loanAmount);// 剩余本金
settDetailDo.setRepayDate(DateUtils.addMonths(StartDate, loanPeriod));// 还款日期
settDetailDoList.add(settDetailDo);
return settDetailDoList;
}
/**
* 计算总还利息总额
*
* @param loanAmount
* @param annualRate
* @param loanPeriod
* @return
* @author: liuzgmf
* @date: 2014年10月10日上午10:40:51
*/
private Double calTotalInterestAmount(Double loanAmount, Double annualRate, Integer loanPeriod) {
Double totalInterestAmount = CalculateUtils.mul(CalculateUtils.mul(loanAmount, getMonthRate(annualRate)),
loanPeriod);
return CalculateUtils.round(totalInterestAmount, 2);
}
}