#EAS Cloud资金-融资管理#非多次发放的借款单新增,合同开始日和合同结束日一致问题修复!

非多次发放的借款单新增,合同开始日和合同结束日一致问题修复!
一、问题描述
在我的项目实施和服务运维中,发现了融资管理的一个业务系统bug,并提单由总部代码优化处理;
具体如下:
工单号:R20230811-3368
问题描述:非多次发放借款的“主合同借款”中(借款单.多次发放)页签显示的“合同开始日”和“合同结束日”都是一样的,均为该笔借款的创建日期,此问题为本次资金新bug,请尽快处理!
解决方案:补丁处理;
补丁号:PT172976
后台查询分析器语句:
select * from T_FIN_MainConLoan where FCREATETIME >={ts'2023-08-16 00:00:00'}--涉及表:主合同借款
T_FIN_MainConLoan

二、关键步骤
1、更新补丁PT172976
可在社区主页的“服务工具”找到补丁下载;


进入后,选择“金蝶EAS Cloud”,输入补丁号:PT172976,点击搜索,可下载该补丁,注意前置补丁一并下载;

关于剩下的打补丁,可参考论坛官方知识:补丁管理易掌握
2、历史错误数据修正;
对于已经更新补丁后的新增借款单业务,“多次发放”页签的合同开始日和合同结束日就不会再更新为创建日期;
那么多于历史业务数据,如何修正呢?
提供一下oracle语句修正:
原理是:A借款合同是非多次发放合同,将A合同对应的借款单F上的最早“起息日”和最晚“到期日”更新到主合同借款的“合同开始日”和“合同到期日”;
【之所以是最早“起息日”和最晚“到期日”,就是害怕更新到多次发放的合同】
ps:其实我是只更新了“合同开始日=合同结束日”的主合同借款
--------------------------------------------------------------------------------
--合同开始日=合同结束日的主合同借款
select * from T_FIN_MainConLoan where FSTARTDATE = FENDDATE
order by FCREATETIME
--创建日期=指定日期的主合同借款
select * from T_FIN_MainConLoan where FCREATETIME >={ts'2023-08-28 00:00:00'}
order by FCREATETIME
--连接表查询借款单与主合同借款
select B.FID 主合同ID,
B.FCREATETIME 创建日期,
B.FLASTUPDATETIME 最后修改日,
B.FBIZDATE 主合同业务日期,
B.FCOMPANYID 公司,
B.FCONNUMBER 合同号,
B.FSTARTDATE 合同开始日,
B.FENDDATE 合同结束日,
B.FISMULCON 是否多次发放主合同,
A.FISSUEDATE 借款单起始日,
A.FEXPIREDDATE 借款单到期日,
A.FNUMBER 借款单号
from T_FIN_MainConLoan B
LEFT JOIN T_FIN_Loan A
ON A.FMAINCONLOANID = B.FID
where B.FSTARTDATE = B.FENDDATE --合同开始日=合同结束日
order by B.FID -用创建日期排序
--需要更新数据的借款单集合
select A.FCONTRACTNUM 借款单合同号,min(A.FISSUEDATE) 借款单起始日,max(A.FEXPIREDDATE) 借款单到期日
from T_FIN_Loan A
group by A.FMAINCONLOANID --用主合同ID排序
--查询更新 '某个合同' 的主合同借款
select B.FID 主合同ID,
B.FCREATETIME 创建日期,
B.FLASTUPDATETIME 最后修改日,
B.FBIZDATE 主合同业务日期,
B.FCOMPANYID 公司,
B.FCONNUMBER 合同号,
B.FSTARTDATE 合同开始日,
B.FENDDATE 合同结束日,
B.FISMULCON 是否多次发放主合同,
A.FISSUEDATE 借款单起始日,
A.FEXPIREDDATE 借款单到期日,
A.FNUMBER 借款单号
from T_FIN_MainConLoan B
LEFT JOIN T_FIN_Loan A
ON A.FMAINCONLOANID = B.FID
where B.FCONNUMBER ='某个合同号'
————————————————
--UPDATE T_FIN_MainConLoan B
SET (B.FSTARTDATE,B.FENDDATE) =
(select min(A.FISSUEDATE),max(A.FEXPIREDDATE) from T_FIN_Loan A where A.FMAINCONLOANID = B.FID and B.FCONNUMBER ='某个合同号' group by A.FMAINCONLOANID)
WHERE EXISTS (select 1 from T_FIN_Loan A where A.FMAINCONLOANID = B.FID and B.FCONNUMBER ='某个合同号')
————————————————
此处值得注意的是:order by中不能同时使用min和max两个函数;会报错!因为当一个主合同借款对应多张借款单时,每个借款单均有起始日和到期日,那么如果到期日一致,可能是第一行借款单的起息日与第二行借款单的到期日,去更新一行主合同借款,那么sql就会报“多行返回一行”的错误;【简而言之,就是多对一更新;】
而上面的sql中,我却在order by前,放了两个函数,这是为什么呢?
因为我在结果集和条件中都where了一个准确的合同;因此就是一对一的,此时测试是可以update的;
-------#EAS Cloud资金-融资管理#非多次发放的借款单新增,合同开始日和合同结束日一致问题修复!
非多次发放的借款单新增,合同开始日和合同结束日一致问题修复!一、问题描述在我的项目实施和服务运维中,发现了融资管理的一个业务系统bu...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇
下一篇



