明细对账单补偿机制

This commit is contained in:
Alawn
2023-05-26 14:27:07 +08:00
parent 83394c08ce
commit 7fb53cf469
4 changed files with 207 additions and 0 deletions
+78
View File
@@ -0,0 +1,78 @@
<?xml version='1.0' encoding='UTF-8'?>
<Tran>
<Transaction code="BAT_REGETBILL_TIMER" log_switch='1' timeout="3600" desc="获取明细对账单定时发起">
<Attributes>
<Attribute name="nodatabase" value="2"/> <!--数据库长连接-->
</Attributes>
<DynSentence name="QRY_CAPCMBHIJNL_LST">
<Sentence>
SELECT * FROM (
SELECT ACC_NBR,TRS_DAT FROM CAPCMBHIJNL WHERE BIL_RPT_STS='1' AND TRS_DAT BETWEEN ? AND ? GROUP BY ACC_NBR,TRS_DAT)
ORDER BY TRS_DAT,ACC_NBR
</Sentence>
<Fields>STR_CHECK_DATE|END_CHECK_DATE|</Fields>
</DynSentence>
<FlowCtrl>
<Quote name="Init_CAP01"/> <!--交易初始化-->
<If condition="ISNULL($STR_TEMP)">
<Set>STR_TEMP=90</Set>
</If>
<If condition="ISNULL($END_TEMP)">
<Set>END_TEMP=7</Set>
</If>
<If condition="ISNULL($STR_CHECK_DATE)">
<Set>STR_CHECK_DATE=CALCDATE(GETDATE(),-,d,$STR_TEMP)</Set>
</If>
<If condition="ISNULL($END_CHECK_DATE)">
<Set>END_CHECK_DATE=CALCDATE(GETDATE(),-,d,$END_TEMP)</Set>
</If>
<Exec func="PUB:OpenCursor" error="IGNORE">
<Arg name="SqlCmd" value="QRY_CAPCMBHIJNL_LST"/>
<Arg name="CursorName" value="CURSOR_1"/>
</Exec>
<If condition="~RetCod=-1">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=数据库错误</Set>
<Return/>
</If>
<While>
<Exec func="PUB:FetchCursor" error="IGNORE">
<Arg name="CursorName" value="CURSOR_1"/>
</Exec>
<If condition="~RetCod=2">
<Exec func="PUB:CloseCursor" error="IGNORE"> <!-- 关闭游标 -->
<Arg name="CursorName" value="CURSOR_1"/>
</Exec>
<Break/>
</If>
<ElseIf condition="~RetCod!=0">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=循环游标失败</Set>
<Return/>
</ElseIf>
<Set>TTXN_CD=REGET_CMBBILL</Set>
<Exec func="PUB:CallThirdService" error="IGNORE">
<Arg name="HTxnCd" value="$TTXN_CD" />
<Arg name="ObjSvr" value="OFRTCAP3" />
<Arg name="In" value="ACC_NBR|TRS_DAT|" />
</Exec>
<If condition="~RetCod!=0">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=发送批次失败</Set>
<Return/>
</If>
</While>
<Exec func="PUB:CloseCursor" error="IGNORE"> <!-- 关闭游标 -->
<Arg name="CursorName" value="CURSOR_1"/>
</Exec>
<Exec func="PUB:CommitWork"/>
<Set>Rsp_Cd=00</Set>
<Set>Rsp_Msg=交易成功</Set>
</FlowCtrl>
</Transaction>
</Tran>
+80
View File
@@ -0,0 +1,80 @@
<?xml version='1.0' encoding='UTF-8'?>
<Tran>
<Transaction code="BAT_REQRYBILL_TIMER" log_switch='1' timeout="3600" desc="查询明细对账单定时发起">
<Attributes>
<Attribute name="nodatabase" value="2"/> <!--数据库长连接-->
</Attributes>
<DynSentence name="QRY_CAPCMBJNLTOT_LST">
<Sentence>
SELECT A.ACC_NBR,A.TRS_DAT,B.ACCT_TYPE TAC_TYP
FROM CAPCMBHIJNL A ,CAPRECEIPTACCT B
WHERE A.ACC_NBR=B.ACCT_NO AND B.BANK_CODE='CMB'
AND A.TRS_DAT BETWEEN ? AND ? AND A.BIL_RPT_STS='0' AND A.YUR_REF!=' ' AND A.TRS_COD IN ('AGPY','AGOT','AGSH')
GROUP BY A.ACC_NBR,A.TRS_DAT ,B.ACCT_TYPE
</Sentence>
<Fields>STR_CHECK_DATE|END_CHECK_DATE|</Fields>
</DynSentence>
<FlowCtrl>
<Quote name="Init_CAP01"/> <!--交易初始化-->
<If condition="ISNULL($STR_TEMP)">
<Set>STR_TEMP=90</Set>
</If>
<If condition="ISNULL($END_TEMP)">
<Set>END_TEMP=7</Set>
</If>
<If condition="ISNULL($STR_CHECK_DATE)">
<Set>STR_CHECK_DATE=CALCDATE(GETDATE(),-,d,$STR_TEMP)</Set>
</If>
<If condition="ISNULL($END_CHECK_DATE)">
<Set>END_CHECK_DATE=CALCDATE(GETDATE(),-,d,$END_TEMP)</Set>
</If>
<Exec func="PUB:OpenCursor" error="IGNORE">
<Arg name="SqlCmd" value="QRY_CAPCMBJNLTOT_LST"/>
<Arg name="CursorName" value="CURSOR_1"/>
</Exec>
<If condition="~RetCod=-1">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=数据库错误</Set>
<Return/>
</If>
<While>
<Exec func="PUB:FetchCursor" error="IGNORE">
<Arg name="CursorName" value="CURSOR_1"/>
</Exec>
<If condition="~RetCod=2">
<Exec func="PUB:CloseCursor" error="IGNORE"> <!-- 关闭游标 -->
<Arg name="CursorName" value="CURSOR_1"/>
</Exec>
<Break/>
</If>
<ElseIf condition="~RetCod!=0">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=循环游标失败</Set>
<Return/>
</ElseIf>
<Set>TTXN_CD=QRY_CMBBILL</Set>
<Exec func="PUB:CallThirdService" error="IGNORE">
<Arg name="HTxnCd" value="$TTXN_CD" />
<Arg name="ObjSvr" value="OFRTCAP3" />
<Arg name="In" value="ACC_NBR|TRS_DAT|TAC_TYP|" />
</Exec>
<If condition="~RetCod!=0">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=发送批次失败</Set>
<Return/>
</If>
</While>
<Exec func="PUB:CloseCursor" error="IGNORE"> <!-- 关闭游标 -->
<Arg name="CursorName" value="CURSOR_1"/>
</Exec>
<Exec func="PUB:CommitWork"/>
<Set>Rsp_Cd=00</Set>
<Set>Rsp_Msg=交易成功</Set>
</FlowCtrl>
</Transaction>
</Tran>
+46
View File
@@ -0,0 +1,46 @@
<?xml version='1.0' encoding='UTF-8'?>
<Tran>
<Transaction code="BAT_REUPDBILL_TIMER" log_switch='1' desc="对获取明细对账单失败的流水更新状态">
<DynSentence name="UPD_RECAPCMBHIJNL_BILSTS">
<Sentence>
UPDATE CAPCMBHIJNL SET BIL_RPT_STS='0' WHERE BIL_RPT_STS='1'
AND TRS_DAT BETWEEN ? AND ? AND BIL_SND_DT &lt;= ?
</Sentence>
<Fields>STR_CHECK_DATE|END_CHECK_DATE|END_CHECK_DATE|</Fields>
</DynSentence>
<FlowCtrl>
<Quote name="Init_CAP01"/> <!--交易初始化-->
<If condition="ISNULL($STR_TEMP)">
<Set>STR_TEMP=90</Set>
</If>
<If condition="ISNULL($END_TEMP)">
<Set>END_TEMP=7</Set>
</If>
<If condition="ISNULL($STR_CHECK_DATE)">
<Set>STR_CHECK_DATE=CALCDATE(GETDATE(),-,d,$STR_TEMP)</Set>
</If>
<If condition="ISNULL($END_CHECK_DATE)">
<Set>END_CHECK_DATE=CALCDATE(GETDATE(),-,d,$END_TEMP)</Set>
</If>
<Exec func="PUB:ExecSql" error="IGNORE">
<Arg name="SqlCmd" value="UPD_RECAPCMBHIJNL_BILSTS"/>
</Exec>
<If condition="~RetCod=-1">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=更新状态失败</Set>
<Return/>
</If>
<Exec func="PUB:CommitWork"/>
<Set>Rsp_Cd=00</Set>
<Set>Rsp_Msg=交易成功</Set>
</FlowCtrl>
</Transaction>
</Tran>
+3
View File
@@ -61,4 +61,7 @@
<Include file="etc/batch/BAT_ULDRECEIPTORI_TIMER_CTL.XML"/> <!--电子回单原始文件上传发起 -->
<Include file="etc/batch/BAT_ICBCDOWNLOAD_TIMER_CTL.XML"/> <!--工行电子回单补发获取-->
<Include file="etc/batch/BAT_REUPDBILL_TIMER_CTL.XML"/> <!--更新招行明细对账单获取失败的交易流水状态 -->
<Include file="etc/batch/BAT_REQRYBILL_TIMER_CTL.XML"/> <!--重新申请招行明细对账单 -->
<Include file="etc/batch/BAT_REGETBILL_TIMER_CTL.XML"/> <!--重新获取招行明细对账单-->
</Application>