贷款结息优化

    12月20日的结息程序在今天晚上就要进行,近段时间一直在对其运行程序进行优化处理

    贷款结息分成几个部分:

    一、1321应收未收利息,107,108科目的复利计算

    二、贷款本金的利息计算

    三、本次结息后付息账号余额超出部分,要计提1321应收利息处理

    优化前的问题:结息速度太慢,在9月20日的结息过程中,需要结息的贷款户大概为90,000户,整个结息时间花了足足13个小时,本季度结息包含的账户有按月付、月付+还付、季付、季付+还付、利随本清五类,一共大概270,000户,在12月20日这一天计算机要处理的工作比较多:对公结息储蓄结息对公计提储蓄计提贷款结息,所以要求贷款结息必须在3 4 个小时(已经分配的算足够多的了)内处理完毕

    贷款状态及户数统计

    原程序的设计:LNRECD为贷款分户表,CUINTS为账户利息表,LNRETU为贷款交易登记表

    1.遍历LNRECD表,逐条计算出利息放入到CUINTS表中,利息 = ( 本金 x 利率 x 天数 ) / 30000

   2.遍历CUINTS,逐条选择LNRECD贷款账户,在遍历对应LNRETU记录,对前期的应收未收利息进行复利计算并加入到本次结息金额中

   3.对每个结息贷款户进行付息账户的账户处理,如果其对应的1321,107,108 科目账户不存在则自动开设

   4.生成结息报表

   优化方案:

   1.分成多进程运行,按照联社分组同时处理,暂时设计6 个进程

   联社分组表

   2.对不正确的贷款分户进行处理,比如需要结息却没有对应的付息账号,处理办法:此户改为不结息或者维护正确的付息账号

   3.在12月19日把对应的1321,107,108 科目账户开设号,以便在结息中省去开设账户的过程

   4.优化程序中的sql语句,使用索引,此过程使用ORACLE Client提供的图形界面sql语句执行板块进行,针对每条语句都有运行时间可以参考,有的语句稍微修改可以提高一个数量级的运行时间

   5.建立LNRETU_TMP表,结息中的还息记录将插入此临时表,运行完成后再导回原LNRETU

   6.新建立LNRETUindex,根据其中一条查询语句字段建立

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页