diff --git a/app.irbs/build.gradle b/app.irbs/build.gradle index 2262b7b..ae703f0 100644 --- a/app.irbs/build.gradle +++ b/app.irbs/build.gradle @@ -25,7 +25,7 @@ dependencies { "io.sc:io.sc.engine.rule.client:${platform_version}", "io.sc:io.sc.engine.rule.client.spring:${platform_version}", "io.sc:io.sc.engine.rule.core:${platform_version}", -// "io.sc:io.sc.engine.rule.server:${platform_version}", + "io.sc:io.sc.engine.rule.server:${platform_version}", "io.sc:io.sc.engine.rule.sample:${platform_version}", "io.sc:io.sc.engine.st:${platform_version}", @@ -41,7 +41,7 @@ dependencies { project(":irbs.reports"), project(":irbs.defaultManager"), project(":irbs.riskExposure"), - project(":irbs.deptRating") + project(":irbs.deptRating"), ) } diff --git a/app.irbs/src/main/resources/liquibase/IRBS_20240627_DATA.xml b/app.irbs/src/main/resources/liquibase/IRBS_20240627_DATA.xml index fe28de1..d0a848f 100644 --- a/app.irbs/src/main/resources/liquibase/IRBS_20240627_DATA.xml +++ b/app.irbs/src/main/resources/liquibase/IRBS_20240627_DATA.xml @@ -112,15 +112,6 @@ - - - - - - - - - @@ -142,5 +133,8 @@ + + + \ No newline at end of file diff --git a/app.irbs/src/main/resources/liquibase/data/irbs/NS_R_CFG_RPT_SQL.csv b/app.irbs/src/main/resources/liquibase/data/irbs/NS_R_CFG_RPT_SQL.csv index bc6b86e..6471200 100644 --- a/app.irbs/src/main/resources/liquibase/data/irbs/NS_R_CFG_RPT_SQL.csv +++ b/app.irbs/src/main/resources/liquibase/data/irbs/NS_R_CFG_RPT_SQL.csv @@ -916,3 +916,916 @@ FROM ( AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE' GROUP BY V.EFFECTIVE_MONTH ) T ORDER BY T.EFFECTIVE_MONTH",,,,,, +"12","rptRatingDistribution","客户评级分布报表","DM DBMS","WITH A AS ( + SELECT + T.ORIGINAL_LEVEL AS FINAL_LEVEL + \,T.ORDER_NUM + \,COUNT(1) AS CUST_CNT + \,SUM(IFNULL(T.BORR_BAL\,0)) AS BORR_BAL + \,SUM(CASE WHEN T.EFFECTIVE_MONTH = CAST( DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) THEN 1 ELSE 0 END) AS CURR_INCT_CNT + \,SUM(CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END) AS DEF_CUST_CNT + FROM ( + SELECT + V.CUST_NO\, + V.ORIGINAL_LEVEL\, + V.ORDER_NUM\, + V.FINAL_LEVEL\, + V.BORR_BAL\, + V.EFFECTIVE_MONTH + FROM VIEW_RPT_BASE_INFO V + WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME + AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) + AND V.MODEL_CODE = '#MODEL_CODE' + AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE' + ) T GROUP BY T.ORIGINAL_LEVEL\, T.ORDER_NUM +)\, +B AS ( + SELECT + CAST(SUM(CUST_CNT) AS DECIMAL) AS TOTAL_CUST_CNT + \,CAST(SUM(BORR_BAL) AS DECIMAL) AS TOTAL_BORR_BAL + \,CAST(SUM(CURR_INCT_CNT) AS DECIMAL) AS TOTAL_CURR_INCT_CNT + \,CAST(SUM(DEF_CUST_CNT) AS DECIMAL) AS TOTAL_DEF_CUST_CNT + FROM A +) +SELECT + A.FINAL_LEVEL\, + A.CUST_CNT\, + ROUND(CASE WHEN A.CUST_CNT = 0 THEN 0 ELSE A.CUST_CNT / B.TOTAL_CUST_CNT END,4) AS CUST_RATIO\, + A.BORR_BAL\, + ROUND(CASE WHEN A.BORR_BAL = 0 THEN 0 ELSE A.BORR_BAL / B.TOTAL_BORR_BAL END,4) AS BORR_BAL_RATIO\, + A.CURR_INCT_CNT\, + ROUND(CASE WHEN A.CURR_INCT_CNT = 0 THEN 0 ELSE A.CURR_INCT_CNT / B.TOTAL_CURR_INCT_CNT END,4) AS CURR_INCT_RATIO\, + A.DEF_CUST_CNT\, + ROUND(CASE WHEN A.DEF_CUST_CNT = 0 THEN 0 ELSE A.DEF_CUST_CNT / B.TOTAL_DEF_CUST_CNT END,4) AS DEF_CUST_RATIO +FROM A LEFT JOIN B ON 1 = 1 +ORDER BY A.ORDER_NUM",,,,,, +"21","rptRatingAdjust","客户评级特例调整情况报表","DM DBMS","SELECT + T.EFFECTIVE_MONTH\, + T.CUST_CNT\, + T.ADJ_CNT\, + ROUND(CASE WHEN T.ADJ_CNT = 0 THEN 0 ELSE T.ADJ_CNT/T.CUST_CNT END,4) AS ADJ_RATIO\, + ROUND(CASE WHEN ONE_LVL_CNT = 0 THEN 0 ELSE ONE_LVL_CNT/T.CUST_CNT END,4) AS ONE_LVL_RATIO\, + ROUND(CASE WHEN TWO_LVL_CNT = 0 THEN 0 ELSE TWO_LVL_CNT/T.CUST_CNT END,4) AS TWO_LVL_RATIO\, + ROUND(CASE WHEN THREE_LVL_CNT = 0 THEN 0 ELSE THREE_LVL_CNT/T.CUST_CNT END,4) AS THREE_LVL_RATIO\, + ROUND(CASE WHEN THREE_MORE_LVL_CNT = 0 THEN 0 ELSE THREE_MORE_LVL_CNT/T.CUST_CNT END,4) AS THREE_MORE_LVL_RATIO +FROM ( + SELECT + V.EFFECTIVE_MONTH\, + CAST(COUNT(V.CUST_NO) AS DECIMAL) AS CUST_CNT\, + CAST(SUM(CASE WHEN V.ADJ_LEVEL <> V.INIT_LEVEL THEN 1 ELSE 0 END) AS DECIMAL) AS ADJ_CNT\, + CAST(SUM(CASE WHEN ABS(V.ADJ_ORDER_NUM-V.INIT_ORDER_NUM) = 1 THEN 1 ELSE 0 END) AS DECIMAL) AS ONE_LVL_CNT\, + CAST(SUM(CASE WHEN ABS(V.ADJ_ORDER_NUM-V.INIT_ORDER_NUM) = 2 THEN 1 ELSE 0 END) AS DECIMAL) AS TWO_LVL_CNT\, + CAST(SUM(CASE WHEN ABS(V.ADJ_ORDER_NUM-V.INIT_ORDER_NUM) = 3 THEN 1 ELSE 0 END) AS DECIMAL) AS THREE_LVL_CNT\, + CAST(SUM(CASE WHEN ABS(V.ADJ_ORDER_NUM-V.INIT_ORDER_NUM) > 3 THEN 1 ELSE 0 END) AS DECIMAL) AS THREE_MORE_LVL_CNT + FROM VIEW_RPT_BASE_INFO V + WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME + AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\,'%Y%m') AS DECIMAL) + AND V.MODEL_CODE = '#MODEL_CODE' + AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE' + GROUP BY V.EFFECTIVE_MONTH +) T ORDER BY T.EFFECTIVE_MONTH",,,,,, +"22","rptModelMonitorBinomialCheck","模型审慎性监控报表","DM DBMS","WITH A AS( + SELECT + TT.FINAL_LEVEL\, + TT.ORDER_NUM\, + TT.PD\, + TT.MODEL_CODE\, + TT.EFFECTIVE_Y\, + TT.CUST_CNT\, + TT.DEF_CNT\, + TT.NORMAL_CNT\, + TT.ACT_DEF_RATIO\, + CASE WHEN TT.DEF_CNT < TT.DOWN_AREA_99 OR TT.DEF_CNT > TT.UP_AREA_99 THEN '否' + ELSE '是' END AS BINOMIAL + FROM ( + SELECT + FINAL_LEVEL\, + ORDER_NUM\, + PD\, + MODEL_CODE\, + EFFECTIVE_Y\, + CUST_CNT\, + DEF_CNT\, + NORMAL_CNT\, + ACT_DEF_RATIO\, + CUST_CNT*PD AS AVG_K\, + SQRT(CUST_CNT*PD*(1-PD)) AS DEVI_K\, + CASE WHEN (ROUND(CUST_CNT*PD-2.576*SQRT(CUST_CNT*PD*(1-PD))\,0)) < 0 THEN 0 + ELSE (ROUND(CUST_CNT*PD-2.576*SQRT(CUST_CNT*PD*(1-PD))\,0)) END AS DOWN_AREA_99\, + ROUND(CUST_CNT*PD+2.576*SQRT(CUST_CNT*PD*(1-PD))\,0) AS UP_AREA_99 + FROM ( + SELECT + V.ORIGINAL_LEVEL AS FINAL_LEVEL\, + V.ORDER_NUM\, + V.PD\, + V.MODEL_CODE\, + V.EFFECTIVE_Y\, + COUNT(V.CUST_NO) AS CUST_CNT\, + SUM(CASE WHEN V.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END) AS DEF_CNT\, + COUNT(V.CUST_NO)-SUM(CASE WHEN V.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END) AS NORMAL_CNT\, + IFNULL(SUM(CASE WHEN V.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END)/COUNT(V.CUST_NO)\,0) AS ACT_DEF_RATIO + FROM VIEW_RPT_BASE_INFO V + WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME + AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\,'%Y%m') AS DECIMAL) + AND V.MODEL_CODE = '#MODEL_CODE' + GROUP BY V.ORIGINAL_LEVEL\,V.ORDER_NUM\,V.PD\,V.MODEL_CODE\,V.EFFECTIVE_Y + ORDER BY V.EFFECTIVE_Y\,V.ORDER_NUM + ) T + ) TT ORDER BY TT.EFFECTIVE_Y\,TT.ORDER_NUM +)\, +B AS ( + SELECT + A.EFFECTIVE_Y\, + SUM(CASE WHEN A.BINOMIAL='是' THEN 1 ELSE 0 END) AS PASS_LVL_NUM + FROM A GROUP BY A.EFFECTIVE_Y +)\, +C AS ( + SELECT + A.EFFECTIVE_Y\, + SUM(NORMAL_CNT) NORMAL_CNT\, + SUM(DEF_CNT) DEF_CNT\, + SUM(CUST_CNT) CUST_CNT + FROM A + GROUP BY A.EFFECTIVE_Y +) +SELECT + B.EFFECTIVE_Y\, + CASE WHEN B.PASS_LVL_NUM=14 THEN '各级别均通过' + WHEN B.PASS_LVL_NUM=13 THEN '1个级别未通过' + WHEN B.PASS_LVL_NUM=12 THEN '2个级别未通过' + WHEN B.PASS_LVL_NUM=11 THEN '3个级别未通过' + WHEN B.PASS_LVL_NUM=10 THEN '4个级别未通过' + WHEN B.PASS_LVL_NUM=9 THEN '5个级别未通过' + WHEN B.PASS_LVL_NUM=8 THEN '6个级别未通过' + ELSE '6个以上级别未通过' END AS BINOMIAL_CHECK\, + CASE WHEN B.PASS_LVL_NUM>=11 THEN '低度' + WHEN B.PASS_LVL_NUM>=8 THEN '中度' + ELSE '高度' END AS RISK_LEVEL\, + C.NORMAL_CNT\,C.DEF_CNT\,C.CUST_CNT +FROM B LEFT JOIN C ON C.EFFECTIVE_Y = B.EFFECTIVE_Y",,,,,, +"13","rptRatingModelFocusDist","客户评级模型敞口集中度分布报表","DM DBMS","WITH A AS ( + SELECT + T.MODEL_CODE\, + T.MODEL_NAME\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'C' THEN 1 ELSE 0 END ) AS C_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT + FROM ( + SELECT + V.FINAL_LEVEL\, + V.MODEL_CODE\, + V.MODEL_NAME + FROM VIEW_RPT_BASE_INFO V + WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME + AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) + AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE' + ) T GROUP BY T.MODEL_CODE\, T.MODEL_NAME +)\, +B AS ( + SELECT + CAST(COUNT(CUST_NO) AS DECIMAL) AS TOTAL_CUST_CNT + FROM VIEW_RPT_BASE_INFO V + WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME + AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) + AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE' +) +SELECT + A.MODEL_NAME\, + A.AAA_CNT\, + ROUND(CASE WHEN A.AAA_CNT=0 THEN 0 ELSE A.AAA_CNT/B.TOTAL_CUST_CNT END,4) AS AAA_RATIO\, + A.AA_CNT\, + ROUND(CASE WHEN A.AA_CNT=0 THEN 0 ELSE A.AA_CNT/B.TOTAL_CUST_CNT END,4) AS AA_RATIO\, + A.A_PLUS_CNT\, + ROUND(CASE WHEN A.A_PLUS_CNT=0 THEN 0 ELSE A.A_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS A_PLUS_RATIO\, + A.A_CNT\, + ROUND(CASE WHEN A.A_CNT=0 THEN 0 ELSE A.A_CNT/B.TOTAL_CUST_CNT END,4) AS A_RATIO\, + A.A_MINUS_CNT\, + ROUND(CASE WHEN A.A_MINUS_CNT=0 THEN 0 ELSE A.A_MINUS_CNT/B.TOTAL_CUST_CNT END,4) AS A_MINUS_RATIO\, + A.BBB_CNT\, + ROUND(CASE WHEN A.BBB_CNT=0 THEN 0 ELSE A.BBB_CNT/B.TOTAL_CUST_CNT END,4) AS BBB_RATIO\, + A.BB_PLUS_CNT\, + ROUND(CASE WHEN A.BB_PLUS_CNT=0 THEN 0 ELSE A.BB_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS BB_PLUS_RATIO\, + A.BB_CNT\, + ROUND(CASE WHEN A.BB_CNT=0 THEN 0 ELSE A.BB_CNT/B.TOTAL_CUST_CNT END,4) AS BB_RATIO\, + A.BB_MINUS_CNT\, + ROUND(CASE WHEN A.BB_MINUS_CNT=0 THEN 0 ELSE A.BB_MINUS_CNT/B.TOTAL_CUST_CNT END,4) AS BB_MINUS_RATIO\, + A.B_PLUS_CNT\, + ROUND(CASE WHEN A.B_PLUS_CNT=0 THEN 0 ELSE A.B_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS B_PLUS_RATIO\, + A.B_CNT\, + ROUND(CASE WHEN A.B_CNT=0 THEN 0 ELSE A.B_CNT/B.TOTAL_CUST_CNT END,4) AS B_RATIO\, + A.CCC_CNT\, + ROUND(CASE WHEN A.CCC_CNT=0 THEN 0 ELSE A.CCC_CNT/B.TOTAL_CUST_CNT END,4) AS CCC_RATIO\, + A.CC_CNT\, + ROUND(CASE WHEN A.CC_CNT=0 THEN 0 ELSE A.CC_CNT/B.TOTAL_CUST_CNT END,4) AS CC_RATIO\, + A.C_CNT\, + ROUND(CASE WHEN A.C_CNT=0 THEN 0 ELSE A.C_CNT/B.TOTAL_CUST_CNT END,4) AS C_RATIO\, + A.D_CNT\, + ROUND(CASE WHEN A.D_CNT=0 THEN 0 ELSE A.D_CNT/B.TOTAL_CUST_CNT END,4) AS D_RATIO +FROM A LEFT JOIN B ON 1=1 +ORDER BY A.MODEL_CODE",,,,,, +"14","rptRatingOrgFocusDist","客户评级分支机构集中度分布报表","DM DBMS","WITH A AS ( + SELECT + T.MANAGER_ORG_CODE\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'C' THEN 1 ELSE 0 END ) AS C_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT + FROM ( + SELECT + V.FINAL_LEVEL\, + V.MANAGER_ORG_CODE + FROM VIEW_RPT_BASE_INFO V + WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME + AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) + AND V.MODEL_CODE = '#MODEL_CODE' + ) T GROUP BY T.MANAGER_ORG_CODE +)\, +B AS ( + SELECT + CAST(COUNT(CUST_NO) AS DECIMAL) AS TOTAL_CUST_CNT + FROM VIEW_RPT_BASE_INFO V + WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME + AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) + AND V.MODEL_CODE = '#MODEL_CODE' +) +SELECT + NVL(O.FD_NAME, A.MANAGER_ORG_CODE) AS MANAGER_ORG_NAME\, + A.AAA_CNT\, + ROUND(CASE WHEN A.AAA_CNT=0 THEN 0 ELSE A.AAA_CNT/B.TOTAL_CUST_CNT END,4) AS AAA_RATIO\, + A.AA_CNT\, + ROUND(CASE WHEN A.AA_CNT=0 THEN 0 ELSE A.AA_CNT/B.TOTAL_CUST_CNT END,4) AS AA_RATIO\, + A.A_PLUS_CNT\, + ROUND(CASE WHEN A.A_PLUS_CNT=0 THEN 0 ELSE A.A_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS A_PLUS_RATIO\, + A.A_CNT\, + ROUND(CASE WHEN A.A_CNT=0 THEN 0 ELSE A.A_CNT/B.TOTAL_CUST_CNT END,4) AS A_RATIO\, + A.A_MINUS_CNT\, + ROUND(CASE WHEN A.A_MINUS_CNT=0 THEN 0 ELSE A.A_MINUS_CNT/B.TOTAL_CUST_CNT END,4) AS A_MINUS_RATIO\, + A.BBB_CNT\, + ROUND(CASE WHEN A.BBB_CNT=0 THEN 0 ELSE A.BBB_CNT/B.TOTAL_CUST_CNT END,4) AS BBB_RATIO\, + A.BB_PLUS_CNT\, + ROUND(CASE WHEN A.BB_PLUS_CNT=0 THEN 0 ELSE A.BB_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS BB_PLUS_RATIO\, + A.BB_CNT\, + ROUND(CASE WHEN A.BB_CNT=0 THEN 0 ELSE A.BB_CNT/B.TOTAL_CUST_CNT END,4) AS BB_RATIO\, + A.BB_MINUS_CNT\, + ROUND(CASE WHEN A.BB_MINUS_CNT=0 THEN 0 ELSE A.BB_MINUS_CNT/B.TOTAL_CUST_CNT END,4) AS BB_MINUS_RATIO\, + A.B_PLUS_CNT\, + ROUND(CASE WHEN A.B_PLUS_CNT=0 THEN 0 ELSE A.B_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS B_PLUS_RATIO\, + A.B_CNT\, + ROUND(CASE WHEN A.B_CNT=0 THEN 0 ELSE A.B_CNT/B.TOTAL_CUST_CNT END,4) AS B_RATIO\, + A.CCC_CNT\, + ROUND(CASE WHEN A.CCC_CNT=0 THEN 0 ELSE A.CCC_CNT/B.TOTAL_CUST_CNT END,4) AS CCC_RATIO\, + A.CC_CNT\, + ROUND(CASE WHEN A.CC_CNT=0 THEN 0 ELSE A.CC_CNT/B.TOTAL_CUST_CNT END,4) AS CC_RATIO\, + A.C_CNT\, + ROUND(CASE WHEN A.C_CNT=0 THEN 0 ELSE A.C_CNT/B.TOTAL_CUST_CNT END,4) AS C_RATIO\, + A.D_CNT\, + ROUND(CASE WHEN A.D_CNT=0 THEN 0 ELSE A.D_CNT/B.TOTAL_CUST_CNT END,4) AS D_RATIO +FROM A LEFT JOIN B ON 1=1 +LEFT JOIN FR_AA_ORG O ON O.FD_CODE = A.MANAGER_ORG_CODE +ORDER BY A.MANAGER_ORG_CODE",,,,,, +"15","rptRatingIndustryFocusDist","客户评级行业集中度分布报表","DM DBMS","WITH A AS ( + SELECT + T.INDUSTRY_CODE\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'C' THEN 1 ELSE 0 END ) AS C_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT + FROM ( + SELECT + V.FINAL_LEVEL\, + V.INDUSTRY_CODE + FROM VIEW_RPT_BASE_INFO V + WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME + AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) + AND B.MODEL_CODE='#MODEL_CODE' + AND B.MANAGER_ORG_CODE='#MANAGER_ORG_CODE' + ) T GROUP BY T.INDUSTRY_CODE +)\, +B AS ( + SELECT + CAST(COUNT(CUST_NO) AS DECIMAL) AS TOTAL_CUST_CNT + FROM VIEW_RPT_BASE_INFO V + WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME + AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) + AND B.MODEL_CODE='#MODEL_CODE' + AND B.MANAGER_ORG_CODE='#MANAGER_ORG_CODE' +) +SELECT + I.INDUSTRY_NAME\, + A.AAA_CNT\, + ROUND(CASE WHEN A.AAA_CNT=0 THEN 0 ELSE A.AAA_CNT/B.TOTAL_CUST_CNT END,4) AS AAA_RATIO\, + A.AA_CNT\, + ROUND(CASE WHEN A.AA_CNT=0 THEN 0 ELSE A.AA_CNT/B.TOTAL_CUST_CNT END,4) AS AA_RATIO\, + A.A_PLUS_CNT\, + ROUND(CASE WHEN A.A_PLUS_CNT=0 THEN 0 ELSE A.A_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS A_PLUS_RATIO\, + A.A_CNT\, + ROUND(CASE WHEN A.A_CNT=0 THEN 0 ELSE A.A_CNT/B.TOTAL_CUST_CNT END,4) AS A_RATIO\, + A.A_MINUS_CNT\, + ROUND(CASE WHEN A.A_MINUS_CNT=0 THEN 0 ELSE A.A_MINUS_CNT/B.TOTAL_CUST_CNT END,4) AS A_MINUS_RATIO\, + A.BBB_CNT\, + ROUND(CASE WHEN A.BBB_CNT=0 THEN 0 ELSE A.BBB_CNT/B.TOTAL_CUST_CNT END,4) AS BBB_RATIO\, + A.BB_PLUS_CNT\, + ROUND(CASE WHEN A.BB_PLUS_CNT=0 THEN 0 ELSE A.BB_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS BB_PLUS_RATIO\, + A.BB_CNT\, + ROUND(CASE WHEN A.BB_CNT=0 THEN 0 ELSE A.BB_CNT/B.TOTAL_CUST_CNT END,4) AS BB_RATIO\, + A.BB_MINUS_CNT\, + ROUND(CASE WHEN A.BB_MINUS_CNT=0 THEN 0 ELSE A.BB_MINUS_CNT/B.TOTAL_CUST_CNT END,4) AS BB_MINUS_RATIO\, + A.B_PLUS_CNT\, + ROUND(CASE WHEN A.B_PLUS_CNT=0 THEN 0 ELSE A.B_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS B_PLUS_RATIO\, + A.B_CNT\, + ROUND(CASE WHEN A.B_CNT=0 THEN 0 ELSE A.B_CNT/B.TOTAL_CUST_CNT END,4) AS B_RATIO\, + A.CCC_CNT\, + ROUND(CASE WHEN A.CCC_CNT=0 THEN 0 ELSE A.CCC_CNT/B.TOTAL_CUST_CNT END,4) AS CCC_RATIO\, + A.CC_CNT\, + ROUND(CASE WHEN A.CC_CNT=0 THEN 0 ELSE A.CC_CNT/B.TOTAL_CUST_CNT END,4) AS CC_RATIO\, + A.C_CNT\, + ROUND(CASE WHEN A.C_CNT=0 THEN 0 ELSE A.C_CNT/B.TOTAL_CUST_CNT END,4) AS C_RATIO\, + A.D_CNT\, + ROUND(CASE WHEN A.D_CNT=0 THEN 0 ELSE A.D_CNT/B.TOTAL_CUST_CNT END,4) AS D_RATIO +FROM A LEFT JOIN B ON 1=1 +LEFT JOIN ( + SELECT + 'A' AS INDUSTRY_CODE\, + '农林牧渔' AS INDUSTRY_NAME\, + 1 AS ORDER_NUM UNION + SELECT + 'B' AS INDUSTRY_CODE\, + '采矿业' AS INDUSTRY_NAME\, + 2 AS ORDER_NUM UNION + SELECT + 'C' AS INDUSTRY_CODE\, + '制造业' AS INDUSTRY_NAME\, + 3 AS ORDER_NUM UNION + SELECT + 'D' AS INDUSTRY_CODE\, + '电力、燃气及水的生产和供应业' AS INDUSTRY_NAME\, + 4 AS ORDER_NUM UNION + SELECT + 'E' AS INDUSTRY_CODE\, + '建筑业' AS INDUSTRY_NAME\, + 5 AS ORDER_NUM UNION + SELECT + 'F' AS INDUSTRY_CODE\, + '交通运输、仓储及邮政业' AS INDUSTRY_NAME\, + 6 AS ORDER_NUM UNION + SELECT + 'G' AS INDUSTRY_CODE\, + '信息传输、计算机服务和软件业' AS INDUSTRY_NAME\, + 7 AS ORDER_NUM UNION + SELECT + 'H' AS INDUSTRY_CODE\, + '批发和零售业' AS INDUSTRY_NAME\, + 8 AS ORDER_NUM UNION + SELECT + 'I' AS INDUSTRY_CODE\, + '住宿和餐饮业' AS INDUSTRY_NAME\, + 9 AS ORDER_NUM UNION + SELECT + 'J' AS INDUSTRY_CODE\, + '金融业' AS INDUSTRY_NAME\, + 10 AS ORDER_NUM UNION + SELECT + 'K' AS INDUSTRY_CODE\, + '房地产业' AS INDUSTRY_NAME\, + 11 AS ORDER_NUM UNION + SELECT + 'L' AS INDUSTRY_CODE\, + '租赁和商务服务业' AS INDUSTRY_NAME\, + 12 AS ORDER_NUM UNION + SELECT + 'M' AS INDUSTRY_CODE\, + '科学研究、技术服务和地质勘查业' AS INDUSTRY_NAME\, + 13 AS ORDER_NUM UNION + SELECT + 'N' AS INDUSTRY_CODE\, + '水利、环境和公共设施管理业' AS INDUSTRY_NAME\, + 14 AS ORDER_NUM UNION + SELECT + 'O' AS INDUSTRY_CODE\, + '居民服务和其他服务业' AS INDUSTRY_NAME\, + 15 AS ORDER_NUM UNION + SELECT + 'P' AS INDUSTRY_CODE\, + '教育' AS INDUSTRY_NAME\, + 16 AS ORDER_NUM UNION + SELECT + 'Q' AS INDUSTRY_CODE\, + '卫生、社会保障和社会服务业' AS INDUSTRY_NAME\, + 17 AS ORDER_NUM UNION + SELECT + 'R' AS INDUSTRY_CODE\, + '文化、体育和娱乐业' AS INDUSTRY_NAME\, + 18 AS ORDER_NUM UNION + SELECT + 'S' AS INDUSTRY_CODE\, + '公共管理和社会组织' AS INDUSTRY_NAME\, + 19 AS ORDER_NUM UNION + SELECT + 'T' AS INDUSTRY_CODE\, + '国际组织' AS INDUSTRY_NAME\, + 20 AS ORDER_NUM UNION + SELECT + 'X' AS INDUSTRY_CODE\, + '未知行业' AS INDUSTRY_NAME\, + 21 AS ORDER_NUM +) I ON I.INDUSTRY_CODE = A.INDUSTRY_CODE +ORDER BY I.ORDER_NUM",,,,,, +"16","rptRatingNumberMigrate","客户评级迁移报表(客户数)","DM DBMS","WITH CURR AS ( + SELECT + R.CUST_NO\, + R.FINAL_LEVEL\, + R.ORDER_NUM\, + R.EFFECTIVE_MONTH\, + R.RATING_STATUS + FROM + VIEW_RPT_BASE_INFO R + WHERE R.EFFECTIVE_TIME = R.MAX_EFFECTIVE_TIME + AND R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -12 )\, '%Y%m' ) AS DECIMAL ) + AND CAST(DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' ) AS DECIMAL) + AND R.MODEL_CODE='#MODEL_CODE' + AND R.MANAGER_ORG_CODE='#MANAGER_ORG_CODE' +)\, +LAST_R AS ( + SELECT + R.CUST_NO\, + R.FINAL_LEVEL\, + R.ORDER_NUM\, + R.EFFECTIVE_MONTH\, + R.RATING_STATUS + FROM VIEW_RPT_BASE_INFO R + WHERE R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -24 )\, '%Y%m' ) AS DECIMAL) + AND CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -13 )\, '%Y%m' ) AS DECIMAL) + AND R.MODEL_CODE='#MODEL_CODE' + AND R.MANAGER_ORG_CODE='#MANAGER_ORG_CODE' +)\, +NEW_R AS ( + SELECT + '新增客户' AS FINAL_LEVEL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'C' THEN 1 ELSE 0 END ) AS C_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT\, + 0 AS NOT_RATING_CNT\,0 AS UP_CNT\,0 AS DOWN_CNT\,0 AS UP_RATIO\, + 0 AS DOWN_RATIO\,0 AS CHG_EXPONENT + FROM CURR WHERE NOT EXISTS ( SELECT 1 FROM LAST_R WHERE LAST_R.CUST_NO = CURR.CUST_NO ) +)\, +NR AS ( + SELECT + LAST_R.FINAL_LEVEL\, + CAST(COUNT( 1 ) AS DECIMAL) AS NOT_RATING_CNT + FROM LAST_R + WHERE NOT EXISTS ( SELECT 1 FROM CURR WHERE CURR.CUST_NO = LAST_R.CUST_NO ) + GROUP BY LAST_R.FINAL_LEVEL +)\, +CHG AS ( + SELECT + CAST(SUM( CASE WHEN CURR.FINAL_LEVEL <> LAST_R.FINAL_LEVEL THEN 1 ELSE 0 END ) AS DECIMAL) AS CHG_CNT + FROM CURR LEFT JOIN LAST_R ON LAST_R.CUST_NO = CURR.CUST_NO +) + + + +SELECT + * +FROM + ( + SELECT + S.SCALE_LEVEL AS FINAL_LEVEL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'C' THEN 1 ELSE 0 END ) AS C_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT\, + IFNULL( NR.NOT_RATING_CNT\, 0 ) AS NOT_RATING_CNT\, + SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN 1 ELSE 0 END ) AS UP_CNT\, + SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN 1 ELSE 0 END ) AS DOWN_CNT\, + CASE WHEN CHG.CHG_CNT = 0 THEN 0 + ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT + END AS UP_RATIO\, + CASE WHEN CHG.CHG_CNT = 0 THEN 0 + ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT + END AS DOWN_RATIO\,( + CASE + + WHEN CHG.CHG_CNT = 0 THEN + 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT + END + )-( + CASE + + WHEN CHG.CHG_CNT = 0 THEN + 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT + END + ) AS CHG_EXPONENT + FROM + NS_CFG_MAIN_SCALE S + LEFT JOIN LAST_R ON LAST_R.FINAL_LEVEL = S.SCALE_LEVEL + LEFT JOIN CURR ON CURR.CUST_NO = LAST_R.CUST_NO + LEFT JOIN NR ON NR.FINAL_LEVEL = S.SCALE_LEVEL + LEFT JOIN CHG ON 1 = 1 + GROUP BY + S.SCALE_LEVEL\, + S.ORDER_NUM\, + NR.NOT_RATING_CNT\, + CHG.CHG_CNT + ORDER BY + S.ORDER_NUM + ) A UNION + SELECT + * + FROM + NEW_R",,,,,, +"17","rptRatingLoanBalanceMigrate","客户评级迁移报表(信贷余额)","DM DBMS","WITH CURR AS ( + SELECT + R.CUST_NO\, + R.FINAL_LEVEL\, + R.ORDER_NUM\, + R.EFFECTIVE_MONTH\, + R.RATING_STATUS\, + R.BORR_BAL + FROM + VIEW_RPT_BASE_INFO R + WHERE R.EFFECTIVE_TIME = R.MAX_EFFECTIVE_TIME + AND R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -12 )\, '%Y%m' ) AS DECIMAL ) + AND CAST(DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' ) AS DECIMAL) + AND R.MODEL_CODE='#MODEL_CODE' + AND R.MANAGER_ORG_CODE='#MANAGER_ORG_CODE' +)\, +LAST_R AS ( + SELECT + R.CUST_NO\, + R.FINAL_LEVEL\, + R.ORDER_NUM\, + R.EFFECTIVE_MONTH\, + R.RATING_STATUS\, + R.BORR_BAL + FROM VIEW_RPT_BASE_INFO R + WHERE R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -24 )\, '%Y%m' ) AS DECIMAL) + AND CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -13 )\, '%Y%m' ) AS DECIMAL) + AND R.MODEL_CODE='#MODEL_CODE' + AND R.MANAGER_ORG_CODE='#MANAGER_ORG_CODE' +)\, +NEW_R AS ( + SELECT + '新增客户' AS FINAL_LEVEL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AAA_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_PLUS_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_MINUS_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BBB_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_PLUS_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_MINUS_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'B+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_PLUS_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CCC_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CC_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'C' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS C_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS D_BAL\, + 0 AS NOT_RATING_BAL\,0 AS UP_BAL\,0 AS DOWN_BAL\,0 AS UP_RATIO\,0 AS DOWN_RATIO\,0 AS CHG_EXPONENT + FROM CURR + WHERE NOT EXISTS ( SELECT 1 FROM LAST_R WHERE LAST_R.CUST_NO = CURR.CUST_NO ) +)\, +NR AS ( + SELECT + LAST_R.FINAL_LEVEL\,SUM(IFNULL( LAST_R.BORR_BAL\, 0 )) AS NOT_RATING_BAL + FROM LAST_R + WHERE NOT EXISTS ( SELECT 1 FROM CURR WHERE CURR.CUST_NO = LAST_R.CUST_NO ) + GROUP BY LAST_R.FINAL_LEVEL +)\, +CHG AS ( + SELECT + SUM( CASE WHEN CURR.FINAL_LEVEL <> LAST_R.FINAL_LEVEL THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CHG_BAL + FROM CURR LEFT JOIN LAST_R ON LAST_R.CUST_NO = CURR.CUST_NO +) +SELECT * FROM ( + SELECT + S.SCALE_LEVEL AS FINAL_LEVEL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AAA_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_PLUS_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_MINUS_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BBB_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_PLUS_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_MINUS_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'B+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_PLUS_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CCC_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CC_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'C' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS C_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS D_BAL\, + NR.NOT_RATING_BAL\, + SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS UP_BAL\, + SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS DOWN_BAL\, + CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL + END AS UP_RATIO\, + CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL + END AS DOWN_RATIO\,( + CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL + END)-(CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL END ) AS CHG_EXPONENT + FROM NS_CFG_MAIN_SCALE S + LEFT JOIN LAST_R ON LAST_R.FINAL_LEVEL = S.SCALE_LEVEL + LEFT JOIN CURR ON CURR.CUST_NO = LAST_R.CUST_NO + LEFT JOIN NR ON NR.FINAL_LEVEL = S.SCALE_LEVEL + LEFT JOIN CHG ON 1 = 1 + GROUP BY S.SCALE_LEVEL\,S.ORDER_NUM\,NOT_RATING_BAL\,CHG.CHG_BAL + ORDER BY S.ORDER_NUM ) A +UNION +SELECT * FROM NEW_R",,,,,, +"18","rptModelMonitorDiff","模型区分能力监控报表","DM DBMS","WITH A AS ( + SELECT 0 AS DOWN\, 10 AS UP\, 1 AS SCORE_AREA UNION + SELECT 10 AS DOWN\, 20 AS UP\, 2 AS SCORE_AREA UNION + SELECT 20 AS DOWN\, 30 AS UP\, 3 AS SCORE_AREA UNION + SELECT 30 AS DOWN\, 40 AS UP\, 4 AS SCORE_AREA UNION + SELECT 40 AS DOWN\, 50 AS UP\, 5 AS SCORE_AREA UNION + SELECT 50 AS DOWN\, 60 AS UP\, 6 AS SCORE_AREA UNION + SELECT 60 AS DOWN\, 70 AS UP\, 7 AS SCORE_AREA UNION + SELECT 70 AS DOWN\, 80 AS UP\, 8 AS SCORE_AREA UNION + SELECT 80 AS DOWN\, 90 AS UP\, 9 AS SCORE_AREA UNION + SELECT 90 AS DOWN\, 100 AS UP\, 10 AS SCORE_AREA +)\, +B AS ( + SELECT + V.EFFECTIVE_Q\, + A.SCORE_AREA\, + COUNT( V.FINAL_LEVEL ) AS CUST_CNT\, + SUM( CASE WHEN V.FINAL_LEVEL <> 'D' THEN 1 ELSE 0 END ) AS GOOD_CNT\, + SUM( CASE WHEN V.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS BAD_CNT + FROM VIEW_RPT_BASE_INFO V\, A + WHERE V.MODEL_SCORE > A.DOWN + AND V.MODEL_SCORE <= A.UP + AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -12 )\, '%Y%m' ) + AND DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' ) + AND V.MODEL_CODE='#MODEL_CODE' + GROUP BY V.EFFECTIVE_Q\,A.SCORE_AREA +)\, +C AS ( + SELECT DISTINCT + B.EFFECTIVE_Q\, + B.SCORE_AREA\, + CAST(SUM( CUST_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q )AS DECIMAL) AS TOT_CUST_CNT\, + CAST(SUM( B.GOOD_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q ) AS DECIMAL) AS TOT_GOOD_CNT\, + CAST(SUM( B.BAD_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q ) AS DECIMAL) AS TOT_BAD_CNT + FROM B +)\, +D AS ( + SELECT + T1.EFFECTIVE_Q\, + T1.SCORE_AREA\, + SUM( T2.GOOD_CNT ) AS GOOD_CNT\, + SUM( T2.BAD_CNT ) AS BAD_CNT + FROM( + SELECT + B.EFFECTIVE_Q\, + B.SCORE_AREA\, + SUM( B.GOOD_CNT ) AS GOOD_CNT\, + SUM( B.BAD_CNT ) AS BAD_CNT + FROM B + GROUP BY B.EFFECTIVE_Q\, B.SCORE_AREA + ) T1 INNER JOIN ( + SELECT + B.EFFECTIVE_Q\, + B.SCORE_AREA\, + SUM( B.GOOD_CNT ) AS GOOD_CNT\, + SUM( B.BAD_CNT ) AS BAD_CNT + FROM B + GROUP BY B.EFFECTIVE_Q\, B.SCORE_AREA + ) T2 ON T1.EFFECTIVE_Q = T2.EFFECTIVE_Q + AND T1.SCORE_AREA >= T2.SCORE_AREA + GROUP BY T1.EFFECTIVE_Q\, T1.SCORE_AREA +)\, +E AS ( + SELECT + T1.EFFECTIVE_Q\, + T1.SCORE_AREA\, + SUM( T2.CUST_CNT ) AS CUST_CNT\, + SUM( T2.BAD_CNT ) AS BAD_CNT + FROM( + SELECT + B.EFFECTIVE_Q\, + B.SCORE_AREA\, + SUM( B.CUST_CNT ) AS CUST_CNT\, + SUM( B.BAD_CNT ) AS BAD_CNT + FROM B + GROUP BY B.EFFECTIVE_Q\, B.SCORE_AREA + ) T1 INNER JOIN ( + SELECT + B.EFFECTIVE_Q\, + B.SCORE_AREA\, + SUM( B.CUST_CNT ) AS CUST_CNT\, + SUM( B.BAD_CNT ) AS BAD_CNT + FROM B + GROUP BY B.EFFECTIVE_Q\, B.SCORE_AREA + ) T2 ON T1.EFFECTIVE_Q = T2.EFFECTIVE_Q + AND T1.SCORE_AREA >= T2.SCORE_AREA + GROUP BY T1.EFFECTIVE_Q\, T1.SCORE_AREA +)\, +KS AS ( + SELECT + T.EFFECTIVE_Q\, + MAX( T.DIFF ) AS KS + FROM( + SELECT + D.EFFECTIVE_Q\, + D.SCORE_AREA\, + CASE WHEN C.TOT_GOOD_CNT=0 THEN 0 ELSE D.GOOD_CNT / C.TOT_GOOD_CNT END AS GOOD_RATIO\, + CASE WHEN C.TOT_BAD_CNT=0 THEN 0 ELSE D.BAD_CNT / C.TOT_BAD_CNT END AS BAD_RATIO\, + ABS( (CASE WHEN C.TOT_GOOD_CNT=0 THEN 0 ELSE D.GOOD_CNT / C.TOT_GOOD_CNT END) - (CASE WHEN C.TOT_BAD_CNT=0 THEN 0 ELSE D.BAD_CNT / C.TOT_BAD_CNT END) ) AS DIFF + FROM D + LEFT JOIN C ON C.EFFECTIVE_Q = D.EFFECTIVE_Q + AND C.SCORE_AREA = D.SCORE_AREA + ) T + GROUP BY T.EFFECTIVE_Q +)\, +AR AS ( + SELECT + T.EFFECTIVE_Q\, + ROUND( SUM( T.DIFF )/( T.NORMAL_RATIO / 2 )\, 4 ) AS AR + FROM ( + SELECT + E.EFFECTIVE_Q\, + E.SCORE_AREA\, + CASE WHEN C.TOT_CUST_CNT=0 THEN 0 ELSE E.CUST_CNT / C.TOT_CUST_CNT END AS CUST_RATIO\, + CASE WHEN C.TOT_BAD_CNT=0 THEN 0 ELSE E.BAD_CNT / C.TOT_BAD_CNT END AS BAD_RATIO\, + ((CASE WHEN C.TOT_BAD_CNT=0 THEN 0 ELSE E.BAD_CNT/C.TOT_BAD_CNT END)-E.CUST_CNT/C.TOT_CUST_CNT)/2*1/CC.TOT_CUST_CNT AS DIFF\, + (CC.TOT_CUST_CNT-CC.TOT_BAD_CNT)/CC.TOT_CUST_CNT AS NORMAL_RATIO + FROM E LEFT JOIN C ON C.EFFECTIVE_Q = E.EFFECTIVE_Q + AND C.SCORE_AREA = E.SCORE_AREA + LEFT JOIN ( SELECT DISTINCT C.EFFECTIVE_Q\, C.TOT_CUST_CNT\, C.TOT_BAD_CNT FROM C ) CC + ON CC.EFFECTIVE_Q = E.EFFECTIVE_Q + ) T GROUP BY T.EFFECTIVE_Q\, T.NORMAL_RATIO +) +SELECT + KS.EFFECTIVE_Q\, + KS.KS\, + AR.AR\, + CASE WHEN AR.AR >= 0.4 AND KS.KS >= 0.4 THEN '低度' + WHEN AR.AR >= 0.3 AND AR.AR < 0.4 AND KS.KS < 0.4 THEN '中度' + WHEN AR.AR < 0.3 OR KS.KS < 0.3 THEN '高度' + ELSE '低度' END AS RISK_LEVEL\, + CC.TOT_NORMAL_CNT\, + CC.TOT_BAD_CNT\, + CC.TOT_CUST_CNT +FROM KS INNER JOIN AR ON AR.EFFECTIVE_Q = KS.EFFECTIVE_Q +LEFT JOIN (SELECT DISTINCT C.EFFECTIVE_Q\, C.TOT_CUST_CNT\, C.TOT_BAD_CNT\, C.TOT_CUST_CNT - C.TOT_BAD_CNT AS TOT_NORMAL_CNT FROM C ) CC + ON CC.EFFECTIVE_Q = KS.EFFECTIVE_Q +ORDER BY KS.EFFECTIVE_Q",,,,,, +"19","rptModelMonitorStable","模型稳定性监控报表","DM DBMS","WITH A AS ( + SELECT 0 AS DOWN\, 10 AS UP\, 1 AS SCORE_AREA UNION + SELECT 10 AS DOWN\, 20 AS UP\, 2 AS SCORE_AREA UNION + SELECT 20 AS DOWN\, 30 AS UP\, 3 AS SCORE_AREA UNION + SELECT 30 AS DOWN\, 40 AS UP\, 4 AS SCORE_AREA UNION + SELECT 40 AS DOWN\, 50 AS UP\, 5 AS SCORE_AREA UNION + SELECT 50 AS DOWN\, 60 AS UP\, 6 AS SCORE_AREA UNION + SELECT 60 AS DOWN\, 70 AS UP\, 7 AS SCORE_AREA UNION + SELECT 70 AS DOWN\, 80 AS UP\, 8 AS SCORE_AREA UNION + SELECT 80 AS DOWN\, 90 AS UP\, 9 AS SCORE_AREA UNION + SELECT 90 AS DOWN\, 100 AS UP\, 10 AS SCORE_AREA +)\, +B AS ( + SELECT + V.EFFECTIVE_Q\, + A.SCORE_AREA\, + V.CUST_NO + FROM VIEW_RPT_BASE_INFO V\,A + WHERE V.MODEL_SCORE > A.DOWN + AND V.MODEL_SCORE <= A.UP + AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -12 )\, '%Y%m' ) + AND DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' ) + AND V.MODEL_CODE='#MODEL_CODE' +)\, +B1 AS ( SELECT EFFECTIVE_Q\, SCORE_AREA\, COUNT( 1 ) AS CUST_CNT FROM B GROUP BY EFFECTIVE_Q\, SCORE_AREA )\, +B2 AS ( SELECT EFFECTIVE_Q\, CAST(SUM( CUST_CNT ) AS DECIMAL) AS TOT_CUST_CNT FROM B1 GROUP BY EFFECTIVE_Q )\, +B3 AS ( + SELECT + B1.EFFECTIVE_Q\, + B1.SCORE_AREA\, + B1.CUST_CNT / B2.TOT_CUST_CNT AS CURR_RATIO + FROM B1 LEFT JOIN B2 ON B2.EFFECTIVE_Q = B1.EFFECTIVE_Q + ORDER BY B1.EFFECTIVE_Q\, B1.SCORE_AREA +)\, +C AS ( + SELECT + V.EFFECTIVE_Q\, + A.SCORE_AREA\, + V.CUST_NO + FROM VIEW_RPT_BASE_INFO V\,A + WHERE V.MODEL_SCORE > A.DOWN AND V.MODEL_SCORE <= A.UP + AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -24 )\, '%Y%m' ) + AND DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -13 )\, '%Y%m' ) + AND V.MODEL_CODE='#MODEL_CODE' +)\, +C1 AS ( SELECT EFFECTIVE_Q\, SCORE_AREA\, COUNT( 1 ) AS CUST_CNT FROM C GROUP BY EFFECTIVE_Q\, SCORE_AREA )\, +C2 AS ( SELECT EFFECTIVE_Q\, CAST(SUM( CUST_CNT ) AS DECIMAL) AS TOT_CUST_CNT FROM C1 GROUP BY EFFECTIVE_Q )\, +C3 AS ( + SELECT + C1.EFFECTIVE_Q\, + C1.SCORE_AREA\, + C1.CUST_CNT / C2.TOT_CUST_CNT AS LAST_RATIO + FROM C1 LEFT JOIN C2 ON C2.EFFECTIVE_Q = C1.EFFECTIVE_Q +) +SELECT + EFFECTIVE_Q\, + ROUND(PSI\,4) AS PSI\, + CASE WHEN PSI <= 0.1 THEN '低度' WHEN PSI > 0.1 AND PSI <= 0.25 THEN '中度' + ELSE '高度' END AS RISK_LEVEL +FROM ( + SELECT + EFFECTIVE_Q\, + SUM( IFNULL(PSI\,0) ) AS PSI + FROM ( + SELECT + B3.EFFECTIVE_Q\, + B3.SCORE_AREA\, + ROUND(( B3.CURR_RATIO - C3.LAST_RATIO )*LN( B3.CURR_RATIO / C3.LAST_RATIO )\, 4 ) AS PSI + FROM B3 LEFT JOIN C3 ON RIGHT ( C3.EFFECTIVE_Q\, 1 )= RIGHT ( B3.EFFECTIVE_Q\, 1 ) + AND C3.SCORE_AREA = B3.SCORE_AREA + ) T GROUP BY T.EFFECTIVE_Q +) TT ORDER BY TT.EFFECTIVE_Q",,,,,, +"20","rptRatingOverturn","客户评级推翻情况报表","DM DBMS","SELECT + T.EFFECTIVE_MONTH\, + T.CUST_CNT\, + T.OVERTURN_CNT\, + ROUND(CASE WHEN T.OVERTURN_CNT = 0 THEN 0 ELSE T.OVERTURN_CNT/T.CUST_CNT END,4) AS OVERTURN_RATIO\, + ROUND(CASE WHEN UP_OVERTURN_CNT = 0 THEN 0 ELSE UP_OVERTURN_CNT/T.CUST_CNT END,4) AS UP_OVERTURN_RATIO\, + ROUND(CASE WHEN DOWN_OVERTURN_CNT = 0 THEN 0 ELSE DOWN_OVERTURN_CNT/T.CUST_CNT END,4) AS DOWN_OVERTURN_RATIO\, + ROUND(CASE WHEN ONE_LVL_CNT = 0 THEN 0 ELSE ONE_LVL_CNT/T.CUST_CNT END,4) AS ONE_LVL_RATIO\, + ROUND(CASE WHEN TWO_LVL_CNT = 0 THEN 0 ELSE TWO_LVL_CNT/T.CUST_CNT END,4) AS TWO_LVL_RATIO\, + ROUND(CASE WHEN THREE_LVL_CNT = 0 THEN 0 ELSE THREE_LVL_CNT/T.CUST_CNT END,4) AS THREE_LVL_RATIO\, + ROUND(CASE WHEN THREE_MORE_LVL_CNT = 0 THEN 0 ELSE THREE_MORE_LVL_CNT/T.CUST_CNT END,4) AS THREE_MORE_LVL_RATIO +FROM ( + SELECT + V.EFFECTIVE_MONTH\, + CAST(COUNT(V.CUST_NO) AS DECIMAL) AS CUST_CNT\, + SUM(CASE WHEN V.ORIGINAL_LEVEL <> V.INIT_LEVEL THEN 1 ELSE 0 END) AS OVERTURN_CNT\, + SUM(CASE WHEN V.ORDER_NUM > V.INIT_ORDER_NUM THEN 1 ELSE 0 END) AS UP_OVERTURN_CNT\, + SUM(CASE WHEN V.ORDER_NUM < V.INIT_ORDER_NUM THEN 1 ELSE 0 END) AS DOWN_OVERTURN_CNT\, + SUM(CASE WHEN ABS(V.ORDER_NUM-V.INIT_ORDER_NUM) = 1 THEN 1 ELSE 0 END) AS ONE_LVL_CNT\, + SUM(CASE WHEN ABS(V.ORDER_NUM-V.INIT_ORDER_NUM) = 2 THEN 1 ELSE 0 END) AS TWO_LVL_CNT\, + SUM(CASE WHEN ABS(V.ORDER_NUM-V.INIT_ORDER_NUM) = 3 THEN 1 ELSE 0 END) AS THREE_LVL_CNT\, + SUM(CASE WHEN ABS(V.ORDER_NUM-V.INIT_ORDER_NUM) > 3 THEN 1 ELSE 0 END) AS THREE_MORE_LVL_CNT + FROM VIEW_RPT_BASE_INFO V + WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME + AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\,'%Y%m') AS DECIMAL) + AND V.MODEL_CODE = '#MODEL_CODE' + AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE' + GROUP BY V.EFFECTIVE_MONTH +) T ORDER BY T.EFFECTIVE_MONTH",,,,,, \ No newline at end of file diff --git a/app.irbs/src/main/resources/liquibase/data/irbs/P_IRS_APPLY_DEBT_RATING.csv b/app.irbs/src/main/resources/liquibase/data/irbs/P_IRS_APPLY_DEBT_RATING.csv new file mode 100644 index 0000000..edb0ddf --- /dev/null +++ b/app.irbs/src/main/resources/liquibase/data/irbs/P_IRS_APPLY_DEBT_RATING.csv @@ -0,0 +1,7 @@ +"P_IRS_APPLY_DEBT_RATING",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +"ID_","CONTRACTNO","PRODUCTTYPE","PRODUCTRATE","CONTRACTAMT","ORGTYPE","LOWRISKFLG","INTERESTDEBTFLG","FINANCEDEBTLEVEL","CUSTNO","CUSTNAME","CREDITGRADE","CREDITGRADERATE","INDUSTRYTYPE","INDUSTRYTYPERATE","CORPSIZE","CORPSIZERATE","CORPTYPE","CORPTYPERATE","REGIONCODE","REGIONCODERATE","YXZCZWL","YXZCZWLRATE","ADJUSTRATE","RECRATE","PLEDGECLASS","GUARANTEETYPE","PLEDGERECRATE","GUARANTYRECRATE","LGD","IS_VALID","MANAGER_CODE","DATA_COME_FROM_","CREATOR_","CREATE_DATE_","LAST_MODIFIER_","LAST_MODIFYDATE_","CORP_CODE_" +"主键ID","业务合同编号","业务产品类型","业务产品类型回收率","业务合同金额","机构类型","是否低风险业务","是否利率债","金融机构债权等级","客户编号","客户名称","借款人评级","借款人评级回收率","行业类型","行业类型调整系数","企业规模","企业规模调整系数","企业类型","企业类型调整系数","所在行政区域","所在行政区域调整系数","借款人有形资产债务率","借款人有形资产债务率调整系数","借款人调整回收率","借款人回收率","保证担保形式","担保类型","保证人整体回收率","押品整体回收率","lgd计算结果","是否生效","业务经办人","数据来源(INPUT:手工录入,IMPORT:系统自动导入)","创建人","创建日期","最后修改人","最后修改日期","所属法人代码" +"VARCHAR","VARCHAR","VARCHAR","DECIMAL","DECIMAL","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","DECIMAL","VARCHAR","DECIMAL","VARCHAR","DECIMAL","VARCHAR","DECIMAL","VARCHAR","DECIMAL","DECIMAL","DECIMAL","DECIMAL","DECIMAL","VARCHAR","VARCHAR","DECIMAL","DECIMAL","DECIMAL","VARCHAR","VARCHAR","VARCHAR","VARCHAR","TIMESTAMP","VARCHAR","TIMESTAMP","VARCHAR" +"java.lang.String","java.lang.String","java.lang.String","java.math.BigDecimal","java.math.BigDecimal","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.math.BigDecimal","java.lang.String","java.math.BigDecimal","java.lang.String","java.math.BigDecimal","java.lang.String","java.math.BigDecimal","java.lang.String","java.math.BigDecimal","java.math.BigDecimal","java.math.BigDecimal","java.math.BigDecimal","java.math.BigDecimal","java.lang.String","java.lang.String","java.math.BigDecimal","java.math.BigDecimal","java.math.BigDecimal","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.sql.Timestamp","java.lang.String","java.sql.Timestamp","java.lang.String" +"1","CONTR202406270001","短期流动资金贷款","0.010000","8796060.670000","一般公司","否","否","","CUSTOMER202406270001","CUSTOMER202406270001","A","0.300000","F5252","1.000000","中型","0.900000","私营企业","0.950000","广州","0.950000","0.471000","1.000000","0.812250","0.243675","单人保证","未足额抵质押担保+保证","0.221622","0.318324","0.206379","1","404040","IMPORT","SYSTEM",,"SYSTEM",,"_PRIMARY_" +"2","CONTR202406270002","中期流动资金贷款","0.010000","15980876.000000","一般公司","否","否","","CUSTOMER202406270002","CUSTOMER202406270002","AA","0.350000","E4991","0.900000","大型","1.050000","私营企业","0.950000","广州","0.950000","0.433000","0.950000","0.852863","0.283577","多人保证","足额抵质押担保+保证","0.248752","0.321176","0.136495","1","404040","IMPORT","SYSTEM",,"SYSTEM",,"_PRIMARY_" \ No newline at end of file diff --git a/irbs.deptRating/src/main/java/irbs/deptRating/controller/AppDebtRatingController.java b/irbs.deptRating/src/main/java/irbs/deptRating/controller/AppDebtRatingController.java index 824247a..3a466b5 100644 --- a/irbs.deptRating/src/main/java/irbs/deptRating/controller/AppDebtRatingController.java +++ b/irbs.deptRating/src/main/java/irbs/deptRating/controller/AppDebtRatingController.java @@ -1,34 +1,18 @@ package irbs.deptRating.controller; -import java.util.List; -import java.util.Locale; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import io.sc.platform.mvc.support.ExportFileInfo; import io.sc.platform.orm.service.support.QueryParameter; -import io.sc.platform.security.service.impl.SystemParameterServiceImpl; -import io.sc.platform.security.util.SecurityUtil; import irbs.deptRating.jpa.entity.AppDebtRating; -import irbs.deptRating.jpa.repository.AppDebtRatingRepository; import irbs.deptRating.service.AppDebtRatingService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.stereotype.Controller; -import org.springframework.util.StringUtils; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/api/irbs/appDebtRating") public class AppDebtRatingController { - - private static final Logger log =LoggerFactory.getLogger(AppDebtRatingController.class); @Autowired private AppDebtRatingService appDebtRatingService; /** @@ -37,7 +21,6 @@ public class AppDebtRatingController { */ @GetMapping("queryPage") public Page queryPage(QueryParameter queryParameter) throws Exception{ - Page page = appDebtRatingService.findAll(queryParameter); return page; } diff --git a/irbs.frontend/src/views/debtRating/LgdQuery.vue b/irbs.frontend/src/views/debtRating/LgdQuery.vue index 44e413d..199194a 100644 --- a/irbs.frontend/src/views/debtRating/LgdQuery.vue +++ b/irbs.frontend/src/views/debtRating/LgdQuery.vue @@ -1,22 +1,22 @@ @@ -24,56 +24,47 @@ import { ref } from 'vue'; import { useQuasar } from 'quasar'; import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core'; -import LaunchExposureDialog from '@/views/riskExposure/LaunchExposureDialog.vue'; -import HandmadeExposureDialog from '@/views/riskExposure/HandmadeExposureDialog.vue'; const $q = useQuasar(); const appDebtRatingGridRef = ref(); -const launchExposureDialogRef = ref(); -const handmadeExposureDialogRef = ref(); const appDebtRatingGrid = { - buttons: [ - ['query', 'separator', 'moreQuery'], - 'reset', - 'separator', - { - extend: 'view', - click: (args) => { - handmadeExposureDialogRef.value.show(args.selected, true, 'riskExposure'); - }, - }, - 'separator', - ], + buttons: [['query', 'separator', 'moreQuery'], 'reset'], queryFormFields: [ { label: '债项编号', name: 'contractNo', type: 'text' }, - { label: '客户号', name: 'custNo', type: 'text' }, + { label: '客户编号', name: 'custNo', type: 'text' }, { label: '客户名称', name: 'custName', type: 'text' }, ], columns: [ { name: 'contractNo', label: '债项编号' }, - { name: 'custNo', label: '客户号' }, + { name: 'contractAmt', label: '债项金额' }, + { name: 'custNo', label: '客户编号' }, { name: 'custName', label: '客户名称' }, - { name: 'orgType', label: '客户类型' }, { name: 'productType', label: '产品类型' }, - { name: 'contractAmt', label: '债项金额' }, + { name: 'productRate', label: '产品回收率' }, { name: 'lowRiskFlg', label: '是否低风险业务' }, + { name: 'orgType', label: '客户类型' }, { name: 'interestDebtFlg', label: '是否利率债' }, { name: 'financeDebtLevel', label: '金融机构债权等级' }, { name: 'creditGrade', label: '借款人评级' }, + { name: 'creditGradeRate', label: '借款人评级调整系数' }, { name: 'industryType', label: '借款人行业类型' }, + { name: 'industryTypeRate', label: '行业调整系数' }, { name: 'corpSize', label: '借款人企业规模' }, + { name: 'corpSizeRate', label: '企业规模调整系数' }, { name: 'corpType', label: '借款人企业性质' }, + { name: 'corpTypeRate', label: '企业性质调整系数' }, { name: 'regionCode', label: '借款人所在区域' }, - { name: 'guaranteeType', label: '担保类型' }, + { name: 'regionCodeRate', label: '区域调整系数' }, + { name: 'yxzczwl', label: '借款人有形资产债务率' }, + { name: 'yxzczwlRate', label: '有形资产债务率调整系数' }, { name: 'pledgeClass', label: '保证担保形式' }, - { name: 'regionCode', label: '借款人所在区域' }, + { name: 'guaranteeType', label: '担保类型' }, + { name: 'recrate', label: '借款人整体回收率' }, + { name: 'pledgeRecRate', label: '保证人整体回收率' }, + { name: 'guarantyRecRate', label: '押品整体回收率' }, { name: 'lgd', label: 'LGD' }, { name: 'managerCode', label: '业务经办人' }, ], }; - -const refreshTable = () => { - appDebtRatingGridRef.value.refresh(); -};