/** * @Project: hehenian-biz-service * @Package com.hehenian.biz.service.trade.impl * @Title: CreditCalculatorServiceImpl.java * @Description: TODO * @author: liuzgmf * @date 2014年12月15日 上午11:41:55 * @Copyright: HEHENIAN Co.,Ltd. All rights reserved. * @version V1.0 */ package com.hehenian.biz.service.trade.impl; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.caucho.hessian.client.HessianProxyFactory; import com.hehenian.biz.common.settle.SettleCalculatorUtils; import com.hehenian.biz.common.system.dataobject.SettDetailDo; import com.hehenian.biz.common.system.dataobject.SettSchemeDo; import com.hehenian.biz.common.system.dataobject.SettSchemeDo.SettleWay; import com.hehenian.biz.common.trade.ISettleCalculatorService; import com.hehenian.biz.common.util.CalculateUtils; import com.hehenian.biz.component.system.ISettSchemeComponent; /** * * @author: liuzgmf * @date 2014年12月15日 上午11:41:55 */ @Service("settleCalculatorService") public class SettleCalculatorServiceImpl implements ISettleCalculatorService { @Autowired private ISettSchemeComponent settSchemeComponent; @Override public List<SettDetailDo> calSettDetail(Double loanAmount, Double annualRate, Integer loanPeriod, Long schemeId) { SettSchemeDo settSchemeDo = settSchemeComponent.getBySchemeId(schemeId); return SettleCalculatorUtils.calSettDetail(loanAmount, loanPeriod, null, annualRate, settSchemeDo); } /** * 贷款申请的时候调用, 展示还款的总金额, 本金,利息 * @param loanAmount 借款金额 * @param annualRate 借款年利率 * @param loanPeriod 借款期限 * @param fpic 还款方式 * @return */ @Override public List<SettDetailDo> calSettDetailForRepayPlanShow(Double loanAmount, Double annualRate, Integer loanPeriod, SettleWay fpic,Date startDate) { SettSchemeDo settSchemeDo = new SettSchemeDo(); settSchemeDo.setRepayWay(fpic); return SettleCalculatorUtils.calSettDetailForRepayPlanShow(loanAmount, loanPeriod, annualRate, settSchemeDo,startDate); } @Override public List<SettDetailDo> calSettDetail(Double loanAmount, Double annualRate, Integer loanPeriod, SettleWay settleWay) { return SettleCalculatorUtils.createSettleCalculator(settleWay) .calSettDetail(loanAmount, loanPeriod, annualRate); } public static void main(String[] args) throws Exception { List<String> datas = new ArrayList<String>(); datas.add("30000.00;12.00;24;733"); datas.add("50000.00;12.00;24;734"); datas.add("60000.00;14.00;36;735"); datas.add("60000.00;14.00;36;736"); datas.add("25000.00;10.00;12;737"); datas.add("40000.00;14.00;36;740"); datas.add("20000.00;10.00;12;741"); datas.add("50000.00;12.00;24;744"); datas.add("30000.00;12.00;24;745"); datas.add("30000.00;12.00;24;746"); datas.add("60000.00;12.00;24;747"); datas.add("50000.00;11.00;18;748"); datas.add("40000.00;11.00;18;749"); datas.add("50000.00;12.00;24;753"); datas.add("30000.00;12.00;24;754"); datas.add("25000.00;10.00;12;755"); datas.add("40000.00;11.00;18;756"); datas.add("40000.00;11.00;18;757"); datas.add("60000.00;10.00;12;758"); datas.add("25000.00;10.00;12;759"); datas.add("30000.00;14.00;36;760"); datas.add("40000.00;14.00;36;761"); datas.add("40000.00;12.00;24;765"); datas.add("40000.00;14.00;36;766"); datas.add("40000.00;12.00;24;767"); datas.add("30000.00;12.00;24;768"); datas.add("30000.00;12.00;24;769"); datas.add("30000.00;12.00;24;770"); datas.add("50000.00;14.00;36;771"); datas.add("40000.00;14.00;36;772"); datas.add("40000.00;11.00;18;773"); datas.add("30000.00;12.00;24;774"); datas.add("40000.00;14.00;36;775"); datas.add("50000.00;14.00;36;776"); datas.add("20000.00;12.00;24;777"); datas.add("30000.00;11.00;18;778"); datas.add("50000.00;14.00;36;779"); datas.add("30000.00;12.00;24;780"); datas.add("50000.00;12.00;24;781"); datas.add("30000.00;12.00;24;782"); datas.add("30000.00;14.00;36;783"); datas.add("20000.00;14.00;36;784"); datas.add("35000.00;12.00;24;785"); datas.add("50000.00;14.00;36;786"); datas.add("30000.00;14.00;36;787"); String url = "http://10.111.0.203:9150/hehenian-service/services/settleCalculatorService"; HessianProxyFactory factory = new HessianProxyFactory(); ISettleCalculatorService settleCalculatorService = (ISettleCalculatorService) factory.create( ISettleCalculatorService.class, url); DecimalFormat df = new DecimalFormat("##0.00"); try { for (String data : datas) { args = data.split(";"); double loanAmount = Double.parseDouble(args[0]); double annualRate = Double.parseDouble(args[1]); int loanPeriod = Integer.parseInt(args[2]); String loanId = args[3]; List<SettDetailDo> settDetailDoList = settleCalculatorService.calSettDetail(loanAmount, annualRate, loanPeriod, 1l); for (SettDetailDo settDetailDo : settDetailDoList) { String sql = "UPDATE td_fund_pre_repayment SET capital=0.00,interest=0.00,fee_amount=0.00, pre_capital = #{pre_capital},pre_interest = #{pre_interest},pre_fee_charge=#{pre_fee_charge},pre_repay_amount=#{pre_repay_amount} where loan_id = #{loan_id} and repay_times=#{repay_times};"; sql = sql.replace("#{pre_capital}", df.format(settDetailDo.getPrincipal())); sql = sql.replace("#{pre_interest}", df.format(settDetailDo.getInterest())); double feeAmount = CalculateUtils.add(settDetailDo.getConsultFee(), settDetailDo.getServFee()); sql = sql.replace("#{pre_fee_charge}", df.format(feeAmount)); double repayAmount = CalculateUtils.add( CalculateUtils.add(settDetailDo.getPrincipal(), settDetailDo.getInterest()), feeAmount); sql = sql.replace("#{pre_repay_amount}", df.format(repayAmount)); sql = sql.replace("#{loan_id}", loanId); sql = sql.replace("#{repay_times}", settDetailDo.getPeriod() + ""); System.out.println(sql); } System.out.println(); } } catch (Exception e) { e.printStackTrace(); } } /** * E personal center call */ @Override public List<SettDetailDo> calSettDetailForRepayPlanShow(Double loanAmount, Double annualRate, Integer loanPeriod, Long schemeId, Date startDate) { SettSchemeDo settSchemeDo = settSchemeComponent.getBySchemeId(schemeId); return SettleCalculatorUtils.calSettDetailForRepayPlanShow(loanAmount, loanPeriod, annualRate, settSchemeDo,startDate); } }