package com.tenwa.reckon.help; import java.math.BigDecimal; import com.tenwa.reckon.bean.AdjustBean; import com.tenwa.reckon.bean.ConditionBean; import com.tenwa.reckon.bean.FundRentPlanBean; import com.tenwa.reckon.util.NumTools; import com.tenwa.reckon.util.NumberUtils; public class AdjustHelper { /** * * (更加Adjustbean把conditionbean重置) * @param cdb conditionbean 交易结构bean * @param adb Adjustbean 租金变更bean * @param frpb FundRentPlanBean 租金计划bean * @return conditionbean 重置之后的交易结构bean * @throws Exception */ public static ConditionBean getConditionBeanByAdjustBean(ConditionBean cdb,AdjustBean adb,FundRentPlanBean frpb) throws Exception{ //重构宽限期 int grace = cdb.getGrace(); if(grace-adb.getStartList()>=0){ grace=grace-adb.getStartList()+1; }else{ grace=0; } cdb.setGrace(grace); //重置付租方式 cdb.setPeriodType(getPeroidType(adb.getStartList(),cdb.getGrace(),cdb.getPeriodType())); //重构还款次数 int income_number_year=Integer.parseInt(cdb.getIncomeNumberYear()); int incomeNumber = getIncomeNumByAdjust(adb.getAdjustList(), adb.getStartList(), cdb.getGrace()); cdb.setIncomeNumber(incomeNumber); //重构租赁期限 int incoms_num = grace + cdb.getIncomeNumber(); cdb.setLeaseTerm(12 * incoms_num / income_number_year); //重置起租日 String start_date=""; if(adb.getPaydayAdjust()==null||adb.getPaydayAdjust().equals("")){ //如果变更调整中的日期为空,那么就以开始调整期数当期为起租日 start_date=frpb.getInterestDateList().get(adb.getStartList()-1).toString(); //start_date=adb.getPaydayAdjust(); }else{ if(adb.getStartList()==1){ start_date=cdb.getStartDate(); }else{ start_date=frpb.getInterestDateList().get(adb.getStartList()-2).toString(); } } cdb.setStartDate(start_date); if(adb.getStartList()>1){ cdb.setFirstInterestDate(null); } //cdb.setFirstPlanDate(adb.getPaydayAdjust()); //cdb.setSecondPlanDate(null); if( adb.getYearRate()!= null && Double.parseDouble( NumberUtils.nullToZero( String.valueOf( adb.getYearRate() ) ) ) > 0 ){ cdb.setYearRate(String.valueOf(adb.getYearRate())); } String clean_lease_money=""; clean_lease_money=new BigDecimal(NumTools.getSumCorpusOverage(frpb.getCorpusBusinessList(), adb.getStartList())).add(new BigDecimal(cdb.getEquipEndValue())).toString();; cdb.setCleanLeaseMoney(clean_lease_money); return cdb; } public static String getPeroidType(int startList, int grace, String oldType) { // 起租类型 注意: 期初 数字 1 字符串 period_type_1 #分割线# 期末 数字0 字符串 period_type_0 String peroidType = oldType; if (grace >= startList) { peroidType = oldType; } else if (grace + 1 == startList) { peroidType = oldType; } else { peroidType = "0"; } return peroidType; } public static int getIncomeNumByAdjust(int incomeNumber, int startList, int grace) { int totalNumber = 0; if (grace >= startList) { totalNumber = incomeNumber; } else if (grace < startList) { totalNumber = incomeNumber - startList + 1; } return totalNumber; } }