Files
ctg-app-cap/cap/etc/batch/BAT_GET_TIMER_CTL.XML
2026-07-09 14:46:47 +08:00

161 lines
8.1 KiB
XML

<?xml version='1.0' encoding='UTF-8'?>
<Tran>
<Transaction code="BAT_GET_TIMER" log_switch='1' desc="获取批量回盘">
<Attributes>
<Attribute name="nodatabase" value="2"/> <!--数据库长连接-->
</Attributes>
<DynSentence name="QryBatLst"> <!--查询该文件批次是否处理完成-->
<Sentence>
SELECT SND_TIME OSND_TIME,SND_DT OSND_DT,SND_TM OSND_TM, TXN_CNL, DSK_NAM ODSK_NAM, ORD_DT OORD_DT, CORG_MERC_ID OCORG_MERC_ID, CORG_NO OCORG_NO, CORG_DSK_NO OCORG_DSK_NO
,AC_DT OAC_DT, SND_DT, SND_TM, BAT_STS OBAT_STS, BAT_ORN_AMT OBAT_ORN_AMT, BAT_ORN_CNT OBAT_ORN_CNT,
BAT_TYP OBAT_TYP,CORG_FIL_NAM OCORG_FIL_NAM, MERC_ID OMERC_ID, TCORG_DSK_NO, '批量代发' RMK, GET_TIME, CORG_JRN_NO
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, A.GET_TIME, A.SND_TIME, 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 IN ('1', '3')
AND A.ORD_DT &gt; ?
AND A.CORG_NO = ?
AND A.PRO_JRL = '0'
AND A.SND_TIME &lt;=?
AND (A.GET_TIME &lt;=? OR A.GET_TIME IS NULL)
ORDER BY
C.rank DESC,
NVL(A.GET_TIME, 0) ASC,
A.SND_TIME ASC
) TOP_20
WHERE ROWNUM &lt;= 20
ORDER BY RAND_VAL
) RANDOM_ORDER
WHERE ROWNUM = 1
)
FOR UPDATE SKIP LOCKED
</Sentence>
<Fields>TOD_DT|CORG_NO|C_SND_TIME|C_GET_TIME|</Fields>
</DynSentence>
<DynSentence name="UpdPRO_JRL">
<Sentence>
UPDATE CAPBATINF SET PRO_JRL = '1' , GET_TIME = ?, REG_ID = ?, NOD_ID = ? WHERE CORG_NO = ? AND CORG_DSK_NO = ? AND ORD_DT = ?
</Sentence>
<Fields>N_GET_TIME|REG_ID|NOD_ID|OCORG_NO|OCORG_DSK_NO|OORD_DT|</Fields>
</DynSentence>
<FlowCtrl>
<Set>REG_ID=@SYS.ics.sys.regionid</Set>
<Set>NOD_ID=@SYS.ics.sys.nodeid</Set>
<!---test开始-->
<Set>@MSG.WSO=/do_success.jsp</Set>
<Set>IS_TEST=FALSE</Set>
<!---test结束-->
<Quote name="Init_CAP01"/> <!--交易初始化-->
<!--此处需要增加代付批次发送第三方的处理-->
<Set>SND_TIME_INTERVAL=$SND_TIME_INTERVAL</Set>
<!-- 组合一些关键信息 -->
<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,$SND_TIME_INTERVAL),3,8)</Set>
<Set>C_GET_TIME=SUBSTR(CALCTIME(GETDATETIME(MMDDHHMISS),-,m,$GET_TIME_INTERVAL),3,8)</Set>
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="QryBatLst"/>
</Exec>
<If condition="~RetCod=2">
<Return/>
</If>
<ElseIf condition="~RetCod&lt;0">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=查询数据库错误</Set>
<Return/>
</ElseIf>
<Set>N_GET_TIME=GETDATETIME(DDHHMISS)</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>Rsp_Cd=STRCAT( , )</Set>
<Set>Rsp_Msg=STRCAT( , )</Set>
<Set>CORG_MERC_ID=$OCORG_MERC_ID</Set>
<Set>MERC_ID=$OCORG_MERC_ID</Set>
<Set>HTxnCd=STRCAT(getBatch_,$OCORG_NO)</Set>
<Exec func="PUB:CallThirdService" error="IGNORE">
<Arg name="HTxnCd" value="$HTxnCd" />
<Arg name="ObjSvr" value="OFRTCAP1" />
</Exec>
<!--获取银联批量回盘文件-->
<!--
<Exec func="PUB:CallThirdService">
<Arg name="HTxnCd" value="STRCAT(getBatch_,$OCORG_NO)" />
<Arg name="ObjSvr" value="OFRTCAP1" />
</Exec>
-->
<Set>RSP_CD=$RSP_CD</Set>
<Set>RSP_MSG=$RSP_MSG</Set>
<!--实时代付记账组件-->
<!--<If condition="IS_EQUAL_STRING($Rsp_Cd,00)">
<Set>TXN_MOD_FLG=$OBAT_TYP</Set>
<If condition="IS_EQUAL_STRING($OBAT_TYP,01)">
<Set>CAP_TYP=CAP_RCV_BAT</Set>
<Set>RMK=批量代收</Set>
</If>
<ElseIf condition="IS_EQUAL_STRING($OBAT_TYP,02)">
<Set>CAP_TYP=CAP_PAY_BAT</Set>
<Set>RMK=批量代付</Set>
</ElseIf>
<Set>TX_AMT=$BAT_SUC_AMT</Set>
<Set>TX_JRN_NO=$OCORG_DSK_NO</Set>
<Set>CORG_NO=$OCORG_NO</Set>
<Set>BUS_CNL=BIS</Set>
<Call package="MERCACC" function="MERC_ACC_ALTER_CCRP10003">
<Input>MERC_ID|TXN_MOD_FLG|AC_DT|CAP_TYP|TX_AMT|TX_JRN_NO|CORG_NO|BUS_CNL|RMK|</Input>
<Output>MSG_CD|</Output>
</Call>
</If>
<If condition="AND(IS_NOEQUAL_STRING($Rsp_Cd,00),IS_NOEQUAL_STRING($OBAT_TYP,02))">
<Set>TXN_MOD_FLG=$OBAT_TYP</Set>
<Set>CAP_TYP=CAP_PAY_BAT</Set>
<Set>RMK=批量代付</Set>
<Set>TX_AMT=0</Set>
<Set>TX_JRN_NO=$OCORG_DSK_NO</Set>
<Set>CORG_NO=$OCORG_NO</Set>
<Set>BUS_CNL=BIS</Set>
<Call package="MERCACC" function="MERC_ACC_ALTER_CCRP10003">
<Input>MERC_ID|TXN_MOD_FLG|AC_DT|CAP_TYP|TX_AMT|TX_JRN_NO|CORG_NO|BUS_CNL|RMK|</Input>
<Output>MSG_CD|</Output>
</Call>
</If>-->
<Exec func="PUB:CommitWork"/>
<Set>Rsp_Cd=00</Set>
<Set>Rsp_Msg=交易成功</Set>
</FlowCtrl>
</Transaction>
</Tran>