1067 lines
43 KiB
Java
1067 lines
43 KiB
Java
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 if( "2".equals( discountCalcMethod ) ){
|
||
bo.setAttributeValue( "DISCOUNT", f.get( "Discount" ) );
|
||
}else if ( "3".equals( discountCalcMethod ) ){
|
||
bo.setAttributeValue( "DISCOUNT_RATE", f.get( "DiscountRate" ) );
|
||
bo.setAttributeValue( "FINANCING_RATE", f.get( "DiscountRate" ) );
|
||
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);
|
||
}
|
||
}
|
||
}
|