接口平台业务申请执行脚本修改(kaer)

This commit is contained in:
gityjf 2020-08-20 10:13:12 +08:00
parent 731c1479f3
commit 9ae42b3bb1
3 changed files with 270 additions and 2 deletions

View File

@ -2,4 +2,5 @@ url=http://localhost:8080/platform/batch/kjflc/
FileToPush=pushToBatchDealAllTimer
AtTheEndOfContractPush=ContractFinishPushTimer
ContractLoanPush=loanPushTimer
PushApprovalOpinions=publicPushApproveTimer
PushApprovalOpinions=publicPushApproveTimer
channel_kjflc=KJFLC

View File

@ -13,6 +13,7 @@ import com.amarsoft.awe.util.Transaction;
import com.amarsoft.context.ASUser;
import com.tenwa.comm.util.jboutil.DataOperatorUtil;
import com.tenwa.flow.baseBussion.BaseBussiness;
import com.tenwa.httpclient.resources.InterfacePlatformConfigure;
import com.tenwa.reckon.executor.CreateTransactionExecutor;
import com.tenwa.util.SerialNumberUtil;
import jbo.app.tenwa.calc.LC_CALC_CONDITION_TEMP;
@ -41,7 +42,8 @@ public class PlatformDataToTemp extends BaseBussiness {
public Object run(Transaction Sqlca) throws Exception {
this.initBussinessParam(Sqlca);
if (this.getAttribute("serial") == null) return "true";
if (this.getAttribute("channel") != null && this.getAttribute("channel").toString().equals("KAER"))
String channel_kjflc = InterfacePlatformConfigure.get("channel_kjflc");
if (this.getAttribute("channel") != null && !this.getAttribute("channel").toString().equals(channel_kjflc))
return "true";
ASUser asUser = new ASUser(this.getAttribute("CurUserID").toString());

View File

@ -0,0 +1,265 @@
package com.tenwa.lease.flow.project.commbusiness;
import com.amarsoft.app.als.sys.tools.DateUtil;
import com.amarsoft.app.util.ProductParamUtil;
import com.amarsoft.are.jbo.BizObject;
import com.amarsoft.are.jbo.BizObjectManager;
import com.amarsoft.are.jbo.JBOFactory;
import com.amarsoft.are.jbo.JBOTransaction;
import com.amarsoft.are.lang.StringX;
import com.amarsoft.awe.util.Transaction;
import com.tenwa.flow.baseBussion.BaseBussiness;
import com.tenwa.httpclient.resources.InterfacePlatformConfigure;
import com.tenwa.reckon.executor.CreateTransactionExecutor;
import com.tenwa.util.SerialNumberUtil;
import jbo.app.tenwa.calc.LC_CALC_CONDITION_TEMP;
import org.apache.commons.lang3.time.DateUtils;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 业务申请阶段接口平台数据拷入临时表(非KJFLC渠道)
*/
public class PlatformDataToTempNotKjflc extends BaseBussiness {
@Override
public Object run(Transaction Sqlca) throws Exception {
this.initBussinessParam(Sqlca);
if (this.getAttribute("serial") == null) return "true";
String channel_kjflc = InterfacePlatformConfigure.get("channel_kjflc");
if (this.getAttribute("channel") != null && this.getAttribute("channel").toString().equals(channel_kjflc))
return "true";
String flowunid = this.getAttribute("ObjectNo").toString();
String projectId = this.getAttribute("ProjectId").toString();
String productId = this.getAttribute("ProductId").toString();
String calType = "proj_process";
/**商务条件*/
BizObjectManager lcctBm = JBOFactory.getBizObjectManager(LC_CALC_CONDITION_TEMP.CLASS_NAME, Sqlca);
BizObject lcctBo = lcctBm.createQuery("flowunid=:flowunid").setParameter("flowunid", flowunid).getSingleResult(true);
/**计算综合融资额*/
BigDecimal totalAll = new BigDecimal(lcctBo.getAttribute("EQUIP_AMT").toString());
/**购置税是否参融*/
String purchaseTaxFinan = ProductParamUtil.getProductParameterValue(productId, "PRD0315", "PURCHASE_TAX", "FINAN");
if ("Y".equals(purchaseTaxFinan) && lcctBo.getAttribute("PURCHASE_TAX").toString().length() > 0) {
totalAll = totalAll.add(new BigDecimal(lcctBo.getAttribute("PURCHASE_TAX").toString()));
}
/**GPS设备费是否参融*/
String gpsFeeStr = StringX.isSpace(lcctBo.getAttribute("GPS_FEE").getString()) ? "0" : lcctBo.getAttribute("GPS_FEE").getString();
BigDecimal gpsFee = new BigDecimal(gpsFeeStr);
String gpsFeeFinan = ProductParamUtil.getProductParameterValue(productId, "PRD0315", "GPS_FEE", "FINAN");
if ("Y".equals(gpsFeeFinan) && lcctBo.getAttribute("GPS_FEE").toString().length() > 0) {
totalAll = totalAll.add(new BigDecimal(lcctBo.getAttribute("GPS_FEE").toString()));
}
/**加装费是否参融*/
String tablewareFeeFinan = ProductParamUtil.getProductParameterValue(productId, "PRD0315", "TABLEWARE_FEE", "FINAN");
if ("Y".equals(tablewareFeeFinan) && lcctBo.getAttribute("TABLEWARE_FEE").toString().length() > 0) {
totalAll = totalAll.add(new BigDecimal(lcctBo.getAttribute("TABLEWARE_FEE").toString()));
}
/**保险费是否参融*/
String insurancePremiumFinan = ProductParamUtil.getProductParameterValue(productId, "PRD0315", "INSURANCE_PREMIUM", "FINAN");
if ("Y".equals(insurancePremiumFinan) && lcctBo.getAttribute("INSURANCE_PREMIUM").toString().length() > 0) {
totalAll = totalAll.add(new BigDecimal(lcctBo.getAttribute("INSURANCE_PREMIUM").toString()));
}
/**杂费是否参融*/
String incidentalFinan = ProductParamUtil.getProductParameterValue(productId, "PRD0315", "INCIDENTAL", "FINAN");
if ("Y".equals(incidentalFinan) && lcctBo.getAttribute("INCIDENTAL").toString().length() > 0) {
totalAll = totalAll.add(new BigDecimal(lcctBo.getAttribute("INCIDENTAL").toString()));
}
/**首付款比例*/
String firstPaymentRefer = ProductParamUtil.getProductParameterValue(productId, "PRD0315", "FIRST_PAYMENT", "CostType07");
BigDecimal firstPaymentReferB = new BigDecimal(0.00);
if (lcctBo.getAttribute("FIRST_PAYMENT").toString().length() > 0)
if ("EquipAmt".equals(firstPaymentRefer)) {
firstPaymentReferB = new BigDecimal(lcctBo.getAttribute("FIRST_PAYMENT").toString()).divide(new BigDecimal(lcctBo.getAttribute("EQUIP_AMT").toString()), 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_DOWN);
} else if ("TOTAL_ALL".equals(firstPaymentRefer)) {
firstPaymentReferB = new BigDecimal(lcctBo.getAttribute("FIRST_PAYMENT").toString()).divide(totalAll, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_DOWN);
}
/**保证金比例*/
String cautionMoneyRefer = ProductParamUtil.getProductParameterValue(productId, "PRD0315", "CAUTION_MONEY", "CostType07");
BigDecimal cautionMoneyReferB = new BigDecimal(0.00);
if (lcctBo.getAttribute("CAUTION_MONEY").toString().length() > 0)
if ("EquipAmt".equals(cautionMoneyRefer)) {
cautionMoneyReferB = new BigDecimal(lcctBo.getAttribute("CAUTION_MONEY").toString()).divide(new BigDecimal(lcctBo.getAttribute("EQUIP_AMT").toString()), 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_DOWN);
} else if ("TOTAL_ALL".equals(cautionMoneyRefer)) {
cautionMoneyReferB = new BigDecimal(lcctBo.getAttribute("CAUTION_MONEY").toString()).divide(totalAll, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_DOWN);
}
/**手续费比例*/
String handlingChargeMoneyRefer = ProductParamUtil.getProductParameterValue(productId, "PRD0315", "HANDLING_CHARGE_MONEY", "CostType07");
BigDecimal handlingChargeMoneyReferB = new BigDecimal(0.00);
if (lcctBo.getAttribute("HANDLING_CHARGE_MONEY").toString().length() > 0)
if ("EquipAmt".equals(handlingChargeMoneyRefer)) {
handlingChargeMoneyReferB = new BigDecimal(lcctBo.getAttribute("HANDLING_CHARGE_MONEY").toString()).divide(new BigDecimal(lcctBo.getAttribute("EQUIP_AMT").toString()), 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_DOWN);
} else if ("TOTAL_ALL".equals(handlingChargeMoneyRefer)) {
handlingChargeMoneyReferB = new BigDecimal(lcctBo.getAttribute("HANDLING_CHARGE_MONEY").toString()).divide(totalAll, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_DOWN);
}
/**加装费比例*/
String tablewareFeeRefer = ProductParamUtil.getProductParameterValue(productId, "PRD0315", "TABLEWARE_FEE", "CostType07");
BigDecimal tablewareFeeReferB = new BigDecimal(0.00);
if (lcctBo.getAttribute("TABLEWARE_FEE").toString().length() > 0)
if ("EquipAmt".equals(tablewareFeeRefer)) {
tablewareFeeReferB = new BigDecimal(lcctBo.getAttribute("TABLEWARE_FEE").toString()).divide(new BigDecimal(lcctBo.getAttribute("EQUIP_AMT").toString()), 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_DOWN);
} else if ("TOTAL_ALL".equals(tablewareFeeRefer)) {
tablewareFeeReferB = new BigDecimal(lcctBo.getAttribute("TABLEWARE_FEE").toString()).divide(totalAll, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_DOWN);
}
/**购置锐比例*/
String purchaseTaxRefer = ProductParamUtil.getProductParameterValue(productId, "PRD0315", "PURCHASE_TAX", "CostType07");
BigDecimal purchaseTaxReferB = new BigDecimal(0.00);
if (lcctBo.getAttribute("PURCHASE_TAX").toString().length() > 0)
if ("EquipAmt".equals(purchaseTaxRefer)) {
purchaseTaxReferB = new BigDecimal(lcctBo.getAttribute("PURCHASE_TAX").toString()).divide(new BigDecimal(lcctBo.getAttribute("EQUIP_AMT").toString()), 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_DOWN);
} else if ("TOTAL_ALL".equals(purchaseTaxRefer)) {
purchaseTaxReferB = new BigDecimal(lcctBo.getAttribute("PURCHASE_TAX").toString()).divide(totalAll, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_DOWN);
}
/**保险费比例*/
String insurancePremiumRefer = ProductParamUtil.getProductParameterValue(productId, "PRD0315", "INSURANCE_PREMIUM", "CostType07");
BigDecimal insurancePremiumReferB = new BigDecimal(0.00);
if (lcctBo.getAttribute("INSURANCE_PREMIUM").toString().length() > 0)
if ("EquipAmt".equals(insurancePremiumRefer)) {
insurancePremiumReferB = new BigDecimal(lcctBo.getAttribute("INSURANCE_PREMIUM").toString()).divide(new BigDecimal(lcctBo.getAttribute("EQUIP_AMT").toString()), 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_DOWN);
} else if ("TOTAL_ALL".equals(insurancePremiumRefer)) {
insurancePremiumReferB = new BigDecimal(lcctBo.getAttribute("INSURANCE_PREMIUM").toString()).divide(totalAll, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_DOWN);
}
/**杂费比例*/
String incidentalRefer = ProductParamUtil.getProductParameterValue(productId, "PRD0315", "INCIDENTAL", "CostType07");
BigDecimal incidentalReferB = new BigDecimal(0.00);
if (lcctBo.getAttribute("INCIDENTAL").toString().length() > 0)
if ("EquipAmt".equals(incidentalRefer)) {
incidentalReferB = new BigDecimal(lcctBo.getAttribute("INCIDENTAL").toString()).divide(new BigDecimal(lcctBo.getAttribute("EQUIP_AMT").toString()), 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_DOWN);
} else if ("TOTAL_ALL".equals(incidentalRefer)) {
incidentalReferB = new BigDecimal(lcctBo.getAttribute("INCIDENTAL").toString()).divide(totalAll, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_DOWN);
}
lcctBo.setAttributeValue("PROJECT_ID", projectId);
String planNumber = SerialNumberUtil.getPlannumber(this.getAttribute("ProjectNo").toString(), calType, Sqlca);
lcctBo.setAttributeValue("PROJECT_PLAN_NUMBER", planNumber);
Map<String, String> otherProperty = new HashMap<String, String>();
// 调息方式
setProductAdjustRules(otherProperty, productId);
lcctBo.setAttributeValue("ADJUST_TYPE", otherProperty.get("ADJUST_TYPE"));
lcctBo.setAttributeValue("ADJUST_STYLE", otherProperty.get("ADJUST_STYLE"));
// 投放日
lcctBo.setAttributeValue("LEASE_AMT_DATE", DateUtil.getToday());
lcctBo.setAttributeValue("START_DATE", DateUtil.getToday());
// 租金推算方式
lcctBo.setAttributeValue("RENT_OR_RATE", "rate");
// 设置年利率
setYearRate(otherProperty, productId);
lcctBo.setAttributeValue("PERIOD_TYPE", otherProperty.get("PERIOD_TYPE"));
lcctBo.setAttributeValue("YEAR_RATE", otherProperty.get("YEAR_RATE"));
// 设置还款间隔
lcctBo.setAttributeValue("INCOME_NUMBER_YEAR", "income_12");
lcctBo.setAttributeValue("INCOME_INTERVAL_MONTH", "1");
lcctBo.setAttributeValue("GPS_FEE", gpsFee.toString());
lcctBo.setAttributeValue("LEASE_TERM", lcctBo.getAttribute("INCOME_NUMBER"));
// 计算第一第二期租金支付日
setFirstSecondPlan(otherProperty, productId, lcctBo);
lcctBo.setAttributeValue("FIRST_PLAN_DATE", otherProperty.get("FIRST_PLAN_DATE"));
lcctBo.setAttributeValue("SECOND_PLAN_DATE", otherProperty.get("SECOND_PLAN_DATE"));
lcctBo.setAttributeValue("EQUIP_AMT", lcctBo.getAttribute("EQUIP_AMT"));
lcctBo.setAttributeValue("FIRST_PAYMENT", lcctBo.getAttribute("FIRST_PAYMENT"));
lcctBo.setAttributeValue("FIRST_PAYMENT_RATIO", firstPaymentReferB);
lcctBo.setAttributeValue("FINAL_PAYMENT", lcctBo.getAttribute("FINAL_PAYMENT"));
lcctBo.setAttributeValue("NOMINAL_PRICE", lcctBo.getAttribute("NOMINAL_PRICE"));
lcctBo.setAttributeValue("HANDLING_CHARGE_MONEY", lcctBo.getAttribute("HANDLING_CHARGE_MONEY"));
lcctBo.setAttributeValue("HANDLING_CHARGE_MONEY_RATIO", handlingChargeMoneyReferB);
lcctBo.setAttributeValue("CAUTION_MONEY", lcctBo.getAttribute("CAUTION_MONEY"));
lcctBo.setAttributeValue("CAUTION_MONEY_RATIO", cautionMoneyReferB);
lcctBo.setAttributeValue("GPS_FEE_FINA", lcctBo.getAttribute("GPS_FEE_FINA"));
lcctBo.setAttributeValue("PURCHASE_TAX", lcctBo.getAttribute("PURCHASE_TAX"));
lcctBo.setAttributeValue("PURCHASE_TAX_RATIO", purchaseTaxReferB);
lcctBo.setAttributeValue("INSURANCE_PREMIUM", lcctBo.getAttribute("INSURANCE_PREMIUM"));
lcctBo.setAttributeValue("INSURANCE_PREMIUM_RATIO", insurancePremiumReferB);
lcctBo.setAttributeValue("SETTLE_METHOD", lcctBo.getAttribute("SETTLE_METHOD"));
lcctBo.setAttributeValue("INCOME_NUMBER", lcctBo.getAttribute("INCOME_NUMBER"));
lcctBo.setAttributeValue("DefaultDueDay", lcctBo.getAttribute("DefaultDueDay"));
lcctBo.setAttributeValue("TABLEWARE_FEE", lcctBo.getAttribute("TABLEWARE_FEE"));
lcctBo.setAttributeValue("TABLEWARE_FEE_RATIO", tablewareFeeReferB);
lcctBo.setAttributeValue("INCIDENTAL", lcctBo.getAttribute("INCIDENTAL"));
lcctBo.setAttributeValue("INCIDENTAL_RATIO", incidentalReferB);
lcctBo.setAttributeValue("TOTAL_ALL", totalAll);
lcctBo.setAttributeValue("ALL_FIRST_PAYMENT", lcctBo.getAttribute("FIRST_PAYMENT").toString());
lcctBo.setAttributeValue("ALL_FIRST_PAYMENT_RATIO", new BigDecimal(lcctBo.getAttribute("FIRST_PAYMENT").toString()).multiply(new BigDecimal("100")).divide(totalAll, 6, BigDecimal.ROUND_HALF_UP));
lcctBo.setAttributeValue("CLEAN_LEASE_MONEY", totalAll.subtract(new BigDecimal(lcctBo.getAttribute("FIRST_PAYMENT").toString())));
lcctBo.setAttributeValue("RENT_RATIO", totalAll.subtract(new BigDecimal(lcctBo.getAttribute("FIRST_PAYMENT").toString())).divide(new BigDecimal(lcctBo.getAttribute("EQUIP_AMT").toString()), 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_DOWN).toString());
lcctBo.setAttributeValue("DISCOUNT", "");
lcctBm.saveObject(lcctBo);
// 自动测算
autoCalc(flowunid, calType, planNumber, productId, Sqlca);
return "true";
}
public void setProductAdjustRules(Map<String, String> otherProperty, 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")) {
//调息方式
otherProperty.put("ADJUST_TYPE", rule.get("rate_float_type"));
otherProperty.put("ADJUST_STYLE", rule.get("adjust_style"));
}
}
}
public void setYearRate(Map<String, String> otherProperty, 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;
otherProperty.put("PERIOD_TYPE", periodType);
if (productRate != null) {
String yearRate = productRate.get("ProductRate") == null ? "0" : productRate.get("ProductRate");
otherProperty.put("YEAR_RATE", yearRate);
}
}
public void setFirstSecondPlan(Map<String, String> otherProperty, String productId, BizObject fcc) throws Exception {
String periodType = otherProperty.get("PERIOD_TYPE");
String leaseAmtDate = DateUtil.getToday();
String incomeIntervalMonth = "1";
String defaultDueDay = fcc.getAttribute("DefaultDueDay").toString();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Date lad = sdf.parse(leaseAmtDate);
lad = DateUtils.setDays(lad, Integer.parseInt(defaultDueDay));
String firstPlanDate = "";
String secondPlanDate = "";
if ("period_type_1".equals(periodType)) {
firstPlanDate = leaseAmtDate;
secondPlanDate = sdf.format(DateUtils.addMonths(lad, Integer.parseInt(incomeIntervalMonth)));
} else {
firstPlanDate = sdf.format(DateUtils.addMonths(lad, Integer.parseInt(incomeIntervalMonth)));
secondPlanDate = sdf.format(DateUtils.addMonths(lad, Integer.parseInt(incomeIntervalMonth) * 2));
}
otherProperty.put("FIRST_PLAN_DATE", firstPlanDate);
otherProperty.put("SECOND_PLAN_DATE", secondPlanDate);
}
public void autoCalc(String flowunid, String calType, String planNumber, String productId, JBOTransaction tx) throws Exception {
CreateTransactionExecutor cte = new CreateTransactionExecutor();
cte.setCalType(calType);
cte.setFlowunid(flowunid);
cte.setPlannumber(planNumber);
cte.setProductId(productId);
System.out.println("===========================自动测算开始===============================");
cte.runTrans(tx);
System.out.println("===========================自动测算结束===============================");
}
}