渠道商五级分类逾期率错误

This commit is contained in:
tangfutang 2020-07-10 11:42:11 +08:00
parent 0c6982b0a2
commit fa90133da6
3 changed files with 34 additions and 2 deletions

View File

@ -374,6 +374,7 @@
<attribute name="FINANCING_AMOUNT_LOSS" label="融资金额损失" type="STRING" length="32"/>
<attribute name="NOTBACK_PRINCIPAL_LOSS" label="未还本金损失" type="STRING" length="32"/>
<attribute name="INPUTTIME" label="创建时间" type="STRING" length="32"/>
<attribute name="NO_DUE_CORPUS" label="逾期客户的未到期本金" type="STRING" length="32"/>
</attributes>
<manager>
<managerProperties>

View File

@ -153,4 +153,8 @@ public interface LB_FIVEGRADEDETAILED_INFO{
* 创建时间 STRING(32)<br>
*/
public static final String INPUTTIME = "INPUTTIME";
/**
* 逾期客户的未到期本金 STRING(32)<br>
*/
public static final String NO_DUE_CORPUS = "NO_DUE_CORPUS";
}

View File

@ -28,12 +28,15 @@ public class CreateFiveGradeDataAction {
double ALL_TOTAL_OUTSTANDING_PRINCIPAL;
//逾期客户未还本金合计
double TOTAL_OUTSTANDINGCUSTOMER_PRINCIPAL;
//逾期客户的未到期本金
double NO_DUE_CORPUS;
//---五级分类未还本金----
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;
@ -58,6 +61,8 @@ public class CreateFiveGradeDataAction {
TOTAL_OUTSTANDINGCUSTOMER_PRINCIPAL = this.calcOverDueCustomerAllCorpus(distributorNo, tx);
NO_DUE_CORPUS = this.getNoDueCORPUS(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);
@ -113,8 +118,10 @@ public class CreateFiveGradeDataAction {
newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.TOTAL_OUTSTANDING_PRINCIPAL, new BigDecimal(TOTAL_OUTSTANDING_PRINCIPAL).setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
// newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.OVERDUERATE, new BigDecimal(ALL_TOTAL_OUTSTANDING_PRINCIPAL==0.0?0.0:TOTAL_OUTSTANDINGCUSTOMER_PRINCIPAL/ALL_TOTAL_OUTSTANDING_PRINCIPAL).multiply(yibai).setScale(4, BigDecimal.ROUND_HALF_UP).toPlainString()+"%");
newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.OVERDUERATE, new BigDecimal(TOTAL_OUTSTANDING_PRINCIPAL==0.0?0.0:TOTAL_OUTSTANDINGCUSTOMER_PRINCIPAL/TOTAL_OUTSTANDING_PRINCIPAL).multiply(yibai).setScale(4, BigDecimal.ROUND_HALF_UP).toPlainString()+"%");
//newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.OVERDUERATE, new BigDecimal(TOTAL_OUTSTANDING_PRINCIPAL==0.0?0.0:TOTAL_OUTSTANDINGCUSTOMER_PRINCIPAL/TOTAL_OUTSTANDING_PRINCIPAL).multiply(yibai).setScale(4, BigDecimal.ROUND_HALF_UP).toPlainString()+"%");
newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.OVERDUERATE, new BigDecimal(TOTAL_OUTSTANDING_PRINCIPAL==0.0?0.0:(NO_DUE_CORPUS+TOTAL_OVERDUE_PRINCIPAL)/TOTAL_OUTSTANDING_PRINCIPAL).multiply(yibai).setScale(4, BigDecimal.ROUND_HALF_UP).toPlainString()+"%");
newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.NO_DUE_CORPUS, new BigDecimal(NO_DUE_CORPUS).setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
// newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.BADNESSRATE, new BigDecimal(ALL_TOTAL_OUTSTANDING_PRINCIPAL==0.0?0.0:(NOTBACK_PRINCIPAL_LOSS+NOTBACK_PRINCIPAL_SUSPICIOUS+NOTBACK_PRINCIPAL_SECONDARY)/ALL_TOTAL_OUTSTANDING_PRINCIPAL).multiply(yibai).setScale(4, BigDecimal.ROUND_HALF_UP).toPlainString()+"%");
newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.BADNESSRATE, new BigDecimal(TOTAL_OUTSTANDING_PRINCIPAL==0.0?0.0:(NOTBACK_PRINCIPAL_LOSS+NOTBACK_PRINCIPAL_SUSPICIOUS+NOTBACK_PRINCIPAL_SECONDARY)/TOTAL_OUTSTANDING_PRINCIPAL).multiply(yibai).setScale(4, BigDecimal.ROUND_HALF_UP).toPlainString()+"%");
newBo.setAttributeValue(LB_FIVEGRADEDETAILED_INFO.EXISTING_CUSTOMERS_NUM_NORMAL, EXISTING_CUSTOMERS_NUM_NORMAL);
@ -196,6 +203,9 @@ public class CreateFiveGradeDataAction {
+ " 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 ";
System.out.println("================================");
System.out.println("五级分类定时任务查看逾期金额sql"+sql);
System.out.println("================================");
SqlObject sqlobj = new SqlObject(sql);
ASResultSet rs = tx.getASResultSet(sqlobj);
if(rs.next()){
@ -258,6 +268,22 @@ public class CreateFiveGradeDataAction {
return sumsurpcorpus;
}
private Double getNoDueCORPUS(String distributorNo,Transaction tx) throws Exception{
double noDueCorpus = 0.00;
String sql = "SELECT SUM(IFNULL(LRP2.NO_DUE_CORPUS,0)) AS NO_DUE_CORPUS FROM LB_CONTRACT_INFO LCI "
+ "LEFT JOIN (SELECT LRP.CONTRACT_ID FROM LC_RENT_PLAN LRP LEFT JOIN "
+ "(SELECT CONTRACT_ID,PLAN_LIST,SUM(RENT) AS RENT,SUM(CORPUS) AS CORPUS FROM LC_RENT_INCOME "
+ "GROUP BY CONTRACT_ID,PLAN_LIST) LRI ON LRI.CONTRACT_ID=LRP.CONTRACT_ID AND LRI.PLAN_LIST=LRP.PLAN_LIST "
+ "WHERE (IFNULL(LRP.RENT,0)-IFNULL(LRI.RENT,0))>0 AND DATEDIFF(NOW(),LRP.PLAN_DATE)>=3 GROUP BY LRP.CONTRACT_ID )LRP1 ON LRP1.CONTRACT_ID=LCI.ID "
+ "LEFT JOIN (SELECT CONTRACT_ID,SUM(CORPUS) AS NO_DUE_CORPUS FROM LC_RENT_PLAN WHERE DATEDIFF(PLAN_DATE,NOW())>=0 GROUP BY CONTRACT_ID )LRP2 ON LRP2.CONTRACT_ID=LRP1.CONTRACT_ID "
+ "WHERE LCI.DISTRIBUTOR_ID='"+distributorNo+"' GROUP BY LCI.DISTRIBUTOR_ID ";
SqlObject sqlobj = new SqlObject(sql);
ASResultSet rs = tx.getASResultSet(sqlobj);
if(rs.next()){
noDueCorpus = rs.getDouble("sumsurpcorpus");
}
return noDueCorpus;
}
public String getContractId() {
return contractId;
}
@ -289,6 +315,7 @@ public String toString() {
+ ", TOTAL_OVERDUE_PRINCIPAL=" + TOTAL_OVERDUE_PRINCIPAL
+ ", TOTAL_OVERDUE_INTEREST=" + TOTAL_OVERDUE_INTEREST
+ ", TOTAL_PENALTY=" + TOTAL_PENALTY
+ ", NO_DUE_CORPUS="+NO_DUE_CORPUS
+ ", TOTAL_OUTSTANDING_PRINCIPAL=" + TOTAL_OUTSTANDING_PRINCIPAL
+ ", TOTAL_OUTSTANDINGCUSTOMER_PRINCIPAL="
+ TOTAL_OUTSTANDINGCUSTOMER_PRINCIPAL