Files
ctg-app-cap/cap/etc/batch/BAT_SEND_TIMER_CTL.XML
2026-06-16 15:15:31 +08:00

134 lines
6.3 KiB
XML

<?xml version='1.0' encoding='UTF-8'?>
<Tran>
<Transaction code="BAT_SEND_TIMER" log_switch='1' desc="发送批量文件">
<Attributes>
<Attribute name="nodatabase" value="2"/> <!--数据库长连接-->
</Attributes>
<DynSentence name="QryBatInf">
<Sentence>
SELECT *
FROM CAPBATINF A
WHERE A.CORG_DSK_NO = (
SELECT CORG_DSK_NO
FROM (
SELECT CORG_DSK_NO, RAND_VAL
FROM (
SELECT
A.CORG_DSK_NO,
C.rank,
DBMS_RANDOM.VALUE AS RAND_VAL
FROM CAPBATINF A
INNER JOIN CAPDSKINF B ON A.DSK_NAM = B.DSK_NAM
INNER JOIN CAPCUSINF C ON B.Customer_Id = C.Customer_Id
WHERE A.BAT_STS = '0'
AND A.ORD_DT &gt; ?
AND A.PRO_JRL = '0'
AND (A.SND_TIME &lt;= ? OR A.SND_TIME IS NULL)
AND A.CORG_NO = ?
ORDER BY
C.rank DESC,
A.CORG_DSK_NO ASC
) TOP_20
WHERE ROWNUM &lt;= 20
ORDER BY RAND_VAL
) RANDOM_ORDER
WHERE ROWNUM = 1
)
FOR UPDATE SKIP LOCKED
</Sentence>
<Fields>TOD_DT|C_SND_TIME|CORG_NO|</Fields>
</DynSentence>
<DynSentence name="UpdPRO_JRL">
<Sentence>
UPDATE CAPBATINF SET PRO_JRL = '1' , SND_TIME = ?, CORG_SND_DT=?, REG_ID = ?, NOD_ID = ? WHERE CORG_NO = ? AND CORG_DSK_NO = ? AND ORD_DT = ?
</Sentence>
<Fields>N_SND_TIME|CORG_SND_DT|REG_ID|NOD_ID|CORG_NO|CORG_DSK_NO|ORD_DT|</Fields>
</DynSentence>
<DynSentence name="UPD_CAPBATINF_Rsp_Msg">
<Sentence>
UPDATE CAPBATINF SET RSP_CD=? , RSP_MSG=? ,PRO_JRL = '0'
WHERE CORG_NO=? AND CORG_DSK_NO=?
</Sentence>
<Fields>Rsp_Cd|Rsp_Msg|CORG_NO|CORG_DSK_NO|</Fields>
</DynSentence>
<FlowCtrl>
<Quote name="Init_CAP01"/> <!--交易初始化-->
<!--此处需要增加代付批次发送第三方的处理-->
<!-- 组合一些关键信息 -->
<Set>END_DT=$CRE_DT</Set>
<Set>END_TM=$CRE_TM</Set>
<Set>TOD_DT=CALCDATE(GETDATE(),-,d,3)</Set>
<!--Set>TOD_DT=GETDATE()</Set-->
<Set>C_SND_TIME=SUBSTR(CALCTIME(GETDATETIME(MMDDHHMISS),-,m,2),3,8)</Set>
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="QryBatInf"/>
</Exec>
<If condition="~RetCod=2">
<Return/>
</If>
<ElseIf condition="~RetCod&lt;0">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg="查询数据库错误"</Set>
<Return/>
</ElseIf>
<Set>TMP_SND_TIME=GETDATETIME()</Set>
<Set>N_SND_TIME=SUBSTR($TMP_SND_TIME,7,8)</Set>
<Set>CORG_SND_DT=SUBSTR($TMP_SND_TIME,1,8)</Set>
<Set>REG_ID=@SYS.ics.sys.regionid</Set>
<Set>NOD_ID=@SYS.ics.sys.nodeid</Set>
<Exec func="PUB:ExecSql" error="IGNORE">
<Arg name="SqlCmd" value="UpdPRO_JRL"/>
</Exec>
<If condition="~RetCod&lt;0">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg="数据库错误"</Set>
<Return/>
</If>
<Exec func="PUB:CommitWork"/>
<Set>TACC_TM=GETDATETIME()</Set>
<Set>BAT_SUM=$BAT_ORN_AMT</Set>
<Set>BAT_CNT=$BAT_ORN_CNT</Set>
<If condition="IS_EQUAL_STRING($BAT_TYP,02)">
<Set>TXN_MOD=02</Set>
<Set>ORD_TYP=12</Set> <!--代付-->
</If>
<ElseIf condition="IS_EQUAL_STRING($BAT_TYP,01)">
<Set>TXN_MOD=01</Set>
<Set>ORD_TYP=11</Set> <!--代收-->
</ElseIf>
<Set>HTxnCd=STRCAT(sendBatch_,$CORG_NO)</Set>
<Exec func="PUB:CallThirdService" error="IGNORE">
<Arg name="HTxnCd" value="$HTxnCd" />
<Arg name="ObjSvr" value="OFRTCAP1" />
<Arg name="In" value="CORG_DSK_NO|ORD_DT|TXN_MOD|ORD_TYP|TACC_TM|BAT_SUM|BAT_CNT|" />
</Exec>
<If condition="~RetCod!=0">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=发送批次失败</Set>
<Return/>
</If>
<!--调用发送银联交易-->
<!--
<Exec func="PUB:CallThirdService">
<Arg name="HTxnCd" value="STRCAT(sendBatch_,$CORG_NO)" />
<Arg name="ObjSvr" value="OFRTCAP1" />
</Exec>
-->
<Set>RSP_CD=$RSP_CD</Set>
<Set>RSP_MSG=$RSP_MSG</Set>
<Exec func="PUB:CommitWork"/>
<Set>Rsp_Cd=00</Set>
<Set>Rsp_Msg=交易成功</Set>
</FlowCtrl>
</Transaction>
</Tran>