1197 lines
46 KiB
XML
1197 lines
46 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<Tran>
|
|
<Transaction code="initBatch_ICBC" log_switch='1' desc="生成工行批次">
|
|
<Quote name="SQL_RcvConfirm" />
|
|
|
|
<DynSentence name="QryBatCnt"><!-- 查询该批次有多少记录 -->
|
|
<Sentence>
|
|
SELECT COUNT(*) BAT_CNT FROM CAPTXNJNL
|
|
WHERE DSK_NAM=? AND ORD_DT=? AND CORG_NO=? AND TXN_MOD=? AND BNK_FLG=? AND DSK_NAM_STS='0' AND TXN_STS='U' AND CORG_DSK_NO = '0' AND ROWNUM <= ?
|
|
</Sentence>
|
|
<Fields>DSK_NAM|ORD_DT|CORG_NO|TXN_MOD|BNK_FLG|MAX_CNT|</Fields>
|
|
</DynSentence>
|
|
|
|
<DynSentence name="QryBatCnt1"><!-- 查询该批次有多少记录 -->
|
|
<Sentence>
|
|
SELECT COUNT(*) BAT_CNT FROM CAPTXNJNL
|
|
WHERE DSK_NAM=? AND ORD_DT=? AND CORG_NO=? AND TXN_MOD=? AND BNK_FLG=? AND ROUT_FLG=? AND DSK_NAM_STS='0' AND TXN_STS='U' AND CORG_DSK_NO = '0' AND ROWNUM <= ?
|
|
</Sentence>
|
|
<Fields>DSK_NAM|ORD_DT|CORG_NO|TXN_MOD|BNK_FLG|ROUT_FLG|MAX_CNT|</Fields>
|
|
</DynSentence>
|
|
|
|
<DynSentence name="UpdDskNo">
|
|
<Sentence>
|
|
UPDATE CAPTXNJNL SET CORG_DSK_NO = ?,CORG_BUS_TYP =?,TXN_CD = '204020', TTXN_CD = ?,ACC_VER_STS= 'S'
|
|
WHERE DSK_NAM=? AND ORD_DT=? AND CORG_NO=? AND TXN_MOD=? AND BNK_FLG=? AND DSK_NAM_STS='0' AND TXN_STS='U' AND CORG_DSK_NO = '0' AND ROWNUM <= ?
|
|
</Sentence>
|
|
<Fields>CORG_DSK_NO|CORG_BUS_TYP|TTXN_CD|DSK_NAM|ORD_DT|CORG_NO|TXN_MOD|BNK_FLG|MAX_CNT|</Fields>
|
|
</DynSentence>
|
|
|
|
<DynSentence name="UpdDskNo1">
|
|
<Sentence>
|
|
UPDATE CAPTXNJNL SET CORG_DSK_NO = ?,CORG_BUS_TYP =?,TXN_CD = '204020', TTXN_CD = ?,ACC_VER_STS= 'S'
|
|
WHERE DSK_NAM=? AND ORD_DT=? AND CORG_NO=? AND TXN_MOD=? AND BNK_FLG=? AND ROUT_FLG=? AND DSK_NAM_STS='0' AND TXN_STS='U' AND CORG_DSK_NO = '0' AND ROWNUM <= ?
|
|
</Sentence>
|
|
<Fields>CORG_DSK_NO|CORG_BUS_TYP|TTXN_CD|DSK_NAM|ORD_DT|CORG_NO|TXN_MOD|BNK_FLG|ROUT_FLG|MAX_CNT|</Fields>
|
|
</DynSentence>
|
|
|
|
<DynSentence name="QryBatAmt">
|
|
<Sentence>
|
|
SELECT COUNT(*) BAT_CNT,NVL(SUM(TXN_AMT),0) BAT_SUM FROM CAPTXNJNL
|
|
WHERE DSK_NAM=? AND ORD_DT = ? AND CORG_NO=? AND CORG_DSK_NO = ? AND DSK_NAM_STS='0' AND TXN_STS='U'
|
|
</Sentence>
|
|
<Fields>DSK_NAM|ORD_DT|CORG_NO|CORG_DSK_NO</Fields>
|
|
</DynSentence>
|
|
|
|
<DynSentence name="QRY_ICBCCORGBUSTYP_VAL">
|
|
<Sentence>
|
|
SELECT ICBCCORGBUSTYP.NEXTVAL CORG_BUS_TYP FROM DUAL
|
|
</Sentence>
|
|
</DynSentence>
|
|
|
|
<DynSentence name="QRY_CAPTXNJNL_GRP"><!-- 获取行内行外标志, 行内交易打一个包 行外交易根据汇路分别打包 -->
|
|
<Sentence>
|
|
SELECT BATCH_TYPE FROM (
|
|
SELECT case when BNK_FLG='Y' then 'Y' when BNK_FLG='N' then ROUT_FLG end BATCH_TYPE FROM CAPTXNJNL
|
|
WHERE DSK_NAM=? AND ORD_DT=? AND CORG_NO=? AND TXN_MOD=? AND DSK_NAM_STS='0' AND TXN_STS='U' AND CORG_DSK_NO = '0')
|
|
GROUP BY BATCH_TYPE
|
|
</Sentence>
|
|
<Fields>DSK_NAM|ORD_DT|CORG_NO|TXN_MOD|</Fields>
|
|
</DynSentence>
|
|
|
|
<DynSentence name="QryBatTacNo"><!-- 查询付款账号 -->
|
|
<Sentence>
|
|
SELECT TAC_NO ICBC_BUS_TYP_SEQ FROM CAPTXNJNL
|
|
WHERE DSK_NAM=? AND ORD_DT=? AND CORG_NO=? AND ROWNUM =1
|
|
</Sentence>
|
|
<Fields>DSK_NAM|ORD_DT|CORG_NO|</Fields>
|
|
</DynSentence>
|
|
|
|
<FlowCtrl>
|
|
<!--清理数据 -->
|
|
<Delete>RSP_CD</Delete>
|
|
<Delete>RSP_MSG</Delete>
|
|
<Exec func="PUB:DumpETF" />
|
|
|
|
<!--读取参数配置 -->
|
|
<Quote name="Batch_Cfg_ICBC" />
|
|
|
|
<!--设置机构编号(工行) -->
|
|
<Set>CORG_NO=ICBC</Set>
|
|
<Set>MAX_CNT=$PARA.MAX_CNT</Set>
|
|
|
|
|
|
|
|
<!--获取第三方业务种类编号1到999 当日不重复 每一个大批次获取一个-->
|
|
<!--Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_ICBCCORGBUSTYP_VAL"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=获取业务种类编号失败</Set>
|
|
<Return/>
|
|
</If-->
|
|
|
|
<!--查询付款账号-->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QryBatTacNo"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=获取业务种类编号失败</Set>
|
|
<Return/>
|
|
</If>
|
|
|
|
<Set>BR_NO=999999</Set> <!--公共序号表pubseqrec中的字段BR_NO -->
|
|
<Set>ICBC_BUS_TYP_SEQ=$ICBC_BUS_TYP_SEQ</Set> <!--公共序号表pubseqrec中的字段BR_NO -->
|
|
<Exec func="PUB:GetPubSeqNoCircle" error="IGNORE">
|
|
<Arg name="SeqNam" value="ICBC_CORG_BUS_TYP" />
|
|
<Arg name="Len" value="3" />
|
|
<Arg name="SeqCnd" value="$ICBC_BUS_TYP_SEQ" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=获取序号失败</Set>
|
|
<Return/>
|
|
</If>
|
|
|
|
<Set>CORG_BUS_TYP=$SEL_VAL</Set>
|
|
<Set>CORG_BUS_TYP=ADD($CORG_BUS_TYP,0)</Set>
|
|
|
|
<!--打开游标 对系统内系统外的数据分别处理-->
|
|
<Exec func="PUB:OpenCursor" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_CAPTXNJNL_GRP"/>
|
|
<Arg name="CursorName" value="CURSOR_1"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=游标打开失败</Set>
|
|
<Return/>
|
|
</If>
|
|
|
|
<While>
|
|
<Exec func="PUB:FetchCursor" error="IGNORE"/>
|
|
<If condition="~RetCod=2">
|
|
<Exec func="PUB:CloseCursor">
|
|
<Arg name="CursorName" value="CURSOR_1"/>
|
|
</Exec>
|
|
<Break/>
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Exec func="PUB:RollbackWork" />
|
|
<Exec func="PUB:CloseCursor">
|
|
<Arg name="CursorName" value="CURSOR_1"/>
|
|
</Exec>
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=读取游标失败</Set>
|
|
<Return />
|
|
<Break/>
|
|
</ElseIf>
|
|
|
|
<If condition="IS_EQUAL_STRING($BATCH_TYPE,Y)"> <!--行内交易打包 不根据汇路-->
|
|
<Set>CHECK_TMPE=QryBatCnt</Set>
|
|
<Set>UPDATE_TMPE=UpdDskNo</Set>
|
|
<Set>BNK_FLG=Y</Set>
|
|
</If>
|
|
<Else><!--行外交易打包 根据汇路打包 拼接查询WHERE 条件-->
|
|
<Set>CHECK_TMPE=QryBatCnt1</Set>
|
|
<Set>UPDATE_TMPE=UpdDskNo1</Set>
|
|
<Set>BNK_FLG=N</Set>
|
|
<Set>ROUT_FLG=$BATCH_TYPE</Set>
|
|
</Else>
|
|
|
|
<While>
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="$CHECK_TMPE" />
|
|
</Exec>
|
|
<If condition="~RetCod=-1">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=查询数据库失败</Set>
|
|
<Exec func="PUB:RollbackWork" />
|
|
<Return />
|
|
</If>
|
|
<Set>BAT_CNT=$BAT_CNT</Set>
|
|
<!--无数据 -->
|
|
<If condition="INTCMP($BAT_CNT,2,0)">
|
|
<Break />
|
|
</If>
|
|
|
|
<Set>BAT_TYP=$FIL_TYP</Set> <!-- 交易模式 01 批扣 02 批付 99 联机 -->
|
|
<Set>SND_DT=SUBSTR($TACC_TM,1,8)</Set>
|
|
<Set>SND_TM=SUBSTR($TACC_TM,9,6)</Set>
|
|
<!--获取批次号 -->
|
|
<Quote name="GET_CUP_BAT_NO" />
|
|
<Set>CORG_DSK_NO=STRCAT(GETDATETIME(),$CORG_DSK_NO)</Set>
|
|
<Set>CORG_SND_DT=GETDATE()</Set>
|
|
|
|
<!--交易类型 -->
|
|
<Set>TTXN_CD=PAYPERCOL_BAT</Set>
|
|
<!--更新批次号-->
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="$UPDATE_TMPE"/>
|
|
</Exec>
|
|
<If condition="~RetCod != 0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=更新批次号失败</Set>
|
|
<Exec func="PUB:RollbackWork"/>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!--查询金额笔数数-->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QryBatAmt"/>
|
|
</Exec>
|
|
<If condition="~RetCod=-1">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=查询数据库失败</Set>
|
|
<Exec func="PUB:RollbackWork"/>
|
|
<Return/>
|
|
</If>
|
|
|
|
|
|
<Set>BAT_STS=0</Set>
|
|
<Set>BAT_VER_STS=1</Set>
|
|
<Set>BAT_ORN_AMT=$BAT_SUM</Set>
|
|
<Set>BAT_ORN_CNT=$BAT_CNT</Set>
|
|
|
|
|
|
<Set>CORG_MERC_ID=ICBC</Set> <!--单位编号 -->
|
|
|
|
<Set>Rsp_Cd=STRCAT( , )</Set>
|
|
<Set>Rsp_Msg=STRCAT( , )</Set>
|
|
|
|
<!--登记接出批量信息登记表 -->
|
|
<Exec func="PUB:InsertRecord" error="IGNORE">
|
|
<Arg name="TblNam" value="CAPBATINF" />
|
|
</Exec>
|
|
<If condition="~RetCod=-1">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=登记接出批量信息登记表失败</Set>
|
|
<Exec func="PUB:RollbackWork" />
|
|
<Return />
|
|
</If>
|
|
<ElseIf condition="~RetCod=1">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=批次重复</Set>
|
|
<Exec func="PUB:RollbackWork" />
|
|
<Return />
|
|
</ElseIf>
|
|
|
|
|
|
</While>
|
|
|
|
</While>
|
|
<!--提交事务-->
|
|
<Exec func="PUB:CommitWork"/>
|
|
<!-- 交易成功 -->
|
|
<Set>RSP_CD=00</Set>
|
|
<Set>RSP_MSG=交易成功</Set>
|
|
</FlowCtrl>
|
|
</Transaction>
|
|
|
|
<!--发送工行批次交易 -->
|
|
<Transaction code="sendBatch_ICBC" log_switch='1' desc="发送工行批次交易">
|
|
<Quote name="SQL_RcvConfirm" />
|
|
<DynSentence name="QRYBATINF"> <!--查询批次信息-->
|
|
<Sentence>
|
|
SELECT *
|
|
FROM CAPBATINF
|
|
WHERE CORG_DSK_NO=?
|
|
AND ORD_DT=?
|
|
AND CORG_NO='ICBC'
|
|
AND PRO_JRL='1'
|
|
</Sentence>
|
|
<Fields>CORG_DSK_NO|ORD_DT|</Fields>
|
|
</DynSentence>
|
|
|
|
<!--更新该批次记录 -->
|
|
<DynSentence name="UpdJnlSts">
|
|
<Sentence>
|
|
UPDATE CAPTXNJNL
|
|
SET DSK_NAM_STS='1'
|
|
WHERE DSK_NAM=?
|
|
AND
|
|
ORD_DT=?
|
|
AND CORG_NO=?
|
|
AND CORG_DSK_NO = ?
|
|
AND TXN_MOD=?
|
|
AND
|
|
DSK_NAM_STS='0'
|
|
AND TXN_STS='U'
|
|
</Sentence>
|
|
<Fields>DSK_NAM|ORD_DT|CORG_NO|CORG_DSK_NO|TXN_MOD|</Fields>
|
|
</DynSentence>
|
|
|
|
<!--更新该批次失败记录 -->
|
|
<DynSentence name="UpdJnlStsF">
|
|
<Sentence>
|
|
UPDATE CAPTXNJNL
|
|
SET DSK_NAM_STS='4',
|
|
TXN_STS='F',
|
|
TTXN_ST='F',
|
|
RSP_CD = '80',
|
|
RSP_MSG = ? ,
|
|
TM_SMP=to_char(sysdate,'yyyymmddhh24miss')
|
|
WHERE DSK_NAM=?
|
|
AND
|
|
ORD_DT=?
|
|
AND CORG_NO=?
|
|
AND CORG_DSK_NO = ?
|
|
AND TXN_MOD=?
|
|
AND
|
|
DSK_NAM_STS='0'
|
|
AND TXN_STS='U'
|
|
</Sentence>
|
|
<Fields>RSP_MSG|DSK_NAM|ORD_DT|CORG_NO|CORG_DSK_NO|TXN_MOD|</Fields>
|
|
</DynSentence>
|
|
|
|
|
|
|
|
<!--更新批次状态 -->
|
|
<DynSentence name="UpdBatSts">
|
|
<Sentence>
|
|
UPDATE CAPBATINF
|
|
SET
|
|
HNULL(END_TM{1}=?),
|
|
HNULL(END_DT{2}=?),
|
|
BAT_STS=?,
|
|
RSP_CD = ?,
|
|
RSP_MSG = ?,
|
|
S_RSP_CD = ?,
|
|
S_RSP_MSG = ?,
|
|
CORG_JRN_NO=?,
|
|
BAT_FAL_CNT =?,
|
|
BAT_FAL_AMT=?
|
|
WHERE
|
|
ORD_DT=?
|
|
AND CORG_NO=?
|
|
AND CORG_DSK_NO=?
|
|
AND BAT_STS='0'
|
|
</Sentence>
|
|
<Fields>END_TM|END_DT|BAT_STS|RSP_CD|RSP_MSG|RSP_CD|RSP_MSG|CORG_JRN_NO|BAT_FAL_CNT|BAT_FAL_AMT|ORD_DT|CORG_NO|CORG_DSK_NO
|
|
</Fields>
|
|
</DynSentence>
|
|
|
|
<DynSentence name="Qry_Export"> <!--代付查询需要打包的记录 系统内交易 城市名称和银行名称上送空 修改 20220523 postscript 字段传值 DSK_NAM-->
|
|
<Sentence>
|
|
SELECT TAC_NO AS payer_account,TAC_NAM AS payer_cnname,
|
|
'' AS payer_enname,'' AS payee_enname,'' AS manager_card_no,
|
|
'' AS manager_card_name,'' AS erp_serial_no,'' AS busi_code,'' AS erp_check_no,'' AS ori_voucher_type,
|
|
'' AS ori_voucher_name,'' AS ori_voucher_no,'' AS related_ref_no,CAP_ORD_NO AS i_seq_no,AC_NO AS payee_account,
|
|
CUS_NAM AS payee_cnname,LBNK_NO AS payee_bank_no,'CNY' AS currency,
|
|
TXN_AMT * 100 AS amount,'工资' AS purpose,
|
|
CASE WHEN LENGTH(POSTSCRIPT) <= 20 THEN POSTSCRIPT
|
|
WHEN NVL(INSTR(TRIM(POSTSCRIPT),' '),0) !=0
|
|
THEN SUBSTR(SUBSTR(TRIM(POSTSCRIPT),1,INSTR(TRIM(POSTSCRIPT),' ') - 1),1,20)
|
|
ELSE SUBSTR(TRIM(POSTSCRIPT),1,20) END summary,
|
|
DSK_NAM||substr(POSTSCRIPT,1,80) AS postscript,CAP_ORD_NO AS ref_no,case when BNK_FLG='Y' then '' ELSE CITY END payee_city,
|
|
case when BNK_FLG='Y' then '' when BNK_FLG='N' AND ROUT_FLG='SUPER' then '' ELSE LBNK_NAM END payee_bank_name,'' AS purpose_code,'' AS summary_en,
|
|
case when BNK_FLG='Y' then '2' when BNK_FLG='N' then decode(ROUT_FLG,'SUPER','3','LARGE','1','SMALL','2') end pay_type,
|
|
decode(BNK_FLG,'Y','1','N','2') AS io_flag
|
|
FROM CAPTXNJNL
|
|
WHERE DSK_NAM=?
|
|
AND CORG_NO = ?
|
|
AND CORG_DSK_NO = ?
|
|
AND ORD_DT=?
|
|
AND TXN_MOD=?
|
|
AND DSK_NAM_STS='0'
|
|
AND TXN_STS='U'
|
|
</Sentence>
|
|
<Fields>DSK_NAM|CORG_NO|CORG_DSK_NO|ORD_DT|TXN_MOD|</Fields>
|
|
</DynSentence>
|
|
|
|
<DynSentence name="InitPRO_JRL"> <!--初始化PRO_JRL-->
|
|
<Sentence>
|
|
UPDATE CAPBATINF SET PRO_JRL ='0'
|
|
WHERE ORD_DT=? AND CORG_NO=? AND CORG_DSK_NO=? AND PRO_JRL='1'
|
|
</Sentence>
|
|
<Fields>ORD_DT|CORG_NO|CORG_DSK_NO|</Fields>
|
|
</DynSentence>
|
|
<Function name="_before">
|
|
<Process>
|
|
<Exec func="PUB:DumpETF"/>
|
|
<Set>LockKey=STRCAT($CORG_NO,$CORG_DSK_NO)</Set>
|
|
<!-- 应用加锁,防止并发 -->
|
|
<Exec func="PUB:Lock">
|
|
<Arg name="RecKey" value="$LockKey" error="IGNORE"/>
|
|
<Arg name="TimOut" value="1800" />
|
|
<Arg name="AutoUnlock" value="no" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=加锁失败</Set>
|
|
<Exit/>
|
|
</If>
|
|
<Set>IS_LOCKED=TRUE</Set>
|
|
</Process>
|
|
</Function>
|
|
<Function name="_after">
|
|
<Process>
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="InitPRO_JRL"/>
|
|
</Exec>
|
|
<If condition="IS_EQUAL_STRING($IS_LOCKED,TRUE)">
|
|
<!--解锁-->
|
|
<Exec func="PUB:UnLock">
|
|
<Arg name="RecKey" value="$LockKey" />
|
|
</Exec>
|
|
<Exec func="PUB:DumpETF"/>
|
|
</If>
|
|
<Set>SMS_FLAG=$SMS_FLAG</Set>
|
|
<If condition="IS_EQUAL_STRING($SMS_FLAG,1)">
|
|
<!--是否发送短信标志-->
|
|
<Set>EVENT.DSK_NO=$DSK_NAM</Set>
|
|
<Set>EVENT.BAT_NO=$CORG_DSK_NO</Set>
|
|
<Set>EVENT.ERR_MSG=工行通道批量代付发送接口调用异常</Set>
|
|
<Set>EVT_TYP=EVT_BATCH_SEND_FAILURE</Set>
|
|
|
|
<Exec func="PUB:InvokeService" error="IGNORE">
|
|
<Arg name="ServiceName" value="PUSH_EVENT" />
|
|
<Arg name='Mode' value='NOTIFY'/>
|
|
</Exec>
|
|
</If>
|
|
</Process>
|
|
</Function>
|
|
<FlowCtrl>
|
|
<!--清理数据 -->
|
|
<Delete>SERIAL_NO</Delete>
|
|
<Delete>RSP_CD</Delete>
|
|
<Delete>RSP_MSG</Delete>
|
|
<Delete>SUM</Delete>
|
|
<Delete>REC</Delete>
|
|
<Delete>RD</Delete>
|
|
<Exec func="PUB:DeleteGroup" error="IGNORE">
|
|
<Arg name="GroupName" value="REC"/>
|
|
</Exec>
|
|
<Exec func="PUB:DeleteGroup" error="IGNORE">
|
|
<Arg name="GroupName" value="RD"/>
|
|
</Exec>
|
|
<Exec func="PUB:DumpETF" />
|
|
|
|
<Quote name="Init_CAP01"/> <!--交易初始化-->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRYBATINF"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=查询数据库出错</Set>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!--查询合作机构检查-->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QryBnkInf"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>Rsp_Cd=31</Set>
|
|
<Set>Rsp_Msg=该合作机构不存在</Set>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=查询数据库失败</Set>
|
|
<Return/>
|
|
</ElseIf>
|
|
<If condition="INTCMP($ENB_FLG,4,1)">
|
|
<Set>Rsp_Cd=31</Set>
|
|
<Set>Rsp_Msg=该合作机构未启用</Set>
|
|
<Return/>
|
|
</If>
|
|
|
|
|
|
<Set>BatCnt=$BAT_ORN_CNT</Set>
|
|
<Set>BatAmt=$BAT_ORN_AMT</Set>
|
|
|
|
<!--读取参数配置 -->
|
|
<Set>TXN_DT=GETDATE()</Set>
|
|
<Set>TXN_TM=GETDATETIME(HHMISS)</Set>
|
|
<Quote name="Batch_Cfg_ICBC" />
|
|
<Set>MAX_CNT=$PARA.MAX_CNT</Set>
|
|
|
|
|
|
<Set>BAT_SEQ=0</Set>
|
|
<Set>TTXNSERVICE=PAYPER</Set> <!--交易代码 必输项 字符 10 PAYPER -->
|
|
<Set>TTXNSERVICE1=PAYPER_BAT</Set> <!--交易代码 必输项 10 PAYPER -->
|
|
<Set>QryExport=Qry_Export</Set> <!--代付需要发往工行的数据 -->
|
|
<Set>ICBC_CYC_CD=001</Set>
|
|
<!--业务数据初始化 -->
|
|
<Set>CORG_DSK_NO=$CORG_DSK_NO</Set>
|
|
<Set>CORG_MERC_ID=$CORG_MERC_ID</Set>
|
|
<Set>TACC_TM=$TACC_TM</Set>
|
|
<Set>BAT_TYP=$BAT_TYP</Set>
|
|
<Set>RSP_CD=STRCAT( , )</Set>
|
|
<Set>RSP_MSG=STRCAT( , )</Set>
|
|
|
|
<!--第三方数据拼接 -->
|
|
<Set>CIS=$GRP_CIS</Set> <!--集团CIS号 必输项 字符 60 客户注册时的归属编码(发卡机构代码) -->
|
|
<Set>Bank_Code=102</Set> <!--归属银行编号 必输项 长度为3 客户注册时的归属单位 -->
|
|
|
|
|
|
<!--新接口 第三方通讯报文头 代付提交-->
|
|
|
|
<Set>@MSG.className=com.icbc.api.request.MybankEnterpriseSalaryFinancialofficeMesfinstrsubmitRequestV1</Set>
|
|
<Set>@MSG.uri=mybank/enterprise/salary/financialoffice/mesfinstrsubmit/V1</Set>
|
|
|
|
<!--新接口第三方数据拼接 -->
|
|
<Set>trans_code=PAYPER</Set>
|
|
<Set>tran_date=$TXN_DT</Set>
|
|
<Set>tran_time=STRCAT($TXN_TM,000)</Set>
|
|
<Set>f_seq_no=$CORG_DSK_NO</Set>
|
|
|
|
|
|
|
|
<Set>language=zh_CN</Set>
|
|
<Set>settle_mode=2</Set>
|
|
<Set>busi_type=$CORG_BUS_TYP</Set> <!--待定 是按照大批还是小批进行合并记账 -->
|
|
<Set>total_amount=AMTPOWER($BatAmt,2)</Set> <!--总金额 分为单位 -->
|
|
<Set>instr_count=$BatCnt</Set> <!--总笔数 -->
|
|
<Set>summary_total=$summary_total</Set> <!-- 合并记账使用 具体取值 待定 -->
|
|
<Set>batch_sum_flag=$batch_sum_flag</Set> <!--批量合并记账使用-->
|
|
<If condition="INTCMP($BAT_ORN_CNT,2,$PARA.ZIP_CNT)">
|
|
<Set>zip_flag=0</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>zip_flag=1</Set>
|
|
</Else>
|
|
<Exec func="PUB:QueryInGroup" error="IGNORE">
|
|
<Arg name="SqlCmd" value="$QryExport"/>
|
|
<Arg name="RecordName" value="REC"/>
|
|
<Arg name="limit" value="$MAX_CNT"/>
|
|
</Exec>
|
|
<If condition="~RetCod=-1">
|
|
<Return />
|
|
</If>
|
|
<Set>SMS_FLAG=1</Set><!-- 设置发送预警短信 -->
|
|
<Exec func="PUB:CallThirdComm" error="IGNORE">
|
|
<Arg name="HTxnCd" value="$TTXNSERVICE1"/> <!-- 交易发往银行 -->
|
|
<Arg name="ObjSvr" value="SCAICBC"/><!-- 服务名 -->
|
|
</Exec>
|
|
<Switch expression="~RetCod">
|
|
<Case value="1">
|
|
<!--第三方失败-->
|
|
<Set>BAT_STS=3</Set>
|
|
<Set>RSP_CD=80</Set>
|
|
<Set>RSP_MSG=批次已发送</Set>
|
|
<Break/>
|
|
</Case>
|
|
<Case value="-1">
|
|
<Set>BAT_STS=3</Set>
|
|
<Set>RSP_CD=80</Set>
|
|
<Set>RSP_MSG=批次已发送</Set>
|
|
<Break/>
|
|
</Case>
|
|
<Case value="3">
|
|
<Set>TRSP_CD=$TRSP_CD</Set>
|
|
<If condition="INTCMP($TRSP_CD,1,0)"> <!--错误码小于0时 默认为疑账处理-->
|
|
<Set>BAT_STS=3</Set>
|
|
<Set>RSP_CD=$TRSP_CD</Set>
|
|
<Set>RSP_MSG=SUBSTR($TRSP_MSG,1,100)</Set>
|
|
<Break/>
|
|
</If>
|
|
<Else>
|
|
<Set>BAT_STS=2</Set>
|
|
<Set>RSP_CD=$TRSP_CD</Set>
|
|
<Set>RSP_MSG=SUBSTR($TRSP_MSG,1,100)</Set>
|
|
<Set>BAT_FAL_CNT=$BAT_ORN_CNT</Set>
|
|
<Set>BAT_FAL_AMT=$BAT_ORN_AMT</Set>
|
|
<Set>END_TM=$TXN_TM</Set>
|
|
<Set>END_DT=$TXN_DT</Set>
|
|
|
|
<!--更新流水状态为处理-->
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UpdJnlStsF"/>
|
|
</Exec>
|
|
<If condition="~RetCod != 0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=更新该批次状态失败</Set>
|
|
</If>
|
|
<Break/>
|
|
</Else>
|
|
|
|
|
|
</Case>
|
|
<Case value="0"> <!-- 成功 -->
|
|
<Set>SMS_FLAG=0</Set> <!-- 取消发送预警短信 -->
|
|
<!--更新流水状态为发送处理成功-->
|
|
<Set>BAT_STS=1</Set>
|
|
<Set>Rsp_Cd=$TRsp_Cd</Set>
|
|
<Set>TRsp_Msg=批次提交成功</Set>
|
|
<Set>Rsp_Msg=$TRsp_Msg</Set>
|
|
|
|
<!-- 更新流水状态为发送处理完成 -->
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UpdJnlSts"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=更新该批次流水处理状态失败</Set>
|
|
</If>
|
|
<Break/>
|
|
</Case>
|
|
<Default>
|
|
<!--第三方失败-->
|
|
<Set>BAT_STS=3</Set>
|
|
<Set>RSP_CD=80</Set>
|
|
<Set>RSP_MSG=批次已发送</Set>
|
|
</Default>
|
|
</Switch>
|
|
<Set>CORG_JRN_NO=$SERIAL_NO</Set>
|
|
|
|
<!-- 更新批次状态 -->
|
|
<Quote name="UpdSendBatSts" />
|
|
|
|
<!--提交事务-->
|
|
<Exec func="PUB:CommitWork"/>
|
|
<!--清理数据 -->
|
|
<Exec func="PUB:DeleteGroup" error="IGNORE">
|
|
<Arg name="GroupName" value="REC"/>
|
|
</Exec>
|
|
<Exec func="PUB:DeleteGroup" error="IGNORE">
|
|
<Arg name="GroupName" value="RD"/>
|
|
</Exec>
|
|
<Delete>SERIAL_NO</Delete>
|
|
<Delete>RSP_CD</Delete>
|
|
<Delete>RSP_MSG</Delete>
|
|
<Delete>SUM</Delete>
|
|
<Delete>REC</Delete>
|
|
<Delete>RD</Delete>
|
|
</FlowCtrl>
|
|
</Transaction>
|
|
|
|
<!--获取工行批次回盘文件 -->
|
|
<Transaction code="getBatch_ICBC" log_switch='1' desc="获取工行批次回盘文件">
|
|
<DynSentence name="UpdCUPS_DSK_NO">
|
|
<Sentence>
|
|
UPDATE CAPBATINF
|
|
SET BAT_STS=? ,
|
|
END_TM=? ,
|
|
END_DT=?,
|
|
BAT_SUC_AMT=?,
|
|
BAT_SUC_CNT=?,
|
|
BAT_FAL_AMT=?,
|
|
BAT_FAL_CNT=?,
|
|
RSP_CD = ?,
|
|
RSP_MSG = ?
|
|
WHERE ORD_DT=?
|
|
AND CORG_NO=?
|
|
AND CORG_DSK_NO=?
|
|
AND BAT_STS=?
|
|
</Sentence>
|
|
<Fields>BAT_STS|END_TM|END_DT|BAT_SUC_AMT|BAT_SUC_CNT|BAT_FAL_AMT|BAT_FAL_CNT|RSP_CD|RSP_MSG|OORD_DT|OCORG_NO|OCORG_DSK_NO|OBAT_STS|
|
|
</Fields>
|
|
</DynSentence>
|
|
|
|
<DynSentence name="UpdICBCTxnJnl"> <!--更新批扣流水 -->
|
|
<Sentence>
|
|
UPDATE CAPTXNJNL A
|
|
SET
|
|
(TTXN_ST,TXN_STS,DSK_NAM_STS,TACC_DT,TACC_TM,TRSP_CD,TRSP_MSG,RSP_MSG,CORG_JRN_NO,TM_SMP)
|
|
=
|
|
( SELECT TTXN_ST TTXN_ST,
|
|
TTXN_ST TXN_STS,
|
|
'4',
|
|
?,
|
|
?,
|
|
TRSP_CD,
|
|
TRSP_MSG,
|
|
TRSP_MSG,
|
|
I_SEQ_NO CORG_JRN_NO,
|
|
to_char(sysdate,'yyyymmddhh24miss') TM_SMP
|
|
FROM CAPICBCPERDTMP B
|
|
WHERE B.QRY_I_SEQ_NO = A.CAP_ORD_NO
|
|
)
|
|
WHERE
|
|
A.CORG_NO = 'ICBC'
|
|
AND A.CORG_DSK_NO = ?
|
|
AND (A.TTXN_ST = 'U' OR
|
|
A.TTXN_ST = 'P')
|
|
AND ORD_DT=?
|
|
</Sentence>
|
|
<Fields>TACC_DT|TACC_TM|OCORG_DSK_NO|OORD_DT|</Fields>
|
|
</DynSentence>
|
|
<DynSentence name="UpdDskInf">
|
|
<Sentence>
|
|
UPDATE CAPDSKINF
|
|
SET SUC_CNT=TO_NUMBER(NVL(TRIM(SUC_CNT),0))
|
|
+
|
|
TO_NUMBER(NVL(TRIM(?),0)),
|
|
SUC_AMT=TO_NUMBER(NVL(TRIM(SUC_AMT),0)) +
|
|
TO_NUMBER(NVL(TRIM(?),0)),
|
|
FAL_CNT=TO_NUMBER(NVL(TRIM(FAL_CNT),0)) +
|
|
TO_NUMBER(NVL(TRIM(?),0)),
|
|
FAL_AMT=TO_NUMBER(NVL(TRIM(FAL_AMT),0)) +
|
|
TO_NUMBER(NVL(TRIM(?),0))
|
|
WHERE DSK_NAM=?
|
|
</Sentence>
|
|
<Fields>BAT_SUC_CNT|BAT_SUC_AMT|BAT_FAL_CNT|BAT_FAL_AMT|ODSK_NAM
|
|
</Fields>
|
|
</DynSentence>
|
|
<DynSentence name="QryExport"> <!--查询请求回盘所需的记录 -->
|
|
<Sentence>
|
|
SELECT ROWNUM,t.*
|
|
FROM CAPTXNJNL t
|
|
WHERE DSK_NAM='%s'
|
|
AND
|
|
CORG_NO = '%s'
|
|
AND CORG_DSK_NO = '%s'
|
|
AND ORD_DT='%s'
|
|
AND
|
|
DSK_NAM_STS='1'
|
|
AND TXN_STS='U'
|
|
</Sentence>
|
|
<Fields>ODSK_NAM|OCORG_NO|OCORG_DSK_NO|OORD_DT|</Fields>
|
|
</DynSentence>
|
|
<DynSentence name="TotFai"> <!--统计失败笔数 -->
|
|
<Sentence>
|
|
SELECT COUNT(*) BAT_FAL_CNT,NVL(SUM(TXN_AMT),0) BAT_FAL_AMT
|
|
FROM CAPTXNJNL
|
|
WHERE ORD_DT = ? AND CORG_NO = ? AND CORG_DSK_NO = ?
|
|
AND TTXN_ST =
|
|
'F'
|
|
</Sentence>
|
|
<Fields>OORD_DT|CORG_NO|OCORG_DSK_NO</Fields>
|
|
</DynSentence>
|
|
<DynSentence name="TotSuc"> <!--统计成功笔数 -->
|
|
<Sentence>
|
|
SELECT COUNT(*) BAT_SUC_CNT,NVL(SUM(TXN_AMT),0) BAT_SUC_AMT
|
|
FROM CAPTXNJNL
|
|
WHERE ORD_DT = ? AND CORG_NO = ? AND CORG_DSK_NO = ?
|
|
AND TTXN_ST =
|
|
'S'
|
|
</Sentence>
|
|
<Fields>OORD_DT|CORG_NO|OCORG_DSK_NO</Fields>
|
|
</DynSentence>
|
|
|
|
<DynSentence name="QryCAPICBCPERD"> <!-- 查询临时表批次记录状态为P的记录数 -->
|
|
<Sentence>
|
|
SELECT COUNT(*) AS UNDO_CNT FROM CAPICBCPERD WHERE Result
|
|
in
|
|
('0','1','2','3','4','5','9','10','95')
|
|
</Sentence>
|
|
</DynSentence>
|
|
|
|
<DynSentence name="QRY_ICBC_TXNSTS"> <!--统计本批次数据处理结果中状态未明数据,具体状态待补充完善-->
|
|
<Sentence>
|
|
SELECT COUNT(*) UNDO_CNT FROM CAPTXNJNL
|
|
WHERE CORG_NO = 'ICBC' AND CORG_DSK_NO = ? AND ORD_DT = ? AND TTXN_ST IN ('P','U')
|
|
</Sentence>
|
|
<Fields>OCORG_DSK_NO|OORD_DT|</Fields>
|
|
</DynSentence>
|
|
|
|
<!--更新该批次失败记录 -->
|
|
<DynSentence name="UpdJnlStsF">
|
|
<Sentence>
|
|
UPDATE CAPTXNJNL
|
|
SET DSK_NAM_STS='4',
|
|
TXN_STS='F',
|
|
TTXN_ST='F',
|
|
RSP_CD = '80',
|
|
RSP_MSG = ?,
|
|
TRSP_CD = ?,
|
|
TRSP_MSG = ?,
|
|
TM_SMP=to_char(sysdate,'yyyymmddhh24miss')
|
|
WHERE DSK_NAM=?
|
|
AND
|
|
ORD_DT=?
|
|
AND CORG_NO=?
|
|
AND CORG_DSK_NO = ?
|
|
AND
|
|
DSK_NAM_STS='0'
|
|
AND TXN_STS='U'
|
|
</Sentence>
|
|
<Fields>RSP_MSG|TRSP_CD|TRSP_MSG|ODSK_NAM|OORD_DT|OCORG_NO|OCORG_DSK_NO|</Fields>
|
|
</DynSentence>
|
|
|
|
|
|
<DynSentence name="DelCAPICBCPERD"> <!-- 导入临时表数据之前删除临时表数据 -->
|
|
<Sentence>
|
|
DELETE FROM CAPICBCPERDTMP
|
|
</Sentence>
|
|
</DynSentence>
|
|
<DynSentence name="InitPRO_JRL"> <!--初始化PRO_JRL-->
|
|
<Sentence>
|
|
UPDATE CAPBATINF SET PRO_JRL ='0'
|
|
WHERE ORD_DT=? AND CORG_NO=? AND CORG_DSK_NO=? AND PRO_JRL='1'
|
|
</Sentence>
|
|
<Fields>OORD_DT|OCORG_NO|OCORG_DSK_NO|</Fields>
|
|
</DynSentence>
|
|
<Function name="_before">
|
|
<Process>
|
|
<Exec func="PUB:DumpETF"/>
|
|
<Set>LockKey=STRCAT($OCORG_NO,$OCORG_DSK_NO)</Set>
|
|
<!-- 应用加锁,防止并发 -->
|
|
<Exec func="PUB:Lock">
|
|
<Arg name="RecKey" value="$LockKey" error="IGNORE"/>
|
|
<Arg name="TimOut" value="1800" />
|
|
<Arg name="AutoUnlock" value="no" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=加锁失败</Set>
|
|
<Exit/>
|
|
</If>
|
|
<Set>IS_LOCKED=TRUE</Set>
|
|
</Process>
|
|
</Function>
|
|
<Function name="_after">
|
|
<Process>
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="InitPRO_JRL"/>
|
|
</Exec>
|
|
<If condition="IS_EQUAL_STRING($IS_LOCKED,TRUE)">
|
|
<!--解锁-->
|
|
<Exec func="PUB:UnLock">
|
|
<Arg name="RecKey" value="$LockKey" />
|
|
</Exec>
|
|
<Exec func="PUB:DumpETF"/>
|
|
</If>
|
|
<Set>SMS_FLAG=$SMS_FLAG</Set>
|
|
<If condition="IS_EQUAL_STRING($SMS_FLAG,1)">
|
|
<!--是否发送短信标志-->
|
|
<Set>EVENT.DSK_NO=$ODSK_NM</Set>
|
|
<Set>EVENT.BAT_NO=$OCORG_DSK_NO</Set>
|
|
<Set>EVENT.ERR_MSG=工行通道回盘查询接口调用异常</Set>
|
|
<Set>EVT_TYP=EVT_BATCH_BACK_FAILURE</Set>
|
|
|
|
<Exec func="PUB:InvokeService" error="IGNORE">
|
|
<Arg name="ServiceName" value="PUSH_EVENT" />
|
|
<Arg name='Mode' value='NOTIFY'/>
|
|
</Exec>
|
|
</If>
|
|
|
|
</Process>
|
|
</Function>
|
|
<FlowCtrl>
|
|
<!--清理数据 -->
|
|
<Delete>RSP_CD</Delete>
|
|
<Delete>RSP_MSG</Delete>
|
|
<Delete>SUM</Delete>
|
|
<Delete>REC</Delete>
|
|
<Delete>rd</Delete>
|
|
<Exec func="PUB:DeleteGroup" error="IGNORE">
|
|
<Arg name="GroupName" value="rd"/>
|
|
</Exec>
|
|
|
|
<Exec func="PUB:DumpETF" />
|
|
<Set>ORD_TYP=$OBAT_TYP</Set>
|
|
<Quote name="Batch_Cfg_ICBC" />
|
|
|
|
<Set>TXN_DT=GETDATE()</Set>
|
|
<Set>TXN_TM=GETDATETIME(HHMISS)</Set> <!--交易时间 -->
|
|
<Set>TACC_DT=$TXN_DT</Set>
|
|
<Set>TACC_TM=$TXN_TM</Set>
|
|
|
|
<Quote name="GET_JRN_NO" /> <!--取交易流水号 -->
|
|
<Set>ORN_JRN_NO=$OCORG_DSK_NO</Set> <!--原批次号 -->
|
|
|
|
<Set>END_TM=GETDATETIME(HHMISS)</Set>
|
|
<Set>END_DT=GETDATE()</Set>
|
|
<Set>BAT_SUC_AMT=0</Set>
|
|
<Set>BAT_SUC_CNT=0</Set>
|
|
<Set>BAT_FAL_CNT=0</Set>
|
|
<Set>BAT_FAL_AMT=0</Set>
|
|
<Set>RSP_CD=STRCAT( , )</Set>
|
|
<Set>RSP_MSG=STRCAT( , )</Set>
|
|
<Set>CORG_NO=$OCORG_NO</Set>
|
|
|
|
<!--第三方数据拼接-->
|
|
|
|
<Set>TTXNSERVICE=QPAYPER</Set>
|
|
|
|
<Exec func="PUB:GetUniqueNo">
|
|
<Arg name="Name" value="fSeqno" />
|
|
<Arg name="SeqNam" value="jrn_no_sequence" />
|
|
<Arg name="Len" value="10" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=平台取流水号失败</Set>
|
|
<Return />
|
|
</If>
|
|
<Set>fSeqno=STRCAT(Q,SUBSTR($TXN_DT,3,6),$fSeqno)</Set>
|
|
|
|
|
|
|
|
<!--新接口第三方数据拼接 -->
|
|
<Set>trans_code=QPAYPER</Set>
|
|
<Set>tran_date=$TXN_DT</Set>
|
|
<Set>tran_time=STRCAT($TXN_TM,000)</Set>
|
|
<Set>f_seq_no=$fSeqno</Set>
|
|
<Set>language=zh_CN</Set>
|
|
<Set>qry_f_seq_no=$ORN_JRN_NO</Set>
|
|
<Set>qry_serial_no=$qry_serial_no</Set>
|
|
|
|
|
|
<!--新接口 第三方通讯报文头 代付提交-->
|
|
|
|
<Set>@MSG.className=com.icbc.api.request.MybankEnterpriseSalaryFinancialofficeMesfinstrqryRequestV1</Set>
|
|
<Set>@MSG.uri=mybank/enterprise/salary/financialoffice/mesfinstrqry/V1</Set>
|
|
<Set>SMS_FLAG=1</Set> <!--设置短信告警-->
|
|
|
|
<Exec func="PUB:CallThirdComm" error="IGNORE">
|
|
<Arg name="HTxnCd" value="$TTXNSERVICE" />
|
|
<Arg name="ObjSvr" value="SCAICBC" /> <!-- 交易发往银行 -->
|
|
</Exec>
|
|
<Switch expression="~RetCod">
|
|
<Case value="1">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=查询第三方失败</Set>
|
|
<Break/>
|
|
</Case>
|
|
<Case value="-1">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=查询第三方失败</Set>
|
|
<Break/>
|
|
</Case>
|
|
<Case value="3">
|
|
<Set>RSP_CD=$TRSP_CD</Set>
|
|
<Set>RSP_MSG=$TRSP_MSG</Set>
|
|
<If condition="IS_EQUAL_STRING($TRSP_CD,BIB008,D0055)"> <!--交易请求已受理,处理中-->
|
|
<Set>SMS_FLAG=0</Set> <!--取消短信告警-->
|
|
<Set>BAT_STS=3</Set>
|
|
<!--更新批次信息-->
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UpdCUPS_DSK_NO"/>
|
|
</Exec>
|
|
<If condition="~RetCod != 0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=更新该批次为发送处理状态失败</Set>
|
|
<Break/>
|
|
</If>
|
|
</If>
|
|
<ElseIf condition="IS_EQUAL_STRING($TRSP_CD,10660116)"> <!--无符合条件的数据 根据发送时间判断-->
|
|
|
|
<Set>TIME_TEMP= SUBSTR(CALCTIME(GETDATETIME(MMDDHHMISS),-,m,30),3,8)</Set>
|
|
<If condition="INTCMP($OSND_TIME,2,$TIME_TEMP)"> <!--时间间隔大于等于30分钟时认为该批次整批提交失败 否则继续查询-->
|
|
|
|
<Set>RSP_MSG=STRCAT(发往工行批次,$OCORG_DSK_NO,整批失败)</Set>
|
|
<Set>BAT_STS=2</Set>
|
|
<!--更新流水状态为处理-->
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UpdJnlStsF"/>
|
|
</Exec>
|
|
<If condition="~RetCod != 0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=更新该批次状态失败</Set>
|
|
<Break/>
|
|
</If>
|
|
<Set>BAT_FAL_AMT=$OBAT_ORN_AMT</Set>
|
|
<Set>BAT_FAL_CNT=$OBAT_ORN_CNT</Set>
|
|
<!--更新批次信息-->
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UpdCUPS_DSK_NO"/>
|
|
</Exec>
|
|
<If condition="~RetCod != 0">
|
|
<Exec func="PUB:RollbackWork" />
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=更新该批次为发送处理状态失败</Set>
|
|
<Break/>
|
|
</If>
|
|
</If>
|
|
<Else>
|
|
<Set>SMS_FLAG=0</Set> <!--取消短信告警-->
|
|
<Set>BAT_STS=3</Set>
|
|
<!--更新批次信息-->
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UpdCUPS_DSK_NO"/>
|
|
</Exec>
|
|
<If condition="~RetCod != 0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=更新该批次为发送处理状态失败</Set>
|
|
<Break/>
|
|
</If>
|
|
</Else>
|
|
|
|
|
|
</ElseIf>
|
|
<ElseIf condition="INTCMP($TRSP_CD,1,0)"> <!--错误码为负数,代表系统异常,存在可疑账需要重新获取交易明细-->
|
|
<Set>SMS_FLAG=0</Set>
|
|
<Set>BAT_STS=3</Set>
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UpdCUPS_DSK_NO"/>
|
|
</Exec>
|
|
<If condition="~RetCod != 0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=更新该批次为发送处理状态失败</Set>
|
|
<Break/>
|
|
</If>
|
|
</ElseIf>
|
|
<Else> <!--其他错误-->
|
|
<Set>BAT_STS=5</Set>
|
|
<!--更新批次信息-->
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UpdCUPS_DSK_NO"/>
|
|
</Exec>
|
|
<If condition="~RetCod != 0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=更新该批次为发送处理状态失败</Set>
|
|
<Break/>
|
|
</If>
|
|
|
|
</Else>
|
|
<Break/>
|
|
</Case>
|
|
<Case value="0">
|
|
<!--导入临时表数据之前删除临时表数据 -->
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="DelCAPICBCPERD" />
|
|
</Exec>
|
|
<Set>SMS_FLAG=0</Set> <!--取消短信告警-->
|
|
<Exec func="PUB:InsertRecord"><!--登记工行临时表-->
|
|
<Arg name="TblNam" value="CAPICBCPERDTMP" />
|
|
<Arg name="GrpNam" value="rd" />
|
|
<Arg name="FldLst" value="qry_f_seq_no|" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Return />
|
|
</If>
|
|
|
|
<!--更新流水状态 -->
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UpdICBCTxnJnl" />
|
|
</Exec>
|
|
<If condition="~RetCod=-1">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=更新流水交易状态失败</Set>
|
|
<Return />
|
|
</If>
|
|
<!--查询临时表批次记录状态为P的记录数 -->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_ICBC_TXNSTS" />
|
|
</Exec>
|
|
<If condition="~RetCod != 0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=查询临时表批次记录状态为P的记录数失败</Set>
|
|
<Return />
|
|
</If>
|
|
|
|
<Set>UNDO_CNT=$UNDO_CNT</Set>
|
|
|
|
<!--统计成功,失败笔数 -->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="TotSuc" />
|
|
</Exec>
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="TotFai" />
|
|
</Exec>
|
|
|
|
<Set>BAT_SUC_AMT=$BAT_SUC_AMT</Set>
|
|
<Set>BAT_SUC_CNT=$BAT_SUC_CNT</Set>
|
|
<Set>BAT_FAL_AMT=$BAT_FAL_AMT</Set>
|
|
<Set>BAT_FAL_CNT=$BAT_FAL_CNT</Set>
|
|
|
|
<If condition="$UNDO_CNT != 0">
|
|
<Set>BAT_STS=3</Set>
|
|
<Set>Rsp_Cd=00</Set>
|
|
<Set>Rsp_Msg=交易处理中...</Set>
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UpdCUPS_DSK_NO"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=更新该批次状态失败</Set>
|
|
<Break/>
|
|
</If>
|
|
<Return />
|
|
</If>
|
|
|
|
|
|
<!--更新文件信息 -->
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UpdDskInf" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=累加更新接入批量信息表成功失败总笔数及总金额失败</Set>
|
|
<Break />
|
|
</If>
|
|
|
|
<Set>Rsp_Cd=00</Set>
|
|
<Set>Rsp_Msg=批次处理完成</Set>
|
|
<Set>BAT_STS=4</Set> <!-- 接收处理完成 -->
|
|
|
|
<!--更新批次信息 -->
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UpdCUPS_DSK_NO" />
|
|
</Exec>
|
|
<If condition="~RetCod != 0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=更新该批次为发送处理状态失败</Set>
|
|
<Break />
|
|
</If>
|
|
<Exec func="PUB:CommitWork" /> <!--提交事务 -->
|
|
<Set>TXN_MOD_FLG=$OBAT_TYP</Set>
|
|
|
|
<Set>CAP_TYP=CAP_PAY_BAT</Set>
|
|
|
|
|
|
<Set>RUL_TYP=HRO</Set><!-- 转码规则类型 -->
|
|
<Set>CAP_TYP=$CAP_TYP</Set><!-- 交易类型 -->
|
|
<Set>CORG_NO=$OCORG_NO</Set><!-- 合作机构号 -->
|
|
<Set>CSW_TYP=0</Set><!-- 匹配类型 -->
|
|
<Set>ORD_DT=$OORD_DT</Set>
|
|
<Set>CORG_DSK_NO=$OCORG_DSK_NO</Set>
|
|
<Call package="CSW" function="CAP_BAT_CSW">
|
|
<Input>RUL_TYP|CAP_TYP|CORG_NO|CSW_TYP|ORD_DT|CORG_DSK_NO|</Input>
|
|
<Output></Output>
|
|
</Call>
|
|
</Case>
|
|
<Default>
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=系统错误</Set>
|
|
<Break/>
|
|
</Default>
|
|
</Switch>
|
|
|
|
<!--提交事务-->
|
|
<Exec func="PUB:CommitWork"/>
|
|
<!--清理数据 -->
|
|
<Delete>TRSP_CD</Delete>
|
|
<Delete>RSP_CD</Delete>
|
|
<Delete>RSP_MSG</Delete>
|
|
<Delete>SUM</Delete>
|
|
<Delete>REC</Delete>
|
|
<Delete>RD</Delete>
|
|
<Exec func="PUB:DeleteGroup" error="IGNORE">
|
|
<Arg name="GroupName" value="RD"/>
|
|
</Exec>
|
|
|
|
</FlowCtrl>
|
|
</Transaction>
|
|
|
|
<!--工行心跳检查 -->
|
|
<Transaction code="HEARTBEAT_ICBC" log_switch='0' desc="心跳检查">
|
|
|
|
|
|
<FlowCtrl>
|
|
|
|
|
|
|
|
<Set>TXN_DT=GETDATE()</Set>
|
|
<Set>TXN_TM=GETDATETIME(HHMISS)</Set> <!--交易时间 -->
|
|
|
|
<Exec func="PUB:GetUniqueNo">
|
|
<Arg name="Name" value="fSeqno" />
|
|
<Arg name="SeqNam" value="jrn_no_sequence" />
|
|
<Arg name="Len" value="10" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=平台取流水号失败</Set>
|
|
<Return />
|
|
</If>
|
|
<Set>fSeqno=STRCAT(Q,SUBSTR($TXN_DT,3,6),$fSeqno)</Set>
|
|
<!--新接口第三方数据拼接 -->
|
|
<Set>trans_code=QPAYPER</Set>
|
|
<Set>tran_date=$TXN_DT</Set>
|
|
<Set>tran_time=STRCAT($TXN_TM,000)</Set>
|
|
<Set>f_seq_no=STRCAT(Q,SUBSTR($TXN_DT,3,6),$fSeqno)</Set>
|
|
<Set>language=zh_CN</Set>
|
|
<Set>qry_f_seq_no=1</Set> <!--202103080000000007 测试可成功-->
|
|
<Set>qry_serial_no=$qry_serial_no</Set>
|
|
|
|
<!--新接口 第三方通讯报文头 代付提交-->
|
|
|
|
<Set>@MSG.className=com.icbc.api.request.MybankEnterpriseSalaryFinancialofficeMesfinstrqryRequestV1</Set>
|
|
<Set>@MSG.uri=mybank/enterprise/salary/financialoffice/mesfinstrqry/V1</Set>
|
|
|
|
<Exec func="PUB:CallThirdComm" error="IGNORE">
|
|
<Arg name="HTxnCd" value="QPAYPER" />
|
|
<Arg name="ObjSvr" value="SCAICBC" /> <!-- 交易发往银行 -->
|
|
</Exec>
|
|
<Switch expression="~RetCod">
|
|
<Case value="0">
|
|
<Set>Rsp_Cd=00</Set>
|
|
<Set>Rsp_Msg=心跳检查成功</Set>
|
|
<Break/>
|
|
</Case>
|
|
<Case value="3">
|
|
<Set>Rsp_Cd=00</Set>
|
|
<Set>Rsp_Msg=心跳检查成功</Set>
|
|
<Break/>
|
|
</Case>
|
|
<Default> <!-- 告警 需要调用短信预警函数 -->
|
|
|
|
<Set>EVENT.CORG_NO=ICBC</Set>
|
|
<Set>EVENT.ERR_MSG=工行通道通讯异常</Set>
|
|
<Set>EVT_TYP=EVT_CHANNEL_COMMU_FAILURE</Set>
|
|
|
|
<Exec func="PUB:InvokeService" error="IGNORE">
|
|
<Arg name="ServiceName" value="PUSH_EVENT" />
|
|
<Arg name='Mode' value='NOTIFY'/>
|
|
</Exec>
|
|
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=系统错误短信告警</Set>
|
|
<Break/>
|
|
</Default>
|
|
</Switch>
|
|
|
|
</FlowCtrl>
|
|
</Transaction>
|
|
|
|
|
|
|
|
|
|
</Tran>
|