Browse Source

客户表新增实际控制人从业年限字段

main
likunming 7 months ago
parent
commit
089f1f447d
  1. 1360
      app.irbs/src/main/resources/liquibase/data/irbs/ESB_RATING_CUSTOMER.csv
  2. 2
      app.irbs/src/main/resources/liquibase/data/irbs/IRBS_CUST_CP_INFO.csv
  3. 27
      app.irbs/src/main/resources/liquibase/data/irbs/NS_COMPANY_RATING.csv
  4. 10
      app.irbs/src/main/resources/liquibase/sql/rpt_views.sql
  5. 2
      gradle.properties
  6. 5
      irbs.cust.rating/src/main/java/irbs/cust/rating/jpa/entity/CompanyCustomer.java
  7. 8
      irbs.cust.rating/src/main/java/irbs/cust/rating/jpa/entity/CompanyRating.java
  8. 10
      irbs.cust.rating/src/main/java/irbs/cust/rating/jpa/entity/RatingCompanyCustomer.java
  9. 2
      irbs.cust.rating/src/main/java/irbs/cust/rating/service/impl/CompanyRatingServiceImpl.java
  10. 23
      irbs.cust.rating/src/main/resources/META-INF/platform/plugins/parameters.json
  11. 293
      irbs.cust.rating/src/main/resources/liquibase/20240321_CUST_RATING_DDL.xml
  12. 2
      irbs.frontend/package.json
  13. 8
      irbs.frontend/src/menus/menus.json
  14. 2
      irbs.frontend/src/views/config/FinancialMapping.vue
  15. 7
      irbs.frontend/src/views/custRating/CustRating.ts
  16. 9
      irbs.frontend/src/views/custRating/CustRating.vue
  17. 15
      irbs.frontend/src/views/default/CognizanceApply.vue
  18. 2
      irbs.frontend/src/views/default/RebirthApply.vue
  19. 2
      irbs.frontend/src/views/report/RptModelMonitorBinomialCheck.vue
  20. 2
      irbs.frontend/src/views/report/RptModelMonitorDiff.vue
  21. 2
      irbs.frontend/src/views/report/RptModelMonitorStable.vue
  22. 239
      irbs.frontend/src/views/report/RptRatingAdjust.vue
  23. 56
      irbs.frontend/src/views/report/RptRatingDistribution.vue
  24. 273
      irbs.frontend/src/views/report/RptRatingIndustryFocusDist.vue
  25. 346
      irbs.frontend/src/views/report/RptRatingLoanBalanceMigrate.vue
  26. 300
      irbs.frontend/src/views/report/RptRatingModelFocusDist.vue
  27. 307
      irbs.frontend/src/views/report/RptRatingNumberMigrate.vue
  28. 267
      irbs.frontend/src/views/report/RptRatingOrgFocusDist.vue
  29. 307
      irbs.frontend/src/views/report/RptRatingOverturn.vue

1360
app.irbs/src/main/resources/liquibase/data/irbs/ESB_RATING_CUSTOMER.csv

File diff suppressed because it is too large

2
app.irbs/src/main/resources/liquibase/data/irbs/IRBS_CUST_CP_INFO.csv

@ -1,5 +1,5 @@
"IRBS_CUST_CP_INFO",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, "IRBS_CUST_CP_INFO",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"ID_","DATA_DT","CUST_NO","CUST_CNA","CUST_TYPE_CD","ORGN_CD","LEGA_BOOK_NO","ORG_CRDT_CD","CUST_SORT_CD","CORP_SIZE_CD","INDU_SORT_CD","CHASTEN_CUST_FLAG","FIRST_CRTD_CRDT_RELA_DT","BUILD_DT","UPDATE_DT","LEGAL_REP","RGST_GROUND","MGER_NO","MGER_CNA","MGER_ORG_NM","MGER_ORG_NO","MGER_ORG_NO_UP","CORP_SUBJ","NATION_CD","RGST_GROUND_ADMIN_REGION_CD","LT_TRD_YEAR_INCOME_FLAG","GOVER_FIN_FLT_FLAG","PRI_RIGHT_LIST_FLAG","YEARS3_OVDUE_30_DAY_FLAG","YEARS3_EXPAND_2_CNT_FLAG","YEARS3_ADV_MONEY_30_DAY_FLAG","YEARS3_BOR_REPAY_2_CNT_FLAG","YEARS3_MODE_MODIF_OVERDUE_2_CNT_FLAG","YEARS3_PRIN_REPAY_PLAN_MODIF_2_CNT_FLAG","YEARS3_REGROUP_2_CNT_FLAG","DATA_COME_FROM_","CREATOR_","CREATE_DATE_","LAST_MODIFIER_","LAST_MODIFYDATE_","CORP_CODE_" "ID_","DATA_DT","CUSTOMER_ID","CUSTOMER_CHINESE_NAME","CUST_TYPE_CD","ORGN_CD","LEGA_BOOK_NO","ORG_CRDT_CD","CUST_SORT_CD","CORP_SIZE_CD","INDU_SORT_CD","CHASTEN_CUST_FLAG","FIRST_CRTD_CRDT_RELA_DT","BUILD_DT","UPDATE_DT","LEGAL_REP","RGST_GROUND","MGER_NO","MGER_CNA","MGER_ORG_NM","MGER_ORG_NO","MGER_ORG_NO_UP","CORP_SUBJ","NATION_CD","RGST_GROUND_ADMIN_REGION_CD","LT_TRD_YEAR_INCOME_FLAG","GOVER_FIN_FLT_FLAG","PRI_RIGHT_LIST_FLAG","YEARS3_OVDUE_30_DAY_FLAG","YEARS3_EXPAND_2_CNT_FLAG","YEARS3_ADV_MONEY_30_DAY_FLAG","YEARS3_BOR_REPAY_2_CNT_FLAG","YEARS3_MODE_MODIF_OVERDUE_2_CNT_FLAG","YEARS3_PRIN_REPAY_PLAN_MODIF_2_CNT_FLAG","YEARS3_REGROUP_2_CNT_FLAG","DATA_COME_FROM_","CREATOR_","CREATE_DATE_","LAST_MODIFIER_","LAST_MODIFYDATE_","CORP_CODE_"
"主键","数据日期","客户编号","客户名称","客户类型","组织机构代码","法人证书号","统一信用代码证号","客户分类","企业规模","国标行业分类","是否为联合惩戒名单客户","与我行建立信贷关系时间","成立日期","更新日期","法人代表","注册地址","管户人编号","管户人","管户机构","管户机构编号","管户机构上级","企业隶属","所在国家地区","所在行政区域","近三年营业收入不大于三亿","是否政府融资平台","是否主权名单","3年内借据逾期超过30天标志","3年内贷款展期次数2次及以上标志","3年内垫款超过30天标志","3年内借新还旧次数2次及以上标志","3年内结息方式变更后是否出现逾期2次及以上标志","3年内合同的本金还款计划是否变更2次及以上标志","3年内重组2次及以上标志","数据来源(INPUT:手工录入,IMPORT:系统自动导入)","创建人","创建日期","最后修改人","最后修改日期","所属法人代码" "主键","数据日期","客户编号","客户名称","客户类型","组织机构代码","法人证书号","统一信用代码证号","客户分类","企业规模","国标行业分类","是否为联合惩戒名单客户","与我行建立信贷关系时间","成立日期","更新日期","法人代表","注册地址","管户人编号","管户人","管户机构","管户机构编号","管户机构上级","企业隶属","所在国家地区","所在行政区域","近三年营业收入不大于三亿","是否政府融资平台","是否主权名单","3年内借据逾期超过30天标志","3年内贷款展期次数2次及以上标志","3年内垫款超过30天标志","3年内借新还旧次数2次及以上标志","3年内结息方式变更后是否出现逾期2次及以上标志","3年内合同的本金还款计划是否变更2次及以上标志","3年内重组2次及以上标志","数据来源(INPUT:手工录入,IMPORT:系统自动导入)","创建人","创建日期","最后修改人","最后修改日期","所属法人代码"
"VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","CHAR","VARCHAR","VARCHAR","TIMESTAMP","VARCHAR","TIMESTAMP","VARCHAR" "VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","CHAR","VARCHAR","VARCHAR","TIMESTAMP","VARCHAR","TIMESTAMP","VARCHAR"
"java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.sql.Timestamp","java.lang.String","java.sql.Timestamp","java.lang.String" "java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","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 IRBS_CUST_CP_INFO
2 ID_ DATA_DT CUST_NO CUSTOMER_ID CUST_CNA CUSTOMER_CHINESE_NAME CUST_TYPE_CD ORGN_CD LEGA_BOOK_NO ORG_CRDT_CD CUST_SORT_CD CORP_SIZE_CD INDU_SORT_CD CHASTEN_CUST_FLAG FIRST_CRTD_CRDT_RELA_DT BUILD_DT UPDATE_DT LEGAL_REP RGST_GROUND MGER_NO MGER_CNA MGER_ORG_NM MGER_ORG_NO MGER_ORG_NO_UP CORP_SUBJ NATION_CD RGST_GROUND_ADMIN_REGION_CD LT_TRD_YEAR_INCOME_FLAG GOVER_FIN_FLT_FLAG PRI_RIGHT_LIST_FLAG YEARS3_OVDUE_30_DAY_FLAG YEARS3_EXPAND_2_CNT_FLAG YEARS3_ADV_MONEY_30_DAY_FLAG YEARS3_BOR_REPAY_2_CNT_FLAG YEARS3_MODE_MODIF_OVERDUE_2_CNT_FLAG YEARS3_PRIN_REPAY_PLAN_MODIF_2_CNT_FLAG YEARS3_REGROUP_2_CNT_FLAG DATA_COME_FROM_ CREATOR_ CREATE_DATE_ LAST_MODIFIER_ LAST_MODIFYDATE_ CORP_CODE_
3 主键 数据日期 客户编号 客户名称 客户类型 组织机构代码 法人证书号 统一信用代码证号 客户分类 企业规模 国标行业分类 是否为联合惩戒名单客户 与我行建立信贷关系时间 成立日期 更新日期 法人代表 注册地址 管户人编号 管户人 管户机构 管户机构编号 管户机构上级 企业隶属 所在国家地区 所在行政区域 近三年营业收入不大于三亿 是否政府融资平台 是否主权名单 3年内借据逾期超过30天标志 3年内贷款展期次数2次及以上标志 3年内垫款超过30天标志 3年内借新还旧次数2次及以上标志 3年内结息方式变更后是否出现逾期2次及以上标志 3年内合同的本金还款计划是否变更2次及以上标志 3年内重组2次及以上标志 数据来源(INPUT:手工录入,IMPORT:系统自动导入) 创建人 创建日期 最后修改人 最后修改日期 所属法人代码
4 VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR CHAR VARCHAR VARCHAR TIMESTAMP VARCHAR TIMESTAMP VARCHAR
5 java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.sql.Timestamp java.lang.String java.sql.Timestamp java.lang.String

27
app.irbs/src/main/resources/liquibase/data/irbs/NS_COMPANY_RATING.csv

@ -1,5 +1,5 @@
"NS_COMPANY_RATING",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, "NS_COMPANY_RATING",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"ID_","CUST_ID","CUST_NO","CUST_NAME","CUST_TYPE","MANAGER_NAME","MANAGER_CODE","MANAGER_ORG_CODE","MANAGER_ORG_NAME","LAUNCH_USER","QUAN_SCORE","QUAL_SCORE","MODEL_SCORE","INIT_LEVEL","ADJ_LEVEL","SP_LEVEL","FINAL_LEVEL","PD","PROCESS_INSTANCE_ID","PROCESS_STATUS","RATING_STATUS","TRIGGER_TYPE","TRIGGER_REA","RATE_TYPE","RATE_TYPE_DES","START_TIME","EFFECTIVE_TIME","MATURE_TIME","MODEL_ID","MODEL_CODE","MODEL_NAME","RATING_CFG_ID","IS_ADMIT","IS_TRIAL","MODEL_LEVEL","CURRENT_STEP","OVER_NUM","OUT_IMAGE_ID","ACCESS_LEVEL","DEFAULT_IND","QUAL_CALC_COUNT","PWH_COMMITTEE_NUM","GX_END_TIME","DATA_COME_FROM_","CREATOR_","CREATE_DATE_","LAST_MODIFIER_","LAST_MODIFYDATE_","CORP_CODE_","MODEL_ID_G","MODEL_CODE_G","MODEL_NAME_G","QUAN_SCORE_G","QUAL_SCORE_G","MODEL_SCORE_G","MODEL_LEVEL_G","ACCESS_LEVEL_G","ADJ_LEVEL_G" "ID_","CUST_ID","CUSTOMER_ID","CUSTOMER_CHINESE_NAME","CUST_TYPE","MANAGER_NAME","MANAGER_CODE","MANAGER_ORG_CODE","MANAGER_ORG_NAME","LAUNCH_USER","QUAN_SCORE","QUAL_SCORE","MODEL_SCORE","INIT_LEVEL","ADJ_LEVEL","SP_LEVEL","FINAL_LEVEL","PD","PROCESS_INSTANCE_ID","PROCESS_STATUS","RATING_STATUS","TRIGGER_TYPE","TRIGGER_REA","RATE_TYPE","RATE_TYPE_DES","START_TIME","EFFECTIVE_TIME","MATURE_TIME","MODEL_ID","MODEL_CODE","MODEL_NAME","RATING_CFG_ID","IS_ADMIT","IS_TRIAL","MODEL_LEVEL","CURRENT_STEP","OVER_NUM","OUT_IMAGE_ID","ACCESS_LEVEL","DEFAULT_IND","QUAL_CALC_COUNT","PWH_COMMITTEE_NUM","GX_END_TIME","DATA_COME_FROM_","CREATOR_","CREATE_DATE_","LAST_MODIFIER_","LAST_MODIFYDATE_","CORP_CODE_","MODEL_ID_G","MODEL_CODE_G","MODEL_NAME_G","QUAN_SCORE_G","QUAL_SCORE_G","MODEL_SCORE_G","MODEL_LEVEL_G","ACCESS_LEVEL_G","ADJ_LEVEL_G"
"ID主键","客户ID","客户编号","客户中文名称","客户类别(1:一般公司客户;2:金融机构及发债企业客户)","客户经理名称","客户经理编号","客户经理所在机构编号","客户经理所在机构名称","发起人","定量得分","定性得分","模型得分","初始级别","调整项级别","评级推翻级别","最终认定级别","违约概率","流程实例主键","流程状态","评级状态","评级任务触发类型","评级任务触发原因","评级类型","评级类型描述","评级发起日期","评级生效时间","评级到期时间","评级模型ID","评级模型编号","评级模型名称","评级配置ID","准入建议","是否试算","模型评级等级","当前评级步骤(页面位置)","意见位置","外部数据授权标志","准入级别","违约标识","定性计算次数","评级委员会人数","评级更新任务到期时间","数据来源(INPUT:手工录入,IMPORT:系统自动导入)","创建人","创建日期","最后修改人","最后修改日期","所属法人代码","评级模型ID(灰度)","评级模型编号(灰度)","评级模型名称(灰度)","定量得分(灰度)","定性得分(灰度)","模型得分(灰度)","模型评级等级(灰度)","准入级别(灰度)","调整项级别(灰度)" "ID主键","客户ID","客户编号","客户中文名称","客户类别(1:一般公司客户;2:金融机构及发债企业客户)","客户经理名称","客户经理编号","客户经理所在机构编号","客户经理所在机构名称","发起人","定量得分","定性得分","模型得分","初始级别","调整项级别","评级推翻级别","最终认定级别","违约概率","流程实例主键","流程状态","评级状态","评级任务触发类型","评级任务触发原因","评级类型","评级类型描述","评级发起日期","评级生效时间","评级到期时间","评级模型ID","评级模型编号","评级模型名称","评级配置ID","准入建议","是否试算","模型评级等级","当前评级步骤(页面位置)","意见位置","外部数据授权标志","准入级别","违约标识","定性计算次数","评级委员会人数","评级更新任务到期时间","数据来源(INPUT:手工录入,IMPORT:系统自动导入)","创建人","创建日期","最后修改人","最后修改日期","所属法人代码","评级模型ID(灰度)","评级模型编号(灰度)","评级模型名称(灰度)","定量得分(灰度)","定性得分(灰度)","模型得分(灰度)","模型评级等级(灰度)","准入级别(灰度)","调整项级别(灰度)"
"VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","DECIMAL","DECIMAL","DECIMAL","VARCHAR","VARCHAR","VARCHAR","VARCHAR","DECIMAL","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","TIMESTAMP","TIMESTAMP","TIMESTAMP","VARCHAR","VARCHAR","VARCHAR","VARCHAR","DECIMAL","DECIMAL","VARCHAR","VARCHAR","DECIMAL","VARCHAR","VARCHAR","VARCHAR","DECIMAL","DECIMAL","TIMESTAMP","VARCHAR","VARCHAR","TIMESTAMP","VARCHAR","TIMESTAMP","VARCHAR","VARCHAR","VARCHAR","VARCHAR","DECIMAL","DECIMAL","DECIMAL","VARCHAR","VARCHAR","VARCHAR" "VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","DECIMAL","DECIMAL","DECIMAL","VARCHAR","VARCHAR","VARCHAR","VARCHAR","DECIMAL","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","TIMESTAMP","TIMESTAMP","TIMESTAMP","VARCHAR","VARCHAR","VARCHAR","VARCHAR","DECIMAL","DECIMAL","VARCHAR","VARCHAR","DECIMAL","VARCHAR","VARCHAR","VARCHAR","DECIMAL","DECIMAL","TIMESTAMP","VARCHAR","VARCHAR","TIMESTAMP","VARCHAR","TIMESTAMP","VARCHAR","VARCHAR","VARCHAR","VARCHAR","DECIMAL","DECIMAL","DECIMAL","VARCHAR","VARCHAR","VARCHAR"
"java.lang.String","java.lang.String","java.lang.String","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.math.BigDecimal","java.math.BigDecimal","java.lang.String","java.lang.String","java.lang.String","java.lang.String","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.sql.Timestamp","java.sql.Timestamp","java.sql.Timestamp","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.math.BigDecimal","java.math.BigDecimal","java.lang.String","java.lang.String","java.math.BigDecimal","java.lang.String","java.lang.String","java.lang.String","java.math.BigDecimal","java.math.BigDecimal","java.sql.Timestamp","java.lang.String","java.lang.String","java.sql.Timestamp","java.lang.String","java.sql.Timestamp","java.lang.String","java.lang.String","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.lang.String","java.lang.String","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.math.BigDecimal","java.math.BigDecimal","java.lang.String","java.lang.String","java.lang.String","java.lang.String","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.sql.Timestamp","java.sql.Timestamp","java.sql.Timestamp","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.math.BigDecimal","java.math.BigDecimal","java.lang.String","java.lang.String","java.math.BigDecimal","java.lang.String","java.lang.String","java.lang.String","java.math.BigDecimal","java.math.BigDecimal","java.sql.Timestamp","java.lang.String","java.lang.String","java.sql.Timestamp","java.lang.String","java.sql.Timestamp","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.math.BigDecimal","java.math.BigDecimal","java.math.BigDecimal","java.lang.String","java.lang.String","java.lang.String"
@ -8,31 +8,6 @@
"GX202306251899","C20230626102016644300","2104904964","2104904964","1","施远","012941","01112","洪山支行营业室","012941","0E-8","37.06136400","37.06000000","CC","CC","CC","CC","0.32970000","fea57584-13c7-11ee-8efc-8c2a8e28fdfa","PASS","EFFECTIVE","UPDATE","3",,,"2023-06-26 10:21:00.0","2023-07-12 14:51:51.0","2024-07-12 00:00:00.0","c1510ede-01bd-44b5-bdfb-7c4e4aabb213","WHM20","20-小微批发和零售业",,"0","0","CC","OTHER","3",,"B","0","1","0","2023-12-26 10:21:00.0","INPUT",,"2023-06-26 10:21:00.0","006841","2023-07-12 14:51:51.0","_PRIMARY_",,,,,,,,, "GX202306251899","C20230626102016644300","2104904964","2104904964","1","施远","012941","01112","洪山支行营业室","012941","0E-8","37.06136400","37.06000000","CC","CC","CC","CC","0.32970000","fea57584-13c7-11ee-8efc-8c2a8e28fdfa","PASS","EFFECTIVE","UPDATE","3",,,"2023-06-26 10:21:00.0","2023-07-12 14:51:51.0","2024-07-12 00:00:00.0","c1510ede-01bd-44b5-bdfb-7c4e4aabb213","WHM20","20-小微批发和零售业",,"0","0","CC","OTHER","3",,"B","0","1","0","2023-12-26 10:21:00.0","INPUT",,"2023-06-26 10:21:00.0","006841","2023-07-12 14:51:51.0","_PRIMARY_",,,,,,,,,
"GX202306251900","C20230626102135131520","2006499525","2006499525","1","左宝","009085","01012","光谷分行营业室","009085","0E-8","54.61202300","54.61000000","CCC","CCC","CCC","CCC","0.18930000","2effd8c2-13c8-11ee-8efc-8c2a8e28fdfa","PASS","EFFECTIVE","UPDATE","3",,,"2023-06-26 10:21:00.0","2023-06-30 09:44:37.0","2024-06-30 00:00:00.0","86ca9007-89fb-4460-9475-62ee12658c39","WHM10","10-小微租赁和商务服务业",,"0","0","B","OTHER","3",,"B","0","1","0","2023-12-26 10:21:00.0","INPUT",,"2023-06-26 10:21:00.0","006247","2023-06-30 09:44:37.0","_PRIMARY_",,,,,,,,, "GX202306251900","C20230626102135131520","2006499525","2006499525","1","左宝","009085","01012","光谷分行营业室","009085","0E-8","54.61202300","54.61000000","CCC","CCC","CCC","CCC","0.18930000","2effd8c2-13c8-11ee-8efc-8c2a8e28fdfa","PASS","EFFECTIVE","UPDATE","3",,,"2023-06-26 10:21:00.0","2023-06-30 09:44:37.0","2024-06-30 00:00:00.0","86ca9007-89fb-4460-9475-62ee12658c39","WHM10","10-小微租赁和商务服务业",,"0","0","B","OTHER","3",,"B","0","1","0","2023-12-26 10:21:00.0","INPUT",,"2023-06-26 10:21:00.0","006247","2023-06-30 09:44:37.0","_PRIMARY_",,,,,,,,,
"GX202406251930","C20230627091337953258","2112605859","2112605859","1","左宝","009085","01273","科技金融服务中心营业室","009085","19.04804200","49.78424800","68.83000000","BBB","BBB","BBB","BBB","0.01670000","dac3a84c-1487-11ee-a8e8-8c2a8e28fdfa","PASS","EXPIRED","UPDATE","评级有效期到期",,,"2023-06-26 16:08:41.0","2023-06-28 16:22:10.0","2024-06-28 00:00:00.0","86ca9007-89fb-4460-9475-62ee12658c39","WHM10","10-小微租赁和商务服务业",,"0","0","BBB","OTHER","3",,"B","0","1","0","2023-12-26 16:08:41.0","INPUT",,"2023-06-26 16:08:41.0","006247","2023-07-13 09:58:45.0","_PRIMARY_",,,,,,,,, "GX202406251930","C20230627091337953258","2112605859","2112605859","1","左宝","009085","01273","科技金融服务中心营业室","009085","19.04804200","49.78424800","68.83000000","BBB","BBB","BBB","BBB","0.01670000","dac3a84c-1487-11ee-a8e8-8c2a8e28fdfa","PASS","EXPIRED","UPDATE","评级有效期到期",,,"2023-06-26 16:08:41.0","2023-06-28 16:22:10.0","2024-06-28 00:00:00.0","86ca9007-89fb-4460-9475-62ee12658c39","WHM10","10-小微租赁和商务服务业",,"0","0","BBB","OTHER","3",,"B","0","1","0","2023-12-26 16:08:41.0","INPUT",,"2023-06-26 16:08:41.0","006247","2023-07-13 09:58:45.0","_PRIMARY_",,,,,,,,,
"JR20230613001739","56d00128-2197-404b-9a80-0c2c89ba95d4","C168663969115226","测试05","2",,,,,"000018",,"82.08500200","82.09000000","A","A",,,,"52e2787e-09b8-11ee-9237-8c2a8e28fdfa","NEGATIVED","CANCEL",,,"040",,"2023-06-13 15:02:56.0",,,"b028d0f3-5e7c-43ee-b548-24f1de7a204a","WHM44","4-非银行业金融机构-基金",,"0","0","A","OTHER","1",,"B","0","0","0",,"INPUT","000018","2023-06-13 15:02:56.0","000018","2023-06-13 18:40:58.0","_PRIMARY_",,,,,,,,,
"JR20230613001740","06cc9a7d-2b93-406f-bd25-787ca0d58486","C168663965061035","测试04","2",,,,,"010277",,,,,,,,,"f2863d00-09b8-11ee-9237-8c2a8e28fdfa","AWAIT_SUBMIT","NOT_ACTIVE",,,"040",,"2023-06-13 15:07:24.0",,,"0b746bc8-9896-45c2-a5d4-17bbc5d9ab8e","WHM43","4-非银行业金融机构_一般",,"0","0",,"QUANTITATIVE","1",,,"0","0","0",,"INPUT","010277","2023-06-13 15:07:24.0","010277","2023-06-13 15:07:26.0","_PRIMARY_",,,,,,,,,
"JR20230613001741","6909f28e-c77c-45b1-8662-084ae8bbe6f9","C168663953361471","测试01","2",,,,,"000018","44.37902300","22.43036600","66.81000000","BBB","BBB",,,,"814e0669-09bc-11ee-9237-8c2a8e28fdfa","NEGATIVED","CANCEL",,,"040",,"2023-06-13 15:32:52.0",,,"9339ad9b-01ab-420b-be7a-ea230b84b11f","WHM3","3-银行业金融机构",,"0","0","BBB","OTHER","1",,"B","0","0","0",,"INPUT","000018","2023-06-13 15:32:52.0","000018","2023-06-13 19:19:41.0","_PRIMARY_",,,,,,,,,
"JR20230613001743","c426d6bd-63cb-4398-84bb-4365ed5986e7","C168663961353515","测试03","2",,,,,"000018","47.22267500","19.98550500","67.21000000","AA","BBB","AA",,,"6b1675f6-09c7-11ee-9aeb-8c2a8e28fdfa","NEGATIVED","CANCEL",,,"040",,"2023-06-13 16:50:59.0",,,"db7a2565-ecb7-4296-a337-04f48f7a8e78","WHM42","4-非银行业金融机构_证券",,"0","0","BBB","CUST_INFO","1",,"B","0","0","0",,"INPUT","000018","2023-06-13 16:50:59.0","000430","2023-06-14 09:38:10.0","_PRIMARY_",,,,,,,,,
"JR20230613001748","da5a4c04-3d9c-4fae-a59f-d4b6ef4c164a","C168663958007379","测试02","2",,,,,"000018","66.02807700","10.00866900","76.04000000","B","B",,"B","0.10870000","69177ef0-09d7-11ee-ace3-8c2a8e28fdfa","PASS","EXPIRED",,,"040",,"2023-06-13 18:45:28.0","2023-06-14 09:28:14.0","2024-06-14 09:28:14.0","1fa373a0-7917-4a7f-9d71-2e9964aa025b","WHM41","4-非银行业金融机构_金租消金",,"0","0","AAA","OTHER","1",,"B","1","0","0",,"INPUT","000018","2023-06-13 18:45:28.0","005203","2023-06-14 09:28:14.0","_PRIMARY_",,,,,,,,,
"JR20230614001751","6909f28e-c77c-45b1-8662-084ae8bbe6f9","C168663953361471","测试01","2",,,,,"000018","33.15395500","19.01925200","52.17000000","BBB","B","BBB",,,"41ff4b50-0a52-11ee-bbd2-8c2a8e28fdfa","NEGATIVED","NOT_ACTIVE",,,"040",,"2023-06-14 09:24:50.0",,,"9339ad9b-01ab-420b-be7a-ea230b84b11f","WHM3","3-银行业金融机构",,"0","0","B","OTHER","1",,"B","0","0","0",,"INPUT","000018","2023-06-14 09:24:50.0","005203","2023-06-14 09:28:18.0","_PRIMARY_",,,,,,,,,
"JR20230614001755","da5a4c04-3d9c-4fae-a59f-d4b6ef4c164a","C168663958007379","测试02","2",,,,,"000018","50.29055100","16.39735000","66.69000000",,"CCC",,,,"a5f95557-0a56-11ee-bbd2-8c2a8e28fdfa","NEGATIVED","CANCEL",,,"040",,"2023-06-14 09:56:16.0",,,"1fa373a0-7917-4a7f-9d71-2e9964aa025b","WHM41","4-非银行业金融机构_金租消金",,"0","0","AA","OTHER","1",,"B","0","0","0",,"INPUT","000018","2023-06-14 09:56:16.0","000018","2023-06-15 14:58:10.0","_PRIMARY_",,,,,,,,,
"JR20230616001819","c426d6bd-63cb-4398-84bb-4365ed5986e7","C168663961353515","测试03","2",,,,,"000018","46.48238800","17.90217200","64.38000000","B","B",,"B","0.10870000","dff98b87-0bea-11ee-bc5a-8c2a8e28fdfa","PASS","EXPIRED",,,"040",,"2023-06-16 10:09:50.0","2023-06-16 14:38:37.0","2024-06-16 14:38:37.0","db7a2565-ecb7-4296-a337-04f48f7a8e78","WHM42","4-非银行业金融机构_证券",,"0","0","BBB","OTHER","1",,"B","0","0","0",,"INPUT","000018","2023-06-16 10:09:50.0","005203","2023-06-16 14:38:37.0","_PRIMARY_",,,,,,,,,
"JR20230616001820","da5a4c04-3d9c-4fae-a59f-d4b6ef4c164a","C168663958007379","测试02","2",,,,,"000018","52.88222900","16.39735000","69.28000000","AA","AA",,,,"f6587959-0bea-11ee-bc5a-8c2a8e28fdfa","NEGATIVED","CANCEL",,,"040",,"2023-06-16 10:10:27.0",,,"1fa373a0-7917-4a7f-9d71-2e9964aa025b","WHM41","4-非银行业金融机构_金租消金",,"0","0","AA","QUANTITATIVE","1",,"B","0","0","0",,"INPUT","000018","2023-06-16 10:10:28.0","000018","2023-06-16 14:39:07.0","_PRIMARY_",,,,,,,,,
"JR20230616001822","6909f28e-c77c-45b1-8662-084ae8bbe6f9","C168663953361471","测试01","2",,,,,"000018",,,,,,,,,"51db3135-0bf0-11ee-bc5a-8c2a8e28fdfa","NEGATIVED","CANCEL",,,"040",,"2023-06-16 10:48:48.0",,,"9339ad9b-01ab-420b-be7a-ea230b84b11f","WHM3","3-银行业金融机构",,"0","0",,"QUANTITATIVE","1",,,"0","0","0",,"INPUT","000018","2023-06-16 10:48:49.0","000018","2023-06-16 10:48:51.0","_PRIMARY_",,,,,,,,,
"JR20230616001823","56d00128-2197-404b-9a80-0c2c89ba95d4","C168663969115226","测试05","2",,,,,"000018",,"74.57571600","74.58000000",,"A",,,,"59dbaf51-0bf0-11ee-bc5a-8c2a8e28fdfa","NEGATIVED","CANCEL",,,"040",,"2023-06-16 10:49:02.0",,,"b028d0f3-5e7c-43ee-b548-24f1de7a204a","WHM44","4-非银行业金融机构-基金",,"0","0","A","OTHER","1",,"B","0","0","0",,"INPUT","000018","2023-06-16 10:49:02.0","000018","2023-06-16 10:49:37.0","_PRIMARY_",,,,,,,,,
"JR20230616001824","58e6de75-e6e3-4092-9fa7-ebac285143f2","C168688372082545","测试06","2",,,,,"000018","50.10331400","10.00866900","60.11000000","BB","BB",,"BB","0.04260000","a5851f92-0bf2-11ee-bc5a-8c2a8e28fdfa","PASS","EXPIRED",,,"040",,"2023-06-16 11:05:28.0","2023-06-16 11:30:05.0","2024-06-16 11:30:05.0","1fa373a0-7917-4a7f-9d71-2e9964aa025b","WHM41","4-非银行业金融机构_金租消金",,"0","0","A","OTHER","1",,"B","0","0","0",,"INPUT","000018","2023-06-16 11:05:28.0","005203","2023-06-16 11:30:05.0","_PRIMARY_",,,,,,,,,
"JR20230616001825","46878c9e-de68-41ae-9cdb-a3faf3784967","C168664427324739","实时","2",,,,,"010277","35.94102000","20.56861200","56.51000000","BB","BB",,"BB","0.04260000","fa194634-0bf4-11ee-8c54-286ed489cd4a","PASS","EXPIRED",,,"040",,"2023-06-16 11:22:08.0","2023-06-16 11:29:57.0","2024-06-16 11:29:57.0","9339ad9b-01ab-420b-be7a-ea230b84b11f","WHM3","3-银行业金融机构",,"0","0","BB","OTHER","1",,"B","0","0","0",,"INPUT","010277","2023-06-16 11:22:08.0","005203","2023-06-16 11:29:57.0","_PRIMARY_",,,,,,,,,
"JR20230628001966","d3ef897c-84fc-4808-874d-385791c3a138","C168791748883227","工商银行","2",,,,,"010277",,,,,,,,,"4018821d-1557-11ee-a8e8-8c2a8e28fdfa","AWAIT_SUBMIT","NOT_ACTIVE",,,"040",,"2023-06-28 09:58:17.0",,,"9339ad9b-01ab-420b-be7a-ea230b84b11f","WHM3","3-银行业金融机构",,"0","0",,"CUST_INFO","1",,,,"0",,,"INPUT","010277","2023-06-28 09:58:17.0","010277","2023-06-28 09:58:17.0","_PRIMARY_",,,,,,,,,
"JR20230628001967","393a388c-7ac8-496e-af5a-0935ca503479","C168722865029555","ssds","2",,,,,"010277",,,,,,,,,"517abbf9-1557-11ee-a8e8-8c2a8e28fdfa","AWAIT_SUBMIT","NOT_ACTIVE",,,"040",,"2023-06-28 09:58:46.0",,,"9339ad9b-01ab-420b-be7a-ea230b84b11f","WHM3","3-银行业金融机构",,"0","0",,"CUST_INFO","1",,,,"0",,,"INPUT","010277","2023-06-28 09:58:46.0","010277","2023-06-28 09:58:46.0","_PRIMARY_",,,,,,,,,
"JR20230628001968","46878c9e-de68-41ae-9cdb-a3faf3784967","C168664427324739","实时","2",,,,,"010277",,,,,,,,,"ac4190a5-1557-11ee-a8e8-8c2a8e28fdfa","AWAIT_SUBMIT","NOT_ACTIVE",,,"040",,"2023-06-28 10:01:19.0",,,"1fa373a0-7917-4a7f-9d71-2e9964aa025b","WHM41","4-非银行业金融机构_金租消金",,"0","0",,"QUALITATIVE_SHOW","1",,,"0","0","0",,"INPUT","010277","2023-06-28 10:01:19.0","010277","2023-10-12 10:48:54.0","_PRIMARY_",,,,,,,,,
"JR20230628001969","72f77103-b7f7-4ff4-9077-a9d4f03996c6","C168791872039499","建设银行","2",,,,,"010277",,,,,,,,,"24252d11-155a-11ee-a8e8-8c2a8e28fdfa","AWAIT_SUBMIT","NOT_ACTIVE",,,"040",,"2023-06-28 10:18:59.0",,,"9339ad9b-01ab-420b-be7a-ea230b84b11f","WHM3","3-银行业金融机构",,"0","0",,"QUANTITATIVE","1",,,"0","0","0",,"INPUT","010277","2023-06-28 10:18:59.0","010277","2023-10-11 17:08:58.0","_PRIMARY_",,,,,,,,,
"JR20230628001970","92a36735-3d90-4294-8b29-8dedfca5beda","C168792232554955","中国银行","2",,,,,"010277","63.54023800","32.62031100","96.16000000",,"AAA",,,,"800fc7bb-1562-11ee-a8e8-8c2a8e28fdfa","NEGATIVED","CANCEL",,,"040",,"2023-06-28 11:18:49.0",,,"9339ad9b-01ab-420b-be7a-ea230b84b11f","WHM3","3-银行业金融机构",,"0","0","AAA","OTHER","1",,"B","0","0","0",,"INPUT","010277","2023-06-28 11:18:49.0","010277","2023-06-29 09:25:37.0","_PRIMARY_",,,,,,,,,
"JR20230628001972","de25da59-939f-4f16-823e-3cc8c3f01992","C168793367754333","中信证券","2",,,,,"010277","65.24704900","34.74966800","100.00000000",,"AA",,,,"ee61d1d5-157c-11ee-a8e8-8c2a8e28fdfa","NEGATIVED","CANCEL",,,"040",,"2023-06-28 14:28:01.0",,,"db7a2565-ecb7-4296-a337-04f48f7a8e78","WHM42","4-非银行业金融机构_证券",,"0","0","AAA","OTHER","1",,"B","0","0","0",,"INPUT","010277","2023-06-28 14:28:01.0","010277","2023-06-28 14:46:51.0","_PRIMARY_",,,,,,,,,
"JR20230628001975","de25da59-939f-4f16-823e-3cc8c3f01992","C168793367754333","中信证券","2",,,,,"010277",,,,,,,,,"21683b0b-1580-11ee-a8e8-8c2a8e28fdfa","NEGATIVED","CANCEL",,,"040",,"2023-06-28 14:50:55.0",,,"db7a2565-ecb7-4296-a337-04f48f7a8e78","WHM42","4-非银行业金融机构_证券",,"0","0",,"CUST_INFO","1",,,,"0",,,"INPUT","010277","2023-06-28 14:50:55.0","010277","2023-06-28 14:50:55.0","_PRIMARY_",,,,,,,,,
"JR20230628001977","de25da59-939f-4f16-823e-3cc8c3f01992","C168793367754333","中信证券","2",,,,,"010277",,,,,,,,,"79b5b4e7-1581-11ee-a8e8-8c2a8e28fdfa","NEGATIVED","CANCEL",,,"040",,"2023-06-28 15:00:33.0",,,"db7a2565-ecb7-4296-a337-04f48f7a8e78","WHM42","4-非银行业金融机构_证券",,"0","0",,"QUANTITATIVE","1",,,"0","0","0",,"INPUT","010277","2023-06-28 15:00:33.0","010277","2023-10-10 16:27:27.0","_PRIMARY_",,,,,,,,,
"JR20230628001978","0ded98f1-db5d-4079-ad02-1a9a7f0c4353","C168793618985050","东莞银行-测试","2",,,,,"010277",,,,,,,,,"c7bda3b2-1582-11ee-a8e8-8c2a8e28fdfa","NEGATIVED","CANCEL",,,"040",,"2023-06-28 15:09:53.0",,,"9339ad9b-01ab-420b-be7a-ea230b84b11f","WHM3","3-银行业金融机构",,"0","0",,"QUALITATIVE_SHOW","1",,,"0","0","0",,"INPUT","010277","2023-06-28 15:09:53.0","010277","2023-10-12 10:45:41.0","_PRIMARY_",,,,,,,,,
"JR20230628001979","c38ea413-18e3-4c8b-b5dc-4f6c845edb6f","C168793709784578","中部银行","2",,,,,"010085",,,,,,,,,"e905ed21-1584-11ee-9f7b-8c2a8e28fdfa","AWAIT_SUBMIT","NOT_ACTIVE",,,"040",,"2023-06-28 15:25:07.0",,,"9339ad9b-01ab-420b-be7a-ea230b84b11f","WHM3","3-银行业金融机构",,"0","0",,"CUST_INFO","1",,,,"0",,,"INPUT","010085","2023-06-28 15:25:08.0","010085","2023-06-28 15:25:08.0","_PRIMARY_",,,,,,,,,
"JR20230713002086","f751365b-96d2-49b3-be86-27cdc3915592","C168923091006164","00122","2",,,,,"010277","52.79487600","32.62031100","85.42000000","AAA","AAA",,"AAA","0.00100000","49d09736-2149-11ee-8c2e-8c2a8e28fdfa","PASS","EXPIRED",,,"040",,"2023-07-13 14:48:34.0","2023-07-13 14:49:41.0","2024-07-13 14:49:41.0","9339ad9b-01ab-420b-be7a-ea230b84b11f","WHM3","3-银行业金融机构",,"0","0","AAA","OTHER","1",,"B","0","0","0",,"INPUT","010277","2023-07-13 14:48:35.0","005203","2023-07-14 11:25:14.0","_PRIMARY_",,,,,,,,,
"JR20230714002092","f751365b-96d2-49b3-be86-27cdc3915592","C168923091006164","00122","2",,,,,"010277","56.57174800","32.62031100","89.19000000","AA","AA",,"AA","0.00260000","e3003634-21f5-11ee-8c2e-8c2a8e28fdfa","PASS","EFFECTIVE",,,"040",,"2023-07-14 11:24:05.0","2023-07-14 11:25:14.0","2024-07-14 11:25:14.0","9339ad9b-01ab-420b-be7a-ea230b84b11f","WHM3","3-银行业金融机构",,"0","0","AAA","OTHER","1",,"B","0","0","0",,"INPUT","010277","2023-07-14 11:24:05.0","005203","2023-07-14 11:25:14.0","_PRIMARY_",,,,,,,,,
"JR20230726002110","5c1b106a-c324-47e7-9013-71479f1938a8","C62411846","测试客户号生成规则","2",,,,,"010277","63.99622700","30.70214000","94.70000000","A","A",,"A","0.00650000","44463e94-2b56-11ee-be06-fa163e6051d0","PASS","EXPIRED",,,"040",,"2023-07-26 09:46:40.0","2023-07-26 09:48:46.0","2024-07-26 09:48:46.0","9339ad9b-01ab-420b-be7a-ea230b84b11f","WHM3","3-银行业金融机构",,"0","0","AAA","OTHER","1",,"B","0","0","0",,"INPUT","010277","2023-07-26 09:46:40.0","005203","2023-10-12 10:51:59.0","_PRIMARY_",,,,,,,,, "JR20230726002110","5c1b106a-c324-47e7-9013-71479f1938a8","C62411846","测试客户号生成规则","2",,,,,"010277","63.99622700","30.70214000","94.70000000","A","A",,"A","0.00650000","44463e94-2b56-11ee-be06-fa163e6051d0","PASS","EXPIRED",,,"040",,"2023-07-26 09:46:40.0","2023-07-26 09:48:46.0","2024-07-26 09:48:46.0","9339ad9b-01ab-420b-be7a-ea230b84b11f","WHM3","3-银行业金融机构",,"0","0","AAA","OTHER","1",,"B","0","0","0",,"INPUT","010277","2023-07-26 09:46:40.0","005203","2023-10-12 10:51:59.0","_PRIMARY_",,,,,,,,,
"JR20231012002116","5c1b106a-c324-47e7-9013-71479f1938a8","C62411846","测试客户号生成规则","2",,,,,"010277","44.16079600","20.56861200","64.73000000","BBB","BBB",,"BBB","0.01670000","ee4e3b1e-68a9-11ee-a12b-c22d5585a57a","PASS","EFFECTIVE",,,"040",,"2023-10-12 10:49:14.0","2023-10-12 10:51:59.0","2024-10-12 10:51:59.0","2ab3f405-66d6-4fae-9225-0d0fdf9fcd42","WHM3","3-银行业金融机构",,"0","0","BBB","OTHER","1",,"B","0","0","0",,"INPUT","010277","2023-10-12 10:49:15.0","005203","2023-10-12 10:51:59.0","_PRIMARY_",,,,,,,,, "JR20231012002116","5c1b106a-c324-47e7-9013-71479f1938a8","C62411846","测试客户号生成规则","2",,,,,"010277","44.16079600","20.56861200","64.73000000","BBB","BBB",,"BBB","0.01670000","ee4e3b1e-68a9-11ee-a12b-c22d5585a57a","PASS","EFFECTIVE",,,"040",,"2023-10-12 10:49:14.0","2023-10-12 10:51:59.0","2024-10-12 10:51:59.0","2ab3f405-66d6-4fae-9225-0d0fdf9fcd42","WHM3","3-银行业金融机构",,"0","0","BBB","OTHER","1",,"B","0","0","0",,"INPUT","010277","2023-10-12 10:49:15.0","005203","2023-10-12 10:51:59.0","_PRIMARY_",,,,,,,,,
"PJ20230607001438","C20230607180253219481","2100601306","2100601306","1","左宝","009085","01012","光谷分行营业室","009085","7.30025300",,,,,,,,"797cbae4-051a-11ee-8731-8c2a8e28fdfa","NEGATIVED","NOT_ACTIVE","INDEPENDENT",,,,"2023-06-07 18:02:50.0",,,"5457a536-0d75-4c5e-bb2e-c78b3fa53e97","WHM16","16-中小微建筑业",,"0","0",,"QUANTITATIVE","0",,,"0","0","0",,"INPUT","009085","2023-06-07 18:02:50.0","009085","2023-06-07 18:03:42.0","_PRIMARY_",,,,,,,,, "PJ20230607001438","C20230607180253219481","2100601306","2100601306","1","左宝","009085","01012","光谷分行营业室","009085","7.30025300",,,,,,,,"797cbae4-051a-11ee-8731-8c2a8e28fdfa","NEGATIVED","NOT_ACTIVE","INDEPENDENT",,,,"2023-06-07 18:02:50.0",,,"5457a536-0d75-4c5e-bb2e-c78b3fa53e97","WHM16","16-中小微建筑业",,"0","0",,"QUANTITATIVE","0",,,"0","0","0",,"INPUT","009085","2023-06-07 18:02:50.0","009085","2023-06-07 18:03:42.0","_PRIMARY_",,,,,,,,,

1 NS_COMPANY_RATING
2 ID_ CUST_ID CUST_NO CUSTOMER_ID CUST_NAME CUSTOMER_CHINESE_NAME CUST_TYPE MANAGER_NAME MANAGER_CODE MANAGER_ORG_CODE MANAGER_ORG_NAME LAUNCH_USER QUAN_SCORE QUAL_SCORE MODEL_SCORE INIT_LEVEL ADJ_LEVEL SP_LEVEL FINAL_LEVEL PD PROCESS_INSTANCE_ID PROCESS_STATUS RATING_STATUS TRIGGER_TYPE TRIGGER_REA RATE_TYPE RATE_TYPE_DES START_TIME EFFECTIVE_TIME MATURE_TIME MODEL_ID MODEL_CODE MODEL_NAME RATING_CFG_ID IS_ADMIT IS_TRIAL MODEL_LEVEL CURRENT_STEP OVER_NUM OUT_IMAGE_ID ACCESS_LEVEL DEFAULT_IND QUAL_CALC_COUNT PWH_COMMITTEE_NUM GX_END_TIME DATA_COME_FROM_ CREATOR_ CREATE_DATE_ LAST_MODIFIER_ LAST_MODIFYDATE_ CORP_CODE_ MODEL_ID_G MODEL_CODE_G MODEL_NAME_G QUAN_SCORE_G QUAL_SCORE_G MODEL_SCORE_G MODEL_LEVEL_G ACCESS_LEVEL_G ADJ_LEVEL_G
3 ID主键 客户ID 客户编号 客户中文名称 客户类别(1:一般公司客户;2:金融机构及发债企业客户) 客户经理名称 客户经理编号 客户经理所在机构编号 客户经理所在机构名称 发起人 定量得分 定性得分 模型得分 初始级别 调整项级别 评级推翻级别 最终认定级别 违约概率 流程实例主键 流程状态 评级状态 评级任务触发类型 评级任务触发原因 评级类型 评级类型描述 评级发起日期 评级生效时间 评级到期时间 评级模型ID 评级模型编号 评级模型名称 评级配置ID 准入建议 是否试算 模型评级等级 当前评级步骤(页面位置) 意见位置 外部数据授权标志 准入级别 违约标识 定性计算次数 评级委员会人数 评级更新任务到期时间 数据来源(INPUT:手工录入,IMPORT:系统自动导入) 创建人 创建日期 最后修改人 最后修改日期 所属法人代码 评级模型ID(灰度) 评级模型编号(灰度) 评级模型名称(灰度) 定量得分(灰度) 定性得分(灰度) 模型得分(灰度) 模型评级等级(灰度) 准入级别(灰度) 调整项级别(灰度)
4 VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR DECIMAL DECIMAL DECIMAL VARCHAR VARCHAR VARCHAR VARCHAR DECIMAL VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR TIMESTAMP TIMESTAMP TIMESTAMP VARCHAR VARCHAR VARCHAR VARCHAR DECIMAL DECIMAL VARCHAR VARCHAR DECIMAL VARCHAR VARCHAR VARCHAR DECIMAL DECIMAL TIMESTAMP VARCHAR VARCHAR TIMESTAMP VARCHAR TIMESTAMP VARCHAR VARCHAR VARCHAR VARCHAR DECIMAL DECIMAL DECIMAL VARCHAR VARCHAR VARCHAR
5 java.lang.String java.lang.String java.lang.String 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.math.BigDecimal java.math.BigDecimal java.lang.String java.lang.String java.lang.String java.lang.String 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.sql.Timestamp java.sql.Timestamp java.sql.Timestamp java.lang.String java.lang.String java.lang.String java.lang.String java.math.BigDecimal java.math.BigDecimal java.lang.String java.lang.String java.math.BigDecimal java.lang.String java.lang.String java.lang.String java.math.BigDecimal java.math.BigDecimal java.sql.Timestamp java.lang.String java.lang.String java.sql.Timestamp java.lang.String java.sql.Timestamp java.lang.String java.lang.String java.lang.String java.lang.String java.math.BigDecimal java.math.BigDecimal java.math.BigDecimal java.lang.String java.lang.String java.lang.String
8 GX202306251899 C20230626102016644300 2104904964 2104904964 1 施远 012941 01112 洪山支行营业室 012941 0E-8 37.06136400 37.06000000 CC CC CC CC 0.32970000 fea57584-13c7-11ee-8efc-8c2a8e28fdfa PASS EFFECTIVE UPDATE 3 2023-06-26 10:21:00.0 2023-07-12 14:51:51.0 2024-07-12 00:00:00.0 c1510ede-01bd-44b5-bdfb-7c4e4aabb213 WHM20 20-小微批发和零售业 0 0 CC OTHER 3 B 0 1 0 2023-12-26 10:21:00.0 INPUT 2023-06-26 10:21:00.0 006841 2023-07-12 14:51:51.0 _PRIMARY_
9 GX202306251900 C20230626102135131520 2006499525 2006499525 1 左宝 009085 01012 光谷分行营业室 009085 0E-8 54.61202300 54.61000000 CCC CCC CCC CCC 0.18930000 2effd8c2-13c8-11ee-8efc-8c2a8e28fdfa PASS EFFECTIVE UPDATE 3 2023-06-26 10:21:00.0 2023-06-30 09:44:37.0 2024-06-30 00:00:00.0 86ca9007-89fb-4460-9475-62ee12658c39 WHM10 10-小微租赁和商务服务业 0 0 B OTHER 3 B 0 1 0 2023-12-26 10:21:00.0 INPUT 2023-06-26 10:21:00.0 006247 2023-06-30 09:44:37.0 _PRIMARY_
10 GX202406251930 C20230627091337953258 2112605859 2112605859 1 左宝 009085 01273 科技金融服务中心营业室 009085 19.04804200 49.78424800 68.83000000 BBB BBB BBB BBB 0.01670000 dac3a84c-1487-11ee-a8e8-8c2a8e28fdfa PASS EXPIRED UPDATE 评级有效期到期 2023-06-26 16:08:41.0 2023-06-28 16:22:10.0 2024-06-28 00:00:00.0 86ca9007-89fb-4460-9475-62ee12658c39 WHM10 10-小微租赁和商务服务业 0 0 BBB OTHER 3 B 0 1 0 2023-12-26 16:08:41.0 INPUT 2023-06-26 16:08:41.0 006247 2023-07-13 09:58:45.0 _PRIMARY_
JR20230613001739 56d00128-2197-404b-9a80-0c2c89ba95d4 C168663969115226 测试05 2 000018 82.08500200 82.09000000 A A 52e2787e-09b8-11ee-9237-8c2a8e28fdfa NEGATIVED CANCEL 040 2023-06-13 15:02:56.0 b028d0f3-5e7c-43ee-b548-24f1de7a204a WHM44 4-非银行业金融机构-基金 0 0 A OTHER 1 B 0 0 0 INPUT 000018 2023-06-13 15:02:56.0 000018 2023-06-13 18:40:58.0 _PRIMARY_
JR20230613001740 06cc9a7d-2b93-406f-bd25-787ca0d58486 C168663965061035 测试04 2 010277 f2863d00-09b8-11ee-9237-8c2a8e28fdfa AWAIT_SUBMIT NOT_ACTIVE 040 2023-06-13 15:07:24.0 0b746bc8-9896-45c2-a5d4-17bbc5d9ab8e WHM43 4-非银行业金融机构_一般 0 0 QUANTITATIVE 1 0 0 0 INPUT 010277 2023-06-13 15:07:24.0 010277 2023-06-13 15:07:26.0 _PRIMARY_
JR20230613001741 6909f28e-c77c-45b1-8662-084ae8bbe6f9 C168663953361471 测试01 2 000018 44.37902300 22.43036600 66.81000000 BBB BBB 814e0669-09bc-11ee-9237-8c2a8e28fdfa NEGATIVED CANCEL 040 2023-06-13 15:32:52.0 9339ad9b-01ab-420b-be7a-ea230b84b11f WHM3 3-银行业金融机构 0 0 BBB OTHER 1 B 0 0 0 INPUT 000018 2023-06-13 15:32:52.0 000018 2023-06-13 19:19:41.0 _PRIMARY_
JR20230613001743 c426d6bd-63cb-4398-84bb-4365ed5986e7 C168663961353515 测试03 2 000018 47.22267500 19.98550500 67.21000000 AA BBB AA 6b1675f6-09c7-11ee-9aeb-8c2a8e28fdfa NEGATIVED CANCEL 040 2023-06-13 16:50:59.0 db7a2565-ecb7-4296-a337-04f48f7a8e78 WHM42 4-非银行业金融机构_证券 0 0 BBB CUST_INFO 1 B 0 0 0 INPUT 000018 2023-06-13 16:50:59.0 000430 2023-06-14 09:38:10.0 _PRIMARY_
JR20230613001748 da5a4c04-3d9c-4fae-a59f-d4b6ef4c164a C168663958007379 测试02 2 000018 66.02807700 10.00866900 76.04000000 B B B 0.10870000 69177ef0-09d7-11ee-ace3-8c2a8e28fdfa PASS EXPIRED 040 2023-06-13 18:45:28.0 2023-06-14 09:28:14.0 2024-06-14 09:28:14.0 1fa373a0-7917-4a7f-9d71-2e9964aa025b WHM41 4-非银行业金融机构_金租消金 0 0 AAA OTHER 1 B 1 0 0 INPUT 000018 2023-06-13 18:45:28.0 005203 2023-06-14 09:28:14.0 _PRIMARY_
JR20230614001751 6909f28e-c77c-45b1-8662-084ae8bbe6f9 C168663953361471 测试01 2 000018 33.15395500 19.01925200 52.17000000 BBB B BBB 41ff4b50-0a52-11ee-bbd2-8c2a8e28fdfa NEGATIVED NOT_ACTIVE 040 2023-06-14 09:24:50.0 9339ad9b-01ab-420b-be7a-ea230b84b11f WHM3 3-银行业金融机构 0 0 B OTHER 1 B 0 0 0 INPUT 000018 2023-06-14 09:24:50.0 005203 2023-06-14 09:28:18.0 _PRIMARY_
JR20230614001755 da5a4c04-3d9c-4fae-a59f-d4b6ef4c164a C168663958007379 测试02 2 000018 50.29055100 16.39735000 66.69000000 CCC a5f95557-0a56-11ee-bbd2-8c2a8e28fdfa NEGATIVED CANCEL 040 2023-06-14 09:56:16.0 1fa373a0-7917-4a7f-9d71-2e9964aa025b WHM41 4-非银行业金融机构_金租消金 0 0 AA OTHER 1 B 0 0 0 INPUT 000018 2023-06-14 09:56:16.0 000018 2023-06-15 14:58:10.0 _PRIMARY_
JR20230616001819 c426d6bd-63cb-4398-84bb-4365ed5986e7 C168663961353515 测试03 2 000018 46.48238800 17.90217200 64.38000000 B B B 0.10870000 dff98b87-0bea-11ee-bc5a-8c2a8e28fdfa PASS EXPIRED 040 2023-06-16 10:09:50.0 2023-06-16 14:38:37.0 2024-06-16 14:38:37.0 db7a2565-ecb7-4296-a337-04f48f7a8e78 WHM42 4-非银行业金融机构_证券 0 0 BBB OTHER 1 B 0 0 0 INPUT 000018 2023-06-16 10:09:50.0 005203 2023-06-16 14:38:37.0 _PRIMARY_
JR20230616001820 da5a4c04-3d9c-4fae-a59f-d4b6ef4c164a C168663958007379 测试02 2 000018 52.88222900 16.39735000 69.28000000 AA AA f6587959-0bea-11ee-bc5a-8c2a8e28fdfa NEGATIVED CANCEL 040 2023-06-16 10:10:27.0 1fa373a0-7917-4a7f-9d71-2e9964aa025b WHM41 4-非银行业金融机构_金租消金 0 0 AA QUANTITATIVE 1 B 0 0 0 INPUT 000018 2023-06-16 10:10:28.0 000018 2023-06-16 14:39:07.0 _PRIMARY_
JR20230616001822 6909f28e-c77c-45b1-8662-084ae8bbe6f9 C168663953361471 测试01 2 000018 51db3135-0bf0-11ee-bc5a-8c2a8e28fdfa NEGATIVED CANCEL 040 2023-06-16 10:48:48.0 9339ad9b-01ab-420b-be7a-ea230b84b11f WHM3 3-银行业金融机构 0 0 QUANTITATIVE 1 0 0 0 INPUT 000018 2023-06-16 10:48:49.0 000018 2023-06-16 10:48:51.0 _PRIMARY_
JR20230616001823 56d00128-2197-404b-9a80-0c2c89ba95d4 C168663969115226 测试05 2 000018 74.57571600 74.58000000 A 59dbaf51-0bf0-11ee-bc5a-8c2a8e28fdfa NEGATIVED CANCEL 040 2023-06-16 10:49:02.0 b028d0f3-5e7c-43ee-b548-24f1de7a204a WHM44 4-非银行业金融机构-基金 0 0 A OTHER 1 B 0 0 0 INPUT 000018 2023-06-16 10:49:02.0 000018 2023-06-16 10:49:37.0 _PRIMARY_
JR20230616001824 58e6de75-e6e3-4092-9fa7-ebac285143f2 C168688372082545 测试06 2 000018 50.10331400 10.00866900 60.11000000 BB BB BB 0.04260000 a5851f92-0bf2-11ee-bc5a-8c2a8e28fdfa PASS EXPIRED 040 2023-06-16 11:05:28.0 2023-06-16 11:30:05.0 2024-06-16 11:30:05.0 1fa373a0-7917-4a7f-9d71-2e9964aa025b WHM41 4-非银行业金融机构_金租消金 0 0 A OTHER 1 B 0 0 0 INPUT 000018 2023-06-16 11:05:28.0 005203 2023-06-16 11:30:05.0 _PRIMARY_
JR20230616001825 46878c9e-de68-41ae-9cdb-a3faf3784967 C168664427324739 实时 2 010277 35.94102000 20.56861200 56.51000000 BB BB BB 0.04260000 fa194634-0bf4-11ee-8c54-286ed489cd4a PASS EXPIRED 040 2023-06-16 11:22:08.0 2023-06-16 11:29:57.0 2024-06-16 11:29:57.0 9339ad9b-01ab-420b-be7a-ea230b84b11f WHM3 3-银行业金融机构 0 0 BB OTHER 1 B 0 0 0 INPUT 010277 2023-06-16 11:22:08.0 005203 2023-06-16 11:29:57.0 _PRIMARY_
JR20230628001966 d3ef897c-84fc-4808-874d-385791c3a138 C168791748883227 工商银行 2 010277 4018821d-1557-11ee-a8e8-8c2a8e28fdfa AWAIT_SUBMIT NOT_ACTIVE 040 2023-06-28 09:58:17.0 9339ad9b-01ab-420b-be7a-ea230b84b11f WHM3 3-银行业金融机构 0 0 CUST_INFO 1 0 INPUT 010277 2023-06-28 09:58:17.0 010277 2023-06-28 09:58:17.0 _PRIMARY_
JR20230628001967 393a388c-7ac8-496e-af5a-0935ca503479 C168722865029555 ssds 2 010277 517abbf9-1557-11ee-a8e8-8c2a8e28fdfa AWAIT_SUBMIT NOT_ACTIVE 040 2023-06-28 09:58:46.0 9339ad9b-01ab-420b-be7a-ea230b84b11f WHM3 3-银行业金融机构 0 0 CUST_INFO 1 0 INPUT 010277 2023-06-28 09:58:46.0 010277 2023-06-28 09:58:46.0 _PRIMARY_
JR20230628001968 46878c9e-de68-41ae-9cdb-a3faf3784967 C168664427324739 实时 2 010277 ac4190a5-1557-11ee-a8e8-8c2a8e28fdfa AWAIT_SUBMIT NOT_ACTIVE 040 2023-06-28 10:01:19.0 1fa373a0-7917-4a7f-9d71-2e9964aa025b WHM41 4-非银行业金融机构_金租消金 0 0 QUALITATIVE_SHOW 1 0 0 0 INPUT 010277 2023-06-28 10:01:19.0 010277 2023-10-12 10:48:54.0 _PRIMARY_
JR20230628001969 72f77103-b7f7-4ff4-9077-a9d4f03996c6 C168791872039499 建设银行 2 010277 24252d11-155a-11ee-a8e8-8c2a8e28fdfa AWAIT_SUBMIT NOT_ACTIVE 040 2023-06-28 10:18:59.0 9339ad9b-01ab-420b-be7a-ea230b84b11f WHM3 3-银行业金融机构 0 0 QUANTITATIVE 1 0 0 0 INPUT 010277 2023-06-28 10:18:59.0 010277 2023-10-11 17:08:58.0 _PRIMARY_
JR20230628001970 92a36735-3d90-4294-8b29-8dedfca5beda C168792232554955 中国银行 2 010277 63.54023800 32.62031100 96.16000000 AAA 800fc7bb-1562-11ee-a8e8-8c2a8e28fdfa NEGATIVED CANCEL 040 2023-06-28 11:18:49.0 9339ad9b-01ab-420b-be7a-ea230b84b11f WHM3 3-银行业金融机构 0 0 AAA OTHER 1 B 0 0 0 INPUT 010277 2023-06-28 11:18:49.0 010277 2023-06-29 09:25:37.0 _PRIMARY_
JR20230628001972 de25da59-939f-4f16-823e-3cc8c3f01992 C168793367754333 中信证券 2 010277 65.24704900 34.74966800 100.00000000 AA ee61d1d5-157c-11ee-a8e8-8c2a8e28fdfa NEGATIVED CANCEL 040 2023-06-28 14:28:01.0 db7a2565-ecb7-4296-a337-04f48f7a8e78 WHM42 4-非银行业金融机构_证券 0 0 AAA OTHER 1 B 0 0 0 INPUT 010277 2023-06-28 14:28:01.0 010277 2023-06-28 14:46:51.0 _PRIMARY_
JR20230628001975 de25da59-939f-4f16-823e-3cc8c3f01992 C168793367754333 中信证券 2 010277 21683b0b-1580-11ee-a8e8-8c2a8e28fdfa NEGATIVED CANCEL 040 2023-06-28 14:50:55.0 db7a2565-ecb7-4296-a337-04f48f7a8e78 WHM42 4-非银行业金融机构_证券 0 0 CUST_INFO 1 0 INPUT 010277 2023-06-28 14:50:55.0 010277 2023-06-28 14:50:55.0 _PRIMARY_
JR20230628001977 de25da59-939f-4f16-823e-3cc8c3f01992 C168793367754333 中信证券 2 010277 79b5b4e7-1581-11ee-a8e8-8c2a8e28fdfa NEGATIVED CANCEL 040 2023-06-28 15:00:33.0 db7a2565-ecb7-4296-a337-04f48f7a8e78 WHM42 4-非银行业金融机构_证券 0 0 QUANTITATIVE 1 0 0 0 INPUT 010277 2023-06-28 15:00:33.0 010277 2023-10-10 16:27:27.0 _PRIMARY_
JR20230628001978 0ded98f1-db5d-4079-ad02-1a9a7f0c4353 C168793618985050 东莞银行-测试 2 010277 c7bda3b2-1582-11ee-a8e8-8c2a8e28fdfa NEGATIVED CANCEL 040 2023-06-28 15:09:53.0 9339ad9b-01ab-420b-be7a-ea230b84b11f WHM3 3-银行业金融机构 0 0 QUALITATIVE_SHOW 1 0 0 0 INPUT 010277 2023-06-28 15:09:53.0 010277 2023-10-12 10:45:41.0 _PRIMARY_
JR20230628001979 c38ea413-18e3-4c8b-b5dc-4f6c845edb6f C168793709784578 中部银行 2 010085 e905ed21-1584-11ee-9f7b-8c2a8e28fdfa AWAIT_SUBMIT NOT_ACTIVE 040 2023-06-28 15:25:07.0 9339ad9b-01ab-420b-be7a-ea230b84b11f WHM3 3-银行业金融机构 0 0 CUST_INFO 1 0 INPUT 010085 2023-06-28 15:25:08.0 010085 2023-06-28 15:25:08.0 _PRIMARY_
JR20230713002086 f751365b-96d2-49b3-be86-27cdc3915592 C168923091006164 00122 2 010277 52.79487600 32.62031100 85.42000000 AAA AAA AAA 0.00100000 49d09736-2149-11ee-8c2e-8c2a8e28fdfa PASS EXPIRED 040 2023-07-13 14:48:34.0 2023-07-13 14:49:41.0 2024-07-13 14:49:41.0 9339ad9b-01ab-420b-be7a-ea230b84b11f WHM3 3-银行业金融机构 0 0 AAA OTHER 1 B 0 0 0 INPUT 010277 2023-07-13 14:48:35.0 005203 2023-07-14 11:25:14.0 _PRIMARY_
JR20230714002092 f751365b-96d2-49b3-be86-27cdc3915592 C168923091006164 00122 2 010277 56.57174800 32.62031100 89.19000000 AA AA AA 0.00260000 e3003634-21f5-11ee-8c2e-8c2a8e28fdfa PASS EFFECTIVE 040 2023-07-14 11:24:05.0 2023-07-14 11:25:14.0 2024-07-14 11:25:14.0 9339ad9b-01ab-420b-be7a-ea230b84b11f WHM3 3-银行业金融机构 0 0 AAA OTHER 1 B 0 0 0 INPUT 010277 2023-07-14 11:24:05.0 005203 2023-07-14 11:25:14.0 _PRIMARY_
11 JR20230726002110 5c1b106a-c324-47e7-9013-71479f1938a8 C62411846 测试客户号生成规则 2 010277 63.99622700 30.70214000 94.70000000 A A A 0.00650000 44463e94-2b56-11ee-be06-fa163e6051d0 PASS EXPIRED 040 2023-07-26 09:46:40.0 2023-07-26 09:48:46.0 2024-07-26 09:48:46.0 9339ad9b-01ab-420b-be7a-ea230b84b11f WHM3 3-银行业金融机构 0 0 AAA OTHER 1 B 0 0 0 INPUT 010277 2023-07-26 09:46:40.0 005203 2023-10-12 10:51:59.0 _PRIMARY_
12 JR20231012002116 5c1b106a-c324-47e7-9013-71479f1938a8 C62411846 测试客户号生成规则 2 010277 44.16079600 20.56861200 64.73000000 BBB BBB BBB 0.01670000 ee4e3b1e-68a9-11ee-a12b-c22d5585a57a PASS EFFECTIVE 040 2023-10-12 10:49:14.0 2023-10-12 10:51:59.0 2024-10-12 10:51:59.0 2ab3f405-66d6-4fae-9225-0d0fdf9fcd42 WHM3 3-银行业金融机构 0 0 BBB OTHER 1 B 0 0 0 INPUT 010277 2023-10-12 10:49:15.0 005203 2023-10-12 10:51:59.0 _PRIMARY_
13 PJ20230607001438 C20230607180253219481 2100601306 2100601306 1 左宝 009085 01012 光谷分行营业室 009085 7.30025300 797cbae4-051a-11ee-8731-8c2a8e28fdfa NEGATIVED NOT_ACTIVE INDEPENDENT 2023-06-07 18:02:50.0 5457a536-0d75-4c5e-bb2e-c78b3fa53e97 WHM16 16-中小微建筑业 0 0 QUANTITATIVE 0 0 0 0 INPUT 009085 2023-06-07 18:02:50.0 009085 2023-06-07 18:03:42.0 _PRIMARY_

10
app.irbs/src/main/resources/liquibase/sql/rpt_views.sql

@ -1,6 +1,6 @@
CREATE OR REPLACE VIEW VIEW_RPT_BASE_INFO AS CREATE OR REPLACE VIEW VIEW_RPT_BASE_INFO AS
SELECT SELECT
T.CUST_NO, T.CUSTOMER_ID AS CUST_NO,
IFNULL(T.CUST_TYPE,'1') AS CUST_TYPE, IFNULL(T.CUST_TYPE,'1') AS CUST_TYPE,
T.FINAL_LEVEL AS ORIGINAL_LEVEL, T.FINAL_LEVEL AS ORIGINAL_LEVEL,
T.INIT_LEVEL AS INIT_LEVEL, T.INIT_LEVEL AS INIT_LEVEL,
@ -20,10 +20,10 @@ SELECT
T.MODEL_SCORE, T.MODEL_SCORE,
T.RATING_STATUS, T.RATING_STATUS,
T.EFFECTIVE_TIME, T.EFFECTIVE_TIME,
MAX(T.EFFECTIVE_TIME) OVER(PARTITION BY T.CUST_NO) AS MAX_EFFECTIVE_TIME, MAX(T.EFFECTIVE_TIME) OVER(PARTITION BY T.CUSTOMER_ID) AS MAX_EFFECTIVE_TIME,
SUM(BORR.BORR_BAL) OVER(PARTITION BY T.CUST_NO) AS BORR_BAL SUM(BORR.BORR_BAL) OVER(PARTITION BY T.CUSTOMER_ID) AS BORR_BAL
FROM NS_COMPANY_RATING T FROM NS_COMPANY_RATING T
LEFT JOIN IRBS_CUST_CP_INFO C ON C.CUST_NO = T.CUST_NO LEFT JOIN IRBS_CUST_CP_INFO C ON C.CUSTOMER_ID = T.CUSTOMER_ID
LEFT JOIN NS_CFG_MAIN_SCALE S ON S.SCALE_LEVEL = T.FINAL_LEVEL LEFT JOIN NS_CFG_MAIN_SCALE S ON S.SCALE_LEVEL = T.FINAL_LEVEL
LEFT JOIN NS_CFG_MAIN_SCALE S1 ON S1.SCALE_LEVEL = T.INIT_LEVEL LEFT JOIN NS_CFG_MAIN_SCALE S1 ON S1.SCALE_LEVEL = T.INIT_LEVEL
LEFT JOIN NS_CFG_MAIN_SCALE S2 ON S2.SCALE_LEVEL = T.ADJ_LEVEL LEFT JOIN NS_CFG_MAIN_SCALE S2 ON S2.SCALE_LEVEL = T.ADJ_LEVEL
@ -31,5 +31,5 @@ LEFT JOIN RPT_INIT_DATA D ON D.DATA_TP_CD = 'MONTH2QUARTER'
AND D.ITEM_NAME = LEFT(T.EFFECTIVE_TIME,7) AND D.ITEM_NAME = LEFT(T.EFFECTIVE_TIME,7)
LEFT JOIN ( LEFT JOIN (
select t.CUST_NO, t.BORR_BAL from irbs_loan_borr_info t select t.CUST_NO, t.BORR_BAL from irbs_loan_borr_info t
) BORR ON BORR.CUST_NO = T.CUST_NO ) BORR ON BORR.CUST_NO = T.CUSTOMER_ID
WHERE T.RATING_STATUS IN ('010','020','EFFECTIVE','EXPIRED') AND T.FINAL_LEVEL IS NOT NULL WHERE T.RATING_STATUS IN ('010','020','EFFECTIVE','EXPIRED') AND T.FINAL_LEVEL IS NOT NULL

2
gradle.properties

@ -38,7 +38,7 @@ application_version=1.0.1
platform_group=io.sc platform_group=io.sc
platform_version=8.1.44 platform_version=8.1.44
platform_plugin_version=8.1.44 platform_plugin_version=8.1.44
platform_core_frontend_version=8.1.275 platform_core_frontend_version=8.1.279
########################################################### ###########################################################
# product dependencies version # product dependencies version

5
irbs.cust.rating/src/main/java/irbs/cust/rating/jpa/entity/CompanyCustomer.java

@ -34,13 +34,14 @@ public class CompanyCustomer extends CorporationAuditorEntity<CompanyCustomerVo>
/** /**
* 客户号 * 客户号
*/ */
@Column(name="CUST_NO") @Column(name="CUSTOMER_ID")
@Size(max=12)
private String custNo; private String custNo;
/** /**
* 客户中文名 * 客户中文名
*/ */
@Column(name="CUST_CNA") @Column(name="CUSTOMER_CHINESE_NAME")
@Convert(converter= CompanyCustomerCustNameDesensitizeStringCoverter.class) @Convert(converter= CompanyCustomerCustNameDesensitizeStringCoverter.class)
private String custName; private String custName;

8
irbs.cust.rating/src/main/java/irbs/cust/rating/jpa/entity/CompanyRating.java

@ -35,13 +35,13 @@ public class CompanyRating extends CorporationAuditorEntity<CompanyRatingVo> {
protected String custId; protected String custId;
// 客户编号 // 客户编号
@Column(name="CUST_NO") @Column(name="CUSTOMER_ID")
@Size(max=100) @Size(max=12)
protected String custNo; protected String custNo;
// 客户中文名称 // 客户中文名称
@Column(name="CUST_NAME") @Column(name="CUSTOMER_CHINESE_NAME")
@Size(max=200) @Size(max=90)
@Convert(converter = CompanyRatingCustNameDesensitizeStringCoverter.class) @Convert(converter = CompanyRatingCustNameDesensitizeStringCoverter.class)
protected String custName; protected String custName;

10
irbs.cust.rating/src/main/java/irbs/cust/rating/jpa/entity/RatingCompanyCustomer.java

@ -26,13 +26,13 @@ public class RatingCompanyCustomer extends CorporationAuditorEntity<RatingCompan
protected String id; protected String id;
// 客户编号 // 客户编号
@Column(name="CUST_NO") @Column(name="CUSTOMER_ID")
@Size(max=100) @Size(max=12)
protected String custNo; protected String custNo;
// 客户名称 // 客户名称
@Column(name="CUST_NAME") @Column(name="CUSTOMER_CHINESE_NAME")
@Size(max=200) @Size(max=90)
protected String custName; protected String custName;
// 证件类型 // 证件类型
@ -105,7 +105,7 @@ public class RatingCompanyCustomer extends CorporationAuditorEntity<RatingCompan
/** /**
* 是否上市企业 * 是否上市企业
*/ */
@Column(name= "MARKET_ENTERPRISES_IND") @Column(name= "FLAG_FOR_QUOTED_COMPANY")
@Size(max=1) @Size(max=1)
protected String marketEnterprisesInd; protected String marketEnterprisesInd;

2
irbs.cust.rating/src/main/java/irbs/cust/rating/service/impl/CompanyRatingServiceImpl.java

@ -391,7 +391,7 @@ public class CompanyRatingServiceImpl extends DaoServiceImpl<CompanyRating, Stri
} }
public Integer getCustomerInRatingProcessing(String custNo) throws Exception { public Integer getCustomerInRatingProcessing(String custNo) throws Exception {
String sql = "select count(*) from NS_COMPANY_RATING where cust_no=:custNo and process_status in (:status) "; String sql = "select count(*) from NS_COMPANY_RATING where CUSTOMER_ID=:custNo and process_status in (:status) ";
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
list.add(RatingProcessStatus.AWAIT_SUBMIT.name()); list.add(RatingProcessStatus.AWAIT_SUBMIT.name());
list.add(RatingProcessStatus.APPROVALING.name()); list.add(RatingProcessStatus.APPROVALING.name());

23
irbs.cust.rating/src/main/resources/META-INF/platform/plugins/parameters.json

@ -12,11 +12,16 @@
"id" : "parameter.irbs.params.ratingLevel", "id" : "parameter.irbs.params.ratingLevel",
"parentId" : "parameter.irbs.params.ratingProcess", "parentId" : "parameter.irbs.params.ratingProcess",
"code" : "parameter.irbs.params.ratingLevel", "code" : "parameter.irbs.params.ratingLevel",
"defaultValue" : "AAA", "defaultValue" : "AAA+",
"options" : { "options" : {
"AAA+": "AAA+",
"AAA": "AAA", "AAA": "AAA",
"AA+": "AA+",
"AA": "AA", "AA": "AA",
"AA-": "AA-",
"A+": "A+",
"A": "A", "A": "A",
"A-": "A-",
"BBB": "BBB", "BBB": "BBB",
"BB": "BB", "BB": "BB",
"B": "B", "B": "B",
@ -43,6 +48,18 @@
"defaultValue" : 3, "defaultValue" : 3,
"order" : 300 "order" : 300
}, },
/*//*/
{
"id" : "parameter.irbs.params.monthRatingNum.tactics",
"parentId" : "parameter.irbs.params.ratingProcess",
"code" : "parameter.irbs.params.monthRatingNum.tactics",
"defaultValue" : "1",
"options" : {
"1": "禁止",
"2": "提示"
},
"order" : 400
},
/*/*/ /*/*/
{ {
"id" : "parameter.irbs.params.ratingUI", "id" : "parameter.irbs.params.ratingUI",
@ -78,7 +95,7 @@
"id" : "parameter.irbs.params.ratingUI.indexScore", "id" : "parameter.irbs.params.ratingUI.indexScore",
"parentId" : "parameter.irbs.params.ratingUI", "parentId" : "parameter.irbs.params.ratingUI",
"code" : "parameter.irbs.params.ratingUI.indexScore", "code" : "parameter.irbs.params.ratingUI.indexScore",
"defaultValue" : "show", "defaultValue" : "hide",
"options" : { "options" : {
"show": "展示", "show": "展示",
"hide": "隐藏" "hide": "隐藏"
@ -102,7 +119,7 @@
"id" : "parameter.irbs.params.ratingUI.report.indexScore", "id" : "parameter.irbs.params.ratingUI.report.indexScore",
"parentId" : "parameter.irbs.params.ratingUI", "parentId" : "parameter.irbs.params.ratingUI",
"code" : "parameter.irbs.params.ratingUI.report.indexScore", "code" : "parameter.irbs.params.ratingUI.report.indexScore",
"defaultValue" : "show", "defaultValue" : "hide",
"options" : { "options" : {
"show": "展示", "show": "展示",
"hide": "隐藏" "hide": "隐藏"

293
irbs.cust.rating/src/main/resources/liquibase/20240321_CUST_RATING_DDL.xml

@ -13,8 +13,8 @@
<constraints primaryKey="true"/> <constraints primaryKey="true"/>
</column> </column>
<column name="CUST_ID" type="java.sql.Types.NVARCHAR(50)" remarks="客户ID"></column> <column name="CUST_ID" type="java.sql.Types.NVARCHAR(50)" remarks="客户ID"></column>
<column name="CUST_NO" type="java.sql.Types.NVARCHAR(100)" remarks="客户编号"></column> <column name="CUSTOMER_ID" type="java.sql.Types.NVARCHAR(12)" remarks="客户编号"></column>
<column name="CUST_NAME" type="java.sql.Types.NVARCHAR(200)" remarks="客户中文名称"></column> <column name="CUSTOMER_CHINESE_NAME" type="java.sql.Types.NVARCHAR(90)" remarks="客户中文名称"></column>
<column name="CUST_TYPE" type="java.sql.Types.NVARCHAR(10)" remarks="客户类别(1:一般公司客户;2:金融机构及发债企业客户)"></column> <column name="CUST_TYPE" type="java.sql.Types.NVARCHAR(10)" remarks="客户类别(1:一般公司客户;2:金融机构及发债企业客户)"></column>
<column name="MANAGER_NAME" type="java.sql.Types.NVARCHAR(50)" remarks="客户经理名称"></column> <column name="MANAGER_NAME" type="java.sql.Types.NVARCHAR(50)" remarks="客户经理名称"></column>
<column name="MANAGER_CODE" type="java.sql.Types.NVARCHAR(50)" remarks="客户经理编号"></column> <column name="MANAGER_CODE" type="java.sql.Types.NVARCHAR(50)" remarks="客户经理编号"></column>
@ -75,35 +75,36 @@
<!-- ESB客户基本信息表 --> <!-- ESB客户基本信息表 -->
<createTable tableName="ESB_RATING_CUSTOMER" remarks="ESB客户基本信息表"> <createTable tableName="ESB_RATING_CUSTOMER" remarks="ESB客户基本信息表">
<column name="ID_" type="java.sql.Types.VARCHAR(50)" remarks="主键"> <column name="ID_" type="java.sql.Types.NVARCHAR(50)" remarks="主键">
<constraints primaryKey="true"/> <constraints primaryKey="true"/>
</column> </column>
<column name="CUST_NO" type="java.sql.Types.VARCHAR(100)" remarks="客户号"/> <column name="CUSTOMER_ID" type="java.sql.Types.NVARCHAR(12)" remarks="客户号"/>
<column name="CUST_NAME" type="java.sql.Types.VARCHAR(200)" remarks="客户名称"/> <column name="CUSTOMER_CHINESE_NAME" type="java.sql.Types.NVARCHAR(90)" remarks="客户中文名称"/>
<column name="CERTIFICATE_TYPE" type="java.sql.Types.VARCHAR(5)" remarks="证件类型"/> <column name="CERTIFICATE_TYPE" type="java.sql.Types.NVARCHAR(5)" remarks="证件类型"/>
<column name="CERTIFICATE_NUM" type="java.sql.Types.VARCHAR(100)" remarks="证件号码"/> <column name="CERTIFICATE_NUM" type="java.sql.Types.NVARCHAR(100)" remarks="证件号码"/>
<column name="CUSTOMER_TYPE" type="java.sql.Types.VARCHAR(1)" remarks="对公客户类型"/> <column name="CUSTOMER_TYPE" type="java.sql.Types.NVARCHAR(1)" remarks="对公客户类型"/>
<column name="CUSTOMER_SIZE" type="java.sql.Types.VARCHAR(2)" remarks="企业规模"/> <column name="CUSTOMER_SIZE" type="java.sql.Types.NVARCHAR(2)" remarks="企业规模"/>
<column name="REGISTERED_TYPE" type="java.sql.Types.VARCHAR(5)" remarks="企业类型"/> <column name="REGISTERED_TYPE" type="java.sql.Types.NVARCHAR(5)" remarks="企业类型"/>
<column name="GOVER_FINANCE_SIGN" type="java.sql.Types.VARCHAR(1)" remarks="融资平台标志"/> <column name="GOVER_FINANCE_SIGN" type="java.sql.Types.NVARCHAR(1)" remarks="融资平台标志"/>
<column name="GOVER_FINANCE_TYPE" type="java.sql.Types.VARCHAR(1)" remarks="政府融资平台类型"/> <column name="GOVER_FINANCE_TYPE" type="java.sql.Types.NVARCHAR(1)" remarks="政府融资平台类型"/>
<column name="REGISTRATION" type="java.sql.Types.VARCHAR(2)" remarks="所在行政区域"/> <column name="REGISTRATION" type="java.sql.Types.NVARCHAR(2)" remarks="所在行政区域"/>
<column name="NATION" type="java.sql.Types.VARCHAR(5)" remarks="所在国家地区"/> <column name="NATION" type="java.sql.Types.NVARCHAR(5)" remarks="所在国家地区"/>
<column name="MEMBER_TYPE" type="java.sql.Types.VARCHAR(2)" remarks="成员类别"/> <column name="MEMBER_TYPE" type="java.sql.Types.NVARCHAR(2)" remarks="成员类别"/>
<column name="GROUP_CUST_IND" type="java.sql.Types.VARCHAR(1)" remarks="是否集团客户"/> <column name="GROUP_CUST_IND" type="java.sql.Types.NVARCHAR(1)" remarks="是否集团客户"/>
<column name="MARKET_ENTERPRISES_IND" type="java.sql.Types.VARCHAR(1)" remarks="是否上市企业"/> <column name="FLAG_FOR_QUOTED_COMPANY" type="java.sql.Types.NVARCHAR(1)" remarks="上市公司标识"/>
<column name="INDUSTRY_TYPE" type="java.sql.Types.VARCHAR(6)" remarks="国标行业分类"/> <column name="INDUSTRY_TYPE" type="java.sql.Types.NVARCHAR(6)" remarks="国标行业分类"/>
<column name="BUILD_DATE" type="java.sql.Types.VARCHAR(24)" remarks="成立日期"/> <column name="BUILD_DATE" type="java.sql.Types.NVARCHAR(24)" remarks="成立日期"/>
<column name="CUSTOMER_MANAGER_NO" type="java.sql.Types.VARCHAR(100)" remarks="经办人编号"/> <column name="CUSTOMER_MANAGER_NO" type="java.sql.Types.NVARCHAR(100)" remarks="经办人编号"/>
<column name="CUSTOMER_MANAGER_NAME" type="java.sql.Types.VARCHAR(100)" remarks="经办人名称"/> <column name="CUSTOMER_MANAGER_NAME" type="java.sql.Types.NVARCHAR(100)" remarks="经办人名称"/>
<column name="CURRENT_PROCESSOR_CODE" type="java.sql.Types.VARCHAR(36)" remarks="企业类型"/> <column name="CURRENT_PROCESSOR_CODE" type="java.sql.Types.NVARCHAR(36)" remarks="企业类型"/>
<column name="CURRENT_PROCESSOR_NAME" type="java.sql.Types.VARCHAR(100)" remarks="所在行政区域"/> <column name="CURRENT_PROCESSOR_NAME" type="java.sql.Types.NVARCHAR(100)" remarks="所在行政区域"/>
<column name="HANDLE_ORG_ID" type="java.sql.Types.VARCHAR(36)" remarks="经办机构"/> <column name="HANDLE_ORG_ID" type="java.sql.Types.NVARCHAR(36)" remarks="经办机构"/>
<column name="HANDLE_TIME" type="DATETIME" remarks="经办时间"/> <column name="HANDLE_TIME" type="DATETIME" remarks="经办时间"/>
<column name="MAIN_BUSI_UNDER_FORTY" type="java.sql.Types.VARCHAR(1)" remarks="主营业务占比不超过40%"/> <column name="MAIN_BUSI_UNDER_FORTY" type="java.sql.Types.NVARCHAR(1)" remarks="主营业务占比不超过40%"/>
<column name="REPORT_ID" type="java.sql.Types.VARCHAR(50)" remarks="征信报告主键"/> <column name="REPORT_ID" type="java.sql.Types.NVARCHAR(50)" remarks="征信报告主键"/>
<column name="EXTERNAL_FILE_CODE" type="java.sql.Types.VARCHAR(50)" remarks="外部数据文件传输码"/> <column name="EXTERNAL_FILE_CODE" type="java.sql.Types.NVARCHAR(50)" remarks="外部数据文件传输码"/>
<column name="ACTU_CTRL_YEARS" type="java.sql.Types.SMALLINT" remarks="实际控制人从业年限"/> <column name="ACTU_CTRL_YEARS" type="java.sql.Types.SMALLINT" remarks="实际控制人从业年限"/>
<column name="CORPORATE_CUSTOMER_TYPE" type="java.sql.Types.NVARCHAR(3)" remarks="对公客户类型"/>
<column name="DATA_COME_FROM_" type="java.sql.Types.NVARCHAR(10)" remarks="数据来源(INPUT:手工录入,IMPORT:系统自动导入)" defaultValue="INPUT"></column> <column name="DATA_COME_FROM_" type="java.sql.Types.NVARCHAR(10)" remarks="数据来源(INPUT:手工录入,IMPORT:系统自动导入)" defaultValue="INPUT"></column>
<column name="CREATOR_" type="java.sql.Types.NVARCHAR(255)" remarks="创建人"></column> <column name="CREATOR_" type="java.sql.Types.NVARCHAR(255)" remarks="创建人"></column>
<column name="CREATE_DATE_" type="DATETIME" remarks="创建日期"></column> <column name="CREATE_DATE_" type="DATETIME" remarks="创建日期"></column>
@ -116,42 +117,42 @@
<!-- 对公客户基本信息 --> <!-- 对公客户基本信息 -->
<createTable tableName="IRBS_CUST_CP_INFO" remarks="对公客户基本信息"> <createTable tableName="IRBS_CUST_CP_INFO" remarks="对公客户基本信息">
<column name="ID_" type="java.sql.Types.VARCHAR(50)" remarks="主键"> <column name="ID_" type="java.sql.Types.NVARCHAR(50)" remarks="主键">
<constraints primaryKey="true"/> <constraints primaryKey="true"/>
</column> </column>
<column name="DATA_DT" type="java.sql.Types.VARCHAR(100)" remarks="数据日期"/> <column name="DATA_DT" type="java.sql.Types.NVARCHAR(100)" remarks="数据日期"/>
<column name="CUST_NO" type="java.sql.Types.VARCHAR(100)" remarks="客户编号"/> <column name="CUSTOMER_ID" type="java.sql.Types.NVARCHAR(12)" remarks="客户编号"/>
<column name="CUST_CNA" type="java.sql.Types.VARCHAR(300)" remarks="客户名称"/> <column name="CUSTOMER_CHINESE_NAME" type="java.sql.Types.NVARCHAR(90)" remarks="客户中文名称"/>
<column name="CUST_TYPE_CD" type="java.sql.Types.VARCHAR(100)" remarks="客户类型"/> <column name="CUST_TYPE_CD" type="java.sql.Types.NVARCHAR(100)" remarks="客户类型"/>
<column name="ORGN_CD" type="java.sql.Types.VARCHAR(100)" remarks="组织机构代码"/> <column name="ORGN_CD" type="java.sql.Types.NVARCHAR(100)" remarks="组织机构代码"/>
<column name="LEGA_BOOK_NO" type="java.sql.Types.VARCHAR(100)" remarks="法人证书号"/> <column name="LEGA_BOOK_NO" type="java.sql.Types.NVARCHAR(100)" remarks="法人证书号"/>
<column name="ORG_CRDT_CD" type="java.sql.Types.VARCHAR(100)" remarks="统一信用代码证号"/> <column name="ORG_CRDT_CD" type="java.sql.Types.NVARCHAR(100)" remarks="统一信用代码证号"/>
<column name="CUST_SORT_CD" type="java.sql.Types.VARCHAR(100)" remarks="客户分类"/> <column name="CUST_SORT_CD" type="java.sql.Types.NVARCHAR(100)" remarks="客户分类"/>
<column name="CORP_SIZE_CD" type="java.sql.Types.VARCHAR(100)" remarks="企业规模"/> <column name="CORP_SIZE_CD" type="java.sql.Types.NVARCHAR(100)" remarks="企业规模"/>
<column name="INDU_SORT_CD" type="java.sql.Types.VARCHAR(100)" remarks="国标行业分类"/> <column name="INDU_SORT_CD" type="java.sql.Types.NVARCHAR(100)" remarks="国标行业分类"/>
<column name="CHASTEN_CUST_FLAG" type="java.sql.Types.VARCHAR(100)" remarks="是否为联合惩戒名单客户"/> <column name="CHASTEN_CUST_FLAG" type="java.sql.Types.NVARCHAR(100)" remarks="是否为联合惩戒名单客户"/>
<column name="FIRST_CRTD_CRDT_RELA_DT" type="java.sql.Types.VARCHAR(100)" remarks="与我行建立信贷关系时间"/> <column name="FIRST_CRTD_CRDT_RELA_DT" type="java.sql.Types.NVARCHAR(100)" remarks="与我行建立信贷关系时间"/>
<column name="BUILD_DT" type="java.sql.Types.VARCHAR(100)" remarks="成立日期"/> <column name="BUILD_DT" type="java.sql.Types.NVARCHAR(100)" remarks="成立日期"/>
<column name="UPDATE_DT" type="java.sql.Types.VARCHAR(100)" remarks="更新日期"/> <column name="UPDATE_DT" type="java.sql.Types.NVARCHAR(100)" remarks="更新日期"/>
<column name="LEGAL_REP" type="java.sql.Types.VARCHAR(500)" remarks="法人代表"/> <column name="LEGAL_REP" type="java.sql.Types.NVARCHAR(500)" remarks="法人代表"/>
<column name="RGST_GROUND" type="java.sql.Types.VARCHAR(300)" remarks="注册地址"/> <column name="RGST_GROUND" type="java.sql.Types.NVARCHAR(300)" remarks="注册地址"/>
<column name="MGER_NO" type="java.sql.Types.VARCHAR(100)" remarks="管户人编号"/> <column name="MGER_NO" type="java.sql.Types.NVARCHAR(100)" remarks="管户人编号"/>
<column name="MGER_CNA" type="java.sql.Types.VARCHAR(100)" remarks="管户人"/> <column name="MGER_CNA" type="java.sql.Types.NVARCHAR(100)" remarks="管户人"/>
<column name="MGER_ORG_NM" type="java.sql.Types.VARCHAR(100)" remarks="管户机构"/> <column name="MGER_ORG_NM" type="java.sql.Types.NVARCHAR(100)" remarks="管户机构"/>
<column name="MGER_ORG_NO" type="java.sql.Types.VARCHAR(100)" remarks="管户机构编号"/> <column name="MGER_ORG_NO" type="java.sql.Types.NVARCHAR(100)" remarks="管户机构编号"/>
<column name="MGER_ORG_NO_UP" type="java.sql.Types.VARCHAR(100)" remarks="管户机构上级"/> <column name="MGER_ORG_NO_UP" type="java.sql.Types.NVARCHAR(100)" remarks="管户机构上级"/>
<column name="CORP_SUBJ" type="java.sql.Types.VARCHAR(100)" remarks="企业隶属"/> <column name="CORP_SUBJ" type="java.sql.Types.NVARCHAR(100)" remarks="企业隶属"/>
<column name="NATION_CD" type="java.sql.Types.VARCHAR(100)" remarks="所在国家地区"/> <column name="NATION_CD" type="java.sql.Types.NVARCHAR(100)" remarks="所在国家地区"/>
<column name="RGST_GROUND_ADMIN_REGION_CD" type="java.sql.Types.VARCHAR(100)" remarks="所在行政区域"/> <column name="RGST_GROUND_ADMIN_REGION_CD" type="java.sql.Types.NVARCHAR(100)" remarks="所在行政区域"/>
<column name="LT_TRD_YEAR_INCOME_FLAG" type="java.sql.Types.VARCHAR(100)" remarks="近三年营业收入不大于三亿"/> <column name="LT_TRD_YEAR_INCOME_FLAG" type="java.sql.Types.NVARCHAR(100)" remarks="近三年营业收入不大于三亿"/>
<column name="GOVER_FIN_FLT_FLAG" type="java.sql.Types.VARCHAR(100)" remarks="是否政府融资平台"/> <column name="GOVER_FIN_FLT_FLAG" type="java.sql.Types.NVARCHAR(100)" remarks="是否政府融资平台"/>
<column name="PRI_RIGHT_LIST_FLAG" type="java.sql.Types.VARCHAR(100)" remarks="是否主权名单"/> <column name="PRI_RIGHT_LIST_FLAG" type="java.sql.Types.NVARCHAR(100)" remarks="是否主权名单"/>
<column name="YEARS3_OVDUE_30_DAY_FLAG" type="java.sql.Types.VARCHAR(100)" remarks="3年内借据逾期超过30天标志"/> <column name="YEARS3_OVDUE_30_DAY_FLAG" type="java.sql.Types.NVARCHAR(100)" remarks="3年内借据逾期超过30天标志"/>
<column name="YEARS3_EXPAND_2_CNT_FLAG" type="java.sql.Types.VARCHAR(100)" remarks="3年内贷款展期次数2次及以上标志"/> <column name="YEARS3_EXPAND_2_CNT_FLAG" type="java.sql.Types.NVARCHAR(100)" remarks="3年内贷款展期次数2次及以上标志"/>
<column name="YEARS3_ADV_MONEY_30_DAY_FLAG" type="java.sql.Types.VARCHAR(100)" remarks="3年内垫款超过30天标志"/> <column name="YEARS3_ADV_MONEY_30_DAY_FLAG" type="java.sql.Types.NVARCHAR(100)" remarks="3年内垫款超过30天标志"/>
<column name="YEARS3_BOR_REPAY_2_CNT_FLAG" type="java.sql.Types.VARCHAR(100)" remarks="3年内借新还旧次数2次及以上标志"/> <column name="YEARS3_BOR_REPAY_2_CNT_FLAG" type="java.sql.Types.NVARCHAR(100)" remarks="3年内借新还旧次数2次及以上标志"/>
<column name="YEARS3_MODE_MODIF_OVERDUE_2_CNT_FLAG" type="java.sql.Types.VARCHAR(100)" remarks="3年内结息方式变更后是否出现逾期2次及以上标志"/> <column name="YEARS3_MODE_MODIF_OVERDUE_2_CNT_FLAG" type="java.sql.Types.NVARCHAR(100)" remarks="3年内结息方式变更后是否出现逾期2次及以上标志"/>
<column name="YEARS3_PRIN_REPAY_PLAN_MODIF_2_CNT_FLAG" type="java.sql.Types.VARCHAR(100)" remarks="3年内合同的本金还款计划是否变更2次及以上标志"/> <column name="YEARS3_PRIN_REPAY_PLAN_MODIF_2_CNT_FLAG" type="java.sql.Types.NVARCHAR(100)" remarks="3年内合同的本金还款计划是否变更2次及以上标志"/>
<column name="YEARS3_REGROUP_2_CNT_FLAG" type="java.sql.Types.CHAR" remarks="3年内重组2次及以上标志"/> <column name="YEARS3_REGROUP_2_CNT_FLAG" type="java.sql.Types.CHAR" remarks="3年内重组2次及以上标志"/>
<column name="DATA_COME_FROM_" type="java.sql.Types.NVARCHAR(10)" remarks="数据来源(INPUT:手工录入,IMPORT:系统自动导入)" defaultValue="INPUT"></column> <column name="DATA_COME_FROM_" type="java.sql.Types.NVARCHAR(10)" remarks="数据来源(INPUT:手工录入,IMPORT:系统自动导入)" defaultValue="INPUT"></column>
<column name="CREATOR_" type="java.sql.Types.NVARCHAR(255)" remarks="创建人"></column> <column name="CREATOR_" type="java.sql.Types.NVARCHAR(255)" remarks="创建人"></column>
@ -165,14 +166,14 @@
<!-- 评级步骤表 --> <!-- 评级步骤表 -->
<createTable tableName="NS_RATING_STEP" remarks="评级步骤表"> <createTable tableName="NS_RATING_STEP" remarks="评级步骤表">
<column name="ID_" type="java.sql.Types.VARCHAR(36)" remarks="主键"> <column name="ID_" type="java.sql.Types.NVARCHAR(36)" remarks="主键">
<constraints primaryKey="true"/> <constraints primaryKey="true"/>
</column> </column>
<column name="RATING_ID" type="java.sql.Types.VARCHAR(36)" remarks="评级主键"/> <column name="RATING_ID" type="java.sql.Types.NVARCHAR(36)" remarks="评级主键"/>
<column name="STEP_NAME" type="java.sql.Types.VARCHAR(50)" remarks="步骤名称"/> <column name="STEP_NAME" type="java.sql.Types.NVARCHAR(50)" remarks="步骤名称"/>
<column name="STEP_NO" type="java.sql.Types.VARCHAR(5)" remarks="步骤编号"/> <column name="STEP_NO" type="java.sql.Types.NVARCHAR(5)" remarks="步骤编号"/>
<column name="STEP_TYPE" type="java.sql.Types.VARCHAR(50)" remarks="步骤类型"/> <column name="STEP_TYPE" type="java.sql.Types.NVARCHAR(50)" remarks="步骤类型"/>
<column name="MODEL_ID" type="java.sql.Types.VARCHAR(50)" remarks="模型主键"/> <column name="MODEL_ID" type="java.sql.Types.NVARCHAR(50)" remarks="模型主键"/>
<column name="DATA_COME_FROM_" type="java.sql.Types.NVARCHAR(10)" remarks="数据来源(INPUT:手工录入,IMPORT:系统自动导入)" defaultValue="INPUT"></column> <column name="DATA_COME_FROM_" type="java.sql.Types.NVARCHAR(10)" remarks="数据来源(INPUT:手工录入,IMPORT:系统自动导入)" defaultValue="INPUT"></column>
<column name="CREATOR_" type="java.sql.Types.NVARCHAR(255)" remarks="创建人"></column> <column name="CREATOR_" type="java.sql.Types.NVARCHAR(255)" remarks="创建人"></column>
<column name="CREATE_DATE_" type="DATETIME" remarks="创建日期"></column> <column name="CREATE_DATE_" type="DATETIME" remarks="创建日期"></column>
@ -185,15 +186,15 @@
<!-- 评级配置_评级步骤定义 --> <!-- 评级配置_评级步骤定义 -->
<createTable tableName="NS_R_CFG_STEPS" remarks="评级配置_评级步骤定义"> <createTable tableName="NS_R_CFG_STEPS" remarks="评级配置_评级步骤定义">
<column name="ID_" type="java.sql.Types.VARCHAR(36)" remarks="主键"> <column name="ID_" type="java.sql.Types.NVARCHAR(36)" remarks="主键">
<constraints primaryKey="true"/> <constraints primaryKey="true"/>
</column> </column>
<column name="RATING_CFG_ID" type="java.sql.Types.VARCHAR(36)" remarks="评级配置主表ID"/> <column name="RATING_CFG_ID" type="java.sql.Types.NVARCHAR(36)" remarks="评级配置主表ID"/>
<column name="STEP_CODE" type="java.sql.Types.VARCHAR(50)" remarks="步骤编号"/> <column name="STEP_CODE" type="java.sql.Types.NVARCHAR(50)" remarks="步骤编号"/>
<column name="STEP_NAME" type="java.sql.Types.VARCHAR(254)" remarks="步骤名称"/> <column name="STEP_NAME" type="java.sql.Types.NVARCHAR(254)" remarks="步骤名称"/>
<column name="STEP_NUM" type="java.sql.Types.NUMERIC(2, 0)" remarks="步骤序号"/> <column name="STEP_NUM" type="java.sql.Types.NUMERIC(2, 0)" remarks="步骤序号"/>
<column name="STEP_TYPE" type="java.sql.Types.VARCHAR(20)" remarks="步骤类型(DL:定量,DX:定性,TZ:调整项,WB:外部支持,TF:评级推翻,OT:其他)"/> <column name="STEP_TYPE" type="java.sql.Types.NVARCHAR(20)" remarks="步骤类型(DL:定量,DX:定性,TZ:调整项,WB:外部支持,TF:评级推翻,OT:其他)"/>
<column name="STEP_SOURCE_PATH" type="java.sql.Types.VARCHAR(1000)" remarks="步骤资源路径"/> <column name="STEP_SOURCE_PATH" type="java.sql.Types.NVARCHAR(1000)" remarks="步骤资源路径"/>
<column name="DATA_COME_FROM_" type="java.sql.Types.NVARCHAR(10)" remarks="数据来源(INPUT:手工录入,IMPORT:系统自动导入)" defaultValue="INPUT"></column> <column name="DATA_COME_FROM_" type="java.sql.Types.NVARCHAR(10)" remarks="数据来源(INPUT:手工录入,IMPORT:系统自动导入)" defaultValue="INPUT"></column>
<column name="CREATOR_" type="java.sql.Types.NVARCHAR(255)" remarks="创建人"></column> <column name="CREATOR_" type="java.sql.Types.NVARCHAR(255)" remarks="创建人"></column>
<column name="CREATE_DATE_" type="DATETIME" remarks="创建日期"></column> <column name="CREATE_DATE_" type="DATETIME" remarks="创建日期"></column>
@ -206,22 +207,22 @@
<!-- 客户评级指标 --> <!-- 客户评级指标 -->
<createTable tableName="NS_RATING_INDEXES" remarks="客户评级指标"> <createTable tableName="NS_RATING_INDEXES" remarks="客户评级指标">
<column name="ID_" type="java.sql.Types.VARCHAR(36)" remarks="主键"> <column name="ID_" type="java.sql.Types.NVARCHAR(36)" remarks="主键">
<constraints primaryKey="true"/> <constraints primaryKey="true"/>
</column> </column>
<column name="STEP_ID" type="java.sql.Types.VARCHAR(36)" remarks="评级步骤ID"/> <column name="STEP_ID" type="java.sql.Types.NVARCHAR(36)" remarks="评级步骤ID"/>
<column name="INDEX_TYPE" type="java.sql.Types.VARCHAR(20)" remarks="指标类型"/> <column name="INDEX_TYPE" type="java.sql.Types.NVARCHAR(20)" remarks="指标类型"/>
<column name="INDEX_CATEGORY" type="java.sql.Types.VARCHAR(500)" remarks="指标分类"/> <column name="INDEX_CATEGORY" type="java.sql.Types.NVARCHAR(500)" remarks="指标分类"/>
<column name="INDEX_NAME" type="java.sql.Types.VARCHAR(500)" remarks="指标名称"/> <column name="INDEX_NAME" type="java.sql.Types.NVARCHAR(500)" remarks="指标名称"/>
<column name="CONFIG_ID" type="java.sql.Types.VARCHAR(36)" remarks="配置ID"/> <column name="CONFIG_ID" type="java.sql.Types.NVARCHAR(36)" remarks="配置ID"/>
<column name="INDEX_ID" type="java.sql.Types.VARCHAR(36)" remarks="指标ID"/> <column name="INDEX_ID" type="java.sql.Types.NVARCHAR(36)" remarks="指标ID"/>
<column name="INDEX_CODE" type="java.sql.Types.VARCHAR(50)" remarks="指标编号"/> <column name="INDEX_CODE" type="java.sql.Types.NVARCHAR(50)" remarks="指标编号"/>
<column name="INDEX_VALUE" type="java.sql.Types.VARCHAR(50)" remarks="指标值"/> <column name="INDEX_VALUE" type="java.sql.Types.NVARCHAR(50)" remarks="指标值"/>
<column name="WEIGHT" type="java.sql.Types.NUMERIC(9, 6)" remarks="权重"/> <column name="WEIGHT" type="java.sql.Types.NUMERIC(9, 6)" remarks="权重"/>
<column name="MODEL_LEVEL" type="java.sql.Types.VARCHAR(10)" remarks="模型层级"/> <column name="MODEL_LEVEL" type="java.sql.Types.NVARCHAR(10)" remarks="模型层级"/>
<column name="PARENT_ID" type="java.sql.Types.VARCHAR(36)" remarks="父ID"/> <column name="PARENT_ID" type="java.sql.Types.NVARCHAR(36)" remarks="父ID"/>
<column name="QUALITATIVE_CONTENT" type="java.sql.Types.VARCHAR(2000)" remarks="定性内容"/> <column name="QUALITATIVE_CONTENT" type="java.sql.Types.NVARCHAR(2000)" remarks="定性内容"/>
<column name="QUALITATIVE_OPTIONS" type="java.sql.Types.VARCHAR(2000)" remarks="定性选项"/> <column name="QUALITATIVE_OPTIONS" type="java.sql.Types.NVARCHAR(2000)" remarks="定性选项"/>
<column name="INDEX_SCORE" type="java.sql.Types.NUMERIC(20, 4)" remarks="指标得分"/> <column name="INDEX_SCORE" type="java.sql.Types.NUMERIC(20, 4)" remarks="指标得分"/>
<column name="DATA_COME_FROM_" type="java.sql.Types.NVARCHAR(10)" remarks="数据来源(INPUT:手工录入,IMPORT:系统自动导入)" defaultValue="INPUT"></column> <column name="DATA_COME_FROM_" type="java.sql.Types.NVARCHAR(10)" remarks="数据来源(INPUT:手工录入,IMPORT:系统自动导入)" defaultValue="INPUT"></column>
<column name="CREATOR_" type="java.sql.Types.NVARCHAR(255)" remarks="创建人"></column> <column name="CREATOR_" type="java.sql.Types.NVARCHAR(255)" remarks="创建人"></column>
@ -236,57 +237,57 @@
<!-- 评级配置_候选值定义 --> <!-- 评级配置_候选值定义 -->
<createTable tableName="NS_R_CFG_VALUES" remarks="评级配置_候选值定义"> <createTable tableName="NS_R_CFG_VALUES" remarks="评级配置_候选值定义">
<column name="ID" type="java.sql.Types.VARCHAR(36)" remarks="主键"> <column name="ID" type="java.sql.Types.NVARCHAR(36)" remarks="主键">
<constraints primaryKey="true"/> <constraints primaryKey="true"/>
</column> </column>
<column name="DEF_ID" type="java.sql.Types.VARCHAR(36)" remarks="问题定义ID"/> <column name="DEF_ID" type="java.sql.Types.NVARCHAR(36)" remarks="问题定义ID"/>
<column name="DEF_CODE" type="java.sql.Types.VARCHAR(50)" remarks="问题定义编号"/> <column name="DEF_CODE" type="java.sql.Types.NVARCHAR(50)" remarks="问题定义编号"/>
<column name="DEF_NAME" type="java.sql.Types.VARCHAR(2000)" remarks="问题名称"/> <column name="DEF_NAME" type="java.sql.Types.NVARCHAR(2000)" remarks="问题名称"/>
<column name="ORDER_NUM" type="java.sql.Types.NUMERIC(4, 0)" remarks="选项序号"/> <column name="ORDER_NUM" type="java.sql.Types.NUMERIC(4, 0)" remarks="选项序号"/>
<column name="TEXT" type="java.sql.Types.VARCHAR(1000)" remarks="文本内容"/> <column name="TEXT" type="java.sql.Types.NVARCHAR(1000)" remarks="文本内容"/>
<column name="DIS_VAL" type="java.sql.Types.VARCHAR(1000)" remarks="显示值"/> <column name="DIS_VAL" type="java.sql.Types.NVARCHAR(1000)" remarks="显示值"/>
<column name="VAL" type="java.sql.Types.VARCHAR(50)" remarks="使用值"/> <column name="VAL" type="java.sql.Types.NVARCHAR(50)" remarks="使用值"/>
<column name="WEIGHT" type="java.sql.Types.VARCHAR(50)" remarks="权重"/> <column name="WEIGHT" type="java.sql.Types.NVARCHAR(50)" remarks="权重"/>
</createTable> </createTable>
<!-- 评级配置_调整项定义 --> <!-- 评级配置_调整项定义 -->
<createTable tableName="NS_R_CFG_ADJ_ITEM" remarks="评级配置_调整项定义"> <createTable tableName="NS_R_CFG_ADJ_ITEM" remarks="评级配置_调整项定义">
<column name="ID" type="java.sql.Types.VARCHAR(36)" remarks="主键"> <column name="ID" type="java.sql.Types.NVARCHAR(36)" remarks="主键">
<constraints primaryKey="true"/> <constraints primaryKey="true"/>
</column> </column>
<column name="MODEL_CODE" type="java.sql.Types.VARCHAR(50)" remarks="模型编号"/> <column name="MODEL_CODE" type="java.sql.Types.NVARCHAR(50)" remarks="模型编号"/>
<column name="ADJ_ITEM_CODE" type="java.sql.Types.VARCHAR(50)" remarks="调整项定义编号"/> <column name="ADJ_ITEM_CODE" type="java.sql.Types.NVARCHAR(50)" remarks="调整项定义编号"/>
</createTable> </createTable>
<!-- 评级配置_调整项定义详情 --> <!-- 评级配置_调整项定义详情 -->
<createTable tableName="NS_R_CFG_ADJ_ITEM_DEF" remarks="评级配置_调整项定义详情"> <createTable tableName="NS_R_CFG_ADJ_ITEM_DEF" remarks="评级配置_调整项定义详情">
<column name="ID" type="java.sql.Types.VARCHAR(36)" remarks="主键"> <column name="ID" type="java.sql.Types.NVARCHAR(36)" remarks="主键">
<constraints primaryKey="true"/> <constraints primaryKey="true"/>
</column> </column>
<column name="ADJ_ITEM_TYPE" type="java.sql.Types.VARCHAR(50)" remarks="调整项类型"/> <column name="ADJ_ITEM_TYPE" type="java.sql.Types.NVARCHAR(50)" remarks="调整项类型"/>
<column name="ADJ_ITEM_CODE" type="java.sql.Types.VARCHAR(50)" remarks="调整项编号"/> <column name="ADJ_ITEM_CODE" type="java.sql.Types.NVARCHAR(50)" remarks="调整项编号"/>
<column name="ADJ_ITEM_NAME" type="java.sql.Types.VARCHAR(50)" remarks="调整项名称"/> <column name="ADJ_ITEM_NAME" type="java.sql.Types.NVARCHAR(50)" remarks="调整项名称"/>
<column name="ADJ_ITEM_DES" type="java.sql.Types.VARCHAR(2000)" remarks="调整项描述"/> <column name="ADJ_ITEM_DES" type="java.sql.Types.NVARCHAR(2000)" remarks="调整项描述"/>
<column name="ADJ_ITEM_VALUE" type="java.sql.Types.VARCHAR(4)" remarks="调整项值"/> <column name="ADJ_ITEM_VALUE" type="java.sql.Types.NVARCHAR(4)" remarks="调整项值"/>
</createTable> </createTable>
<!-- 评级征信指库结果表 --> <!-- 评级征信指库结果表 -->
<createTable tableName="NS_ENTERPRISE_CREDIT_INDEX" remarks="评级征信指库结果表"> <createTable tableName="NS_ENTERPRISE_CREDIT_INDEX" remarks="评级征信指库结果表">
<column name="REPORT_ID" type="java.sql.Types.VARCHAR(50)" remarks="报告编号"/> <column name="REPORT_ID" type="java.sql.Types.NVARCHAR(50)" remarks="报告编号"/>
<column name="INDEX_CODE" type="java.sql.Types.VARCHAR(20)" remarks="指标代码"/> <column name="INDEX_CODE" type="java.sql.Types.NVARCHAR(20)" remarks="指标代码"/>
<column name="INDEX_NAME" type="java.sql.Types.VARCHAR(200)" remarks="指标名称"/> <column name="INDEX_NAME" type="java.sql.Types.NVARCHAR(200)" remarks="指标名称"/>
<column name="INDEX_VALUE" type="java.sql.Types.VARCHAR(50)" remarks="指标值"/> <column name="INDEX_VALUE" type="java.sql.Types.NVARCHAR(50)" remarks="指标值"/>
<column name="CUST_NO" type="java.sql.Types.VARCHAR(50)" remarks="客户号"/> <column name="CUST_NO" type="java.sql.Types.NVARCHAR(50)" remarks="客户号"/>
</createTable> </createTable>
<addUniqueConstraint tableName="NS_ENTERPRISE_CREDIT_INDEX" columnNames="REPORT_ID,CUST_NO,INDEX_CODE"></addUniqueConstraint> <addUniqueConstraint tableName="NS_ENTERPRISE_CREDIT_INDEX" columnNames="REPORT_ID,CUST_NO,INDEX_CODE"></addUniqueConstraint>
<!-- 客户评级试算记录表 --> <!-- 客户评级试算记录表 -->
<createTable tableName="T_CUST_RATING_TEST_CALC" remarks="客户评级试算记录表"> <createTable tableName="T_CUST_RATING_TEST_CALC" remarks="客户评级试算记录表">
<column name="ID" type="java.sql.Types.VARCHAR(50)" remarks="主键"> <column name="ID" type="java.sql.Types.NVARCHAR(50)" remarks="主键">
<constraints primaryKey="true"/> <constraints primaryKey="true"/>
</column> </column>
<column name="RATING_ID" type="java.sql.Types.VARCHAR(50)" remarks="评级ID"/> <column name="RATING_ID" type="java.sql.Types.NVARCHAR(50)" remarks="评级ID"/>
<column name="TEST_STEP" type="java.sql.Types.VARCHAR(50)" remarks="试算步骤"/> <column name="TEST_STEP" type="java.sql.Types.NVARCHAR(50)" remarks="试算步骤"/>
<column name="TEST_MAX_NUM" type="java.sql.Types.NUMERIC(8, 0)" remarks="评级时系统配置的最大试算次数"/> <column name="TEST_MAX_NUM" type="java.sql.Types.NUMERIC(8, 0)" remarks="评级时系统配置的最大试算次数"/>
<column name="CURR_NUM" type="java.sql.Types.NUMERIC(8, 0)" remarks="当前试算次数"/> <column name="CURR_NUM" type="java.sql.Types.NUMERIC(8, 0)" remarks="当前试算次数"/>
<column name="CURR_SCORE" type="java.sql.Types.NUMERIC(22, 8)" remarks="当前试算得分"/> <column name="CURR_SCORE" type="java.sql.Types.NUMERIC(22, 8)" remarks="当前试算得分"/>
@ -294,22 +295,22 @@
<!-- 对公客户评级推翻记录 --> <!-- 对公客户评级推翻记录 -->
<createTable tableName="NS_RATING_OVERTURN" remarks="对公客户评级推翻记录"> <createTable tableName="NS_RATING_OVERTURN" remarks="对公客户评级推翻记录">
<column name="ID_" type="java.sql.Types.VARCHAR(36)" remarks="主键"> <column name="ID_" type="java.sql.Types.NVARCHAR(36)" remarks="主键">
<constraints primaryKey="true"/> <constraints primaryKey="true"/>
</column> </column>
<column name="RATING_ID" type="java.sql.Types.VARCHAR(36)" remarks="评级ID"/> <column name="RATING_ID" type="java.sql.Types.NVARCHAR(36)" remarks="评级ID"/>
<column name="OVERTURN_TYPE" type="java.sql.Types.VARCHAR(20)" remarks="推翻类型"/> <column name="OVERTURN_TYPE" type="java.sql.Types.NVARCHAR(20)" remarks="推翻类型"/>
<column name="SUGGEST_LEVEL" type="java.sql.Types.VARCHAR(5)" remarks="建议级别"/> <column name="SUGGEST_LEVEL" type="java.sql.Types.NVARCHAR(5)" remarks="建议级别"/>
<column name="ADJ_REASON" type="java.sql.Types.VARCHAR(2000)" remarks="调整原因"/> <column name="ADJ_REASON" type="java.sql.Types.NVARCHAR(2000)" remarks="调整原因"/>
<column name="FILE_COUNT" type="java.sql.Types.NUMERIC(10, 0)" remarks="附件数量"/> <column name="FILE_COUNT" type="java.sql.Types.NUMERIC(10, 0)" remarks="附件数量"/>
<column name="ORG_ID" type="java.sql.Types.VARCHAR(36)" remarks="机构"/> <column name="ORG_ID" type="java.sql.Types.NVARCHAR(36)" remarks="机构"/>
<column name="USER_CODE" type="java.sql.Types.VARCHAR(254)" remarks="用户编号"/> <column name="USER_CODE" type="java.sql.Types.NVARCHAR(254)" remarks="用户编号"/>
<column name="USER_NAME" type="java.sql.Types.VARCHAR(254)" remarks="用户名称"/> <column name="USER_NAME" type="java.sql.Types.NVARCHAR(254)" remarks="用户名称"/>
<column name="ROLE_NAME" type="java.sql.Types.VARCHAR(254)" remarks="角色名称"/> <column name="ROLE_NAME" type="java.sql.Types.NVARCHAR(254)" remarks="角色名称"/>
<column name="ROLE_CODE" type="java.sql.Types.VARCHAR(254)" remarks="角色编号"/> <column name="ROLE_CODE" type="java.sql.Types.NVARCHAR(254)" remarks="角色编号"/>
<column name="OVER_NUM" type="java.sql.Types.NUMERIC(10, 0)" remarks="意见位置"/> <column name="OVER_NUM" type="java.sql.Types.NUMERIC(10, 0)" remarks="意见位置"/>
<column name="ORG_NAME" type="java.sql.Types.VARCHAR(254)" remarks="机构名称"/> <column name="ORG_NAME" type="java.sql.Types.NVARCHAR(254)" remarks="机构名称"/>
<column name="OPERATION_OPINION" type="java.sql.Types.VARCHAR(10)" remarks="操作意见"/> <column name="OPERATION_OPINION" type="java.sql.Types.NVARCHAR(10)" remarks="操作意见"/>
<column name="IS_OVERTURN" type="java.sql.Types.NUMERIC(10, 0)" remarks="是否推翻"/> <column name="IS_OVERTURN" type="java.sql.Types.NUMERIC(10, 0)" remarks="是否推翻"/>
<column name="DATA_COME_FROM_" type="java.sql.Types.NVARCHAR(10)" remarks="数据来源(INPUT:手工录入,IMPORT:系统自动导入)" defaultValue="INPUT"></column> <column name="DATA_COME_FROM_" type="java.sql.Types.NVARCHAR(10)" remarks="数据来源(INPUT:手工录入,IMPORT:系统自动导入)" defaultValue="INPUT"></column>
<column name="CREATOR_" type="java.sql.Types.NVARCHAR(255)" remarks="创建人"></column> <column name="CREATOR_" type="java.sql.Types.NVARCHAR(255)" remarks="创建人"></column>
@ -323,41 +324,41 @@
<!-- 债项评级结果 --> <!-- 债项评级结果 -->
<createTable tableName="P_IRS_CONTR_RAITNG_RESULT" remarks="债项评级结果"> <createTable tableName="P_IRS_CONTR_RAITNG_RESULT" remarks="债项评级结果">
<column name="DATA_DT" type="java.sql.Types.VARCHAR(10)" remarks="数据日期"/> <column name="DATA_DT" type="java.sql.Types.NVARCHAR(10)" remarks="数据日期"/>
<column name="CONT_NO" type="java.sql.Types.VARCHAR(100)" remarks="合同编号"/> <column name="CONT_NO" type="java.sql.Types.NVARCHAR(100)" remarks="合同编号"/>
<column name="LMT_NO" type="java.sql.Types.VARCHAR(100)" remarks="额度编号"/> <column name="LMT_NO" type="java.sql.Types.NVARCHAR(100)" remarks="额度编号"/>
<column name="CUST_NO" type="java.sql.Types.VARCHAR(100)" remarks="客户编号"/> <column name="CUST_NO" type="java.sql.Types.NVARCHAR(100)" remarks="客户编号"/>
<column name="CUST_NAME" type="java.sql.Types.VARCHAR(100)" remarks="客户名称"/> <column name="CUST_NAME" type="java.sql.Types.NVARCHAR(100)" remarks="客户名称"/>
<column name="CCY_CD" type="java.sql.Types.VARCHAR(100)" remarks="币种代码"/> <column name="CCY_CD" type="java.sql.Types.NVARCHAR(100)" remarks="币种代码"/>
<column name="LMT_PROD_CD" type="java.sql.Types.VARCHAR(100)" remarks="业务品种"/> <column name="LMT_PROD_CD" type="java.sql.Types.NVARCHAR(100)" remarks="业务品种"/>
<column name="CONTR_AMT" type="java.sql.Types.NUMERIC(36, 8)" remarks="合同金额"/> <column name="CONTR_AMT" type="java.sql.Types.NUMERIC(36, 8)" remarks="合同金额"/>
<column name="CONTR_BAL" type="java.sql.Types.NUMERIC(36, 8)" remarks="合同余额"/> <column name="CONTR_BAL" type="java.sql.Types.NUMERIC(36, 8)" remarks="合同余额"/>
<column name="OWEINT_BAL" type="java.sql.Types.NUMERIC(36, 8)" remarks="欠息余额"/> <column name="OWEINT_BAL" type="java.sql.Types.NUMERIC(36, 8)" remarks="欠息余额"/>
<column name="FEE_BAL" type="java.sql.Types.NUMERIC(36, 8)" remarks="费用余额"/> <column name="FEE_BAL" type="java.sql.Types.NUMERIC(36, 8)" remarks="费用余额"/>
<column name="CONT_SIGN_DT" type="java.sql.Types.VARCHAR(100)" remarks="合同签订日期"/> <column name="CONT_SIGN_DT" type="java.sql.Types.NVARCHAR(100)" remarks="合同签订日期"/>
<column name="CONT_START_DT" type="java.sql.Types.VARCHAR(100)" remarks="起始日期"/> <column name="CONT_START_DT" type="java.sql.Types.NVARCHAR(100)" remarks="起始日期"/>
<column name="CONT_END_DT" type="java.sql.Types.VARCHAR(100)" remarks="到期日期"/> <column name="CONT_END_DT" type="java.sql.Types.NVARCHAR(100)" remarks="到期日期"/>
<column name="CONTR_TERM_CD" type="java.sql.Types.VARCHAR(100)" remarks="合同期限类型代码"/> <column name="CONTR_TERM_CD" type="java.sql.Types.NVARCHAR(100)" remarks="合同期限类型代码"/>
<column name="BLOCK_IND" type="java.sql.Types.VARCHAR(100)" remarks="冻结标志"/> <column name="BLOCK_IND" type="java.sql.Types.NVARCHAR(100)" remarks="冻结标志"/>
<column name="CONT_TYPE_CD" type="java.sql.Types.VARCHAR(100)" remarks="合同类别代码"/> <column name="CONT_TYPE_CD" type="java.sql.Types.NVARCHAR(100)" remarks="合同类别代码"/>
<column name="CONT_STATUS_CD" type="java.sql.Types.VARCHAR(100)" remarks="合同状态代码"/> <column name="CONT_STATUS_CD" type="java.sql.Types.NVARCHAR(100)" remarks="合同状态代码"/>
<column name="GUAR_WAY_CD" type="java.sql.Types.VARCHAR(100)" remarks="担保方式"/> <column name="GUAR_WAY_CD" type="java.sql.Types.NVARCHAR(100)" remarks="担保方式"/>
<column name="TEN_CLASS_CD" type="java.sql.Types.VARCHAR(100)" remarks="十级分类代码"/> <column name="TEN_CLASS_CD" type="java.sql.Types.NVARCHAR(100)" remarks="十级分类代码"/>
<column name="LOAN_DIRECTION_CD" type="java.sql.Types.VARCHAR(100)" remarks="贷款行业投向"/> <column name="LOAN_DIRECTION_CD" type="java.sql.Types.NVARCHAR(100)" remarks="贷款行业投向"/>
<column name="CYCLE_FLAG" type="java.sql.Types.VARCHAR(100)" remarks="循环标志"/> <column name="CYCLE_FLAG" type="java.sql.Types.NVARCHAR(100)" remarks="循环标志"/>
<column name="EXPENSE_NAME" type="java.sql.Types.VARCHAR(100)" remarks="费用名称"/> <column name="EXPENSE_NAME" type="java.sql.Types.NVARCHAR(100)" remarks="费用名称"/>
<column name="EXPENSE_RATE" type="java.sql.Types.NUMERIC(36, 8)" remarks="实际费率"/> <column name="EXPENSE_RATE" type="java.sql.Types.NUMERIC(36, 8)" remarks="实际费率"/>
<column name="MONTH_RATE" type="java.sql.Types.NUMERIC(36, 8)" remarks="月利率"/> <column name="MONTH_RATE" type="java.sql.Types.NUMERIC(36, 8)" remarks="月利率"/>
<column name="CONTR_OVDUE_DAYS" type="java.sql.Types.NUMERIC(36, 8)" remarks="合同逾期天数"/> <column name="CONTR_OVDUE_DAYS" type="java.sql.Types.NUMERIC(36, 8)" remarks="合同逾期天数"/>
<column name="CONTR_OWEINT_DAYS" type="java.sql.Types.NUMERIC(36, 8)" remarks="合同欠息天数"/> <column name="CONTR_OWEINT_DAYS" type="java.sql.Types.NUMERIC(36, 8)" remarks="合同欠息天数"/>
<column name="OVDUE_POST_REPAY_AMT" type="java.sql.Types.NUMERIC(36, 8)" remarks="折现后还款金额(违约后)"/> <column name="OVDUE_POST_REPAY_AMT" type="java.sql.Types.NUMERIC(36, 8)" remarks="折现后还款金额(违约后)"/>
<column name="OPERATE_ORG_NO" type="java.sql.Types.VARCHAR(100)" remarks="管户机构编号"/> <column name="OPERATE_ORG_NO" type="java.sql.Types.NVARCHAR(100)" remarks="管户机构编号"/>
<column name="OPERATOR_NO" type="java.sql.Types.VARCHAR(100)" remarks="管户人编号"/> <column name="OPERATOR_NO" type="java.sql.Types.NVARCHAR(100)" remarks="管户人编号"/>
<column name="IRS_LGD" type="java.sql.Types.NUMERIC(36, 8)" remarks="违约损失率"/> <column name="IRS_LGD" type="java.sql.Types.NUMERIC(36, 8)" remarks="违约损失率"/>
<column name="IRS_EAD" type="java.sql.Types.NUMERIC(36, 4)" remarks="风险暴露"/> <column name="IRS_EAD" type="java.sql.Types.NUMERIC(36, 4)" remarks="风险暴露"/>
<column name="IRS_OVDUE" type="java.sql.Types.VARCHAR(100)" remarks="是否违约认定"/> <column name="IRS_OVDUE" type="java.sql.Types.NVARCHAR(100)" remarks="是否违约认定"/>
<column name="CONT_EXPENSE_FEE_LGD" type="java.sql.Types.NUMERIC(36, 8)" remarks="合同层实际LGD"/> <column name="CONT_EXPENSE_FEE_LGD" type="java.sql.Types.NUMERIC(36, 8)" remarks="合同层实际LGD"/>
<column name="IRS_LGD_LEVEL" type="java.sql.Types.VARCHAR(5)" remarks="LGD等级"/> <column name="IRS_LGD_LEVEL" type="java.sql.Types.NVARCHAR(5)" remarks="LGD等级"/>
<column name="DY_VTL" type="java.sql.Types.NUMERIC(22, 6)" remarks="抵押VTL"/> <column name="DY_VTL" type="java.sql.Types.NUMERIC(22, 6)" remarks="抵押VTL"/>
<column name="DBFS_VTL" type="java.sql.Types.NUMERIC(22, 6)" remarks="主要担保方式VTL"/> <column name="DBFS_VTL" type="java.sql.Types.NUMERIC(22, 6)" remarks="主要担保方式VTL"/>
<column name="NPHY_VTL" type="java.sql.Types.NUMERIC(22, 6)" remarks="内评行业VTL"/> <column name="NPHY_VTL" type="java.sql.Types.NUMERIC(22, 6)" remarks="内评行业VTL"/>

2
irbs.frontend/package.json

@ -78,7 +78,7 @@
"luckyexcel": "1.0.1", "luckyexcel": "1.0.1",
"mockjs": "1.1.0", "mockjs": "1.1.0",
"pinia": "2.1.7", "pinia": "2.1.7",
"platform-core": "8.1.275", "platform-core": "8.1.279",
"quasar": "2.15.4", "quasar": "2.15.4",
"tailwindcss": "3.4.4", "tailwindcss": "3.4.4",
"vue": "3.4.31", "vue": "3.4.31",

8
irbs.frontend/src/menus/menus.json

@ -58,10 +58,10 @@
{"type":"ROUTE", "order":300, "parentId":"menu.irbs.query", "id":"menu.irbs.query.riskExposureHist", "titleI18nKey":"menu.irbs.query.riskExposureHist", "icon":"eva-eye-outline", "routeName":"route.irbs.query.riskExposureHist"}, {"type":"ROUTE", "order":300, "parentId":"menu.irbs.query", "id":"menu.irbs.query.riskExposureHist", "titleI18nKey":"menu.irbs.query.riskExposureHist", "icon":"eva-eye-outline", "routeName":"route.irbs.query.riskExposureHist"},
/*/*/ /*/*/
{"type":"ROUTE", "order":400, "parentId":"menu.irbs.query", "id":"menu.irbs.query.custInfo", "titleI18nKey":"menu.irbs.query.custInfo", "icon":"eva-shake", "routeName":"route.irbs.query.custInfo"}, {"type":"ROUTE", "order":400, "parentId":"menu.irbs.query", "id":"menu.irbs.query.custInfo", "titleI18nKey":"menu.irbs.query.custInfo", "icon":"eva-shake", "routeName":"route.irbs.query.custInfo"},
/*/*/ /*/
{"type":"ROUTE", "order":500, "parentId":"menu.irbs.query", "id":"menu.irbs.config.corpCustFeature", "titleI18nKey":"menu.irbs.config.corpCustFeature", "icon":"bi-file-earmark-ruled-fill", "routeName":"route.sys.comm.page", "routeQuery": {"id": "3cb04956-1047-4fdc-b8d6-f84fdbb1b371"}}, {"type":"ROUTE", "order":500, "parentId":"menu.irbs.query", "id":"menu.irbs.config.corpCustFeature", "titleI18nKey":"menu.irbs.config.corpCustFeature", "icon":"bi-file-earmark-ruled-fill", "routeName":"route.sys.comm.page", "routeQuery": {"id": "3cb04956-1047-4fdc-b8d6-f84fdbb1b371"}},*/
/*/*/ /*/
{"type":"ROUTE", "order":600, "parentId":"menu.irbs.query", "id":"menu.irbs.config.instCustFeature", "titleI18nKey":"menu.irbs.config.instCustFeature", "icon":"bi-file-earmark-ruled-fill", "routeName":"route.sys.comm.page", "routeQuery": {"id": "8eb87d46-f40e-4986-b22e-341b5bac65a1"}}, {"type":"ROUTE", "order":600, "parentId":"menu.irbs.query", "id":"menu.irbs.config.instCustFeature", "titleI18nKey":"menu.irbs.config.instCustFeature", "icon":"bi-file-earmark-ruled-fill", "routeName":"route.sys.comm.page", "routeQuery": {"id": "8eb87d46-f40e-4986-b22e-341b5bac65a1"}},*/
/*/*/ /*/*/
{"type":"ROUTE", "order":700, "parentId":"menu.irbs.query", "id":"menu.irbs.config.shrcbCorpCustFeature", "titleI18nKey":"menu.irbs.config.shrcbCorpCustFeature", "icon":"bi-file-earmark-ruled-fill", "routeName":"route.sys.comm.page", "routeQuery": {"id": "1a50a840-0e62-41b5-b952-9bd77a3775c2"}}, {"type":"ROUTE", "order":700, "parentId":"menu.irbs.query", "id":"menu.irbs.config.shrcbCorpCustFeature", "titleI18nKey":"menu.irbs.config.shrcbCorpCustFeature", "icon":"bi-file-earmark-ruled-fill", "routeName":"route.sys.comm.page", "routeQuery": {"id": "1a50a840-0e62-41b5-b952-9bd77a3775c2"}},
{"type":"GROUP", "order":700, "parentId":"menu.irbs", "id":"menu.irbs.config", "titleI18nKey":"menu.irbs.config", "icon":"display_settings"}, {"type":"GROUP", "order":700, "parentId":"menu.irbs", "id":"menu.irbs.config", "titleI18nKey":"menu.irbs.config", "icon":"display_settings"},

2
irbs.frontend/src/views/config/FinancialMapping.vue

@ -11,7 +11,7 @@
:query-form-cols-num="4" :query-form-cols-num="4"
:refresh-data="true" :refresh-data="true"
:query-form-fields="financialMappingGrid.queryFormFields" :query-form-fields="financialMappingGrid.queryFormFields"
dbClickOperation='edit' db-click-operation="edit"
:columns="financialMappingGrid.columns" :columns="financialMappingGrid.columns"
:editor="{ :editor="{
dialog: { dialog: {

7
irbs.frontend/src/views/custRating/CustRating.ts

@ -158,3 +158,10 @@ export const Round = (val: any, precision) => {
} }
return result; return result;
}; };
export const RatioFormat = (val) => {
if (val && typeof val === 'number') {
return Round(val * 100, 2) + '%';
}
return val;
};

9
irbs.frontend/src/views/custRating/CustRating.vue

@ -96,6 +96,14 @@ const companyRatingGrid = {
ratingdialogRef.value.show(args.selected, true); ratingdialogRef.value.show(args.selected, true);
}, },
}, },
'export',
'separator',
[
{
name: 'otherOp',
label: '其他操作',
icon: 'device_hub',
},
{ {
name: 'viewGray', name: 'viewGray',
extend: 'view', extend: 'view',
@ -133,6 +141,7 @@ const companyRatingGrid = {
}); });
}, },
}, },
],
'separator', 'separator',
], ],
queryFormFields: [ queryFormFields: [

15
irbs.frontend/src/views/default/CognizanceApply.vue

@ -17,7 +17,7 @@
}" }"
:sort-by="['-lastModifyDate']" :sort-by="['-lastModifyDate']"
></w-grid> ></w-grid>
<LaunchRatingDialog ref="launchRatingDialog" @refresh="refreshTable"></LaunchRatingDialog> <LaunchRatingDialog ref="launchRatingDialog" :dictionary="dictionary" @refresh="refreshTable"></LaunchRatingDialog>
<CognizanceDialog ref="cognizanceDialogRef" @refresh="refreshTable"></CognizanceDialog> <CognizanceDialog ref="cognizanceDialogRef" @refresh="refreshTable"></CognizanceDialog>
</div> </div>
</template> </template>
@ -37,6 +37,17 @@ const launchRatingDialog = ref();
const cognizanceDialogRef = ref(); const cognizanceDialogRef = ref();
const DefaultProcessStatusEnum = await EnumTools.fetch('irbs.defaultManager.enums.DefaultProcessStatus'); const DefaultProcessStatusEnum = await EnumTools.fetch('irbs.defaultManager.enums.DefaultProcessStatus');
const dictCustomerTypeCd = await DictionaryTools.fetch('CustomerTypeCd');
const optionsCustomerTypeCd = Options.dictionary(dictCustomerTypeCd);
const dictCustomerSizeCd = await DictionaryTools.fetch('CustomerSizeCd');
const optionsCustomerSizeCd = Options.dictionary(dictCustomerSizeCd);
const dictionary = {
dictCustomerTypeCd: dictCustomerTypeCd,
optionsCustomerTypeCd: optionsCustomerTypeCd,
dictCustomerSizeCd: dictCustomerSizeCd,
optionsCustomerSizeCd: optionsCustomerSizeCd,
};
const cognizanceGrid = { const cognizanceGrid = {
buttons: [ buttons: [
@ -71,6 +82,8 @@ const cognizanceGrid = {
}, },
}, },
'separator', 'separator',
'export',
'separator',
], ],
queryFormFields: [ queryFormFields: [
{ label: '申请编号', name: 'id', type: 'text' }, { label: '申请编号', name: 'id', type: 'text' },

2
irbs.frontend/src/views/default/RebirthApply.vue

@ -133,6 +133,8 @@ const rebirthGrid = {
}, },
}, },
'separator', 'separator',
'export',
'separator',
], ],
queryFormFields: [ queryFormFields: [
{ label: '申请编号', name: 'id', type: 'text' }, { label: '申请编号', name: 'id', type: 'text' },

2
irbs.frontend/src/views/report/RptModelMonitorBinomialCheck.vue

@ -36,6 +36,8 @@ const rptModelMonitorBinomialCheckGrid = {
}, },
'reset', 'reset',
'separator', 'separator',
'export',
'separator',
], ],
queryFormFields: [ queryFormFields: [
{ label: '报表日期', name: 'ratingMonth', type: 'date', defaultValue: '2023-07-01' }, { label: '报表日期', name: 'ratingMonth', type: 'date', defaultValue: '2023-07-01' },

2
irbs.frontend/src/views/report/RptModelMonitorDiff.vue

@ -36,6 +36,8 @@ const rptModelMonitorDiffGrid = {
}, },
'reset', 'reset',
'separator', 'separator',
'export',
'separator',
], ],
queryFormFields: [ queryFormFields: [
{ label: '报表日期', name: 'ratingMonth', type: 'date', defaultValue: '2023-07-01' }, { label: '报表日期', name: 'ratingMonth', type: 'date', defaultValue: '2023-07-01' },

2
irbs.frontend/src/views/report/RptModelMonitorStable.vue

@ -36,6 +36,8 @@ const rptModelMonitorStableGrid = {
}, },
'reset', 'reset',
'separator', 'separator',
'export',
'separator',
], ],
queryFormFields: [ queryFormFields: [
{ label: '报表日期', name: 'ratingMonth', type: 'date', defaultValue: '2023-07-01' }, { label: '报表日期', name: 'ratingMonth', type: 'date', defaultValue: '2023-07-01' },

239
irbs.frontend/src/views/report/RptRatingAdjust.vue

@ -1,5 +1,7 @@
<template> <template>
<div class="h-full"> <div class="h-full">
<q-splitter v-model="state.splitterModel" horizontal class="h-full">
<template #before>
<w-grid <w-grid
ref="rptRatingAdjustGridRef" ref="rptRatingAdjustGridRef"
title="客户评级特例调整情况报表" title="客户评级特例调整情况报表"
@ -11,7 +13,191 @@
:columns="rptRatingAdjustGrid.columns" :columns="rptRatingAdjustGrid.columns"
:toolbar-actions="rptRatingAdjustGrid.buttons" :toolbar-actions="rptRatingAdjustGrid.buttons"
:pageable="false" :pageable="false"
:dense="true"
@after-request-data="afterRequestData"
></w-grid> ></w-grid>
</template>
<template #after>
<div class="h-full">
<q-splitter v-model="state.echartsSplitterModel" unit="px" horizontal disable class="w-full h-full">
<template #before>
<q-tabs v-model="state.tab" inline-label indicator-color="primary" align="left" :breakpoint="1">
<q-tab name="cust" icon="account_box" label="特例调整整体情况" />
<q-tab name="range" icon="text_rotation_angleup" label="调整级别情况" />
</q-tabs>
</template>
<template #after>
<q-tab-panels
v-model="state.tab"
:keep-alive="true"
animated
swipeable
vertical
transition-prev="jump-up"
transition-next="jump-up"
class="w-full h-full"
>
<q-tab-panel name="cust" class="w-full h-full p-0">
<w-echarts
:option="{
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
},
},
toolbox: {
feature: {
saveAsImage: { show: true },
},
},
legend: {
data: ['评级客户数', '调整客户数', '调整占比'],
},
grid: {
top: '15%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true,
},
xAxis: {
type: 'category',
data: state.xData,
axisTick: {
alignWithLabel: true,
},
},
yAxis: [
{
type: 'value',
},
{
type: 'value',
interval: 10,
axisLabel: {
formatter: '{value} %',
},
},
],
series: [
{
name: '评级客户数',
type: 'bar',
barWidth: '10%',
label: {
show: true, //
position: 'top', //
textStyle: {
//
color: 'black', //
fontSize: 10, //
},
},
emphasis: {
focus: 'series',
},
data: state.custData.ratingCnt,
},
{
name: '调整客户数',
type: 'bar',
barWidth: '10%',
label: {
show: true, //
position: 'top', //
textStyle: {
//
color: 'black', //
fontSize: 10, //
},
},
emphasis: {
focus: 'series',
},
data: state.custData.overturnCnt,
},
{
name: '调整占比',
type: 'line',
yAxisIndex: 1,
data: state.custData.overturnRatio,
},
],
}"
></w-echarts>
</q-tab-panel>
<q-tab-panel name="range" class="w-full h-full p-0">
<w-echarts
:option="{
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
},
},
toolbox: {
feature: {
saveAsImage: { show: true },
},
},
legend: {
data: ['1级', '2级', '3级', '3级以上'],
},
grid: {
top: '15%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true,
},
xAxis: {
type: 'category',
data: state.xData,
axisTick: {
alignWithLabel: true,
},
},
yAxis: [
{
type: 'value',
interval: 10,
axisLabel: {
formatter: '{value} %',
},
},
],
series: [
{
name: '1级',
type: 'line',
data: state.range.l1,
},
{
name: '2级',
type: 'line',
data: state.range.l2,
},
{
name: '3级',
type: 'line',
data: state.range.l3,
},
{
name: '3级以上',
type: 'line',
data: state.range.ln,
},
],
}"
></w-echarts>
</q-tab-panel>
</q-tab-panels>
</template>
</q-splitter>
</div>
</template>
</q-splitter>
</div> </div>
</template> </template>
@ -19,10 +205,52 @@
import { ref, reactive } from 'vue'; import { ref, reactive } from 'vue';
import { useQuasar } from 'quasar'; import { useQuasar } from 'quasar';
import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core'; import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core';
import { Round, RatioFormat } from '@/views/custRating/CustRating.ts';
const $q = useQuasar(); const $q = useQuasar();
const rptRatingAdjustGridRef = ref(); const rptRatingAdjustGridRef = ref();
const state = reactive({
splitterModel: 55,
echartsSplitterModel: 50,
tab: 'cust',
xData: <any>[],
custData: {
ratingCnt: <any>[],
overturnCnt: <any>[],
overturnRatio: <any>[],
},
range: {
l1: <any>[],
l2: <any>[],
l3: <any>[],
ln: <any>[],
},
});
const afterRequestData = (data) => {
state.xData = [];
state.custData.ratingCnt = [];
state.custData.overturnCnt = [];
state.custData.overturnRatio = [];
state.range.l1 = [];
state.range.l2 = [];
state.range.l3 = [];
state.range.ln = [];
if (data && data.length > 0) {
data.forEach((item) => {
state.xData.push(item['ratingMonth']);
state.custData.ratingCnt.push(item['custCnt']);
state.custData.overturnCnt.push(item['adjCnt']);
state.custData.overturnRatio.push(item['adjRatio'] && typeof item['adjRatio'] === 'number' ? Round(item['adjRatio'] * 100, 2) : 0);
state.range.l1.push(item['oneLvlRatio'] && typeof item['oneLvlRatio'] === 'number' ? Round(item['oneLvlRatio'] * 100, 2) : 0);
state.range.l2.push(item['twoLvlRatio'] && typeof item['twoLvlRatio'] === 'number' ? Round(item['twoLvlRatio'] * 100, 2) : 0);
state.range.l3.push(item['threeLvlRatio'] && typeof item['threeLvlRatio'] === 'number' ? Round(item['threeLvlRatio'] * 100, 2) : 0);
state.range.ln.push(item['threeMoreLvlRatio'] && typeof item['threeMoreLvlRatio'] === 'number' ? Round(item['threeMoreLvlRatio'] * 100, 2) : 0);
});
}
};
const rptRatingAdjustGrid = { const rptRatingAdjustGrid = {
buttons: [ buttons: [
{ {
@ -37,6 +265,7 @@ const rptRatingAdjustGrid = {
'reset', 'reset',
'separator', 'separator',
'export', 'export',
'separator',
], ],
queryFormFields: [ queryFormFields: [
{ label: '报表日期', name: 'ratingMonth', type: 'date', defaultValue: '2023-07-01' }, { label: '报表日期', name: 'ratingMonth', type: 'date', defaultValue: '2023-07-01' },
@ -105,15 +334,15 @@ const rptRatingAdjustGrid = {
{ label: '评级时间', name: 'ratingMonth', align: 'center' }, { label: '评级时间', name: 'ratingMonth', align: 'center' },
{ label: '评级客户数', name: 'custCnt', align: 'center' }, { label: '评级客户数', name: 'custCnt', align: 'center' },
{ label: '调整客户数', name: 'adjCnt', align: 'center' }, { label: '调整客户数', name: 'adjCnt', align: 'center' },
{ label: '调整客户占比', name: 'adjRatio', align: 'center' }, { label: '调整客户占比', name: 'adjRatio', align: 'center', format: RatioFormat },
{ {
label: '调整级别', label: '调整级别',
name: 'adjustLevelHeader', name: 'adjustLevelHeader',
columns: [ columns: [
{ label: '1级', name: 'oneLvlRatio' }, { label: '1级', name: 'oneLvlRatio', format: RatioFormat },
{ label: '2级', name: 'twoLvlRatio' }, { label: '2级', name: 'twoLvlRatio', format: RatioFormat },
{ label: '3级', name: 'threeLvlRatio' }, { label: '3级', name: 'threeLvlRatio', format: RatioFormat },
{ label: '3级以上', name: 'threeMoreLvlRatio' }, { label: '3级以上', name: 'threeMoreLvlRatio', format: RatioFormat },
], ],
}, },
], ],

56
irbs.frontend/src/views/report/RptRatingDistribution.vue

@ -85,6 +85,36 @@
name: '客户数', name: '客户数',
type: 'bar', type: 'bar',
barWidth: '20%', barWidth: '20%',
// label: {
// show: true,
// position: 'insideBottom',
// distance: 15,
// align: 'left',
// verticalAlign: 'middle',
// rotate: 90,
// formatter: '{c} {name|{a}}',
// fontSize: 16,
// rich: {
// name: {},
// },
// textStyle: {
// //
// color: '#FFF', //
// fontSize: 10, //
// },
// },
label: {
show: true, //
position: 'top', //
textStyle: {
//
color: 'black', //
fontSize: 10, //
},
},
emphasis: {
focus: 'series',
},
data: state.custData.number, data: state.custData.number,
}, },
{ {
@ -97,6 +127,18 @@
name: '本月新增客户数', name: '本月新增客户数',
type: 'bar', type: 'bar',
barWidth: '20%', barWidth: '20%',
label: {
show: true, //
position: 'top', //
textStyle: {
//
color: 'black', //
fontSize: 10, //
},
},
emphasis: {
focus: 'series',
},
data: state.custData.addNumber, data: state.custData.addNumber,
}, },
{ {
@ -109,6 +151,18 @@
name: '违约客户数', name: '违约客户数',
type: 'bar', type: 'bar',
barWidth: '20%', barWidth: '20%',
label: {
show: true, //
position: 'top', //
textStyle: {
//
color: 'black', //
fontSize: 10, //
},
},
emphasis: {
focus: 'series',
},
data: state.custData.defaultNumber, data: state.custData.defaultNumber,
}, },
{ {
@ -199,7 +253,7 @@ import { reactive, ref } from 'vue';
const $q = useQuasar(); const $q = useQuasar();
const rptRatingDistributionGridRef = ref(); const rptRatingDistributionGridRef = ref();
const state = reactive({ const state = reactive({
splitterModel: 60, splitterModel: 55,
echartsSplitterModel: 50, echartsSplitterModel: 50,
tab: 'cust', tab: 'cust',
xData: <any>[], xData: <any>[],

273
irbs.frontend/src/views/report/RptRatingIndustryFocusDist.vue

@ -1,5 +1,7 @@
<template> <template>
<div class="h-full"> <div class="h-full">
<q-splitter v-model="state.splitterModel" horizontal class="h-full">
<template #before>
<w-grid <w-grid
ref="rptRatingIndustryFocusDistGridRef" ref="rptRatingIndustryFocusDistGridRef"
title="客户评级行业集中度分布报表" title="客户评级行业集中度分布报表"
@ -11,7 +13,185 @@
:columns="rptRatingIndustryFocusDistGrid.tableColumns" :columns="rptRatingIndustryFocusDistGrid.tableColumns"
:toolbar-actions="rptRatingIndustryFocusDistGrid.buttons" :toolbar-actions="rptRatingIndustryFocusDistGrid.buttons"
:pageable="false" :pageable="false"
:dense="true"
@after-request-data="afterRequestData"
></w-grid> ></w-grid>
</template>
<template #after>
<div class="h-full">
<q-splitter v-model="state.echartsSplitterModel" unit="px" horizontal disable class="w-full h-full">
<template #before>
<q-tabs v-model="state.tab" inline-label indicator-color="primary" align="left" :breakpoint="1">
<q-tab name="cust" icon="account_box" label="客户数情况" />
<q-tab name="ratio" icon="timelapse" label="占比情况" />
</q-tabs>
</template>
<template #after>
<q-tab-panels
v-model="state.tab"
:keep-alive="true"
animated
swipeable
vertical
transition-prev="jump-up"
transition-next="jump-up"
class="w-full h-full"
>
<q-tab-panel name="cust" class="w-full h-full p-0">
<w-echarts
:option="{
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
},
},
toolbox: {
feature: {
saveAsImage: { show: true },
},
},
legend: {
data: state.legendData,
},
dataZoom: [
{
type: 'slider',
show: true, //
borderColor: '#e3e3e3', //
showDetail: false, // detail
startValue: 0, //
endValue: 8, //
filterMode: 'empty',
width: '80%', //
height: 8, //
left: 'center', //
zoomLoxk: true, //
handleSize: 0, //
bottom: 0, //
},
{
type: 'inside',
zoomOnMouseWheel: false, //
moveOnMouseMove: true, //
moveOnMouseWheel: true, //
},
],
grid: {
top: '15%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true,
},
xAxis: {
type: 'category',
data: state.xData,
axisLabel: {
//x
show: true,
interval: 0, //使x
rotate: 10,
},
axisTick: {
alignWithLabel: true,
},
},
yAxis: [
{
type: 'value',
},
// {
// type: 'value',
// interval: 10,
// axisLabel: {
// formatter: '{value} %',
// },
// },
],
series: state.seriesData,
}"
></w-echarts>
</q-tab-panel>
<q-tab-panel name="ratio" class="w-full h-full p-0">
<w-echarts
:option="{
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
},
},
toolbox: {
feature: {
saveAsImage: { show: true },
},
},
legend: {
data: state.ratioSeriesData,
},
dataZoom: [
{
type: 'slider',
show: true, //
borderColor: '#e3e3e3', //
showDetail: false, // detail
startValue: 0, //
endValue: 8, //
filterMode: 'empty',
width: '80%', //
height: 8, //
left: 'center', //
zoomLoxk: true, //
handleSize: 0, //
bottom: 0, //
},
{
type: 'inside',
zoomOnMouseWheel: false, //
moveOnMouseMove: true, //
moveOnMouseWheel: true, //
},
],
grid: {
top: '15%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true,
},
xAxis: {
type: 'category',
data: state.xData,
axisLabel: {
//x
show: true,
interval: 0, //使x
rotate: 10,
},
axisTick: {
alignWithLabel: true,
},
},
yAxis: [
{
type: 'value',
interval: 10,
axisLabel: {
formatter: '{value} %',
},
},
],
series: state.ratioSeriesData,
}"
></w-echarts>
</q-tab-panel>
</q-tab-panels>
</template>
</q-splitter>
</div>
</template>
</q-splitter>
</div> </div>
</template> </template>
@ -19,10 +199,67 @@
import { ref, reactive } from 'vue'; import { ref, reactive } from 'vue';
import { useQuasar } from 'quasar'; import { useQuasar } from 'quasar';
import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core'; import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core';
import { Round, RatioFormat } from '@/views/custRating/CustRating.ts';
const $q = useQuasar();
const rptRatingIndustryFocusDistGridRef = ref(); const rptRatingIndustryFocusDistGridRef = ref();
const state = reactive({
splitterModel: 55,
echartsSplitterModel: 50,
tab: 'cust',
legendData: <any>[],
xData: <any>[],
seriesData: <any>[],
ratioLegendData: <any>[],
ratioSeriesData: <any>[],
});
const afterRequestData = (data) => {
if (data && data.length > 0) {
state.xData = [];
state.seriesData = [];
state.legendData = [];
state.ratioSeriesData = [];
const ratingLevel = <any>[];
const totalData = {};
for (let i = 1; i < rptRatingIndustryFocusDistGrid.tableColumns.length; i++) {
ratingLevel.push([
rptRatingIndustryFocusDistGrid.tableColumns[i]['label'],
[rptRatingIndustryFocusDistGrid.tableColumns[i]['columns'][0]['name'], rptRatingIndustryFocusDistGrid.tableColumns[i]['columns'][1]['name']],
]);
totalData[rptRatingIndustryFocusDistGrid.tableColumns[i]['columns'][0]['name']] = [];
totalData[rptRatingIndustryFocusDistGrid.tableColumns[i]['columns'][1]['name']] = [];
}
data.forEach((item) => {
state.xData.push(item['industryName']);
Object.keys(totalData).forEach((key) => {
if (key.indexOf('Ratio') > -1) {
totalData[key].push(item[key] && typeof item[key] === 'number' ? Round(item[key] * 100, 2) : 0);
} else {
totalData[key].push(item[key] ? item[key] : 0);
}
});
});
ratingLevel.forEach((item) => {
const cntSerie = {
name: item[0] + '客户数',
emphasis: {
focus: 'series',
},
type: 'bar',
barWidth: '5%',
data: totalData[item[1][0]],
};
state.seriesData.push(cntSerie);
state.legendData.push(item[0] + '客户数');
const ratioSerie = { name: item[0] + '占比', type: 'line', data: totalData[item[1][1]] };
state.ratioSeriesData.push(ratioSerie);
state.ratioLegendData.push(item[0] + '占比');
});
}
};
const rptRatingIndustryFocusDistGrid = { const rptRatingIndustryFocusDistGrid = {
buttons: [ buttons: [
{ {
@ -36,6 +273,8 @@ const rptRatingIndustryFocusDistGrid = {
}, },
'reset', 'reset',
'separator', 'separator',
'export',
'separator',
], ],
queryFormFields: [ queryFormFields: [
{ label: '报表日期', name: 'ratingMonth', type: 'date', defaultValue: '2023-07-01' }, { label: '报表日期', name: 'ratingMonth', type: 'date', defaultValue: '2023-07-01' },
@ -101,13 +340,13 @@ const rptRatingIndustryFocusDistGrid = {
}, },
], ],
tableColumns: [ tableColumns: [
{ label: '所属行业', name: 'industryName', align: 'center' }, { label: '所属行业', name: 'industryName', align: 'left' },
{ {
name: 'AAA+', name: 'AAA+',
label: 'AAA+', label: 'AAA+',
columns: [ columns: [
{ label: '客户数', name: 'aaaPlusCnt', align: 'center' }, { label: '客户数', name: 'aaaPlusCnt', align: 'center' },
{ label: '占比', name: 'aaaPlusRatio', align: 'center' }, { label: '占比', name: 'aaaPlusRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -115,7 +354,7 @@ const rptRatingIndustryFocusDistGrid = {
label: 'AAA', label: 'AAA',
columns: [ columns: [
{ label: '客户数', name: 'aaaCnt', align: 'center' }, { label: '客户数', name: 'aaaCnt', align: 'center' },
{ label: '占比', name: 'aaaRatio', align: 'center' }, { label: '占比', name: 'aaaRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -123,7 +362,7 @@ const rptRatingIndustryFocusDistGrid = {
label: 'AA+', label: 'AA+',
columns: [ columns: [
{ label: '客户数', name: 'aaPlusCnt', align: 'center' }, { label: '客户数', name: 'aaPlusCnt', align: 'center' },
{ label: '占比', name: 'aaPlusRatio', align: 'center' }, { label: '占比', name: 'aaPlusRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -131,7 +370,7 @@ const rptRatingIndustryFocusDistGrid = {
label: 'AA', label: 'AA',
columns: [ columns: [
{ label: '客户数', name: 'aaCnt', align: 'center' }, { label: '客户数', name: 'aaCnt', align: 'center' },
{ label: '占比', name: 'aaRatio', align: 'center' }, { label: '占比', name: 'aaRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -139,7 +378,7 @@ const rptRatingIndustryFocusDistGrid = {
label: 'AA-', label: 'AA-',
columns: [ columns: [
{ label: '客户数', name: 'aaMinusCnt', align: 'center' }, { label: '客户数', name: 'aaMinusCnt', align: 'center' },
{ label: '占比', name: 'aaMinusRatio', align: 'center' }, { label: '占比', name: 'aaMinusRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -147,7 +386,7 @@ const rptRatingIndustryFocusDistGrid = {
label: 'A+', label: 'A+',
columns: [ columns: [
{ label: '客户数', name: 'aPlusCnt', align: 'center' }, { label: '客户数', name: 'aPlusCnt', align: 'center' },
{ label: '占比', name: 'aPlusRatio', align: 'center' }, { label: '占比', name: 'aPlusRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -155,7 +394,7 @@ const rptRatingIndustryFocusDistGrid = {
label: 'A', label: 'A',
columns: [ columns: [
{ label: '客户数', name: 'aCnt', align: 'center' }, { label: '客户数', name: 'aCnt', align: 'center' },
{ label: '占比', name: 'aRatio', align: 'center' }, { label: '占比', name: 'aRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -163,7 +402,7 @@ const rptRatingIndustryFocusDistGrid = {
label: 'A-', label: 'A-',
columns: [ columns: [
{ label: '客户数', name: 'aMinusCnt', align: 'center' }, { label: '客户数', name: 'aMinusCnt', align: 'center' },
{ label: '占比', name: 'aMinusRatio', align: 'center' }, { label: '占比', name: 'aMinusRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -171,7 +410,7 @@ const rptRatingIndustryFocusDistGrid = {
label: 'BBB', label: 'BBB',
columns: [ columns: [
{ label: '客户数', name: 'bbbCnt', align: 'center' }, { label: '客户数', name: 'bbbCnt', align: 'center' },
{ label: '占比', name: 'bbbRatio', align: 'center' }, { label: '占比', name: 'bbbRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -179,7 +418,7 @@ const rptRatingIndustryFocusDistGrid = {
label: 'BB', label: 'BB',
columns: [ columns: [
{ label: '客户数', name: 'bbCnt', align: 'center' }, { label: '客户数', name: 'bbCnt', align: 'center' },
{ label: '占比', name: 'bbRatio', align: 'center' }, { label: '占比', name: 'bbRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -187,7 +426,7 @@ const rptRatingIndustryFocusDistGrid = {
label: 'B', label: 'B',
columns: [ columns: [
{ label: '客户数', name: 'bCnt', align: 'center' }, { label: '客户数', name: 'bCnt', align: 'center' },
{ label: '占比', name: 'bRatio', align: 'center' }, { label: '占比', name: 'bRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -195,7 +434,7 @@ const rptRatingIndustryFocusDistGrid = {
label: 'CCC', label: 'CCC',
columns: [ columns: [
{ label: '客户数', name: 'cccCnt', align: 'center' }, { label: '客户数', name: 'cccCnt', align: 'center' },
{ label: '占比', name: 'cccRatio', align: 'center' }, { label: '占比', name: 'cccRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -203,7 +442,7 @@ const rptRatingIndustryFocusDistGrid = {
label: 'CC', label: 'CC',
columns: [ columns: [
{ label: '客户数', name: 'ccCnt', align: 'center' }, { label: '客户数', name: 'ccCnt', align: 'center' },
{ label: '占比', name: 'ccRatio', align: 'center' }, { label: '占比', name: 'ccRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -211,7 +450,7 @@ const rptRatingIndustryFocusDistGrid = {
label: 'C', label: 'C',
columns: [ columns: [
{ label: '客户数', name: 'cCnt', align: 'center' }, { label: '客户数', name: 'cCnt', align: 'center' },
{ label: '占比', name: 'cRatio', align: 'center' }, { label: '占比', name: 'cRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -219,7 +458,7 @@ const rptRatingIndustryFocusDistGrid = {
label: 'D', label: 'D',
columns: [ columns: [
{ label: '客户数', name: 'dCnt', align: 'center' }, { label: '客户数', name: 'dCnt', align: 'center' },
{ label: '占比', name: 'dRatio', align: 'center' }, { label: '占比', name: 'dRatio', align: 'center', format: RatioFormat },
], ],
}, },
], ],

346
irbs.frontend/src/views/report/RptRatingLoanBalanceMigrate.vue

@ -1,5 +1,7 @@
<template> <template>
<div class="h-full"> <div class="h-full">
<q-splitter v-model="state.splitterModel" horizontal class="h-full">
<template #before>
<w-grid <w-grid
ref="rptRatingLoanBalanceMigrateRef" ref="rptRatingLoanBalanceMigrateRef"
title="客户评级迁移报表(信贷余额)" title="客户评级迁移报表(信贷余额)"
@ -11,7 +13,232 @@
:columns="rptRatingLoanBalanceMigrateGrid.tableColumns" :columns="rptRatingLoanBalanceMigrateGrid.tableColumns"
:toolbar-actions="rptRatingLoanBalanceMigrateGrid.buttons" :toolbar-actions="rptRatingLoanBalanceMigrateGrid.buttons"
:pageable="false" :pageable="false"
:dense="true"
@after-request-data="afterRequestData"
></w-grid> ></w-grid>
</template>
<template #after>
<div class="h-full">
<q-splitter v-model="state.echartsSplitterModel" unit="px" horizontal disable class="w-full h-full">
<template #before>
<q-tabs v-model="state.tab" inline-label indicator-color="primary" align="left" :breakpoint="1">
<q-tab name="cust" icon="account_box" label="本期客户评级分布情况" />
<q-tab name="up" icon="file_upload" label="向上迁移情况" />
<q-tab name="down" icon="file_download" label="向下迁移情况" />
</q-tabs>
</template>
<template #after>
<q-tab-panels
v-model="state.tab"
:keep-alive="true"
animated
swipeable
vertical
transition-prev="jump-up"
transition-next="jump-up"
class="w-full h-full"
>
<q-tab-panel name="cust" class="w-full h-full p-0">
<w-echarts
:option="{
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
},
},
toolbox: {
feature: {
saveAsImage: { show: true },
},
},
legend: {
data: state.legendData,
},
dataZoom: [
{
type: 'slider',
show: true, //
borderColor: '#e3e3e3', //
showDetail: false, // detail
startValue: 0, //
endValue: 8, //
filterMode: 'empty',
width: '80%', //
height: 8, //
left: 'center', //
zoomLoxk: true, //
handleSize: 0, //
bottom: 0, //
},
{
type: 'inside',
zoomOnMouseWheel: false, //
moveOnMouseMove: true, //
moveOnMouseWheel: true, //
},
],
grid: {
top: '15%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true,
},
xAxis: {
type: 'category',
data: state.xData,
axisLabel: {
//x
show: true,
interval: 0, //使x
},
axisTick: {
alignWithLabel: true,
},
},
yAxis: [
{
type: 'value',
},
// {
// type: 'value',
// interval: 10,
// axisLabel: {
// formatter: '{value} %',
// },
// },
],
series: state.seriesData,
}"
></w-echarts>
</q-tab-panel>
<q-tab-panel name="up" class="w-full h-full p-0">
<w-echarts
:option="{
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
},
},
toolbox: {
feature: {
saveAsImage: { show: true },
},
},
legend: {
data: ['信贷余额', '占比'],
},
grid: {
top: '15%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true,
},
xAxis: {
type: 'category',
data: state.xData,
axisTick: {
alignWithLabel: true,
},
},
yAxis: [
{
type: 'value',
},
{
type: 'value',
interval: 10,
axisLabel: {
formatter: '{value} %',
},
},
],
series: [
{
name: '信贷余额',
type: 'bar',
barWidth: '20%',
data: state.up.cnt,
},
{
name: '占比',
type: 'line',
yAxisIndex: 1,
data: state.up.ratio,
},
],
}"
></w-echarts>
</q-tab-panel>
<q-tab-panel name="down" class="w-full h-full p-0">
<w-echarts
:option="{
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
},
},
toolbox: {
feature: {
saveAsImage: { show: true },
},
},
legend: {
data: ['信贷余额', '占比'],
},
grid: {
top: '15%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true,
},
xAxis: {
type: 'category',
data: state.xData,
axisTick: {
alignWithLabel: true,
},
},
yAxis: [
{
type: 'value',
},
{
type: 'value',
interval: 10,
axisLabel: {
formatter: '{value} %',
},
},
],
series: [
{
name: '信贷余额',
type: 'bar',
barWidth: '20%',
data: state.down.cnt,
},
{
name: '占比',
type: 'line',
yAxisIndex: 1,
data: state.down.ratio,
},
],
}"
></w-echarts>
</q-tab-panel>
</q-tab-panels>
</template>
</q-splitter>
</div>
</template>
</q-splitter>
</div> </div>
</template> </template>
@ -19,10 +246,73 @@
import { ref, reactive } from 'vue'; import { ref, reactive } from 'vue';
import { useQuasar } from 'quasar'; import { useQuasar } from 'quasar';
import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core'; import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core';
import { Round, RatioFormat } from '@/views/custRating/CustRating.ts';
const $q = useQuasar(); const $q = useQuasar();
const rptRatingLoanBalanceMigrateRef = ref(); const rptRatingLoanBalanceMigrateRef = ref();
const state = reactive({
splitterModel: 55,
echartsSplitterModel: 50,
tab: 'cust',
legendData: <any>[],
xData: <any>[],
seriesData: <any>[],
up: {
cnt: <any>[],
ratio: <any>[],
},
down: {
cnt: <any>[],
ratio: <any>[],
},
});
const afterRequestData = (data) => {
if (data && data.length > 0) {
state.xData = [];
state.seriesData = [];
state.legendData = [];
const ratingLevel = <any>[];
const totalData = {};
for (let i = 1; i < rptRatingLoanBalanceMigrateGrid.tableColumns[1].columns.length; i++) {
ratingLevel.push([
rptRatingLoanBalanceMigrateGrid.tableColumns[1].columns[i]['label'],
[rptRatingLoanBalanceMigrateGrid.tableColumns[1].columns[i]['name']],
]);
totalData[rptRatingLoanBalanceMigrateGrid.tableColumns[1].columns[i]['name']] = [];
}
data.forEach((item) => {
state.xData.push(item['ratingLevel']);
state.up.cnt.push(item['upBal']);
state.up.ratio.push(item['upRatio']);
state.down.cnt.push(item['downBal']);
state.down.ratio.push(item['downRatio']);
Object.keys(totalData).forEach((key) => {
if (key.indexOf('Ratio') > -1) {
totalData[key].push(item[key] && typeof item[key] === 'number' ? Round(item[key] * 100, 2) : 0);
} else {
totalData[key].push(item[key] ? item[key] : 0);
}
});
});
ratingLevel.forEach((item) => {
const cntSerie = {
name: item[0] + '信贷余额',
emphasis: {
focus: 'series',
},
type: 'bar',
barWidth: '5%',
data: totalData[item[1][0]],
};
state.seriesData.push(cntSerie);
state.legendData.push(item[0] + '信贷余额');
});
}
};
const rptRatingLoanBalanceMigrateGrid = { const rptRatingLoanBalanceMigrateGrid = {
buttons: [ buttons: [
{ {
@ -36,6 +326,8 @@ const rptRatingLoanBalanceMigrateGrid = {
}, },
'reset', 'reset',
'separator', 'separator',
'export',
'separator',
], ],
queryFormFields: [ queryFormFields: [
{ label: '报表日期', name: 'ratingMonth', type: 'date', defaultValue: '2023-07-01' }, { label: '报表日期', name: 'ratingMonth', type: 'date', defaultValue: '2023-07-01' },
@ -102,46 +394,56 @@ const rptRatingLoanBalanceMigrateGrid = {
}, },
], ],
tableColumns: [ tableColumns: [
{ label: '上期客户评级分布', name: 'ratingLevel', align: 'center' }, { label: '上期评级', name: 'ratingLevel', align: 'left' },
{ {
name: 'currRatingDist', name: 'currRatingDist',
label: '本期客户评级分布', label: '本期客户评级分布',
columns: [ columns: [
{ label: 'AAA+', name: 'aaaPlusBal', align: 'center' }, { label: 'AAA+', name: 'aaaPlusBal', align: 'center', format: Formater.thousands() },
{ label: 'AAA', name: 'aaaBal', align: 'center' }, { label: 'AAA', name: 'aaaBal', align: 'center', format: Formater.thousands() },
{ label: 'AA+', name: 'aaPlusBal', align: 'center' }, { label: 'AA+', name: 'aaPlusBal', align: 'center', format: Formater.thousands() },
{ label: 'AA', name: 'aaBal', align: 'center' }, { label: 'AA', name: 'aaBal', align: 'center', format: Formater.thousands() },
{ label: 'AA-', name: 'aaMinusBal', align: 'center' }, { label: 'AA-', name: 'aaMinusBal', align: 'center', format: Formater.thousands() },
{ label: 'A+', name: 'aPlusBal', align: 'center' }, { label: 'A+', name: 'aPlusBal', align: 'center', format: Formater.thousands() },
{ label: 'A', name: 'aBal', align: 'center' }, { label: 'A', name: 'aBal', align: 'center', format: Formater.thousands() },
{ label: 'A-', name: 'aMinusBal', align: 'center' }, { label: 'A-', name: 'aMinusBal', align: 'center', format: Formater.thousands() },
{ label: 'BBB', name: 'bbbBal', align: 'center' }, { label: 'BBB', name: 'bbbBal', align: 'center', format: Formater.thousands() },
{ label: 'BB', name: 'bbBal', align: 'center' }, { label: 'BB', name: 'bbBal', align: 'center', format: Formater.thousands() },
{ label: 'B', name: 'bBal', align: 'center' }, { label: 'B', name: 'bBal', align: 'center', format: Formater.thousands() },
{ label: 'CCC', name: 'cccBal', align: 'center' }, { label: 'CCC', name: 'cccBal', align: 'center', format: Formater.thousands() },
{ label: 'CC', name: 'ccBal', align: 'center' }, { label: 'CC', name: 'ccBal', align: 'center', format: Formater.thousands() },
{ label: 'C', name: 'cBal', align: 'center' }, { label: 'C', name: 'cBal', align: 'center', format: Formater.thousands() },
{ label: 'D', name: 'dBal', align: 'center' }, { label: 'D', name: 'dBal', align: 'center', format: Formater.thousands() },
{ label: '未评级', name: 'notRatingBal', align: 'center' }, { label: '未评级', name: 'notRatingBal', align: 'center', format: Formater.thousands() },
], ],
}, },
{ {
name: 'ratingUpMigrate', name: 'ratingUpMigrate',
label: '向上迁移', label: '向上迁移',
columns: [ columns: [
{ label: '信贷余额', name: 'upBal', align: 'center' }, { label: '信贷余额', name: 'upBal', align: 'center', format: Formater.thousands() },
{ label: '占比', name: 'upRatio', align: 'center' }, { label: '占比', name: 'upRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
name: 'ratingDownMigrate', name: 'ratingDownMigrate',
label: '向下迁移', label: '向下迁移',
columns: [ columns: [
{ label: '信贷余额', name: 'downBal', align: 'center' }, { label: '信贷余额', name: 'downBal', align: 'center', format: Formater.thousands() },
{ label: '占比', name: 'downRatio', align: 'center' }, { label: '占比', name: 'downRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ label: '迁移指数', name: 'chgExponent', align: 'center' }, {
label: '迁移指数',
name: 'chgExponent',
align: 'center',
format: (val) => {
if (val) {
return Round(val, 2);
}
return val;
},
},
], ],
}; };
</script> </script>

300
irbs.frontend/src/views/report/RptRatingModelFocusDist.vue

@ -1,17 +1,195 @@
<template> <template>
<div class="h-full"> <div class="h-full">
<q-splitter v-model="state.splitterModel" horizontal class="h-full">
<template #before>
<w-grid <w-grid
ref="rptRatingModelFocusDistGridRef" ref="rptRatingModelFocusDistGridRef"
title="客户评级模型敞口集中度分布报表" title="客户评级模型敞口集中度分布报表"
:data-url="Environment.apiContextPath('api/irbs/rptRatingModelFocusDist/list')" :data-url="Environment.apiContextPath('api/irbs/rptRatingModelFocusDist/list')"
:sort-no="true" :sort-no="true"
:dense="true"
:checkbox-selection="false" :checkbox-selection="false"
:query-form-cols-num="4" :query-form-cols-num="4"
:query-form-fields="rptRatingModelFocusDistGrid.queryFormFields" :query-form-fields="rptRatingModelFocusDistGrid.queryFormFields"
:columns="rptRatingModelFocusDistGrid.tableColumns" :columns="rptRatingModelFocusDistGrid.tableColumns"
:toolbar-actions="rptRatingModelFocusDistGrid.buttons" :toolbar-actions="rptRatingModelFocusDistGrid.buttons"
:pageable="false" :pageable="false"
@after-request-data="afterRequestData"
></w-grid> ></w-grid>
</template>
<template #after>
<div class="h-full">
<q-splitter v-model="state.echartsSplitterModel" unit="px" horizontal disable class="w-full h-full">
<template #before>
<q-tabs v-model="state.tab" inline-label indicator-color="primary" align="left" :breakpoint="1">
<q-tab name="cust" icon="account_box" label="客户数情况" />
<q-tab name="ratio" icon="timelapse" label="占比情况" />
</q-tabs>
</template>
<template #after>
<q-tab-panels
v-model="state.tab"
:keep-alive="true"
animated
swipeable
vertical
transition-prev="jump-up"
transition-next="jump-up"
class="w-full h-full"
>
<q-tab-panel name="cust" class="w-full h-full p-0">
<w-echarts
:option="{
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
},
},
toolbox: {
feature: {
saveAsImage: { show: true },
},
},
legend: {
data: state.legendData,
},
dataZoom: [
{
type: 'slider',
show: true, //
borderColor: '#e3e3e3', //
showDetail: false, // detail
startValue: 0, //
endValue: 8, //
filterMode: 'empty',
width: '80%', //
height: 8, //
left: 'center', //
zoomLoxk: true, //
handleSize: 0, //
bottom: 0, //
},
{
type: 'inside',
zoomOnMouseWheel: false, //
moveOnMouseMove: true, //
moveOnMouseWheel: true, //
},
],
grid: {
top: '15%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true,
},
xAxis: {
type: 'category',
data: state.xData,
axisLabel: {
//x
show: true,
interval: 0, //使x
},
axisTick: {
alignWithLabel: true,
},
},
yAxis: [
{
type: 'value',
},
// {
// type: 'value',
// interval: 10,
// axisLabel: {
// formatter: '{value} %',
// },
// },
],
series: state.seriesData,
}"
></w-echarts>
</q-tab-panel>
<q-tab-panel name="ratio" class="w-full h-full p-0">
<w-echarts
:option="{
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
},
},
toolbox: {
feature: {
saveAsImage: { show: true },
},
},
legend: {
data: state.ratioSeriesData,
},
dataZoom: [
{
type: 'slider',
show: true, //
borderColor: '#e3e3e3', //
showDetail: false, // detail
startValue: 0, //
endValue: 8, //
filterMode: 'empty',
width: '80%', //
height: 8, //
left: 'center', //
zoomLoxk: true, //
handleSize: 0, //
bottom: 0, //
},
{
type: 'inside',
zoomOnMouseWheel: false, //
moveOnMouseMove: true, //
moveOnMouseWheel: true, //
},
],
grid: {
top: '15%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true,
},
xAxis: {
type: 'category',
data: state.xData,
axisLabel: {
//x
show: true,
interval: 0, //使x
},
axisTick: {
alignWithLabel: true,
},
},
yAxis: [
{
type: 'value',
interval: 10,
axisLabel: {
formatter: '{value} %',
},
},
],
series: state.ratioSeriesData,
}"
></w-echarts>
</q-tab-panel>
</q-tab-panels>
</template>
</q-splitter>
</div>
</template>
</q-splitter>
</div> </div>
</template> </template>
@ -19,10 +197,68 @@
import { ref, reactive } from 'vue'; import { ref, reactive } from 'vue';
import { useQuasar } from 'quasar'; import { useQuasar } from 'quasar';
import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core'; import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core';
import { Round, RatioFormat } from '@/views/custRating/CustRating.ts';
const $q = useQuasar(); const $q = useQuasar();
const rptRatingModelFocusDistGridRef = ref(); const rptRatingModelFocusDistGridRef = ref();
const state = reactive({
splitterModel: 55,
echartsSplitterModel: 50,
tab: 'cust',
legendData: <any>[],
xData: <any>[],
seriesData: <any>[],
ratioLegendData: <any>[],
ratioSeriesData: <any>[],
});
const afterRequestData = (data) => {
if (data && data.length > 0) {
state.xData = [];
state.seriesData = [];
state.legendData = [];
state.ratioSeriesData = [];
const ratingLevel = <any>[];
const totalData = {};
for (let i = 1; i < rptRatingModelFocusDistGrid.tableColumns.length; i++) {
ratingLevel.push([
rptRatingModelFocusDistGrid.tableColumns[i]['label'],
[rptRatingModelFocusDistGrid.tableColumns[i]['columns'][0]['name'], rptRatingModelFocusDistGrid.tableColumns[i]['columns'][1]['name']],
]);
totalData[rptRatingModelFocusDistGrid.tableColumns[i]['columns'][0]['name']] = [];
totalData[rptRatingModelFocusDistGrid.tableColumns[i]['columns'][1]['name']] = [];
}
data.forEach((item) => {
state.xData.push(item['modelName']);
Object.keys(totalData).forEach((key) => {
if (key.indexOf('Ratio') > -1) {
totalData[key].push(item[key] && typeof item[key] === 'number' ? Round(item[key] * 100, 2) : 0);
} else {
totalData[key].push(item[key] ? item[key] : 0);
}
});
});
ratingLevel.forEach((item) => {
const cntSerie = {
name: item[0] + '客户数',
emphasis: {
focus: 'series',
},
type: 'bar',
barWidth: '5%',
data: totalData[item[1][0]],
};
state.seriesData.push(cntSerie);
state.legendData.push(item[0] + '客户数');
const ratioSerie = { name: item[0] + '占比', type: 'line', data: totalData[item[1][1]] };
state.ratioSeriesData.push(ratioSerie);
state.ratioLegendData.push(item[0] + '占比');
});
}
};
const rptRatingModelFocusDistGrid = { const rptRatingModelFocusDistGrid = {
buttons: [ buttons: [
{ {
@ -36,6 +272,8 @@ const rptRatingModelFocusDistGrid = {
}, },
'reset', 'reset',
'separator', 'separator',
'export',
'separator',
], ],
queryFormFields: [ queryFormFields: [
{ label: '报表日期', name: 'ratingMonth', type: 'date', defaultValue: '2023-07-01' }, { label: '报表日期', name: 'ratingMonth', type: 'date', defaultValue: '2023-07-01' },
@ -71,125 +309,125 @@ const rptRatingModelFocusDistGrid = {
}, },
], ],
tableColumns: [ tableColumns: [
{ label: '模型敞口', name: 'modelName', align: 'center' }, { label: '模型敞口', name: 'modelName', align: 'left', sortable: false },
{ {
name: 'AAA+', name: 'AAA+',
label: 'AAA+', label: 'AAA+',
columns: [ columns: [
{ label: '客户数', name: 'aaaPlusCnt', align: 'center' }, { label: '客户数', name: 'aaaPlusCnt', align: 'center', sortable: false },
{ label: '占比', name: 'aaaPlusRatio', align: 'center' }, { label: '占比', name: 'aaaPlusRatio', align: 'center', sortable: false, format: RatioFormat },
], ],
}, },
{ {
name: 'AAA', name: 'AAA',
label: 'AAA', label: 'AAA',
columns: [ columns: [
{ label: '客户数', name: 'aaaCnt', align: 'center' }, { label: '客户数', name: 'aaaCnt', align: 'center', sortable: false },
{ label: '占比', name: 'aaaRatio', align: 'center' }, { label: '占比', name: 'aaaRatio', align: 'center', sortable: false, format: RatioFormat },
], ],
}, },
{ {
name: 'AA+', name: 'AA+',
label: 'AA+', label: 'AA+',
columns: [ columns: [
{ label: '客户数', name: 'aaPlusCnt', align: 'center' }, { label: '客户数', name: 'aaPlusCnt', align: 'center', sortable: false },
{ label: '占比', name: 'aaPlusRatio', align: 'center' }, { label: '占比', name: 'aaPlusRatio', align: 'center', sortable: false, format: RatioFormat },
], ],
}, },
{ {
name: 'AA', name: 'AA',
label: 'AA', label: 'AA',
columns: [ columns: [
{ label: '客户数', name: 'aaCnt', align: 'center' }, { label: '客户数', name: 'aaCnt', align: 'center', sortable: false },
{ label: '占比', name: 'aaRatio', align: 'center' }, { label: '占比', name: 'aaRatio', align: 'center', sortable: false, format: RatioFormat },
], ],
}, },
{ {
name: 'AA-', name: 'AA-',
label: 'AA-', label: 'AA-',
columns: [ columns: [
{ label: '客户数', name: 'aaMinusCnt', align: 'center' }, { label: '客户数', name: 'aaMinusCnt', align: 'center', sortable: false },
{ label: '占比', name: 'aaMinusRatio', align: 'center' }, { label: '占比', name: 'aaMinusRatio', align: 'center', sortable: false, format: RatioFormat },
], ],
}, },
{ {
name: 'A+', name: 'A+',
label: 'A+', label: 'A+',
columns: [ columns: [
{ label: '客户数', name: 'aPlusCnt', align: 'center' }, { label: '客户数', name: 'aPlusCnt', align: 'center', sortable: false },
{ label: '占比', name: 'aPlusRatio', align: 'center' }, { label: '占比', name: 'aPlusRatio', align: 'center', sortable: false, format: RatioFormat },
], ],
}, },
{ {
name: 'A', name: 'A',
label: 'A', label: 'A',
columns: [ columns: [
{ label: '客户数', name: 'aCnt', align: 'center' }, { label: '客户数', name: 'aCnt', align: 'center', sortable: false },
{ label: '占比', name: 'aRatio', align: 'center' }, { label: '占比', name: 'aRatio', align: 'center', sortable: false, format: RatioFormat },
], ],
}, },
{ {
name: 'A-', name: 'A-',
label: 'A-', label: 'A-',
columns: [ columns: [
{ label: '客户数', name: 'aMinusCnt', align: 'center' }, { label: '客户数', name: 'aMinusCnt', align: 'center', sortable: false },
{ label: '占比', name: 'aMinusRatio', align: 'center' }, { label: '占比', name: 'aMinusRatio', align: 'center', sortable: false, format: RatioFormat },
], ],
}, },
{ {
name: 'BBB', name: 'BBB',
label: 'BBB', label: 'BBB',
columns: [ columns: [
{ label: '客户数', name: 'bbbCnt', align: 'center' }, { label: '客户数', name: 'bbbCnt', align: 'center', sortable: false },
{ label: '占比', name: 'bbbRatio', align: 'center' }, { label: '占比', name: 'bbbRatio', align: 'center', sortable: false, format: RatioFormat },
], ],
}, },
{ {
name: 'BB', name: 'BB',
label: 'BB', label: 'BB',
columns: [ columns: [
{ label: '客户数', name: 'bbCnt', align: 'center' }, { label: '客户数', name: 'bbCnt', align: 'center', sortable: false },
{ label: '占比', name: 'bbRatio', align: 'center' }, { label: '占比', name: 'bbRatio', align: 'center', sortable: false, format: RatioFormat },
], ],
}, },
{ {
name: 'B', name: 'B',
label: 'B', label: 'B',
columns: [ columns: [
{ label: '客户数', name: 'bCnt', align: 'center' }, { label: '客户数', name: 'bCnt', align: 'center', sortable: false },
{ label: '占比', name: 'bRatio', align: 'center' }, { label: '占比', name: 'bRatio', align: 'center', sortable: false, format: RatioFormat },
], ],
}, },
{ {
name: 'CCC', name: 'CCC',
label: 'CCC', label: 'CCC',
columns: [ columns: [
{ label: '客户数', name: 'cccCnt', align: 'center' }, { label: '客户数', name: 'cccCnt', align: 'center', sortable: false },
{ label: '占比', name: 'cccRatio', align: 'center' }, { label: '占比', name: 'cccRatio', align: 'center', sortable: false, format: RatioFormat },
], ],
}, },
{ {
name: 'CC', name: 'CC',
label: 'CC', label: 'CC',
columns: [ columns: [
{ label: '客户数', name: 'ccCnt', align: 'center' }, { label: '客户数', name: 'ccCnt', align: 'center', sortable: false },
{ label: '占比', name: 'ccRatio', align: 'center' }, { label: '占比', name: 'ccRatio', align: 'center', sortable: false, format: RatioFormat },
], ],
}, },
{ {
name: 'C', name: 'C',
label: 'C', label: 'C',
columns: [ columns: [
{ label: '客户数', name: 'cCnt', align: 'center' }, { label: '客户数', name: 'cCnt', align: 'center', sortable: false },
{ label: '占比', name: 'cRatio', align: 'center' }, { label: '占比', name: 'cRatio', align: 'center', sortable: false, format: RatioFormat },
], ],
}, },
{ {
name: 'D', name: 'D',
label: 'D', label: 'D',
columns: [ columns: [
{ label: '客户数', name: 'dCnt', align: 'center' }, { label: '客户数', name: 'dCnt', align: 'center', sortable: false },
{ label: '占比', name: 'dRatio', align: 'center' }, { label: '占比', name: 'dRatio', align: 'center', sortable: false, format: RatioFormat },
], ],
}, },
], ],

307
irbs.frontend/src/views/report/RptRatingNumberMigrate.vue

@ -1,5 +1,7 @@
<template> <template>
<div class="h-full"> <div class="h-full">
<q-splitter v-model="state.splitterModel" horizontal class="h-full">
<template #before>
<w-grid <w-grid
ref="rptRatingNumberMigrateRef" ref="rptRatingNumberMigrateRef"
title="客户评级迁移报表(客户数)" title="客户评级迁移报表(客户数)"
@ -11,7 +13,232 @@
:columns="rptRatingNumberMigrateGrid.tableColumns" :columns="rptRatingNumberMigrateGrid.tableColumns"
:toolbar-actions="rptRatingNumberMigrateGrid.buttons" :toolbar-actions="rptRatingNumberMigrateGrid.buttons"
:pageable="false" :pageable="false"
:dense="true"
@after-request-data="afterRequestData"
></w-grid> ></w-grid>
</template>
<template #after>
<div class="h-full">
<q-splitter v-model="state.echartsSplitterModel" unit="px" horizontal disable class="w-full h-full">
<template #before>
<q-tabs v-model="state.tab" inline-label indicator-color="primary" align="left" :breakpoint="1">
<q-tab name="cust" icon="account_box" label="本期客户评级分布情况" />
<q-tab name="up" icon="file_upload" label="向上迁移情况" />
<q-tab name="down" icon="file_download" label="向下迁移情况" />
</q-tabs>
</template>
<template #after>
<q-tab-panels
v-model="state.tab"
:keep-alive="true"
animated
swipeable
vertical
transition-prev="jump-up"
transition-next="jump-up"
class="w-full h-full"
>
<q-tab-panel name="cust" class="w-full h-full p-0">
<w-echarts
:option="{
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
},
},
toolbox: {
feature: {
saveAsImage: { show: true },
},
},
legend: {
data: state.legendData,
},
dataZoom: [
{
type: 'slider',
show: true, //
borderColor: '#e3e3e3', //
showDetail: false, // detail
startValue: 0, //
endValue: 8, //
filterMode: 'empty',
width: '80%', //
height: 8, //
left: 'center', //
zoomLoxk: true, //
handleSize: 0, //
bottom: 0, //
},
{
type: 'inside',
zoomOnMouseWheel: false, //
moveOnMouseMove: true, //
moveOnMouseWheel: true, //
},
],
grid: {
top: '15%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true,
},
xAxis: {
type: 'category',
data: state.xData,
axisLabel: {
//x
show: true,
interval: 0, //使x
},
axisTick: {
alignWithLabel: true,
},
},
yAxis: [
{
type: 'value',
},
// {
// type: 'value',
// interval: 10,
// axisLabel: {
// formatter: '{value} %',
// },
// },
],
series: state.seriesData,
}"
></w-echarts>
</q-tab-panel>
<q-tab-panel name="up" class="w-full h-full p-0">
<w-echarts
:option="{
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
},
},
toolbox: {
feature: {
saveAsImage: { show: true },
},
},
legend: {
data: ['客户数', '占比'],
},
grid: {
top: '15%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true,
},
xAxis: {
type: 'category',
data: state.xData,
axisTick: {
alignWithLabel: true,
},
},
yAxis: [
{
type: 'value',
},
{
type: 'value',
interval: 10,
axisLabel: {
formatter: '{value} %',
},
},
],
series: [
{
name: '客户数',
type: 'bar',
barWidth: '20%',
data: state.up.cnt,
},
{
name: '占比',
type: 'line',
yAxisIndex: 1,
data: state.up.ratio,
},
],
}"
></w-echarts>
</q-tab-panel>
<q-tab-panel name="down" class="w-full h-full p-0">
<w-echarts
:option="{
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
},
},
toolbox: {
feature: {
saveAsImage: { show: true },
},
},
legend: {
data: ['客户数', '占比'],
},
grid: {
top: '15%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true,
},
xAxis: {
type: 'category',
data: state.xData,
axisTick: {
alignWithLabel: true,
},
},
yAxis: [
{
type: 'value',
},
{
type: 'value',
interval: 10,
axisLabel: {
formatter: '{value} %',
},
},
],
series: [
{
name: '客户数',
type: 'bar',
barWidth: '20%',
data: state.down.cnt,
},
{
name: '占比',
type: 'line',
yAxisIndex: 1,
data: state.down.ratio,
},
],
}"
></w-echarts>
</q-tab-panel>
</q-tab-panels>
</template>
</q-splitter>
</div>
</template>
</q-splitter>
</div> </div>
</template> </template>
@ -19,10 +246,70 @@
import { ref, reactive } from 'vue'; import { ref, reactive } from 'vue';
import { useQuasar } from 'quasar'; import { useQuasar } from 'quasar';
import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core'; import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core';
import { Round, RatioFormat } from '@/views/custRating/CustRating.ts';
const $q = useQuasar(); const $q = useQuasar();
const rptRatingNumberMigrateRef = ref(); const rptRatingNumberMigrateRef = ref();
const state = reactive({
splitterModel: 55,
echartsSplitterModel: 50,
tab: 'cust',
legendData: <any>[],
xData: <any>[],
seriesData: <any>[],
up: {
cnt: <any>[],
ratio: <any>[],
},
down: {
cnt: <any>[],
ratio: <any>[],
},
});
const afterRequestData = (data) => {
if (data && data.length > 0) {
state.xData = [];
state.seriesData = [];
state.legendData = [];
const ratingLevel = <any>[];
const totalData = {};
for (let i = 1; i < rptRatingNumberMigrateGrid.tableColumns[1].columns.length; i++) {
ratingLevel.push([rptRatingNumberMigrateGrid.tableColumns[1].columns[i]['label'], [rptRatingNumberMigrateGrid.tableColumns[1].columns[i]['name']]]);
totalData[rptRatingNumberMigrateGrid.tableColumns[1].columns[i]['name']] = [];
}
data.forEach((item) => {
state.xData.push(item['ratingLevel']);
state.up.cnt.push(item['upCnt']);
state.up.ratio.push(item['upRatio']);
state.down.cnt.push(item['downCnt']);
state.down.ratio.push(item['downRatio']);
Object.keys(totalData).forEach((key) => {
if (key.indexOf('Ratio') > -1) {
totalData[key].push(item[key] && typeof item[key] === 'number' ? Round(item[key] * 100, 2) : 0);
} else {
totalData[key].push(item[key] ? item[key] : 0);
}
});
});
ratingLevel.forEach((item) => {
const cntSerie = {
name: item[0] + '客户数',
emphasis: {
focus: 'series',
},
type: 'bar',
barWidth: '5%',
data: totalData[item[1][0]],
};
state.seriesData.push(cntSerie);
state.legendData.push(item[0] + '客户数');
});
}
};
const rptRatingNumberMigrateGrid = { const rptRatingNumberMigrateGrid = {
buttons: [ buttons: [
{ {
@ -36,6 +323,8 @@ const rptRatingNumberMigrateGrid = {
}, },
'reset', 'reset',
'separator', 'separator',
'export',
'separator',
], ],
queryFormFields: [ queryFormFields: [
{ label: '报表日期', name: 'ratingMonth', type: 'date', defaultValue: '2023-07-01' }, { label: '报表日期', name: 'ratingMonth', type: 'date', defaultValue: '2023-07-01' },
@ -101,7 +390,7 @@ const rptRatingNumberMigrateGrid = {
}, },
], ],
tableColumns: [ tableColumns: [
{ label: '上期客户评级分布', name: 'ratingLevel', align: 'center' }, { label: '上期评级', name: 'ratingLevel', align: 'left' },
{ {
name: 'currRatingDist', name: 'currRatingDist',
label: '本期客户评级分布', label: '本期客户评级分布',
@ -129,7 +418,7 @@ const rptRatingNumberMigrateGrid = {
label: '向上迁移', label: '向上迁移',
columns: [ columns: [
{ label: '客户数', name: 'upCnt', align: 'center' }, { label: '客户数', name: 'upCnt', align: 'center' },
{ label: '占比', name: 'upRatio', align: 'center' }, { label: '占比', name: 'upRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -137,10 +426,20 @@ const rptRatingNumberMigrateGrid = {
label: '向下迁移', label: '向下迁移',
columns: [ columns: [
{ label: '客户数', name: 'downCnt', align: 'center' }, { label: '客户数', name: 'downCnt', align: 'center' },
{ label: '占比', name: 'downRatio', align: 'center' }, { label: '占比', name: 'downRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ label: '迁移指数', name: 'chgExponent', align: 'center' }, {
label: '迁移指数',
name: 'chgExponent',
align: 'center',
format: (val) => {
if (val) {
return Round(val, 2);
}
return val;
},
},
], ],
}; };
</script> </script>

267
irbs.frontend/src/views/report/RptRatingOrgFocusDist.vue

@ -1,5 +1,7 @@
<template> <template>
<div class="h-full"> <div class="h-full">
<q-splitter v-model="state.splitterModel" horizontal class="h-full">
<template #before>
<w-grid <w-grid
ref="rptRatingOrgFocusDistGridRef" ref="rptRatingOrgFocusDistGridRef"
title="客户评级分支机构集中度分布报表" title="客户评级分支机构集中度分布报表"
@ -11,7 +13,183 @@
:columns="rptRatingOrgFocusDistGrid.tableColumns" :columns="rptRatingOrgFocusDistGrid.tableColumns"
:toolbar-actions="rptRatingOrgFocusDistGrid.buttons" :toolbar-actions="rptRatingOrgFocusDistGrid.buttons"
:pageable="false" :pageable="false"
:dense="true"
@after-request-data="afterRequestData"
></w-grid> ></w-grid>
</template>
<template #after>
<div class="h-full">
<q-splitter v-model="state.echartsSplitterModel" unit="px" horizontal disable class="w-full h-full">
<template #before>
<q-tabs v-model="state.tab" inline-label indicator-color="primary" align="left" :breakpoint="1">
<q-tab name="cust" icon="account_box" label="客户数情况" />
<q-tab name="ratio" icon="timelapse" label="占比情况" />
</q-tabs>
</template>
<template #after>
<q-tab-panels
v-model="state.tab"
:keep-alive="true"
animated
swipeable
vertical
transition-prev="jump-up"
transition-next="jump-up"
class="w-full h-full"
>
<q-tab-panel name="cust" class="w-full h-full p-0">
<w-echarts
:option="{
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
},
},
toolbox: {
feature: {
saveAsImage: { show: true },
},
},
legend: {
data: state.legendData,
},
dataZoom: [
{
type: 'slider',
show: true, //
borderColor: '#e3e3e3', //
showDetail: false, // detail
startValue: 0, //
endValue: 8, //
filterMode: 'empty',
width: '80%', //
height: 8, //
left: 'center', //
zoomLoxk: true, //
handleSize: 0, //
bottom: 0, //
},
{
type: 'inside',
zoomOnMouseWheel: false, //
moveOnMouseMove: true, //
moveOnMouseWheel: true, //
},
],
grid: {
top: '15%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true,
},
xAxis: {
type: 'category',
data: state.xData,
axisLabel: {
//x
show: true,
interval: 0, //使x
},
axisTick: {
alignWithLabel: true,
},
},
yAxis: [
{
type: 'value',
},
// {
// type: 'value',
// interval: 10,
// axisLabel: {
// formatter: '{value} %',
// },
// },
],
series: state.seriesData,
}"
></w-echarts>
</q-tab-panel>
<q-tab-panel name="ratio" class="w-full h-full p-0">
<w-echarts
:option="{
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
},
},
toolbox: {
feature: {
saveAsImage: { show: true },
},
},
legend: {
data: state.ratioSeriesData,
},
dataZoom: [
{
type: 'slider',
show: true, //
borderColor: '#e3e3e3', //
showDetail: false, // detail
startValue: 0, //
endValue: 8, //
filterMode: 'empty',
width: '80%', //
height: 8, //
left: 'center', //
zoomLoxk: true, //
handleSize: 0, //
bottom: 0, //
},
{
type: 'inside',
zoomOnMouseWheel: false, //
moveOnMouseMove: true, //
moveOnMouseWheel: true, //
},
],
grid: {
top: '15%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true,
},
xAxis: {
type: 'category',
data: state.xData,
axisLabel: {
//x
show: true,
interval: 0, //使x
},
axisTick: {
alignWithLabel: true,
},
},
yAxis: [
{
type: 'value',
interval: 10,
axisLabel: {
formatter: '{value} %',
},
},
],
series: state.ratioSeriesData,
}"
></w-echarts>
</q-tab-panel>
</q-tab-panels>
</template>
</q-splitter>
</div>
</template>
</q-splitter>
</div> </div>
</template> </template>
@ -19,9 +197,66 @@
import { ref, reactive } from 'vue'; import { ref, reactive } from 'vue';
import { useQuasar } from 'quasar'; import { useQuasar } from 'quasar';
import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core'; import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core';
import { Round, RatioFormat } from '@/views/custRating/CustRating.ts';
const $q = useQuasar(); const $q = useQuasar();
const rptRatingOrgFocusDistGridRef = ref(); const rptRatingOrgFocusDistGridRef = ref();
const state = reactive({
splitterModel: 55,
echartsSplitterModel: 50,
tab: 'cust',
legendData: <any>[],
xData: <any>[],
seriesData: <any>[],
ratioLegendData: <any>[],
ratioSeriesData: <any>[],
});
const afterRequestData = (data) => {
if (data && data.length > 0) {
state.xData = [];
state.seriesData = [];
state.legendData = [];
state.ratioSeriesData = [];
const ratingLevel = <any>[];
const totalData = {};
for (let i = 1; i < rptRatingOrgFocusDistGrid.tableColumns.length; i++) {
ratingLevel.push([
rptRatingOrgFocusDistGrid.tableColumns[i]['label'],
[rptRatingOrgFocusDistGrid.tableColumns[i]['columns'][0]['name'], rptRatingOrgFocusDistGrid.tableColumns[i]['columns'][1]['name']],
]);
totalData[rptRatingOrgFocusDistGrid.tableColumns[i]['columns'][0]['name']] = [];
totalData[rptRatingOrgFocusDistGrid.tableColumns[i]['columns'][1]['name']] = [];
}
data.forEach((item) => {
state.xData.push(item['managerOrgName']);
Object.keys(totalData).forEach((key) => {
if (key.indexOf('Ratio') > -1) {
totalData[key].push(item[key] && typeof item[key] === 'number' ? Round(item[key] * 100, 2) : 0);
} else {
totalData[key].push(item[key] ? item[key] : 0);
}
});
});
ratingLevel.forEach((item) => {
const cntSerie = {
name: item[0] + '客户数',
emphasis: {
focus: 'series',
},
type: 'bar',
barWidth: '5%',
data: totalData[item[1][0]],
};
state.seriesData.push(cntSerie);
state.legendData.push(item[0] + '客户数');
const ratioSerie = { name: item[0] + '占比', type: 'line', data: totalData[item[1][1]] };
state.ratioSeriesData.push(ratioSerie);
state.ratioLegendData.push(item[0] + '占比');
});
}
};
const rptRatingOrgFocusDistGrid = { const rptRatingOrgFocusDistGrid = {
buttons: [ buttons: [
@ -36,6 +271,8 @@ const rptRatingOrgFocusDistGrid = {
}, },
'reset', 'reset',
'separator', 'separator',
'export',
'separator',
], ],
queryFormFields: [ queryFormFields: [
{ label: '报表日期', name: 'ratingMonth', type: 'date', defaultValue: '2023-07-01' }, { label: '报表日期', name: 'ratingMonth', type: 'date', defaultValue: '2023-07-01' },
@ -77,7 +314,7 @@ const rptRatingOrgFocusDistGrid = {
label: 'AAA+', label: 'AAA+',
columns: [ columns: [
{ label: '客户数', name: 'aaaPlusCnt', align: 'center' }, { label: '客户数', name: 'aaaPlusCnt', align: 'center' },
{ label: '占比', name: 'aaaPlusRatio', align: 'center' }, { label: '占比', name: 'aaaPlusRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -85,7 +322,7 @@ const rptRatingOrgFocusDistGrid = {
label: 'AAA', label: 'AAA',
columns: [ columns: [
{ label: '客户数', name: 'aaaCnt', align: 'center' }, { label: '客户数', name: 'aaaCnt', align: 'center' },
{ label: '占比', name: 'aaaRatio', align: 'center' }, { label: '占比', name: 'aaaRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -93,7 +330,7 @@ const rptRatingOrgFocusDistGrid = {
label: 'AA+', label: 'AA+',
columns: [ columns: [
{ label: '客户数', name: 'aaPlusCnt', align: 'center' }, { label: '客户数', name: 'aaPlusCnt', align: 'center' },
{ label: '占比', name: 'aaPlusRatio', align: 'center' }, { label: '占比', name: 'aaPlusRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -101,7 +338,7 @@ const rptRatingOrgFocusDistGrid = {
label: 'AA', label: 'AA',
columns: [ columns: [
{ label: '客户数', name: 'aaCnt', align: 'center' }, { label: '客户数', name: 'aaCnt', align: 'center' },
{ label: '占比', name: 'aaRatio', align: 'center' }, { label: '占比', name: 'aaRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -109,7 +346,7 @@ const rptRatingOrgFocusDistGrid = {
label: 'AA-', label: 'AA-',
columns: [ columns: [
{ label: '客户数', name: 'aaMinusCnt', align: 'center' }, { label: '客户数', name: 'aaMinusCnt', align: 'center' },
{ label: '占比', name: 'aaMinusRatio', align: 'center' }, { label: '占比', name: 'aaMinusRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -117,7 +354,7 @@ const rptRatingOrgFocusDistGrid = {
label: 'A+', label: 'A+',
columns: [ columns: [
{ label: '客户数', name: 'aPlusCnt', align: 'center' }, { label: '客户数', name: 'aPlusCnt', align: 'center' },
{ label: '占比', name: 'aPlusRatio', align: 'center' }, { label: '占比', name: 'aPlusRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -125,7 +362,7 @@ const rptRatingOrgFocusDistGrid = {
label: 'A', label: 'A',
columns: [ columns: [
{ label: '客户数', name: 'aCnt', align: 'center' }, { label: '客户数', name: 'aCnt', align: 'center' },
{ label: '占比', name: 'aRatio', align: 'center' }, { label: '占比', name: 'aRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -133,7 +370,7 @@ const rptRatingOrgFocusDistGrid = {
label: 'A-', label: 'A-',
columns: [ columns: [
{ label: '客户数', name: 'aMinusCnt', align: 'center' }, { label: '客户数', name: 'aMinusCnt', align: 'center' },
{ label: '占比', name: 'aMinusRatio', align: 'center' }, { label: '占比', name: 'aMinusRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -141,7 +378,7 @@ const rptRatingOrgFocusDistGrid = {
label: 'BBB', label: 'BBB',
columns: [ columns: [
{ label: '客户数', name: 'bbbCnt', align: 'center' }, { label: '客户数', name: 'bbbCnt', align: 'center' },
{ label: '占比', name: 'bbbRatio', align: 'center' }, { label: '占比', name: 'bbbRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -149,7 +386,7 @@ const rptRatingOrgFocusDistGrid = {
label: 'BB', label: 'BB',
columns: [ columns: [
{ label: '客户数', name: 'bbCnt', align: 'center' }, { label: '客户数', name: 'bbCnt', align: 'center' },
{ label: '占比', name: 'bbRatio', align: 'center' }, { label: '占比', name: 'bbRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -157,7 +394,7 @@ const rptRatingOrgFocusDistGrid = {
label: 'B', label: 'B',
columns: [ columns: [
{ label: '客户数', name: 'bCnt', align: 'center' }, { label: '客户数', name: 'bCnt', align: 'center' },
{ label: '占比', name: 'bRatio', align: 'center' }, { label: '占比', name: 'bRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -165,7 +402,7 @@ const rptRatingOrgFocusDistGrid = {
label: 'CCC', label: 'CCC',
columns: [ columns: [
{ label: '客户数', name: 'cccCnt', align: 'center' }, { label: '客户数', name: 'cccCnt', align: 'center' },
{ label: '占比', name: 'cccRatio', align: 'center' }, { label: '占比', name: 'cccRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -173,7 +410,7 @@ const rptRatingOrgFocusDistGrid = {
label: 'CC', label: 'CC',
columns: [ columns: [
{ label: '客户数', name: 'ccCnt', align: 'center' }, { label: '客户数', name: 'ccCnt', align: 'center' },
{ label: '占比', name: 'ccRatio', align: 'center' }, { label: '占比', name: 'ccRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -181,7 +418,7 @@ const rptRatingOrgFocusDistGrid = {
label: 'C', label: 'C',
columns: [ columns: [
{ label: '客户数', name: 'cCnt', align: 'center' }, { label: '客户数', name: 'cCnt', align: 'center' },
{ label: '占比', name: 'cRatio', align: 'center' }, { label: '占比', name: 'cRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
@ -189,7 +426,7 @@ const rptRatingOrgFocusDistGrid = {
label: 'D', label: 'D',
columns: [ columns: [
{ label: '客户数', name: 'dCnt', align: 'center' }, { label: '客户数', name: 'dCnt', align: 'center' },
{ label: '占比', name: 'dRatio', align: 'center' }, { label: '占比', name: 'dRatio', align: 'center', format: RatioFormat },
], ],
}, },
], ],

307
irbs.frontend/src/views/report/RptRatingOverturn.vue

@ -1,5 +1,7 @@
<template> <template>
<div class="h-full"> <div class="h-full">
<q-splitter v-model="state.splitterModel" horizontal class="h-full">
<template #before>
<w-grid <w-grid
ref="rptRatingOverturnGridRef" ref="rptRatingOverturnGridRef"
title="客户评级推翻情况报表" title="客户评级推翻情况报表"
@ -11,7 +13,247 @@
:columns="rptRatingOverturnGrid.columns" :columns="rptRatingOverturnGrid.columns"
:toolbar-actions="rptRatingOverturnGrid.buttons" :toolbar-actions="rptRatingOverturnGrid.buttons"
:pageable="false" :pageable="false"
:dense="true"
@after-request-data="afterRequestData"
></w-grid> ></w-grid>
</template>
<template #after>
<div class="h-full">
<q-splitter v-model="state.echartsSplitterModel" unit="px" horizontal disable class="w-full h-full">
<template #before>
<q-tabs v-model="state.tab" inline-label indicator-color="primary" align="left" :breakpoint="1">
<q-tab name="cust" icon="account_box" label="推翻整体情况" />
<q-tab name="position" icon="sensor_occupied" label="推翻方向情况" />
<q-tab name="range" icon="text_rotation_angleup" label="推翻幅度情况" />
</q-tabs>
</template>
<template #after>
<q-tab-panels
v-model="state.tab"
:keep-alive="true"
animated
swipeable
vertical
transition-prev="jump-up"
transition-next="jump-up"
class="w-full h-full"
>
<q-tab-panel name="cust" class="w-full h-full p-0">
<w-echarts
:option="{
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
},
},
toolbox: {
feature: {
saveAsImage: { show: true },
},
},
legend: {
data: ['评级客户数', '推翻客户数', '推翻率'],
},
grid: {
top: '15%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true,
},
xAxis: {
type: 'category',
data: state.xData,
axisTick: {
alignWithLabel: true,
},
},
yAxis: [
{
type: 'value',
},
{
type: 'value',
interval: 10,
axisLabel: {
formatter: '{value} %',
},
},
],
series: [
{
name: '评级客户数',
type: 'bar',
barWidth: '10%',
label: {
show: true, //
position: 'top', //
textStyle: {
//
color: 'black', //
fontSize: 10, //
},
},
emphasis: {
focus: 'series',
},
data: state.custData.ratingCnt,
},
{
name: '推翻客户数',
type: 'bar',
barWidth: '10%',
label: {
show: true, //
position: 'top', //
textStyle: {
//
color: 'black', //
fontSize: 10, //
},
},
emphasis: {
focus: 'series',
},
data: state.custData.overturnCnt,
},
{
name: '推翻率',
type: 'line',
yAxisIndex: 1,
data: state.custData.overturnRatio,
},
],
}"
></w-echarts>
</q-tab-panel>
<q-tab-panel name="position" class="w-full h-full p-0">
<w-echarts
:option="{
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
},
},
toolbox: {
feature: {
saveAsImage: { show: true },
},
},
legend: {
data: ['向下推翻占比', '向上推翻占比'],
},
grid: {
top: '15%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true,
},
xAxis: {
type: 'category',
data: state.xData,
axisTick: {
alignWithLabel: true,
},
},
yAxis: [
{
type: 'value',
interval: 10,
axisLabel: {
formatter: '{value} %',
},
},
],
series: [
{
name: '向下推翻占比',
type: 'line',
data: state.position.down,
},
{
name: '向上推翻占比',
type: 'line',
data: state.position.up,
},
],
}"
></w-echarts>
</q-tab-panel>
<q-tab-panel name="range" class="w-full h-full p-0">
<w-echarts
:option="{
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
},
},
toolbox: {
feature: {
saveAsImage: { show: true },
},
},
legend: {
data: ['1级', '2级', '3级', '3级以上'],
},
grid: {
top: '15%',
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true,
},
xAxis: {
type: 'category',
data: state.xData,
axisTick: {
alignWithLabel: true,
},
},
yAxis: [
{
type: 'value',
interval: 10,
axisLabel: {
formatter: '{value} %',
},
},
],
series: [
{
name: '1级',
type: 'line',
data: state.range.l1,
},
{
name: '2级',
type: 'line',
data: state.range.l2,
},
{
name: '3级',
type: 'line',
data: state.range.l3,
},
{
name: '3级以上',
type: 'line',
data: state.range.ln,
},
],
}"
></w-echarts>
</q-tab-panel>
</q-tab-panels>
</template>
</q-splitter>
</div>
</template>
</q-splitter>
</div> </div>
</template> </template>
@ -19,10 +261,60 @@
import { ref, reactive } from 'vue'; import { ref, reactive } from 'vue';
import { useQuasar } from 'quasar'; import { useQuasar } from 'quasar';
import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core'; import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core';
import { Round, RatioFormat } from '@/views/custRating/CustRating.ts';
const $q = useQuasar(); const $q = useQuasar();
const rptRatingOverturnGridRef = ref(); const rptRatingOverturnGridRef = ref();
const state = reactive({
splitterModel: 55,
echartsSplitterModel: 50,
tab: 'cust',
xData: <any>[],
custData: {
ratingCnt: <any>[],
overturnCnt: <any>[],
overturnRatio: <any>[],
},
position: {
down: <any>[],
up: <any>[],
},
range: {
l1: <any>[],
l2: <any>[],
l3: <any>[],
ln: <any>[],
},
});
const afterRequestData = (data) => {
state.xData = [];
state.custData.ratingCnt = [];
state.custData.overturnCnt = [];
state.custData.overturnRatio = [];
state.position.down = [];
state.position.up = [];
state.range.l1 = [];
state.range.l2 = [];
state.range.l3 = [];
state.range.ln = [];
if (data && data.length > 0) {
data.forEach((item) => {
state.xData.push(item['ratingMonth']);
state.custData.ratingCnt.push(item['custCnt']);
state.custData.overturnCnt.push(item['overturnCnt']);
state.custData.overturnRatio.push(item['overturnRatio'] && typeof item['overturnRatio'] === 'number' ? Round(item['overturnRatio'] * 100, 2) : 0);
state.position.down.push(item['upOverturnRatio'] && typeof item['upOverturnRatio'] === 'number' ? Round(item['upOverturnRatio'] * 100, 2) : 0);
state.position.up.push(item['downOverturnRatio'] && typeof item['downOverturnRatio'] === 'number' ? Round(item['downOverturnRatio'] * 100, 2) : 0);
state.range.l1.push(item['oneLvlRatio'] && typeof item['oneLvlRatio'] === 'number' ? Round(item['oneLvlRatio'] * 100, 2) : 0);
state.range.l2.push(item['twoLvlRatio'] && typeof item['twoLvlRatio'] === 'number' ? Round(item['twoLvlRatio'] * 100, 2) : 0);
state.range.l3.push(item['threeLvlRatio'] && typeof item['threeLvlRatio'] === 'number' ? Round(item['threeLvlRatio'] * 100, 2) : 0);
state.range.ln.push(item['threeMoreLvlRatio'] && typeof item['threeMoreLvlRatio'] === 'number' ? Round(item['threeMoreLvlRatio'] * 100, 2) : 0);
});
}
};
const rptRatingOverturnGrid = { const rptRatingOverturnGrid = {
buttons: [ buttons: [
{ {
@ -37,6 +329,7 @@ const rptRatingOverturnGrid = {
'reset', 'reset',
'separator', 'separator',
'export', 'export',
'separator',
], ],
queryFormFields: [ queryFormFields: [
{ label: '报表日期', name: 'ratingMonth', type: 'date', defaultValue: '2023-07-01' }, { label: '报表日期', name: 'ratingMonth', type: 'date', defaultValue: '2023-07-01' },
@ -105,23 +398,23 @@ const rptRatingOverturnGrid = {
{ label: '评级时间', name: 'ratingMonth', align: 'center' }, { label: '评级时间', name: 'ratingMonth', align: 'center' },
{ label: '评级客户数', name: 'custCnt', align: 'center' }, { label: '评级客户数', name: 'custCnt', align: 'center' },
{ label: '推翻客户数', name: 'overturnCnt', align: 'center' }, { label: '推翻客户数', name: 'overturnCnt', align: 'center' },
{ label: '推翻率', name: 'overturnRatio', align: 'center' }, { label: '推翻率', name: 'overturnRatio', align: 'center', format: RatioFormat },
{ {
label: '推翻方向', label: '推翻方向',
name: 'overturnPositionHeader', name: 'overturnPositionHeader',
columns: [ columns: [
{ label: '向下推翻', name: 'upOverturnRatio', align: 'center' }, { label: '向下推翻', name: 'upOverturnRatio', align: 'center', format: RatioFormat },
{ label: '向上推翻', name: 'downOverturnRatio', align: 'center' }, { label: '向上推翻', name: 'downOverturnRatio', align: 'center', format: RatioFormat },
], ],
}, },
{ {
label: '推翻幅度', label: '推翻幅度',
name: 'overturnRangeHeader', name: 'overturnRangeHeader',
columns: [ columns: [
{ label: '1级', name: 'oneLvlRatio' }, { label: '1级', name: 'oneLvlRatio', format: RatioFormat },
{ label: '2级', name: 'twoLvlRatio' }, { label: '2级', name: 'twoLvlRatio', format: RatioFormat },
{ label: '3级', name: 'threeLvlRatio' }, { label: '3级', name: 'threeLvlRatio', format: RatioFormat },
{ label: '3级以上', name: 'threeMoreLvlRatio' }, { label: '3级以上', name: 'threeMoreLvlRatio', format: RatioFormat },
], ],
}, },
], ],

Loading…
Cancel
Save