diff --git a/WebContent/Tenwa/Lease/DistributorManage/DistributorApproval/LDistributorInfo.jsp b/WebContent/Tenwa/Lease/DistributorManage/DistributorApproval/LDistributorInfo.jsp index c6d6cdb97..3b9169e94 100644 --- a/WebContent/Tenwa/Lease/DistributorManage/DistributorApproval/LDistributorInfo.jsp +++ b/WebContent/Tenwa/Lease/DistributorManage/DistributorApproval/LDistributorInfo.jsp @@ -42,6 +42,8 @@ //dwTemp.ReadOnly = "1";//只读模式 ASDataObject ado = dwTemp.getDataObject(); ado.setHtmlEvent("LIMIT_APPROVAL_DATE", "onchange", "getenddate"); + ado.setHtmlEvent("CHANNELTYPE", "onchange", "changeTotalRequired"); + ado.setHtmlEvent("LIMIT_EFFECTIVE_DATE", "onchange", "getenddate"); //ado.setReadOnly("BUSINESS_PROPERTY,DISTRIBUTORER",true); dwTemp.genHTMLObjectWindow(sFlowUnid); @@ -57,6 +59,9 @@ sButtonPosition = "north"; %><%@ include file="/Frame/resources/include/ui/include_info.jspf"%> diff --git a/WebContent/WEB-INF/etc/jbo/jbo_comm.xml b/WebContent/WEB-INF/etc/jbo/jbo_comm.xml index 954d63aa4..2b35271ad 100644 --- a/WebContent/WEB-INF/etc/jbo/jbo_comm.xml +++ b/WebContent/WEB-INF/etc/jbo/jbo_comm.xml @@ -313,6 +313,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WebContent/WEB-INF/etc/jbo/jbo_customer.xml b/WebContent/WEB-INF/etc/jbo/jbo_customer.xml index 03442445f..5848376be 100644 --- a/WebContent/WEB-INF/etc/jbo/jbo_customer.xml +++ b/WebContent/WEB-INF/etc/jbo/jbo_customer.xml @@ -1021,6 +1021,7 @@ + @@ -1316,6 +1317,7 @@ + diff --git a/src_tenwa/com/tenwa/lease/app/quartzmession/AutoFiveGradeClassification.java b/src_tenwa/com/tenwa/lease/app/quartzmession/AutoFiveGradeClassification.java index 17b9928dd..6b90d9a27 100644 --- a/src_tenwa/com/tenwa/lease/app/quartzmession/AutoFiveGradeClassification.java +++ b/src_tenwa/com/tenwa/lease/app/quartzmession/AutoFiveGradeClassification.java @@ -3,6 +3,7 @@ package com.tenwa.lease.app.quartzmession; import java.util.List; import jbo.app.tenwa.calc.LC_CALC_CONDITION_STATUS; +import jbo.app.tenwa.customer.DISTRIBUTOR_INFO; import jbo.app.tenwa.customer.LM_GRADE_CLASSIFICATION; import jbo.com.tenwa.lease.comm.LB_CONTRACT_INFO; import jbo.com.tenwa.lease.comm.LB_FIVE_GRADE; @@ -19,9 +20,11 @@ import com.amarsoft.are.jbo.JBOException; import com.amarsoft.are.jbo.JBOFactory; import com.amarsoft.are.jbo.JBOTransaction; import com.amarsoft.are.util.StringFunction; +import com.amarsoft.awe.util.Transaction; import com.base.util.QuartzUtil; import com.tenwa.comm.util.date.DateAssistant; import com.tenwa.flow.comm.handler.flowmanage.OverdueProjectCache; +import com.tenwa.lease.flow.project.commbusiness.CreateFiveGradeDataAction; public class AutoFiveGradeClassification implements Job { @@ -91,6 +94,7 @@ public class AutoFiveGradeClassification implements Job { JBOTransaction tx=null; try { tx= JBOFactory.createJBOTransaction(); + BizObjectManager diManager = JBOFactory.getBizObjectManager(DISTRIBUTOR_INFO.CLASS_NAME); BizObjectManager lccsManager = JBOFactory.getBizObjectManager(LC_CALC_CONDITION_STATUS.CLASS_NAME); BizObjectManager lciManager = JBOFactory.getBizObjectManager(LB_CONTRACT_INFO.CLASS_NAME); BizObjectManager five_gr = JBOFactory.getBizObjectManager(LB_FIVE_GRADE.CLASS_NAME); @@ -129,6 +133,13 @@ public class AutoFiveGradeClassification implements Job { } } } + Transaction txv = Transaction.createTransaction(tx); + List diList = diManager.createQuery("1=1").getResultList(false); + CreateFiveGradeDataAction cfgda = null; + for(BizObject dibo:diList){ + cfgda=new CreateFiveGradeDataAction(dibo.getAttribute("distributor_no").getString(),txv); + cfgda.insertFiveGradeTable(txv); + } tx.commit(); } catch (Exception e) { try { diff --git a/src_tenwa/com/tenwa/lease/flow/project/commbusiness/CreateFiveGradeDataAction.java b/src_tenwa/com/tenwa/lease/flow/project/commbusiness/CreateFiveGradeDataAction.java new file mode 100644 index 000000000..f7ab28f26 --- /dev/null +++ b/src_tenwa/com/tenwa/lease/flow/project/commbusiness/CreateFiveGradeDataAction.java @@ -0,0 +1,309 @@ +package com.tenwa.lease.flow.project.commbusiness; + +import java.math.BigDecimal; + +import jbo.app.tenwa.customer.DISTRIBUTOR_INFO; +import jbo.com.tenwa.entity.comm.own.LB_FIVEGRADEDETAILED_INFO; + +import com.amarsoft.are.jbo.BizObject; +import com.amarsoft.are.jbo.BizObjectManager; +import com.amarsoft.are.jbo.JBOException; +import com.amarsoft.are.jbo.JBOFactory; +import com.amarsoft.are.util.StringFunction; +import com.amarsoft.awe.util.ASResultSet; +import com.amarsoft.awe.util.SqlObject; +import com.amarsoft.awe.util.Transaction; + +public class CreateFiveGradeDataAction { + String contractId; + + String distributorNo; + double TOTAL_OVERDUE_PRINCIPAL; + double TOTAL_OVERDUE_INTEREST; + double TOTAL_PENALTY; + //所有未还本金 + double TOTAL_OUTSTANDING_PRINCIPAL; + //逾期客户未还本金合计 + double TOTAL_OUTSTANDINGCUSTOMER_PRINCIPAL; + //---五级分类未还本金---- + double NOTBACK_PRINCIPAL_NORMAL; + double NOTBACK_PRINCIPAL_ATTENTION; + double NOTBACK_PRINCIPAL_SECONDARY; + double NOTBACK_PRINCIPAL_SUSPICIOUS; + double NOTBACK_PRINCIPAL_LOSS; + //---五级分类存续客户---- + String EXISTING_CUSTOMERS_NUM_NORMAL; + String EXISTING_CUSTOMERS_NUM_ATTENTION; + String EXISTING_CUSTOMERS_NUM_SECONDARY; + String EXISTING_CUSTOMERS_NUM_SUSPICIOUS; + String EXISTING_CUSTOMERS_NUM_LOSS; + //---五级分类融资额 + String FINANCING_AMOUNT_NORMAL; + String FINANCING_AMOUNT_ATTENTION; + String FINANCING_AMOUNT_SECONDARY; + String FINANCING_AMOUNT_SUSPICIOUS; + String FINANCING_AMOUNT_LOSS; + + public CreateFiveGradeDataAction(String distributorno,Transaction tx) throws Exception{ + try { + distributorNo = distributorno; + TOTAL_OVERDUE_PRINCIPAL = this.calcOverDuePrincipal(distributorNo,"CORPUS",true,null,tx); + TOTAL_OVERDUE_INTEREST = this.calcOverDuePrincipal(distributorNo,"INTEREST",true,null,tx); + TOTAL_PENALTY = this.calcOverDuePenalty(distributorNo,tx); + TOTAL_OUTSTANDING_PRINCIPAL = this.calcOverDuePrincipal(distributorNo, "CORPUS", false, null, tx); + TOTAL_OUTSTANDINGCUSTOMER_PRINCIPAL = this.calcOverDueCustomerAllCorpus(distributorNo, tx); + + NOTBACK_PRINCIPAL_NORMAL = this.calcOverDuePrincipal(distributorNo, "CORPUS", false, "ClassifyResult01", tx); + NOTBACK_PRINCIPAL_ATTENTION = this.calcOverDuePrincipal(distributorNo, "CORPUS", false, "ClassifyResult02", tx); + NOTBACK_PRINCIPAL_SECONDARY = this.calcOverDuePrincipal(distributorNo, "CORPUS", false, "ClassifyResult03", tx); + NOTBACK_PRINCIPAL_SUSPICIOUS = this.calcOverDuePrincipal(distributorNo, "CORPUS", false, "ClassifyResult04", tx); + NOTBACK_PRINCIPAL_LOSS = this.calcOverDuePrincipal(distributorNo, "CORPUS", false, "ClassifyResult05", tx); + + EXISTING_CUSTOMERS_NUM_NORMAL = this.getCustomerNumber(distributorNo,"ClassifyResult01","custnum",tx); + EXISTING_CUSTOMERS_NUM_ATTENTION = this.getCustomerNumber(distributorNo,"ClassifyResult02","custnum",tx); + EXISTING_CUSTOMERS_NUM_SECONDARY = this.getCustomerNumber(distributorNo,"ClassifyResult03","custnum",tx); + EXISTING_CUSTOMERS_NUM_SUSPICIOUS = this.getCustomerNumber(distributorNo,"ClassifyResult04","custnum",tx); + EXISTING_CUSTOMERS_NUM_LOSS = this.getCustomerNumber(distributorNo,"ClassifyResult05","custnum",tx); + + FINANCING_AMOUNT_NORMAL = this.getCustomerNumber(distributorNo,"ClassifyResult01","qq",tx); + FINANCING_AMOUNT_ATTENTION = this.getCustomerNumber(distributorNo,"ClassifyResult02","qq",tx); + FINANCING_AMOUNT_SECONDARY = this.getCustomerNumber(distributorNo,"ClassifyResult03","qq",tx); + FINANCING_AMOUNT_SUSPICIOUS = this.getCustomerNumber(distributorNo,"ClassifyResult04","qq",tx); + FINANCING_AMOUNT_LOSS = this.getCustomerNumber(distributorNo,"ClassifyResult05","qq",tx); + System.out.println("====================================="); + System.out.println(this.toString()); + System.out.println("====================================="); + } catch (Exception e) { + e.printStackTrace(); + throw new Exception("初始化对象异常"); + } + } + public boolean insertFiveGradeTable(Transaction tx) throws Exception{ + BizObjectManager bm; + BizObjectManager bmDI; + try { + bmDI = JBOFactory.getBizObjectManager(DISTRIBUTOR_INFO.CLASS_NAME,tx); + BizObject BoDI=bmDI.createQuery("DISTRIBUTOR_NO=:DISTRIBUTOR_NO").setParameter("DISTRIBUTOR_NO", distributorNo).getSingleResult(true); + + bm = JBOFactory.getBizObjectManager(LB_FIVEGRADEDETAILED_INFO.CLASS_NAME,tx); + BizObject oldBo=bm.createQuery("DISTRIBUTOR_NO=:DISTRIBUTOR_NO").setParameter("DISTRIBUTOR_NO", distributorNo).getSingleResult(true); + if(oldBo!=null){ + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.DISTRIBUTORNAME,BoDI.getAttribute("distributor_name")); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.DISTRIBUTORTYPE,BoDI.getAttribute("channeltype")); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.DISTRIBUTORQUOTA,BoDI.getAttribute("TOTAL")); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.DEPOSITRATIO,BoDI.getAttribute("MARGIN_SCALE_SET")); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.AGREEMENT,BoDI.getAttribute("LIMIT_END_DATE")); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.TOTAL_FINANCING_AMOUNT,new BigDecimal(Double.parseDouble(FINANCING_AMOUNT_LOSS)+Double.parseDouble(FINANCING_AMOUNT_SUSPICIOUS)+Double.parseDouble(FINANCING_AMOUNT_SECONDARY)+Double.parseDouble(FINANCING_AMOUNT_ATTENTION)+Double.parseDouble(FINANCING_AMOUNT_NORMAL)).setScale(2, BigDecimal.ROUND_DOWN).toPlainString()); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.THE_REMAINING_AMOUNT,new BigDecimal(Double.parseDouble(BoDI.getAttribute("TOTAL").getString())-(Double.parseDouble(FINANCING_AMOUNT_LOSS)+Double.parseDouble(FINANCING_AMOUNT_SUSPICIOUS)+Double.parseDouble(FINANCING_AMOUNT_SECONDARY)+Double.parseDouble(FINANCING_AMOUNT_ATTENTION)+Double.parseDouble(FINANCING_AMOUNT_NORMAL))).setScale(2, BigDecimal.ROUND_DOWN).toPlainString()); + + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.TOTAL_OVERDUE_PRINCIPAL,TOTAL_OVERDUE_PRINCIPAL); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.TOTAL_OVERDUE_INTEREST,TOTAL_OVERDUE_INTEREST); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.TOTAL_PENALTY, TOTAL_PENALTY); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.TOTAL_OVERDUE_ALL, TOTAL_OVERDUE_PRINCIPAL+TOTAL_OVERDUE_INTEREST+TOTAL_PENALTY); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.EXISTING_CUSTOMERS_NUM, Integer.parseInt(EXISTING_CUSTOMERS_NUM_NORMAL)+Integer.parseInt(EXISTING_CUSTOMERS_NUM_ATTENTION)+Integer.parseInt(EXISTING_CUSTOMERS_NUM_SUSPICIOUS)+Integer.parseInt(EXISTING_CUSTOMERS_NUM_LOSS)+Integer.parseInt(EXISTING_CUSTOMERS_NUM_SECONDARY)); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.TOTAL_OUTSTANDING_PRINCIPAL, TOTAL_OUTSTANDING_PRINCIPAL+""); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.OVERDUERATE, (double) Math.round(TOTAL_OUTSTANDINGCUSTOMER_PRINCIPAL/TOTAL_OUTSTANDING_PRINCIPAL)); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.BADNESSRATE, (double) Math.round(NOTBACK_PRINCIPAL_LOSS+NOTBACK_PRINCIPAL_SUSPICIOUS+NOTBACK_PRINCIPAL_SECONDARY/TOTAL_OUTSTANDING_PRINCIPAL)); + + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.EXISTING_CUSTOMERS_NUM_NORMAL, EXISTING_CUSTOMERS_NUM_NORMAL); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.EXISTING_CUSTOMERS_NUM_ATTENTION, EXISTING_CUSTOMERS_NUM_ATTENTION); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.EXISTING_CUSTOMERS_NUM_SECONDARY, EXISTING_CUSTOMERS_NUM_SECONDARY); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.EXISTING_CUSTOMERS_NUM_SUSPICIOUS, EXISTING_CUSTOMERS_NUM_SUSPICIOUS); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.EXISTING_CUSTOMERS_NUM_LOSS, EXISTING_CUSTOMERS_NUM_LOSS); + + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.NOTBACK_PRINCIPAL_NORMAL, NOTBACK_PRINCIPAL_NORMAL+""); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.NOTBACK_PRINCIPAL_ATTENTION, NOTBACK_PRINCIPAL_ATTENTION); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.NOTBACK_PRINCIPAL_SECONDARY, NOTBACK_PRINCIPAL_SECONDARY); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.NOTBACK_PRINCIPAL_SUSPICIOUS, NOTBACK_PRINCIPAL_SUSPICIOUS); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.NOTBACK_PRINCIPAL_LOSS, NOTBACK_PRINCIPAL_LOSS); + + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.FINANCING_AMOUNT_NORMAL, FINANCING_AMOUNT_NORMAL); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.FINANCING_AMOUNT_ATTENTION, FINANCING_AMOUNT_ATTENTION); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.FINANCING_AMOUNT_SECONDARY, FINANCING_AMOUNT_SECONDARY); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.FINANCING_AMOUNT_SUSPICIOUS, FINANCING_AMOUNT_SUSPICIOUS); + oldBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.FINANCING_AMOUNT_LOSS, FINANCING_AMOUNT_LOSS); + bm.saveObject(oldBo); + }else{ + BizObject newBo = bm.newObject(); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.DISTRIBUTOR_NO, distributorNo); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.DISTRIBUTORNAME,BoDI.getAttribute("distributor_name")); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.DISTRIBUTORTYPE,BoDI.getAttribute("channeltype")); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.DISTRIBUTORQUOTA,BoDI.getAttribute("TOTAL")); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.DEPOSITRATIO,BoDI.getAttribute("MARGIN_SCALE_SET")); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.AGREEMENT,BoDI.getAttribute("LIMIT_END_DATE")); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.TOTAL_FINANCING_AMOUNT,new BigDecimal(Double.parseDouble(FINANCING_AMOUNT_LOSS)+Double.parseDouble(FINANCING_AMOUNT_SUSPICIOUS)+Double.parseDouble(FINANCING_AMOUNT_SECONDARY)+Double.parseDouble(FINANCING_AMOUNT_ATTENTION)+Double.parseDouble(FINANCING_AMOUNT_NORMAL)).setScale(2, BigDecimal.ROUND_DOWN).toPlainString()); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.THE_REMAINING_AMOUNT,new BigDecimal(Double.parseDouble(BoDI.getAttribute("TOTAL").getString())-(Double.parseDouble(FINANCING_AMOUNT_LOSS)+Double.parseDouble(FINANCING_AMOUNT_SUSPICIOUS)+Double.parseDouble(FINANCING_AMOUNT_SECONDARY)+Double.parseDouble(FINANCING_AMOUNT_ATTENTION)+Double.parseDouble(FINANCING_AMOUNT_NORMAL))).setScale(2, BigDecimal.ROUND_DOWN).toPlainString()); + + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.TOTAL_OVERDUE_PRINCIPAL,TOTAL_OVERDUE_PRINCIPAL); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.TOTAL_OVERDUE_INTEREST,TOTAL_OVERDUE_INTEREST); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.TOTAL_PENALTY, TOTAL_PENALTY); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.TOTAL_OVERDUE_ALL, TOTAL_OVERDUE_PRINCIPAL+TOTAL_OVERDUE_INTEREST+TOTAL_PENALTY); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.EXISTING_CUSTOMERS_NUM, Integer.parseInt(EXISTING_CUSTOMERS_NUM_NORMAL)+Integer.parseInt(EXISTING_CUSTOMERS_NUM_ATTENTION)+Integer.parseInt(EXISTING_CUSTOMERS_NUM_SUSPICIOUS)+Integer.parseInt(EXISTING_CUSTOMERS_NUM_LOSS)+Integer.parseInt(EXISTING_CUSTOMERS_NUM_SECONDARY)); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.TOTAL_OUTSTANDING_PRINCIPAL, TOTAL_OUTSTANDING_PRINCIPAL+""); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.OVERDUERATE, (double) Math.round(TOTAL_OUTSTANDINGCUSTOMER_PRINCIPAL/TOTAL_OUTSTANDING_PRINCIPAL)); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.BADNESSRATE, (double) Math.round(NOTBACK_PRINCIPAL_LOSS+NOTBACK_PRINCIPAL_SUSPICIOUS+NOTBACK_PRINCIPAL_SECONDARY/TOTAL_OUTSTANDING_PRINCIPAL)); + + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.EXISTING_CUSTOMERS_NUM_NORMAL, EXISTING_CUSTOMERS_NUM_NORMAL); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.EXISTING_CUSTOMERS_NUM_ATTENTION, EXISTING_CUSTOMERS_NUM_ATTENTION); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.EXISTING_CUSTOMERS_NUM_SECONDARY, EXISTING_CUSTOMERS_NUM_SECONDARY); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.EXISTING_CUSTOMERS_NUM_SUSPICIOUS, EXISTING_CUSTOMERS_NUM_SUSPICIOUS); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.EXISTING_CUSTOMERS_NUM_LOSS, EXISTING_CUSTOMERS_NUM_LOSS); + + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.NOTBACK_PRINCIPAL_NORMAL, NOTBACK_PRINCIPAL_NORMAL+""); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.NOTBACK_PRINCIPAL_ATTENTION, NOTBACK_PRINCIPAL_ATTENTION); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.NOTBACK_PRINCIPAL_SECONDARY, NOTBACK_PRINCIPAL_SECONDARY); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.NOTBACK_PRINCIPAL_SUSPICIOUS, NOTBACK_PRINCIPAL_SUSPICIOUS); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.NOTBACK_PRINCIPAL_LOSS, NOTBACK_PRINCIPAL_LOSS); + + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.FINANCING_AMOUNT_NORMAL, FINANCING_AMOUNT_NORMAL); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.FINANCING_AMOUNT_ATTENTION, FINANCING_AMOUNT_ATTENTION); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.FINANCING_AMOUNT_SECONDARY, FINANCING_AMOUNT_SECONDARY); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.FINANCING_AMOUNT_SUSPICIOUS, FINANCING_AMOUNT_SUSPICIOUS); + newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.FINANCING_AMOUNT_LOSS, FINANCING_AMOUNT_LOSS); + bm.saveObject(newBo); + } + return true; + } catch (Exception e) { + tx.rollback(); + e.printStackTrace(); + throw new Exception("入表异常!"); + } + } + //type:CORPUS type:计算本金:CORPUS 计算利息 INTEREST + //isOverdue : 是否逾期 ;true:为算出逾期对应的金额 false:为算出所有剩余未还的金额 + private double calcOverDuePrincipal(String distributorNo,String type,boolean isOverdue,String fivegrade,Transaction tx) throws Exception{ + double sumOverdueMoney = 0.00; + String sql = " SELECT sum(lrp."+type+" - (nvl(lri."+type+" + lri."+type+"_ADJUST,0))) sumovermoney " + + " FROM lc_rent_plan lrp " + + " LEFT JOIN lc_rent_income lri ON lrp.PLAN_LIST = lri.PLAN_LIST and lri.CONTRACT_ID = lrp.CONTRACT_ID " + + " left join lb_contract_info lci on lci.ID = lrp.CONTRACT_ID " + + " @fivegrade@ " + + " where lci.distributor_id = '"+distributorNo+"' @overdue@ " + + " group by lci.distributor_id "; + if(true==isOverdue){ + sql=sql.replaceAll("@overdue@", "and lrp.PLAN_DATE<'"+StringFunction.getTodayNow().substring(0, 10)+"'"); + }else{ + sql=sql.replaceAll("@overdue@", ""); + } + if(fivegrade==null||fivegrade.length() == 0){ + sql=sql.replaceAll("@fivegrade@", ""); + }else{ + sql=sql.replaceAll("@fivegrade@", "inner join LC_CALC_CONDITION_STATUS lfg on lfg.five_grade ='"+fivegrade+"' and lfg.contract_id = lci.ID"); + } + SqlObject sqlobj = new SqlObject(sql); + ASResultSet rs = tx.getASResultSet(sqlobj); + if(rs.next()){ + sumOverdueMoney = rs.getDouble("sumovermoney"); + } + return sumOverdueMoney; + } + //逾期 罚息 合计 + private int calcOverDuePenalty(String distributorNo,Transaction tx) throws Exception{ + int sumOverdueMoney = 0; + String sql = " SELECT sum(nvl(getRentPenalty(lrp.PAYMENT_NUMBER,lrp.PLAN_LIST,date_format('"+StringFunction.getTodayNow().substring(0, 10)+"', '%Y/%m/%d')),0)-nvl(lri.penalty+lri.penalty_adjust,0)) sumovermoney " + + " FROM lc_rent_plan lrp " + + " LEFT JOIN lc_rent_income lri ON lrp.PLAN_LIST = lri.PLAN_LIST and lri.CONTRACT_ID = lrp.CONTRACT_ID " + + " left join lb_contract_info lci on lci.ID = lrp.CONTRACT_ID " + + " where lci.distributor_id = '"+distributorNo+"' and lrp.PLAN_DATE<'"+StringFunction.getTodayNow().substring(0, 10)+"' " + + " group by lci.distributor_id "; + SqlObject sqlobj = new SqlObject(sql); + ASResultSet rs = tx.getASResultSet(sqlobj); + if(rs.next()){ + sumOverdueMoney = rs.getInt("sumovermoney"); + } + return sumOverdueMoney; + } + //获取存续客户数量 + private String getCustomerNumber(String distributorNo,String fivegrade,String type,Transaction tx) throws Exception{ + String customerNum = "0"; + String CleanLeaseMoney = "0"; + String sql = "select count(*) num ,SUM(lcc.CLEAN_LEASE_MONEY) CLEAN_LEASE_MONEY from lb_contract_info lci inner join LC_CALC_CONDITION_STATUS lfg on lfg.five_grade ='"+fivegrade+"' and lfg.contract_id = lci.ID left join lc_calc_condition lcc on lcc.contract_id = lci.id where lci.CONTRACT_STATUS='31' and lci.distributor_id = '"+distributorNo+"' group by lci.distributor_id"; + SqlObject sqlobj = new SqlObject(sql); + ASResultSet rs = tx.getASResultSet(sqlobj); + if(rs.next()){ + customerNum = rs.getString("num"); + CleanLeaseMoney = rs.getString("CLEAN_LEASE_MONEY"); + } + if("custnum".equals(type)){ + return customerNum; + }else{ + return CleanLeaseMoney; + } + } + + private double calcOverDueCustomerAllCorpus(String distributorNo,Transaction tx) throws Exception{ + double sumsurpcorpus = 0.00; + String sql = " select sum(lcc.CLEAN_LEASE_MONEY-t1.sumincomecorpus) sumsurpcorpus from " + + " (SELECT sum(nvl(lri.CORPUS+lri.CORPUS_ADJUST,0)) sumincomecorpus,lci.ID " + + " FROM lc_rent_plan lrp " + + " LEFT JOIN lc_rent_income lri ON lrp.PLAN_LIST = lri.PLAN_LIST and lri.CONTRACT_ID = lrp.CONTRACT_ID " + + " left join lb_contract_info lci on lci.ID = lrp.CONTRACT_ID " + + " where lrp.PLAN_DATE<'"+StringFunction.getTodayNow().substring(0, 10)+"' and (lrp.CORPUS - (nvl(lri.CORPUS + lri.CORPUS_ADJUST,0)))>0 " + + " group by lci.ID) t1 " + + " left join lc_calc_condition lcc on lcc.CONTRACT_ID = t1.ID " + + " left join lb_contract_info lciv on lciv.id = t1.ID " + + " where lciv.distributor_id = '"+distributorNo+"' " + + " group by lciv.distributor_id "; + SqlObject sqlobj = new SqlObject(sql); + ASResultSet rs = tx.getASResultSet(sqlobj); + if(rs.next()){ + sumsurpcorpus = rs.getDouble("sumsurpcorpus"); + } + return sumsurpcorpus; + } + +public String getContractId() { + return contractId; +} + +public void setContractId(String contractId) { + this.contractId = contractId; +} +public double getTOTAL_OVERDUE_PRINCIPAL() { + return TOTAL_OVERDUE_PRINCIPAL; +} +public void setTOTAL_OVERDUE_PRINCIPAL(double tOTAL_OVERDUE_PRINCIPAL) { + TOTAL_OVERDUE_PRINCIPAL = tOTAL_OVERDUE_PRINCIPAL; +} +public double getTOTAL_OVERDUE_INTEREST() { + return TOTAL_OVERDUE_INTEREST; +} +public void setTOTAL_OVERDUE_INTEREST(double tOTAL_OVERDUE_INTEREST) { + TOTAL_OVERDUE_INTEREST = tOTAL_OVERDUE_INTEREST; +} +public double getTOTAL_PENALTY() { + return TOTAL_PENALTY; +} +public void setTOTAL_PENALTY(double tOTAL_PENALTY) { + TOTAL_PENALTY = tOTAL_PENALTY; +} +@Override +public String toString() { + return "CreateFiveGradeDataAction [distributorNo=" + distributorNo + + ", TOTAL_OVERDUE_PRINCIPAL=" + TOTAL_OVERDUE_PRINCIPAL + + ", TOTAL_OVERDUE_INTEREST=" + TOTAL_OVERDUE_INTEREST + + ", TOTAL_PENALTY=" + TOTAL_PENALTY + + ", TOTAL_OUTSTANDING_PRINCIPAL=" + TOTAL_OUTSTANDING_PRINCIPAL + + ", TOTAL_OUTSTANDINGCUSTOMER_PRINCIPAL=" + + TOTAL_OUTSTANDINGCUSTOMER_PRINCIPAL + + ", NOTBACK_PRINCIPAL_NORMAL=" + NOTBACK_PRINCIPAL_NORMAL + + ", NOTBACK_PRINCIPAL_ATTENTION=" + NOTBACK_PRINCIPAL_ATTENTION + + ", NOTBACK_PRINCIPAL_SECONDARY=" + NOTBACK_PRINCIPAL_SECONDARY + + ", NOTBACK_PRINCIPAL_SUSPICIOUS=" + NOTBACK_PRINCIPAL_SUSPICIOUS + + ", NOTBACK_PRINCIPAL_LOSS=" + NOTBACK_PRINCIPAL_LOSS + + ", EXISTING_CUSTOMERS_NUM_NORMAL=" + + EXISTING_CUSTOMERS_NUM_NORMAL + + ", EXISTING_CUSTOMERS_NUM_ATTENTION=" + + EXISTING_CUSTOMERS_NUM_ATTENTION + + ", EXISTING_CUSTOMERS_NUM_SECONDARY=" + + EXISTING_CUSTOMERS_NUM_SECONDARY + + ", EXISTING_CUSTOMERS_NUM_SUSPICIOUS=" + + EXISTING_CUSTOMERS_NUM_SUSPICIOUS + + ", EXISTING_CUSTOMERS_NUM_LOSS=" + EXISTING_CUSTOMERS_NUM_LOSS + + ", FINANCING_AMOUNT_NORMAL=" + FINANCING_AMOUNT_NORMAL + + ", FINANCING_AMOUNT_ATTENTION=" + FINANCING_AMOUNT_ATTENTION + + ", FINANCING_AMOUNT_SECONDARY=" + FINANCING_AMOUNT_SECONDARY + + ", FINANCING_AMOUNT_SUSPICIOUS=" + FINANCING_AMOUNT_SUSPICIOUS + + ", FINANCING_AMOUNT_LOSS=" + FINANCING_AMOUNT_LOSS + "]"; +} +} \ No newline at end of file