/**
* @Project: hehenian-biz-service
* @Package com.hehenian.biz.common.task
* @Title: RepayFITask.java
* @Description: TODO
* @author: zhangyunhmf
* @date 2014年10月15日 上午9:14:21
* @Copyright: HEHENIAN Co.,Ltd. All rights reserved.
* @version V1.0
*/
package com.hehenian.biz.common.task;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.hehenian.biz.common.trade.dataobject.InvestRepaymentDo;
import com.hehenian.biz.common.trade.dataobject.RepaymentDo;
import com.hehenian.biz.common.util.CalculateUtils;
import com.hehenian.biz.common.util.DateUtil;
import com.hehenian.biz.component.trade.IBorrowComponent;
import com.hehenian.biz.component.trade.IInvestRepaymentComponent;
/**
* 投资回款逾期罚息定时任务
* @author: zhangyunhmf
* @date 2014年10月15日 上午9:14:21
*/
@Component("investRepayFITask")
public class InvestRepayFITask extends DefaultTask {
@Autowired
private IInvestRepaymentComponent investRepaymentComponent;
@Autowired
private IBorrowComponent borrowComponent;
private String jobName = "投资回款逾期罚息定时任务";
/* (no-Javadoc)
* <p>Title: getJobName</p>
* <p>Description: </p>
* @return
* @see com.hehenian.biz.common.task.DefaultTask#getJobName()
*/
@Override
protected String getJobName() {
return jobName;
}
/*
*
* (no-Javadoc)
* <p>Title: doJob</p>
* <p>Description: 投资人的罚息收益是 T -3 允许逾期3天</p>
* @see com.hehenian.biz.common.task.DefaultTask#doJob()
*/
@Override
protected void doJob() {
List<InvestRepaymentDo> overDueRepaymentList = null;
Date currentDate = new Date();
try {
overDueRepaymentList = investRepaymentComponent.selectOverDueInvestRepayList(currentDate);
for (InvestRepaymentDo investRepay : overDueRepaymentList) {
//BorrowDo borrow = borrowComponent.getById(repay.getBorrowId());
//double feeRate = FeeUtil.parseBorrowFeelog(borrow.getFeelog());
//目前采用固定值
double feeRate = 0.001;
//逾期日期
long lateDay = DateUtil.diffDays(investRepay.getRepayDate(), currentDate);
//一天的罚息
double oneDayFee = CalculateUtils.mul(investRepay.getRecivedPrincipal() ,feeRate);
//逾期罚息
double lateFee = 0;
if(lateDay>3){
lateFee = CalculateUtils.round(CalculateUtils.mul(oneDayFee, (lateDay -3)),2);
}
InvestRepaymentDo newInvestRepaymentDo = new InvestRepaymentDo();
newInvestRepaymentDo.setIsLate(2);
newInvestRepaymentDo.setLateDay( (int)lateDay);
newInvestRepaymentDo.setRecivedFi(lateFee);
newInvestRepaymentDo.setId(investRepay.getId());
//更新罚息信息
investRepaymentComponent.updateInvestRepaymentById(newInvestRepaymentDo);
}
} catch (Exception e) {
logger.error(e);
} finally {
}
}
}