apzl_leasing/calc/com/tenwa/reckon/product/ProductCondition.java
2021-08-10 16:54:46 +08:00

1063 lines
43 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.tenwa.reckon.product;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Vector;
import com.amarsoft.are.jbo.BizObjectManager;
import jbo.com.tenwa.lease.comm.CONFIGURATE;
import jbo.prd.BUSINESS_TYPE;
import jbo.sys.CODE_LIBRARY;
import apx.com.amarsoft.als.apzl.apply.business.loan.product.ProductBaseLoanTools;
import com.amarsoft.app.als.sys.tools.DateUtil;
import com.amarsoft.app.awe.config.InitDBType;
import com.amarsoft.app.util.ProductParamUtil;
import com.amarsoft.are.jbo.BizObject;
import com.amarsoft.are.jbo.JBOFactory;
import com.amarsoft.awe.dw.ASObjectModel;
import com.amarsoft.awe.dw.ui.validator.ValidateRule;
import com.tenwa.officetempalte.util.FileOperatorUtil;
import com.tenwa.quartz.StringUtil;
public class ProductCondition {
public ProductConditionService prodSer=new ProductConditionService();
/**
* 获取测算相关产品配置信息
* @param doTemp
* @param productId
* @return
* @throws Exception
*/
public String getProductRules(ASObjectModel doTemp, String productId, Vector<ValidateRule> vali, String flowunid) throws Exception{
doTemp.setDefaultValue("LEASE_AMT_DATE", DateUtil.getToday());
StringBuilder sb=new StringBuilder();
sb.append("{");
sb.append("'fund':"+getProductFundRules(doTemp, productId,vali));//资金配置项
sb.append(",'grace':"+this.getProductGraceRules(doTemp, productId, vali));//宽限期
sb.append(",'method':"+this.getProductSettleRules(doTemp, productId, flowunid));//计算方式
sb.append(",'incomeNumber':"+this.getIncomeNumber(productId));
sb.append("}");
setRentOrRate(doTemp, productId);//租金推算方法
this.getOtherRule(doTemp, productId);//其它配置
this.getProductPenaRules(doTemp, productId);//罚息
this.getProductAdjustRules(doTemp, productId);//调息
this.getGrossRules(doTemp, productId);//
//this.setDateRule(doTemp, productId);//日期
this.getCautionRatio(doTemp, productId);//保证金比例
return sb.toString();
}
public String getProductRulesBusiness(ASObjectModel doTemp,String productId,Vector<ValidateRule> vali) throws Exception{
doTemp.setDefaultValue("LEASE_AMT_DATE", DateUtil.getToday());
StringBuilder sb=new StringBuilder();
sb.append("{");
sb.append("'fund':"+getProductFundRules(doTemp, productId,vali));//资金配置项
sb.append(",'grace':"+this.getProductGraceRules(doTemp, productId, vali));//宽限期
sb.append(",'method':"+this.getProductSettleRulesBusiness(doTemp, productId));//计算方式
sb.append("}");
setRentOrRate(doTemp, productId);//租金推算方法
this.getOtherRule(doTemp, productId);//其它配置
this.getProductPenaRules(doTemp, productId);//罚息
this.getProductAdjustRules(doTemp, productId);//调息
this.getGrossRules(doTemp, productId);//
//this.setDateRule(doTemp, productId);//日期
this.getCautionRatio(doTemp, productId);//保证金比例
return sb.toString();
}
public String getProductRulesApp(List<Map<String, Object>> appList,String productId,Vector<ValidateRule> vali) throws Exception{
ProductBaseLoanTools.addAppList(appList, "LEASE_AMT_DATE", "coldefaultvalue", DateUtil.getToday());
StringBuilder sb=new StringBuilder();
sb.append("{");
sb.append("'fund':"+this.getProductFundRulesApp(appList, productId,vali));//资金配置项
sb.append(",'grace':"+this.getProductGraceRulesApp(appList, productId, vali));//宽限期
sb.append(",'method':"+this.getProductSettleRulesApp(appList, productId));//计算方式
sb.append("}");
setRentOrRateApp(appList, productId);//租金推算方法
this.getOtherRuleApp(appList, productId);//其它配置
this.getProductPenaRulesApp(appList, productId);//罚息
this.getProductAdjustRulesApp(appList, productId);//调息
this.getGrossRulesApp(appList, productId);//
// this.setDateRule(doTemp, productId);//日期
this.getCautionRatioApp(appList, productId);//保证金比例
return sb.toString();
}
/**
* 设置日期
* @param doTemp
* @param productId
* @throws Exception
*/
public void setDateRule(ASObjectModel doTemp,String productId) throws Exception{
Map<String,Map<String,String>> map=ProductParamUtil.getProductComponentType(productId, "PRD0340");
if(map.containsKey("PaymentDate")){//还款日
Map<String,String> plandatemap=map.get("PaymentDate");
if(plandatemap.containsKey("HolidayAdjust")){
doTemp.setDefaultValue("PLAN_DATE_HOILDAY", plandatemap.get("HolidayAdjust"));
}else{
doTemp.setDefaultValue("PLAN_DATE_HOILDAY", "unchanged");
}
if(plandatemap.containsKey("date_proc")){
String s=plandatemap.get("date_proc");
if(s.indexOf("1")>=0){
doTemp.setColumnAttribute("FIRST_PLAN_DATE", "colvisible", "1");
doTemp.setColumnAttribute("FIRST_PLAN_DATE", "colrequired", "1");
}
if(s.indexOf("2")>=0){
doTemp.setColumnAttribute("LAST_PLAN_DATE", "colvisible", "1");
doTemp.setColumnAttribute("LAST_PLAN_DATE", "colrequired", "1");
}
if(s.indexOf("3")>=0){
doTemp.setColumnAttribute("PLAN_DATE_HOILDAY", "colvisible", "1");
doTemp.setColumnAttribute("PLAN_DATE_HOILDAY", "colrequired", "1");
}
}
}
if(map.containsKey("InterestDate")){//计息日
Map<String,String> plandatemap=map.get("InterestDate");
if(plandatemap.containsKey("HolidayAdjust")){
doTemp.setDefaultValue("INTEREST_DATE_HOLIDAY", plandatemap.get("HolidayAdjust"));
}else{
doTemp.setDefaultValue("INTEREST_DATE_HOLIDAY", "unchanged");
}
if(plandatemap.containsKey("date_proc")){
String s=plandatemap.get("date_proc");
if(s.indexOf("1")>=0){
doTemp.setColumnAttribute("FIRST_INTEREST_DATE", "colvisible", "1");
doTemp.setColumnAttribute("FIRST_INTEREST_DATE", "colrequired", "1");
}
if(s.indexOf("2")>=0){
doTemp.setColumnAttribute("LAST_INTEREST_DATA", "colvisible", "1");
doTemp.setColumnAttribute("LAST_INTEREST_DATA", "colrequired", "1");
}
if(s.indexOf("3")>=0){
doTemp.setColumnAttribute("INTEREST_DATE_HOLIDAY", "colvisible", "1");
doTemp.setColumnAttribute("INTEREST_DATE_HOLIDAY", "colrequired", "1");
}
}
}
if(map.containsKey("RateInfo")){
doTemp.setDefaultValue("RATE", map.get("RateInfo").get("RATE"));
doTemp.setDefaultValue("ADDITIONAL_RATE", map.get("RateInfo").get("AdditionalRate"));
}
}
public void setDateRuleApp(List<Map<String, Object>> appList,String productId) throws Exception{
Map<String,Map<String,String>> map=ProductParamUtil.getProductComponentType(productId, "PRD0340");
Map<String, Object> PLAN_DATE_HOILDAY = new HashMap<String, Object>();
PLAN_DATE_HOILDAY.put("colname", "PLAN_DATE_HOILDAY");
Map<String, Object> FIRST_PLAN_DATE = new HashMap<String, Object>();
FIRST_PLAN_DATE.put("colname", "FIRST_PLAN_DATE");
Map<String, Object> LAST_PLAN_DATE = new HashMap<String, Object>();
LAST_PLAN_DATE.put("colname", "LAST_PLAN_DATE");
Map<String, Object> INTEREST_DATE_HOLIDAY = new HashMap<String, Object>();
INTEREST_DATE_HOLIDAY.put("colname", "INTEREST_DATE_HOLIDAY");
Map<String, Object> FIRST_INTEREST_DATE = new HashMap<String, Object>();
FIRST_INTEREST_DATE.put("colname", "INTEREST_DATE_HOLIDAY");
Map<String, Object> LAST_INTEREST_DATA = new HashMap<String, Object>();
LAST_INTEREST_DATA.put("colname", "LAST_INTEREST_DATA");
Map<String, Object> RATE = new HashMap<String, Object>();
Map<String, Object> ADDITIONAL_RATE = new HashMap<String, Object>();
RATE.put("colname", "RATE");
ADDITIONAL_RATE.put("colname", "ADDITIONAL_RATE");
if(map.containsKey("PaymentDate")){//还款日
Map<String,String> plandatemap=map.get("PaymentDate");
if(plandatemap.containsKey("HolidayAdjust")){
PLAN_DATE_HOILDAY.put("coldefaultvalue", plandatemap.get("HolidayAdjust"));
appList.add(PLAN_DATE_HOILDAY);
}else{
PLAN_DATE_HOILDAY.put("coldefaultvalue", "unchanged");
appList.add(PLAN_DATE_HOILDAY);
}
if(plandatemap.containsKey("date_proc")){
String s=plandatemap.get("date_proc");
if(s.indexOf("1")>=0){
FIRST_PLAN_DATE.put("colvisible", "1");
FIRST_PLAN_DATE.put("colrequired", "1");
appList.add(FIRST_PLAN_DATE);
}
if(s.indexOf("2")>=0){
LAST_PLAN_DATE.put("colvisible", "1");
LAST_PLAN_DATE.put("colrequired", "1");
appList.add(LAST_PLAN_DATE);
}
if(s.indexOf("3")>=0){
PLAN_DATE_HOILDAY.put("colvisible", "1");
PLAN_DATE_HOILDAY.put("colrequired", "1");
appList.add(PLAN_DATE_HOILDAY);
}
}
}
if(map.containsKey("InterestDate")){//计息日
Map<String,String> plandatemap=map.get("InterestDate");
if(plandatemap.containsKey("HolidayAdjust")){
INTEREST_DATE_HOLIDAY.put("coldefaultvalue", plandatemap.get("HolidayAdjust"));
appList.add(INTEREST_DATE_HOLIDAY);
}else{
INTEREST_DATE_HOLIDAY.put("coldefaultvalue", "unchanged");
appList.add(INTEREST_DATE_HOLIDAY);
}
if(plandatemap.containsKey("date_proc")){
String s=plandatemap.get("date_proc");
if(s.indexOf("1")>=0){
FIRST_INTEREST_DATE.put("colvisible", "1");
FIRST_INTEREST_DATE.put("colrequired", "1");
appList.add(FIRST_INTEREST_DATE);
}
if(s.indexOf("2")>=0){
LAST_INTEREST_DATA.put("colvisible", "1");
LAST_INTEREST_DATA.put("colrequired", "1");
appList.add(LAST_INTEREST_DATA);
}
if(s.indexOf("3")>=0){
INTEREST_DATE_HOLIDAY.put("colvisible", "1");
INTEREST_DATE_HOLIDAY.put("colrequired", "1");
appList.add(INTEREST_DATE_HOLIDAY);
}
}
}
if(map.containsKey("RateInfo")){
RATE.put("coldefaultvalue", map.get("RateInfo").get("RATE"));
ADDITIONAL_RATE.put("coldefaultvalue", map.get("RateInfo").get("AdditionalRate"));
appList.add(RATE);
appList.add(ADDITIONAL_RATE);
}
}
/**
* 项目粗利 净融资额 期初付款总计 是否显示
* @param doTemp
* @param productId
* @throws Exception
*/
public void getGrossRules(ASObjectModel doTemp,String productId) throws Exception{
Map<String,Map<String,String>> map=ProductParamUtil.getProductComponentType(productId, "PRD0330");
if(!map.containsKey("GrossProfit")){
doTemp.setVisible("GROSS_PROFIT",false);
}
if(!map.containsKey("CleanCreditMoney")){
doTemp.setVisible("CLEAN_CREDIT_MONEY",false);
doTemp.setVisible("CLEAN_CREDIT_RATIO",false);
}
if(!map.containsKey("PeriodBeginPayMoney")){
doTemp.setVisible("FIRST_PAYMENT_TOTAL",false);
}
}
public void getGrossRulesApp(List<Map<String, Object>> appList,String productId) throws Exception{
Map<String,Map<String,String>> map=ProductParamUtil.getProductComponentType(productId, "PRD0330");
if(!map.containsKey("GrossProfit")){
ProductBaseLoanTools.addAppList(appList, "GROSS_PROFIT", "colvisible", "0");
}
if(!map.containsKey("CleanCreditMoney")){
ProductBaseLoanTools.addAppList(appList, "CLEAN_CREDIT_MONEY", "colvisible", "0");
ProductBaseLoanTools.addAppList(appList, "CLEAN_CREDIT_RATIO", "colvisible", "0");
}
if(!map.containsKey("PeriodBeginPayMoney")){
ProductBaseLoanTools.addAppList(appList, "FIRST_PAYMENT_TOTAL", "colvisible", "0");
}
}
/**
* 设置租金推算方法 下拉选项
* @param doTemp
* @param productId
* @throws Exception
*/
public void setRentOrRate(ASObjectModel doTemp,String productId) throws Exception{
Map<String,Map<String,String>> map=ProductParamUtil.getProductComponentType(productId, "PRD0310");
if(map.containsKey("ROR01")){
if(map.get("ROR01").get("RentOrRate").length()>0){
String[] rule=map.get("ROR01").get("RentOrRate").split(",");
String s="";
for(int i=0;i<rule.length;i++){
if(s.length()>0){s+=",";}
s+="'"+rule[i]+"'";
}
doTemp.setColumnAttribute("RENT_OR_RATE","coleditsource","jbo.sys.CODE_LIBRARY,itemno,itemname,codeno='rent_or_rate' and itemno in ("+s+") order by sortno");
}
}
}
public void setRentOrRateApp(List<Map<String, Object>> appList,String productId) throws Exception{
Map<String,Map<String,String>> map=ProductParamUtil.getProductComponentType(productId, "PRD0310");
if(map.containsKey("ROR01")){
if(map.get("ROR01").get("RentOrRate").length()>0){
String[] rule=map.get("ROR01").get("RentOrRate").split(",");
String s="";
for(int i=0;i<rule.length;i++){
if(s.length()>0){s+=",";}
s+="'"+rule[i]+"'";
}
ProductBaseLoanTools.addAppList(appList, "RENT_OR_RATE", "coleditsource", "jbo.sys.CODE_LIBRARY,"
+ "itemno,itemname,codeno='rent_or_rate' and itemno in ("+s+") order by sortno");
}
}
}
/**
* 获取产品配置的资金项
* @param productId
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public String getProductFundList(String productId) throws Exception{
Map<String,Map<String,String>> map=ProductParamUtil.getProductComponentType(productId, "PRD0315");
String sql="codeno='FeeType' and relativecode is not null and relativecode<>''";
if(InitDBType.DBTYPE.equals("ORACLE")){
sql="codeno='FeeType' and relativecode is not null";
}
List<BizObject> feeList=JBOFactory.createBizObjectQuery(CODE_LIBRARY.CLASS_NAME,sql).getResultList(false);
String list="";
for(BizObject fee:feeList){
if(map.containsKey(fee.getAttribute("relativecode").getString())){
if(list.length()>0){list+=",";}
if("feetype10".equals(fee.getAttribute("itemno").getString())){
continue;
}
list+=fee.getAttribute("itemno").getString();
if(fee.getAttribute("itemno").getString().equals("feetype2")){
list+=",feetype16,feetype17";
}
}
}
return list;
}
/**
* 获取产品 资金类型 配置 显示页面
* @param doTemp
* @param productId
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public String getProductFundRules(ASObjectModel doTemp,String productId,Vector<ValidateRule> vali) throws Exception{
StringBuilder sb=new StringBuilder();
sb.append("{");
//获取产品资金项
Map<String,Map<String,String>> map=ProductParamUtil.getProductComponentType(productId, "PRD0315");
//获取需要和产品关联的资金项
String sql="";
// if("MYSQL".equals(InitDBType.DBTYPE)){
sql="codeno='FeeType' and relativecode is not null and relativecode<>''";
// }else if("ORACLE".equals(InitDBType.DBTYPE)){
// sql="codeno='FeeType' and relativecode is not null";
//}
List<BizObject> feeList=JBOFactory.createBizObjectQuery(CODE_LIBRARY.CLASS_NAME,sql).getResultList(false);
String rule="";
for(BizObject fee:feeList){
rule="";
String col=fee.getAttribute("relativecode").getString();//费用项在表中的字段
String colName=fee.getAttribute("itemname").getString();//费用名称
String isFina=fee.getAttribute("attribute2").getString();//是否参与融资
String fina = ProductParamUtil.getProductParameterValue(productId, "PRD0315",col,"FINAN");
String cautionMoneymethod = ProductParamUtil.getProductParameterValue(productId, "PRD0315",col,"DepositStyle");
if(!"".equals(cautionMoneymethod)&&cautionMoneymethod!=null){
doTemp.setDefaultValue("CAUTION_MONEY_METHOD",cautionMoneymethod);
}
if("Y".equals(fina)){
fina = "finatype02";
}else {
fina = "finatype01";
}
if(fee.getAttribute("itemno").getString().equals("feetype10")){
rule=prodSer.getEquipRule(doTemp, map,col,vali);
}else{
if(map.containsKey(col)){//产品配置了该费用项
rule=prodSer.getFeeRule(doTemp, map, col,colName,vali);
doTemp.setDefaultValue(col+"_FINA",fina);
}else{
if("FINA".equals(isFina)){
doTemp.setVisible(col+"_"+isFina, false);
}
doTemp.setVisible(col, false);
if(fee.getAttribute("itemno").getString().equals("feetype2")){
doTemp.setVisible("CAUTION_DEDUCTION_MONEY", false);
doTemp.setVisible("CAUTION_MONEY_REMAIN", false);
doTemp.setVisible("CAUTION_MONEY_METHOD", false);
doTemp.setRequired("CAUTION_MONEY_METHOD", false);
}
if("FINAL_PAYMENT".equals(col)) {
doTemp.setVisible(col + "_METHOD", false);
doTemp.setRequired(col + "_METHOD", false);
}
rule=null;
}
}
if(rule!=null){
if(sb.length()>1){sb.append(",");}
sb.append("'"+col+"':"+rule+"");
}
}
for(String key:map.keySet()){
if(key.toUpperCase().indexOf("FEETYPE")>=0){
rule=prodSer.getFeeRule(doTemp, map, key,map.get(key).get("colheader"),vali);
if(sb.length()>1){sb.append(",");}
sb.append("'"+key.toUpperCase()+"':"+rule+"");
}
}
Map<String, String> cleanLeaseMoney = ProductParamUtil.getProductComponentAllParameters(productId, "PRD0350", "MoneyLimits");
if(cleanLeaseMoney.size()>0){
sb.append(",'CLEAN_LEASE_MONEY':{'max':'"+cleanLeaseMoney.get("MoneyUpLimits")+"','min':'"+cleanLeaseMoney.get("MoneyLowLimits")+"','LeaseMoneyRatio':{'max':'"+cleanLeaseMoney.get("LeaseMoneyRatio-MAX")+"','min':'"+cleanLeaseMoney.get("LeaseMoneyRatio-MIN")+"'}}");
}
sb.append("}");
return sb.toString();
}
@SuppressWarnings("unchecked")
public String getProductFundRulesApp(List<Map<String, Object>> appList,String productId,Vector<ValidateRule> vali) throws Exception{
StringBuilder sb=new StringBuilder();
sb.append("{");
//获取产品资金项
Map<String,Map<String,String>> map=ProductParamUtil.getProductComponentType(productId, "PRD0315");
//获取需要和产品关联的资金项
String sql = "codeno='FeeType' and relativecode is not null and relativecode<>''";
List<BizObject> feeList=JBOFactory.createBizObjectQuery(CODE_LIBRARY.CLASS_NAME,sql).getResultList(false);
String rule="";
Map<String, Object> _FINA = new HashMap<String, Object>();
for(BizObject fee:feeList){
rule="";
String col=fee.getAttribute("relativecode").getString();//费用项在表中的字段
String colName=fee.getAttribute("itemname").getString();//费用名称
String isFina=fee.getAttribute("attribute2").getString();//是否参与融资
String fina = ProductParamUtil.getProductParameterValue(productId, "PRD0315",col,"FINAN");
String cautionMoneymethod = ProductParamUtil.getProductParameterValue(productId, "PRD0315",col,"DepositStyle");
if(!"".equals(cautionMoneymethod)&&cautionMoneymethod!=null){
ProductBaseLoanTools.addAppList(appList, "CAUTION_MONEY_METHOD", "coldefaultvalue", cautionMoneymethod);
}
if("Y".equals(fina)){
fina = "finatype02";
}else {
fina = "finatype01";
}
if(fee.getAttribute("itemno").getString().equals("feetype10")){
rule=prodSer.getEquipRuleApp(appList, map,col,vali);
}else{
if(map.containsKey(col)){//产品配置了该费用项
rule=prodSer.getFeeRuleApp(appList, map, col,colName,vali);
ProductBaseLoanTools.addAppList(appList, col+"_FINA", "coldefaultvalue", fina);
}else{
if("FINA".equals(isFina)){
ProductBaseLoanTools.addAppList(appList, col+"_FINA", "colvisible", "0");
}
ProductBaseLoanTools.addAppList(appList, col, "colvisible", "0");
if(fee.getAttribute("itemno").getString().equals("feetype2")){
ProductBaseLoanTools.addAppList(appList, "CAUTION_DEDUCTION_MONEY", "colvisible", "0");
ProductBaseLoanTools.addAppList(appList, "CAUTION_MONEY_REMAIN", "colvisible", "0");
ProductBaseLoanTools.addAppList(appList, "CAUTION_MONEY_METHOD", "colvisible", "0");
ProductBaseLoanTools.addAppList(appList, "CAUTION_MONEY_METHOD", "colrequired", "0");
}
if("FINAL_PAYMENT".equals(col)) {
Map<String, Object> _METHOD = new HashMap<String, Object>();
_METHOD.put("colname", col+"_METHOD");
_METHOD.put("colvisible", "0");
_METHOD.put("colrequired", "0");
appList.add(_METHOD);
}
rule=null;
}
}
if(rule!=null){
if(sb.length()>1){sb.append(",");}
sb.append("'"+col+"':"+rule+"");
}
}
for(String key:map.keySet()){
if(key.toUpperCase().indexOf("FEETYPE")>=0){
rule=prodSer.getFeeRuleApp(appList, map, key,map.get(key).get("colheader"),vali);
if(sb.length()>1){sb.append(",");}
sb.append("'"+key.toUpperCase()+"':"+rule+"");
}
}
Map<String, String> cleanLeaseMoney = ProductParamUtil.getProductComponentAllParameters(productId, "PRD0350", "MoneyLimits");
if(cleanLeaseMoney.size()>0){
sb.append(",'CLEAN_LEASE_MONEY':{'max':'"+cleanLeaseMoney.get("MoneyUpLimits")+"','min':'"+cleanLeaseMoney.get("MoneyLowLimits")+"','LeaseMoneyRatio':{'max':'"+cleanLeaseMoney.get("LeaseMoneyRatio-MAX")+"','min':'"+cleanLeaseMoney.get("LeaseMoneyRatio-MIN")+"'}}");
}
sb.append("}");
return sb.toString();
}
/**
* 宽限期最大值
* @param doTemp
* @param flowunid
* @return
* @throws Exception
*/
public String getProductGraceRules(ASObjectModel doTemp,String productId,Vector<ValidateRule> vali) throws Exception{
Map<String,String> rule=new HashMap<String, String>();
//获取产品其它
Map<String,Map<String,String>> map=ProductParamUtil.getProductComponentType(productId, "PRD0311");
if(map.isEmpty()){
doTemp.setColumnAttribute("GRACE", "colvisible", "0");
}else if(map.containsKey("LT01")&&map.get("LT01").containsKey("isleaseterm")&&"N".equals(map.get("LT01").get("isleaseterm"))){
doTemp.setColumnAttribute("GRACE", "colvisible", "0");
}else{
if(map.containsKey("LT01")){
String max=StringUtil.nullToString(map.get("LT01").get("leaseterm-MAX"));
if(max.length()>0){
rule.put("max",max);
String vaildat=this.prodSer.getValidat(max,"宽限期最大"+max+"","<=");
this.prodSer.setColValidat(vali,"GRACE", vaildat);
}
}
}
return FileOperatorUtil.getMapToJsonStr(rule);
}
public String getProductGraceRulesApp(List<Map<String, Object>> appList,String productId,Vector<ValidateRule> vali) throws Exception{
Map<String,String> rule=new HashMap<String, String>();
//获取产品其它
Map<String,Map<String,String>> map=ProductParamUtil.getProductComponentType(productId, "PRD0311");
if(map.isEmpty()){
ProductBaseLoanTools.addAppList(appList, "GRACE", "colvisible", "0");
}else if(map.containsKey("LT01")&&map.get("LT01").containsKey("isleaseterm")&&"N".equals(map.get("LT01").get("isleaseterm"))){
ProductBaseLoanTools.addAppList(appList, "GRACE", "colvisible", "0");
}else{
if(map.containsKey("LT01")){
String max=StringUtil.nullToString(map.get("LT01").get("leaseterm-MAX"));
if(max.length()>0){
rule.put("max","宽限期最大"+max+"期@<=");
}
}
}
return FileOperatorUtil.getMapToJsonStr(rule);
}
/**
* 设置 第一期还款计划 第二期还款计划 期末余值 是否显示
* @param doTemp
* @param productId
* @throws Exception
*/
public void getOtherRule(ASObjectModel doTemp,String productId) throws Exception{
String[] param={"EQUIP_END_VALUE"};
//获取产品其它
Map<String,Map<String,String>> map=ProductParamUtil.getProductComponentType(productId, "PRD0311");
for(int i=0;i<param.length;i++){
if(map.containsKey(param[i])){
doTemp.setColumnAttribute(param[i], "colvisible", "1");
doTemp.setColumnAttribute(param[i], "colrequired", "1");
}
}
}
public void getOtherRuleApp(List<Map<String, Object>> appList,String productId) throws Exception{
String[] param={"EQUIP_END_VALUE"};
//获取产品其它
Map<String,Map<String,String>> map=ProductParamUtil.getProductComponentType(productId, "PRD0311");
for(int i=0;i<param.length;i++){
if(map.containsKey(param[i])){
ProductBaseLoanTools.addAppList(appList, param[i], "colvisible", "1");
ProductBaseLoanTools.addAppList(appList, param[i], "colrequired", "1");
}
}
}
/**
* 设置免罚息天数 罚息日利率 默认值
* @param doTemp
* @param flowunid
* @return
* @throws Exception
*/
public void getProductPenaRules(ASObjectModel doTemp,String productId) throws Exception{
Map<String,Map<String,String>> map=ProductParamUtil.getProductComponentType(productId, "PRD0308");
/*if(map.containsKey("PFD01")){//免罚息天数
String day=map.get("PFD01").get("PenaltyFreeDays");
if(day.length()>0){
doTemp.setDefaultValue("FREE_DEFA_INTER_DAY", day);
}
if("N".equals(map.get("PFD01").get("AllowModify"))){
doTemp.setColumnAttribute("FREE_DEFA_INTER_DAY","colreadonly", "1");
}
}*/
BizObject bo1 = JBOFactory.createBizObjectQuery(BUSINESS_TYPE.CLASS_NAME,"typeno=:productId")
.setParameter("productId",productId).getSingleResult(false);
String attribute2=(bo1==null)?"":bo1.getAttribute("ATTRIBUTE2").getString();
BizObject bo = JBOFactory.createBizObjectQuery(CONFIGURATE.CLASS_NAME,"ATTR_ID=:attrId")
.setParameter("attrId","免罚息天数配置").getSingleResult(false);
String day="0";
if(attribute2!=""&&"car_product".equals(attribute2)){
day = (bo==null)?"":bo.getAttribute("ATTR_VALUE").getString();
}
doTemp.setDefaultValue("FREE_DEFA_INTER_DAY", day);
if(map.containsKey("PENALTY_RATE_DAY")){//罚息日利率
String rate=map.get("PENALTY_RATE_DAY").get("PENALTY_RATE_DAY");
if(rate.length()>0){
doTemp.setDefaultValue("PENA_RATE", rate);
}
if("N".equals(map.get("PENALTY_RATE_DAY").get("AllowModify"))){
doTemp.setColumnAttribute("PENA_RATE","colreadonly", "1");
}
}
}
public void getProductPenaRulesApp(List<Map<String, Object>> appList,String productId) throws Exception{
Map<String,Map<String,String>> map=ProductParamUtil.getProductComponentType(productId, "PRD0308");
/*if(map.containsKey("PFD01")){//免罚息天数
String day=map.get("PFD01").get("PenaltyFreeDays");
if(day.length()>0){
doTemp.setDefaultValue("FREE_DEFA_INTER_DAY", day);
}
if("N".equals(map.get("PFD01").get("AllowModify"))){
doTemp.setColumnAttribute("FREE_DEFA_INTER_DAY","colreadonly", "1");
}
}*/
BizObject bo = JBOFactory.createBizObjectQuery(CONFIGURATE.CLASS_NAME,"ATTR_ID=:attrId")
.setParameter("attrId","免罚息天数配置").getSingleResult(false);
String day = (bo==null)?"":bo.getAttribute("ATTR_VALUE").getString();
ProductBaseLoanTools.addAppList(appList, "FREE_DEFA_INTER_DAY", "coldefaultvalue", day);
if(map.containsKey("PENALTY_RATE_DAY")){//罚息日利率
String rate=map.get("PENALTY_RATE_DAY").get("PENALTY_RATE_DAY");
if(rate.length()>0){
ProductBaseLoanTools.addAppList(appList, "PENA_RATE", "coldefaultvalue", rate);
}
if("N".equals(map.get("PENALTY_RATE_DAY").get("AllowModify"))){
ProductBaseLoanTools.addAppList(appList, "PENA_RATE", "colreadonly", "1");
}
}
}
/**
* 设置调息规则
* @param doTemp
* @param productId
* @throws Exception
*/
public void getProductAdjustRules(ASObjectModel doTemp,String productId) throws Exception{
Map<String,Map<String,String>> map=ProductParamUtil.getProductComponentType(productId, "PRD0320");
if(map.containsKey("ADJUST_INTEREST")){
Map<String,String> rule=map.get("ADJUST_INTEREST");
/*if("N".equals(rule.get("ISADJUST_INTEREST"))){
doTemp.setColumnAttribute("ADJUST_STYLE","colvisible", "0");
doTemp.setColumnAttribute("ADJUST_TYPE","colvisible", "0");
}else if("Y".equals(rule.get("ISADJUST_INTEREST"))){
doTemp.setColumnAttribute("ADJUST_STYLE","colvisible", "1");
doTemp.setColumnAttribute("ADJUST_TYPE","colvisible", "1");
//调息生效节点
doTemp.setColumnAttribute("ADJUST_STYLE","coleditsource","jbo.sys.CODE_LIBRARY,itemno,itemname,codeno='adjust_style' and itemno in ("+this.getSqlWhere(rule.get("adjust_style"))+") order by sortno");
//调息方式
doTemp.setColumnAttribute("ADJUST_TYPE","coleditsource","jbo.sys.CODE_LIBRARY,itemno,itemname,codeno='adjust_type' and itemno in ("+this.getSqlWhere(rule.get("rate_float_type"))+") order by sortno");
}*/
if(null != rule.get("rate_float_type") && null != rule.get("adjust_style")) {
//调息方式
doTemp.setDefaultValue("ADJUST_TYPE", rule.get("rate_float_type"));
//调息生效节点
doTemp.setDefaultValue("ADJUST_STYLE", rule.get("adjust_style"));
}
}
}
public void getProductAdjustRulesApp(List<Map<String, Object>> appList,String productId) throws Exception{
Map<String,Map<String,String>> map=ProductParamUtil.getProductComponentType(productId, "PRD0320");
if(map.containsKey("ADJUST_INTEREST")){
Map<String,String> rule=map.get("ADJUST_INTEREST");
if(null != rule.get("rate_float_type") && null != rule.get("adjust_style")) {
//调息方式
ProductBaseLoanTools.addAppList(appList, "ADJUST_TYPE", "coldefaultvalue", rule.get("rate_float_type"));
//调息生效节点
ProductBaseLoanTools.addAppList(appList, "ADJUST_STYLE", "coldefaultvalue", rule.get("adjust_style"));
}
}
}
/**
* 设置计算方式
* @param doTemp
* @param productId
* @return
* @throws Exception
*/
public String getProductSettleRules(ASObjectModel doTemp, String productId, String flowunid) throws Exception{
//租金计算方式
Map<String,Map<String,String>> map=ProductParamUtil.getProductComponentType(productId, "PRD0301");
//分段
Map<String,Map<String,String>> submap=ProductParamUtil.getProductComponentType(productId, "PRD0321");
String s="";
String sJson="";
for(Map.Entry<String,Map<String,String>> entry:map.entrySet()){
if(s.length()>0)s+=",";
s+="'"+entry.getKey()+"'";
if(sJson.length()>0)sJson+=",";
sJson+="'"+entry.getKey()+"':"+FileOperatorUtil.getMapToJsonStr(entry.getValue());
if(entry.getKey().equals( doTemp.getColumnAttribute("SETTLE_METHOD", "coldefaultvalue"))){
Map<String,String> values=entry.getValue();
if(values.containsKey("HolidayAdjust")){
doTemp.setDefaultValue("PLAN_DATE_HOILDAY", values.get("HolidayAdjust"));
}
if(values.containsKey("InterestHolidayAdjust")){
doTemp.setDefaultValue("INTEREST_DATE_HOLIDAY", values.get("InterestHolidayAdjust"));
}
if(values.containsKey("RATE")){
doTemp.setDefaultValue("RATE", values.get("RATE"));
}
if(values.containsKey("AdditionalRate")){
doTemp.setDefaultValue("ADDITIONAL_RATE", values.get("AdditionalRate"));
}
if(values.containsKey("InterestDayType")){
doTemp.setDefaultValue("INTEREST_DAY_TYPE", values.get("InterestDayType"));
}
}
//是按起租日计算的情况,直接读取当前日期
Map<String, String> valMap = entry.getValue();
for(Entry<String, String> val : valMap.entrySet()) {
if("DefaultDueDay".equals(val.getKey())) {
if(!"02".equals(val.getValue())) {
sJson = sJson.replaceAll("}", ",ActualDay:" + Calendar.getInstance().get(Calendar.DAY_OF_MONTH) + "}");
doTemp.setVisible("DefaultDueDay", false);
doTemp.setRequired("DefaultDueDay", false);
}
break;
}
}
}
if(submap.containsKey("ISSUBSECTION")){
if(s.length()>0)s+=",";
s+="'even_subsection'";
}
/*if(s.indexOf("even_rent") != -1) {
s = "'even_rent'";
} else if(s.indexOf("even_corpus") != -1) {
s = "'even_corpus'";
} else {
s = "'even_interest'";
}*/
// doTemp.setReadOnly("SETTLE_METHOD", true);
doTemp.setColumnAttribute("SETTLE_METHOD","coleditsource","jbo.sys.CODE_LIBRARY,itemno,itemname,codeno='settle_method' and itemno in ("+s+") order by sortno");
doTemp.setDefaultValue("SETTLE_METHOD", s.replaceAll("'", ""));
if ( "'segmented_financing'".equals( s ) ) {
BizObjectManager bom = JBOFactory.getBizObjectManager( "jbo.app.tenwa.calc.LC_CALC_SUBSECTION_INFO_TEMP" );
List<BizObject> bos = bom.createQuery( "flowunid = :flowunid" ).setParameter( "flowunid", flowunid ).getResultList( false );
if ( bos.size() == 0 ) {
Map<String, List<Map<String, String>>> configs = ProductParamUtil.getProductComponentDecisionTable( productId, "PRD0301",
"Rate", "Discount", "DiscountRate", "DiscountCalcMethod", "IsBalanceLending", "DiscountCollectionPeriod", "MaximumDiscount" ,"incomeNumber",
"isFixedDiscount","isUpdateLeaseMoneyRatio","maxLeaseMoney","MinimumDiscount","isFixedDiscountRate");
List<Map<String, String>> sf = configs.get( "segmented_financing" );
int i = 1;
String discountCalcMethod = null ;
for ( Map<String, String> f : sf ) {
if(discountCalcMethod == null || discountCalcMethod.isEmpty()){
discountCalcMethod = f.get("DiscountCalcMethod");
}
//String discountCalcMethod = f.get( "DiscountCalcMethod" );
BizObject bo = bom.newObject();
bo.setAttributeValue( "SUBSECTION_NUMBER", i );
bo.setAttributeValue( "RATE", f.get( "Rate" ) );
bo.setAttributeValue( "DISCOUNT_CALC_METHOD", discountCalcMethod );
if ( "1".equals( discountCalcMethod ) ) {
bo.setAttributeValue( "DISCOUNT_RATE", f.get( "DiscountRate" ) );
bo.setAttributeValue( "FINANCING_RATE", f.get( "DiscountRate" ) );
} else {
bo.setAttributeValue( "DISCOUNT", f.get( "Discount" ) );
}
String isBalanceLending = f.get( "IsBalanceLending" );
bo.setAttributeValue( "IS_BALANCE_LENDING", isBalanceLending );
if ( "Y".equals( isBalanceLending ) ) {
bo.setAttributeValue( "DISCOUNT_COLLECTION_PERIOD", "0" );
} else {
bo.setAttributeValue( "DISCOUNT_COLLECTION_PERIOD", f.get( "DiscountCollectionPeriod" ) );
}
bo.setAttributeValue( "MAXIMUM_DISCOUNT", f.get( "MaximumDiscount" ) );
bo.setAttributeValue( "FLOWUNID", flowunid );
//根据产品配置期次,如果配置赋值给对应的值
String incomeNumber = f.get( "incomeNumber" );
if(incomeNumber == null || incomeNumber.isEmpty() ){
bo.setAttributeValue( "IS_ONLYREAD_INCOME_NUMBER", "N" );
}else{
bo.setAttributeValue( "IS_ONLYREAD_INCOME_NUMBER", "Y" );
bo.setAttributeValue( "INCOME_NUMBER", incomeNumber );
}
bo.setAttributeValue( "IS_FIXED_DISCOUNT", f.get( "isFixedDiscount" ) );
bo.setAttributeValue( "IS_UPDATE_LEASE_MONEY_RATIO", f.get( "isUpdateLeaseMoneyRatio" ) );
bo.setAttributeValue( "MAX_LEASE_MONEY", f.get( "maxLeaseMoney" ) );
bo.setAttributeValue( "MINIMUM_DISCOUNT", f.get( "MinimumDiscount" ) );
bo.setAttributeValue( "IS_FIXED_DISCOUNT_RATE", f.get( "isFixedDiscountRate" ) );
bom.saveObject( bo );
i ++;
}
}
}
return "{"+sJson+"}";
}
/**
* 设置计算方式
* @param doTemp
* @param productId
* @return
* @throws Exception
*/
public String getProductSettleRulesBusiness(ASObjectModel doTemp,String productId) throws Exception{
//租金计算方式
Map<String,Map<String,String>> map=ProductParamUtil.getProductComponentType(productId, "PRD0301");
//分段
Map<String,Map<String,String>> submap=ProductParamUtil.getProductComponentType(productId, "PRD0321");
String s="";
String sJson="";
for(Map.Entry<String,Map<String,String>> entry:map.entrySet()){
if(s.length()>0)s+=",";
s+="'"+entry.getKey()+"'";
if(sJson.length()>0)sJson+=",";
sJson+="'"+entry.getKey()+"':"+FileOperatorUtil.getMapToJsonStr(entry.getValue());
if(entry.getKey().equals( doTemp.getColumnAttribute("SETTLE_METHOD", "coldefaultvalue"))){
Map<String,String> values=entry.getValue();
if(values.containsKey("HolidayAdjust")){
doTemp.setDefaultValue("PLAN_DATE_HOILDAY", values.get("HolidayAdjust"));
}
if(values.containsKey("InterestHolidayAdjust")){
doTemp.setDefaultValue("INTEREST_DATE_HOLIDAY", values.get("InterestHolidayAdjust"));
}
if(values.containsKey("RATE")){
doTemp.setDefaultValue("RATE", values.get("RATE"));
}
if(values.containsKey("AdditionalRate")){
doTemp.setDefaultValue("ADDITIONAL_RATE", values.get("AdditionalRate"));
}
if(values.containsKey("InterestDayType")){
doTemp.setDefaultValue("INTEREST_DAY_TYPE", values.get("InterestDayType"));
}
}
}
if(submap.containsKey("ISSUBSECTION")){
if(s.length()>0)s+=",";
s+="'even_subsection'";
}
/*if(s.indexOf("even_rent") != -1) {
s = "'even_rent'";
} else if(s.indexOf("even_corpus") != -1) {
s = "'even_corpus'";
} else {
s = "'even_interest'";
}*/
// doTemp.setReadOnly("SETTLE_METHOD", true);
doTemp.setColumnAttribute("SETTLE_METHOD","coleditsource","jbo.sys.CODE_LIBRARY,itemno,itemname,codeno='settle_method' and itemno in ("+s+") order by sortno");
doTemp.setDefaultValue("SETTLE_METHOD", s.replaceAll("'", ""));
return "{"+sJson+"}";
}
public String getProductSettleRulesApp(List<Map<String, Object>> appList,String productId) throws Exception{
//租金计算方式
Map<String,Map<String,String>> map=ProductParamUtil.getProductComponentType(productId, "PRD0301");
//分段
Map<String,Map<String,String>> submap=ProductParamUtil.getProductComponentType(productId, "PRD0321");
String s="";
String sJson="";
for(Map.Entry<String,Map<String,String>> entry:map.entrySet()){
if(s.length()>0)s+=",";
s+="'"+entry.getKey()+"'";
if(sJson.length()>0)sJson+=",";
sJson+="'"+entry.getKey()+"':"+FileOperatorUtil.getMapToJsonStr(entry.getValue());
String coldefaultvalue = "";
for (Map<String, Object> app : appList) {
String colName = app.get("colname") == null ? "" : app.get("colname").toString();
if ("SETTLE_METHOD".equals(colName)) {
coldefaultvalue = app.get("coldefaultvalue") == null ? "" : app.get("coldefaultvalue").toString();
break;
}
}
if(entry.getKey().equals(coldefaultvalue)){
Map<String,String> values=entry.getValue();
if(values.containsKey("HolidayAdjust")){
ProductBaseLoanTools.addAppList(appList, "PLAN_DATE_HOILDAY", "coldefaultvalue", values.get("HolidayAdjust"));
}
if(values.containsKey("InterestHolidayAdjust")){
ProductBaseLoanTools.addAppList(appList, "INTEREST_DATE_HOLIDAY", "coldefaultvalue", values.get("InterestHolidayAdjust"));
}
if(values.containsKey("RATE")){
ProductBaseLoanTools.addAppList(appList, "RATE", "coldefaultvalue", values.get("RATE"));
}
if(values.containsKey("AdditionalRate")){
ProductBaseLoanTools.addAppList(appList, "ADDITIONAL_RATE", "coldefaultvalue", values.get("AdditionalRate"));
}
if(values.containsKey("InterestDayType")){
ProductBaseLoanTools.addAppList(appList, "INTEREST_DAY_TYPE", "coldefaultvalue", values.get("InterestDayType"));
}
}
//是按起租日计算的情况,直接读取当前日期
Map<String, String> valMap = entry.getValue();
for(Entry<String, String> val : valMap.entrySet()) {
if("DefaultDueDay".equals(val.getKey())) {
if(!"02".equals(val.getValue())) {
sJson = sJson.replaceAll("}", ",ActualDay:" + Calendar.getInstance().get(Calendar.DAY_OF_MONTH) + "}");
ProductBaseLoanTools.addAppList(appList, "DefaultDueDay", "colvisible", "0");
ProductBaseLoanTools.addAppList(appList, "DefaultDueDay", "colrequired", "0");
}
break;
}
}
}
if(submap.containsKey("ISSUBSECTION")){
if(s.length()>0)s+=",";
s+="'even_subsection'";
}
ProductBaseLoanTools.addAppList(appList, "SETTLE_METHOD", "colreadonly", "1");
ProductBaseLoanTools.addAppList(appList, "SETTLE_METHOD", "coleditsource", "jbo.sys.CODE_LIBRARY,itemno,itemname,codeno='settle_method' and itemno in ("+s+") order by sortno");
ProductBaseLoanTools.addAppList(appList, "SETTLE_METHOD", "coldefaultvalue", s.replaceAll("'", ""));
return "{"+sJson+"}";
}
/**
* 获取产品 资金类型 配置 添加列
* @param doTemp
* @param productId
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public void getProductFundRules(ASObjectModel doTemp,String productId) throws Exception{
//获取产品资金项
Map<String,Map<String,String>> map=ProductParamUtil.getProductComponentType(productId, "PRD0315");
for(String key:map.keySet()){
if(!("EQUIP_AMT".equals(key)||"FIRST_PAYMENT".equals(key))){//设备款和首付款不管
if("feetype_test".equals(key)){//测试费用
doTemp.Columns.add(this.prodSer.createFeeCol(key, map.get(key)));
doTemp.Columns.add(this.prodSer.createFeeColRatio(key, map.get(key)));
}
}
}
}
/**
*
* APP
* 获取产品 资金类型 配置 添加列
* @param doTemp
* @param productId
* @return
* @throws Exception
*/
public void getProductFundRulesApp(List<Map<String, Object>> appList, String productId) throws Exception{
//获取产品资金项
Map<String,Map<String,String>> map=ProductParamUtil.getProductComponentType(productId, "PRD0315");
for(String key:map.keySet()){
if(!("EQUIP_AMT".equals(key)||"FIRST_PAYMENT".equals(key))){//设备款和首付款不管
if("feetype_test".equals(key)){//测试费用
this.prodSer.createFeeColApp(appList, key, map.get(key));
this.prodSer.createFeeColRatioApp(appList, key, map.get(key));
}
}
}
}
public String getSqlWhere(String condition){
String[] conds=condition.split(",");
String s="";
for(int i=0;i<conds.length;i++){
if(s.length()>0)s+=",";
s+="'"+conds[i]+"'";
}
return s;
}
public String getIncomeNumber(String productId) throws Exception{
StringBuilder sb=new StringBuilder();
sb.append("{");
Map<String, String> productRate = ProductParamUtil.getProductComponentType(productId, "PRD0350").get("product_rate");
if(productRate != null) {
String incomeNumbers = productRate.get("INCOME_NUMBER") == null ? "0" : productRate.get("INCOME_NUMBER");
sb.append("'INCOME_NUMBER':'"+incomeNumbers+"'");
}
sb.append("}");
return sb.toString();
}
//获取期数等
public void getCautionRatio(ASObjectModel doTemp,String productId) throws Exception{
//测算年利率字段
Map<String, Map<String, String>> productRates = ProductParamUtil.getProductComponentType(productId, "PRD0350");
Map<String, String> productRate = productRates.get("product_rate");
String periodType = ProductParamUtil.getProductParameterValue(productId, "PRD0350", "period_type", "begin_end");
periodType = periodType == null ? "period_type_0" : periodType;
doTemp.setDefaultValue("PERIOD_TYPE",periodType);
if(productRate != null) {
// String incomeNumber = productRate.get("INCOME_NUMBER") == null ? "0" : productRate.get("INCOME_NUMBER");
// doTemp.setDefaultValue("INCOME_NUMBER",incomeNumber);
/*String periodType = productRate.get("begin_end") == null ? "period_type_0" : productRate.get("begin_end");
doTemp.setDefaultValue("PERIOD_TYPE",periodType)*/;
String ProductType = productRate.get("ProductType") == null ? "0" : productRate.get("ProductType");
String isReadOnly = productRate.get("ProductRateReadOnly") == null ? "Y" : productRate.get("ProductRateReadOnly");
String YEAR_RATE = productRate.get("ProductRate") == null ? "0" : productRate.get("ProductRate");
//利率为0费率为1
if("1".equals(ProductType)){
doTemp.setColumnAttribute("YEAR_RATE","colheader","测算费率");
}
if("Y".equals(isReadOnly)){
doTemp.setColumnAttribute("YEAR_RATE","colreadyonly","1");
}
doTemp.setDefaultValue("YEAR_RATE",YEAR_RATE);
}
}
public void getCautionRatioApp(List<Map<String, Object>> appList, String productId) throws Exception{
//测算年利率字段
Map<String, Map<String, String>> productRates = ProductParamUtil.getProductComponentType(productId, "PRD0350");
Map<String, String> productRate = productRates.get("product_rate");
String periodType = ProductParamUtil.getProductParameterValue(productId, "PRD0350", "period_type", "begin_end");
periodType = periodType == null ? "period_type_0" : periodType;
ProductBaseLoanTools.addAppList(appList, "PERIOD_TYPE", "coldefaultvalue", periodType);
if(productRate != null) {
String incomeNumber = productRate.get("INCOME_NUMBER") == null ? "0" : productRate.get("INCOME_NUMBER");
ProductBaseLoanTools.addAppList(appList, "INCOME_NUMBER", "coldefaultvalue", incomeNumber);
// String periodType = productRate.get("begin_end") == null ? "period_type_0" : productRate.get("begin_end");
// ProductBaseLoanTools.addAppList(appList, "PERIOD_TYPE", "coldefaultvalue", periodType);
String ProductType = productRate.get("ProductType") == null ? "0" : productRate.get("ProductType");
String isReadOnly = productRate.get("ProductRateReadOnly") == null ? "Y" : productRate.get("ProductRateReadOnly");
String YEAR_RATE = productRate.get("ProductRate") == null ? "0" : productRate.get("ProductRate");
//利率为0费率为1
if("1".equals(ProductType)){
ProductBaseLoanTools.addAppList(appList, "YEAR_RATE", "colheader", "测算费率");
}
if("Y".equals(isReadOnly)){
ProductBaseLoanTools.addAppList(appList, "YEAR_RATE", "colreadyonly", "1");
}
ProductBaseLoanTools.addAppList(appList, "YEAR_RATE", "coldefaultvalue", YEAR_RATE);
}
}
}