748 lines
37 KiB
XML
748 lines
37 KiB
XML
<?xml version='1.0' encoding='UTF-8'?>
|
||
|
||
<Application name="CAP" trace="yes">
|
||
<Transaction code="abc_check" log_switch="1" desc="农行对账主交易">
|
||
<Function name="_before">
|
||
<Process>
|
||
<Set>CK_LOCK=CAP_HXBCK_LOCK</Set>
|
||
<!-- 应用加锁,防止并发 -->
|
||
<Exec func="PUB:Lock" error="IGNORE">
|
||
<Arg name="RecKey" value="$CK_LOCK" />
|
||
<Arg name="TimOut" value="300" />
|
||
<Arg name="AutoUnlock" value="Yes" />
|
||
</Exec>
|
||
<If condition="~RetCod!=0">
|
||
<Set>Rsp_Msg=加锁失败 </Set>
|
||
<Return />
|
||
</If>
|
||
</Process>
|
||
</Function>
|
||
<Function name="_after">
|
||
<Process>
|
||
<!-- 解锁处理 -->
|
||
<Exec func="PUB:UnLock">
|
||
<Arg name="RecKey" value="$CK_LOCK" />
|
||
</Exec>
|
||
</Process>
|
||
</Function>
|
||
|
||
<DynSentence name="QRY_PWMTCKCT"><!-- 对账总控表查询 -->
|
||
<Sentence>
|
||
SELECT CHK_FIL_STS AS CHK_STS
|
||
FROM PWMTCKCT
|
||
WHERE COP_BUS_TYP = ? AND
|
||
RUT_CORG = ? AND
|
||
CHK_FIL_DT = ?
|
||
</Sentence>
|
||
<Fields>BUS_TYP|RUT_CORG|CHK_FIL_DT|</Fields>
|
||
</DynSentence>
|
||
<DynSentence name="DEL_PWMTCKCT"><!-- 删除总控表中记录 -->
|
||
<Sentence>
|
||
DELETE
|
||
FROM PWMTCKCT
|
||
WHERE RUT_CORG = ? AND
|
||
CHK_FIL_DT = ? AND
|
||
COP_BUS_TYP = ?
|
||
</Sentence>
|
||
<Fields>RUT_CORG|CHK_FIL_DT|BUS_TYP|</Fields>
|
||
</DynSentence>
|
||
<DynSentence name="DEL_CAPCHKABC"><!-- 清空对账文件记录表 -->
|
||
<Sentence>
|
||
DELETE
|
||
FROM CAPCHKABC
|
||
</Sentence>
|
||
</DynSentence>
|
||
<DynSentence name="UPD_PWMTCKCT_STS"><!-- 更新总控表中对账状态 -->
|
||
<Sentence>
|
||
UPDATE PWMTCKCT
|
||
SET CHK_FIL_STS = ? ,
|
||
CHK_END_TM = ?
|
||
WHERE CHK_BAT_NO = ?
|
||
</Sentence>
|
||
<Fields>CHK_FIL_STS|CHK_END_TM|CHK_BAT_NO|</Fields>
|
||
</DynSentence>
|
||
<!-- 更新状态:1-对账成功 -->
|
||
<DynSentence name="UPD_CAPTXNJNL_MCH"><!-- 更新 T、T-1、T+1 日我方对账成功的流水记录的对账状态 -->
|
||
<Sentence>
|
||
UPDATE CAPTXNJNL a
|
||
SET a.CHK_STS = '1'
|
||
WHERE a.AC_DT >= ? AND
|
||
a.CHK_STS = '0' AND
|
||
a.TXN_MOD = '99' AND
|
||
a.CORG_NO = ? AND
|
||
a.TXN_STS IN ( 'S' , 'T' ) AND
|
||
a.ORD_TYP = ? AND
|
||
EXISTS ( SELECT 1
|
||
FROM CAPCHKABC b
|
||
WHERE b.TERMSERNUM = a.CAP_ORD_NO AND
|
||
b.TxType = a.ORD_TYP AND
|
||
b.AMOUNT = a.TXN_AMT
|
||
)
|
||
</Sentence>
|
||
<Fields>CHK_DT_YED|RUT_CORG|BUS_TYP|</Fields>
|
||
</DynSentence>
|
||
<DynSentence name="UPD_CAPCHKABC_MCH"><!-- 更新 T 日对方对账成功的流水记录的对账状态 -->
|
||
<Sentence>
|
||
UPDATE CAPCHKABC a
|
||
SET a.CHK_STS = '1'
|
||
WHERE a.TxType = ? AND
|
||
EXISTS ( SELECT 1
|
||
FROM CAPTXNJNL b
|
||
WHERE b.AC_DT >= ? AND
|
||
b.TXN_MOD = '99' AND
|
||
b.CHK_STS = '1' AND
|
||
b.CORG_NO = ? AND
|
||
b.TXN_STS IN ( 'S' , 'T' ) AND
|
||
b.ORD_TYP = a.TxType AND
|
||
b.CAP_ORD_NO = a.TERMSERNUM
|
||
)
|
||
</Sentence>
|
||
<Fields>BUS_TYP|CHK_DT_YED|RUT_CORG|</Fields>
|
||
</DynSentence>
|
||
<!-- 入差错表:4-关键信息不符 -->
|
||
<DynSentence name="INS_CAPTXNJNL_ERR"><!-- T-1、T 和 T+1 日我方关键信息不符的流水记录入差错表 -->
|
||
<Sentence>
|
||
INSERT INTO PWMTCKER ( RUT_CORG , COP_BUS_TYP , ERR_KEY_ID , CHK_ERR_DT ,
|
||
CHK_ERR_TM , CHK_BAT_NO , TX_CD , CHK_TYP ,
|
||
CHK_ERR_TYP , ERR_STS , PAY_TX_AMT , OLD_TX_DT ,
|
||
OLD_JRN_NO , OLD_ORD_NO , OLD_CORG_KEY
|
||
)
|
||
SELECT ? AS RUT_CORG , ORD_TYP AS COP_BUS_TYP , 'LCL' || CAP_ORD_NO AS ERR_KEY_ID ,
|
||
? AS CHK_ERR_DT , ? AS CHK_ERR_TM , ? AS CHK_BAT_NO ,
|
||
? AS TX_CD , '1' AS CHK_TYP , '4' AS CHK_ERR_TYP , '0' AS ERR_STS ,
|
||
TXN_AMT AS PAY_TX_AMT , AC_DT AS OLD_TX_DT , JRN_NO AS OLD_JRN_NO ,
|
||
CAP_ORD_NO AS OLD_ORD_NO , CAP_ORD_NO AS OLD_CORG_KEY
|
||
FROM CAPTXNJNL
|
||
WHERE AC_DT >= ? AND
|
||
CHK_STS = '0' AND
|
||
TXN_MOD = '99' AND
|
||
CORG_NO = ? AND
|
||
TXN_STS IN ( 'S' , 'T' ) AND
|
||
ORD_TYP = ? AND
|
||
CAP_ORD_NO IN ( SELECT TERMSERNUM
|
||
FROM CAPCHKABC
|
||
WHERE CHK_STS = '0' AND
|
||
TxType = ?
|
||
)
|
||
</Sentence>
|
||
<Fields>RUT_CORG|CHK_ERR_DT|CHK_ERR_TM|CHK_BAT_NO|TX_CD|CHK_DT_YED|RUT_CORG|BUS_TYP|BUS_TYP|</Fields>
|
||
</DynSentence>
|
||
<!-- 统计:存疑转差错 -->
|
||
<DynSentence name="CNT_CHKABC_DBTERR"><!-- 统计 T-1 日我方存疑转差错的流水记录总金额及总笔数 -->
|
||
<Sentence>
|
||
SELECT COUNT( * ) AS SUM_DBTERR_CNT ,
|
||
NVL( SUM( TXN_AMT ) , 0 ) AS SUM_DBTERR_AMT
|
||
FROM CAPTXNJNL
|
||
WHERE AC_DT = ? AND
|
||
CHK_STS = '0' AND
|
||
TXN_MOD = '99' AND
|
||
CORG_NO = ? AND
|
||
TXN_STS IN ( 'S' , 'T' ) AND
|
||
ORD_TYP = ?
|
||
</Sentence>
|
||
<Fields>CHK_DT_YED|RUT_CORG|BUS_TYP|</Fields>
|
||
</DynSentence>
|
||
<!-- 统计:关键信息不符 -->
|
||
<DynSentence name="CNT_CAPTXNJNL_ERR"><!-- 统计 T、T-1、T+1 日我方关键信息不符的流水记录的总金额及总笔数 -->
|
||
<Sentence>
|
||
SELECT COUNT( * ) AS SUM_ERR_CNT ,
|
||
NVL( SUM( TXN_AMT ) , 0 ) AS SUM_ERR_AMT
|
||
FROM CAPTXNJNL
|
||
WHERE AC_DT >= ? AND
|
||
CHK_STS = '0' AND
|
||
TXN_MOD = '99' AND
|
||
CORG_NO = ? AND
|
||
TXN_STS IN ( 'S' , 'T' ) AND
|
||
ORD_TYP = ? AND
|
||
CAP_ORD_NO IN ( SELECT TERMSERNUM
|
||
FROM CAPCHKABC
|
||
WHERE CHK_STS = '0' AND
|
||
TxType = ?
|
||
)
|
||
</Sentence>
|
||
<Fields>CHK_DT_YED|RUT_CORG|BUS_TYP|BUS_TYP|</Fields>
|
||
</DynSentence>
|
||
<!-- 更新状态:4-关键信息不符 -->
|
||
<DynSentence name="UPD_CAPTXNJNL_ERR"><!-- 更新 T、T-1、T+1 日我方关键信息不符的流水记录的对账状态 -->
|
||
<Sentence>
|
||
UPDATE CAPTXNJNL
|
||
SET CHK_STS = '4'
|
||
WHERE AC_DT >= ? AND
|
||
CHK_STS = '0' AND
|
||
TXN_MOD = '99' AND
|
||
CORG_NO = ? AND
|
||
TXN_STS IN ( 'S' , 'T' ) AND
|
||
ORD_TYP = ? AND
|
||
CAP_ORD_NO IN ( SELECT TERMSERNUM
|
||
FROM CAPCHKABC
|
||
WHERE CHK_STS = '0' AND
|
||
TxType = ?
|
||
)
|
||
</Sentence>
|
||
<Fields>CHK_DT_YED|RUT_CORG|BUS_TYP|BUS_TYP|</Fields>
|
||
</DynSentence>
|
||
<DynSentence name="UPD_CAPCHKABC_ERR"><!-- 更新 T 日对方关键信息不符的流水记录的对账状态 -->
|
||
<Sentence>
|
||
UPDATE CAPCHKABC a
|
||
SET a.CHK_STS = '4'
|
||
WHERE TxType = ? AND
|
||
EXISTS ( SELECT 1
|
||
FROM CAPTXNJNL b
|
||
WHERE b.AC_DT >= ? AND
|
||
b.TXN_MOD = '99' AND
|
||
b.CHK_STS = '4' AND
|
||
b.CORG_NO = ? AND
|
||
b.ORD_TYP = a.TxType AND
|
||
b.TXN_STS IN ( 'S' , 'T' ) AND
|
||
b.CAP_ORD_NO = a.TERMSERNUM
|
||
)
|
||
</Sentence>
|
||
<Fields>BUS_TYP|CHK_DT_YED|RUT_CORG|</Fields>
|
||
</DynSentence>
|
||
<!-- 入差错表[我方]:2-我方有对方无 -->
|
||
<DynSentence name="INS_CAPTXNJNL_MOR"><!-- T-1 日我方有对方无的流水记录入差错表 -->
|
||
<Sentence>
|
||
INSERT INTO PWMTCKER ( RUT_CORG , COP_BUS_TYP , ERR_KEY_ID , CHK_ERR_DT ,
|
||
CHK_ERR_TM , CHK_BAT_NO , TX_CD , CHK_TYP ,
|
||
CHK_ERR_TYP , ERR_STS , PAY_TX_AMT , OLD_TX_DT ,
|
||
OLD_JRN_NO , OLD_ORD_NO , OLD_CORG_KEY
|
||
)
|
||
SELECT ? AS RUT_CORG , ORD_TYP AS COP_BUS_TYP , 'LCL' || CAP_ORD_NO AS ERR_KEY_ID ,
|
||
? AS CHK_ERR_DT , ? AS CHK_ERR_TM , ? AS CHK_BAT_NO , ? AS TX_CD , '1' AS CHK_TYP ,
|
||
CASE ORD_TYP WHEN '11' THEN '3' ELSE '2' END AS CHK_ERR_TYP , '0' AS ERR_STS ,
|
||
TXN_AMT AS PAY_TX_AMT , AC_DT AS OLD_TX_DT , JRN_NO AS OLD_JRN_NO ,
|
||
CAP_ORD_NO AS OLD_ORD_NO , CAP_ORD_NO AS OLD_CORG_KEY
|
||
FROM CAPTXNJNL
|
||
WHERE AC_DT = ? AND
|
||
CHK_STS = '0' AND
|
||
TXN_MOD = '99' AND
|
||
CORG_NO = ? AND
|
||
TXN_STS IN ( 'S' , 'T' ) AND
|
||
ORD_TYP = ?
|
||
</Sentence>
|
||
<Fields>RUT_CORG|CHK_ERR_DT|CHK_ERR_TM|CHK_BAT_NO|TX_CD|CHK_DT_YED|RUT_CORG|BUS_TYP|</Fields>
|
||
</DynSentence>
|
||
<!-- 入差错表[对方]:4-关键信息不符 2-对方有我方无 记录状态未知 -->
|
||
<!--DynSentence name="INS_CAPCHKABC_NOSUC"><T 日对方非对账成功且交易状态不为失败的流水记录入差错表>
|
||
<Sentence>
|
||
INSERT INTO PWMTCKER ( RUT_CORG , COP_BUS_TYP , ERR_KEY_ID , CHK_ERR_DT ,
|
||
CHK_ERR_TM , CHK_BAT_NO , TX_CD , CHK_TYP ,
|
||
CHK_ERR_TYP , ERR_STS , FIL_TX_AMT
|
||
)
|
||
SELECT ? AS RUT_CORG , TxType AS COP_BUS_TYP , 'THD' || TERMSERNUM AS ERR_KEY_ID ,
|
||
? AS CHK_ERR_DT , ? AS CHK_ERR_TM , ? AS CHK_BAT_NO , ? AS TX_CD , '1' AS CHK_TYP ,
|
||
CASE WHEN CHK_STS='0' THEN
|
||
CASE WHEN TxType='11' THEN '2' ELSE '3' END
|
||
WHEN CHK_STS='4' THEN '4' END AS CHK_ERR_TYP , '0' AS ERR_STS ,
|
||
AMOUNT AS FIL_TX_AMT
|
||
FROM CAPCHKABC
|
||
WHERE CHK_STS != '1' AND
|
||
TxType = ? AND
|
||
Status != '1'
|
||
</Sentence>
|
||
<Fields>RUT_CORG|CHK_ERR_DT|CHK_ERR_TM|CHK_BAT_NO|TX_CD|BUS_TYP|</Fields>
|
||
</DynSentence-->
|
||
<!-- 统计:我方有对方无 -->
|
||
<DynSentence name="CNT_CAPTXNJNL_LCLMOR"><!-- 统计 T-1 日我方有对方无的流水记录总金额及总笔数 -->
|
||
<Sentence>
|
||
SELECT COUNT( * ) AS SUM_LCLMOR_CNT ,
|
||
NVL( SUM( TXN_AMT ) , 0 ) AS SUM_LCLMOR_AMT
|
||
FROM CAPTXNJNL
|
||
WHERE TXN_MOD = '99' AND
|
||
CORG_NO = ? AND
|
||
TXN_STS IN ( 'S' , 'T' ) AND
|
||
ORD_TYP = ? AND
|
||
CHK_STS = '0' AND
|
||
AC_DT = ?
|
||
</Sentence>
|
||
<Fields>RUT_CORG|BUS_TYP|CHK_DT_YED|</Fields>
|
||
</DynSentence>
|
||
<!-- 更新对账状态:2-我方有对方无 -->
|
||
<DynSentence name="UPD_CAPTXNJNL_MOR"><!-- 更新 T-1 日我方有对方无的流水记录的对账状态 -->
|
||
<Sentence>
|
||
UPDATE CAPTXNJNL
|
||
SET CHK_STS = '2'
|
||
WHERE AC_DT = ? AND
|
||
CHK_STS = '0' AND
|
||
TXN_MOD = '99' AND
|
||
CORG_NO = ? AND
|
||
TXN_STS IN ( 'S' , 'T' ) AND
|
||
ORD_TYP = ?
|
||
</Sentence>
|
||
<Fields>CHK_DT_YED|RUT_CORG|BUS_TYP|</Fields>
|
||
</DynSentence>
|
||
<!-- 统计:存疑 -->
|
||
<DynSentence name="CNT_CHKABC_DOUBTAMT"><!-- 统计 T 日我方存疑的流水记录的总金额及总笔数 -->
|
||
<Sentence>
|
||
SELECT COUNT( * ) AS SUM_DOUBT_CNT ,
|
||
NVL( SUM( TXN_AMT ) , 0 ) AS SUM_DOUBT_AMT
|
||
FROM CAPTXNJNL
|
||
WHERE AC_DT = ? AND
|
||
TXN_MOD = '99' AND
|
||
CHK_STS = '0' AND
|
||
CORG_NO = ? AND
|
||
TXN_STS IN ( 'S' , 'T' ) AND
|
||
ORD_TYP = ?
|
||
</Sentence>
|
||
<Fields>CHK_FIL_DT|RUT_CORG|BUS_TYP|</Fields>
|
||
</DynSentence>
|
||
<!-- 统计:对方有我方无 -->
|
||
<DynSentence name="CNT_CAPCHKABC_THDMOR"><!-- 统计 T 日对方有我方无的流水记录的总金额及总笔数 -->
|
||
<Sentence>
|
||
SELECT COUNT( * ) AS SUM_THDMOR_CNT ,
|
||
NVL( SUM( AMOUNT ) , 0 ) AS SUM_THDMOR_AMT
|
||
FROM CAPCHKABC
|
||
WHERE CHK_STS = '0' AND
|
||
TxType = ?
|
||
</Sentence>
|
||
<Fields>BUS_TYP|</Fields>
|
||
</DynSentence>
|
||
<!-- 统计:对账文件 -->
|
||
<DynSentence name="CNT_CHKABC_TOTAMT"><!-- 统计对账文件的总金额及总笔数 -->
|
||
<Sentence>
|
||
SELECT COUNT( * ) AS SUM_FIL_CNT ,
|
||
NVL( SUM( AMOUNT ) , 0 ) AS SUM_FIL_AMT
|
||
FROM CAPCHKABC
|
||
WHERE TxType = ?
|
||
</Sentence>
|
||
<Fields>BUS_TYP|</Fields>
|
||
</DynSentence>
|
||
<!-- 统计:平帐 -->
|
||
<DynSentence name="CNT_CHKABC_MCHAMT"><!-- 统计平帐的流水记录的总金额及总笔数 -->
|
||
<Sentence>
|
||
SELECT COUNT( * ) AS SUM_MCH_CNT ,
|
||
NVL( SUM( AMOUNT ) , 0 ) AS SUM_MCH_AMT
|
||
FROM CAPCHKABC
|
||
WHERE CHK_STS = '1' AND
|
||
TxType = ?
|
||
</Sentence>
|
||
<Fields>BUS_TYP|</Fields>
|
||
</DynSentence>
|
||
<!-- 更新主控中统计 -->
|
||
<DynSentence name="UPD_PWMTCKCT_TOTAMT"><!-- 更新对账主控表中的统计金额及总笔数 -->
|
||
<Sentence>
|
||
UPDATE PWMTCKCT
|
||
SET FIL_TOT_AMT = ? , FIL_TOT_CNT = ? ,
|
||
TOT_MCH_AMT = ? , TOT_MCH_CNT = ? ,
|
||
ERR_TOT_AMT = ? , ERR_TOT_CNT = ? ,
|
||
LONG_AMT = ? , LONG_CNT = ? ,
|
||
SHORT_AMT = ? , SHORT_CNT = ? ,
|
||
DOUBT_AMT = ? , DOUBT_CNT = ? ,
|
||
DBT_ERR_AMT = ? , DBT_ERR_CNT = ? ,
|
||
CHK_FIL_STS = ? , CHK_END_TM = ?
|
||
WHERE CHK_BAT_NO = ?
|
||
</Sentence>
|
||
<Fields>FIL_TOT_AMT|FIL_TOT_CNT|TOT_MCH_AMT|TOT_MCH_CNT|ERR_TOT_AMT|ERR_TOT_CNT|LONG_AMT|LONG_CNT|SHORT_AMT|SHORT_CNT|DOUBT_AMT|DOUBT_CNT|DBT_ERR_AMT|DBT_ERR_CNT|CHK_FIL_STS|CHK_END_TM|CHK_BAT_NO|</Fields>
|
||
</DynSentence>
|
||
<FlowCtrl>
|
||
<!-- 输入参数检查 -->
|
||
<Quote name="Input_Check" />
|
||
|
||
<!-- 交易初始化 -->
|
||
<Exec func="PUB:InitGWA" error="IGNORE" />
|
||
<If condition="~RetCod!=0">
|
||
<Set>Rsp_Msg=交易初始化失败 </Set>
|
||
<Return />
|
||
</If>
|
||
|
||
<Exec func="PUB:BeginWork" /><!-- 开始事务 -->
|
||
|
||
<!-- 变量初始化 -->
|
||
<If condition="ISNULL($CHK_DAT)">
|
||
<Set>CHK_FIL_DT=CALCDATE($GWA.AC_DT,-,d,1)</Set> <!-- 对账文件日期(T 日) -->
|
||
</If>
|
||
<Else>
|
||
<Set>CHK_FIL_DT=$CHK_DAT</Set> <!-- 对账文件日期(T 日) -->
|
||
</Else>
|
||
<Set>BUS_TYP=$BUS_TYP</Set> <!-- 业务类型 11:代收 12:代付 -->
|
||
<Set>RUT_CORG=ABC</Set> <!-- 路径合作机构号 -->
|
||
<Set>CHK_BEG_TM=GETDATETIME(HHMISS)</Set> <!-- 对账开始时间 -->
|
||
<Set>CHK_DT_YED=CALCDATE($CHK_FIL_DT,-,d,1)</Set> <!-- T-1 日日期 -->
|
||
<Set>CHK_ERR_DT=$GWA.AC_DT</Set> <!-- 差错创建日期 -->
|
||
<Set>TX_CD=$GWA.TX_CD</Set> <!-- 交易码 -->
|
||
|
||
<!-- 查询对账总控表 -->
|
||
<Exec func="PUB:ReadRecord" error="IGNORE" desc="查询记录">
|
||
<Arg name="SqlCmd" value="QRY_PWMTCKCT" />
|
||
</Exec>
|
||
<If condition="~RetCod=0">
|
||
<If condition="INTCMP($CHK_STS,3,4)">
|
||
<!-- 已成功对账,退出交易 -->
|
||
<Set>Rsp_Msg=STRCAT([,$CHK_FIL_DT,],日已成功对账,交易退出 )</Set>
|
||
<Return />
|
||
</If>
|
||
<Else>
|
||
<Exec func="PUB:ExecSql" error="IGNORE" desc="删除记录">
|
||
<Arg name="SqlCmd" value="DEL_PWMTCKCT" />
|
||
</Exec>
|
||
<If condition="~RetCod!=0">
|
||
<Set>Rsp_Msg=删除对账主控表中记录失败 </Set>
|
||
<Return />
|
||
</If>
|
||
</Else>
|
||
</If>
|
||
<ElseIf condition="~RetCod=-1">
|
||
<Set>Rsp_Msg=查询对账总控表失败 </Set>
|
||
<Return />
|
||
</ElseIf>
|
||
|
||
<!-- 对账文件路径设置 -->
|
||
<Quote name="ABC_CFG"/> <!-- 获取农业银行参数 -->
|
||
<Set>FIL_NM=STRCAT($MerchantNo,_,$BusCode,_,$CHK_FIL_DT,.txt)</Set>
|
||
<Set>FIL_DIR=STRCAT(GETENV(HWORKDIR),/dat/cap/recv/ABC/)</Set>
|
||
<Set>FIL_PATH=STRCAT($FIL_DIR,$FIL_NM)</Set>
|
||
|
||
<!-- 检查对账文件 -->
|
||
<Exec func="PUB:IsValidFile" error="IGNORE" desc="检查文件">
|
||
<Arg name="FileName" value="$FIL_PATH" />
|
||
</Exec>
|
||
<If condition="~RetCod!=0">
|
||
<Exec func="PUB:RollBackWork" />
|
||
<Set>Rsp_Msg=机构对账文件不存在 </Set>
|
||
<Return />
|
||
</If>
|
||
|
||
<!-- 获取用于组成对账批次号的序号 -->
|
||
<Exec func="PUB:GetUniqueNo" desc="获取序号">
|
||
<Arg name="Name" value="PWMSEQ" />
|
||
<Arg name="SeqNam" value="ck_sequence" />
|
||
<Arg name="Len" value="8" />
|
||
</Exec>
|
||
<If condition="~RetCod!=0">
|
||
<Exec func="PUB:RollBackWork" />
|
||
<Set>Rsp_Msg=获取批次号的序号失败 </Set>
|
||
<Return/>
|
||
</If>
|
||
<Set>CHK_BAT_NO=STRCAT($CHK_DAT,$PWMSEQ)</Set><!-- 对账批次号 -->
|
||
|
||
<!-- 登记对账总控表,对账状态为 1:文件已获取 -->
|
||
<Set>PWMTCKCT.CHK_BAT_NO=$CHK_BAT_NO</Set> <!-- 对账批次号 -->
|
||
<Set>PWMTCKCT.RUT_CORG=$RUT_CORG</Set> <!-- 路径合作机构号 -->
|
||
<Set>PWMTCKCT.COP_BUS_TYP=$BUS_TYP</Set> <!-- 合作业务类型 11:代收 12:代付 -->
|
||
<Set>PWMTCKCT.CHK_FIL_DT=$CHK_FIL_DT</Set> <!-- 路径合作机构对账文件日期 -->
|
||
<Set>PWMTCKCT.FIL_DT_SEQ=01</Set> <!-- 对账文件日期序号 -->
|
||
<Set>PWMTCKCT.CHK_FIL_NM=$FIL_NM</Set> <!-- 对账文件名称 -->
|
||
<Set>PWMTCKCT.FILE_RCV_DT=$GWA.AC_DT</Set> <!-- 对账文件获取日期 -->
|
||
<Set>PWMTCKCT.CHK_TYP=1</Set> <!-- 对账类型 -->
|
||
<Set>PWMTCKCT.CHK_BEG_TM=$CHK_BEG_TM</Set> <!-- 对账开始时间 -->
|
||
<Set>PWMTCKCT.CHK_END_TM=GETDATETIME(HHMISS)</Set> <!-- 对账结束时间 -->
|
||
<Set>PWMTCKCT.AC_DT=$GWA.AC_DT</Set> <!-- 会计日期 -->
|
||
<Set>PWMTCKCT.CHK_DT=$CHK_FIL_DT</Set> <!-- 对账日期 -->
|
||
<Set>PWMTCKCT.OTHER_INF=CAP1</Set> <!-- 用于存储类型 -->
|
||
<Set>PWMTCKCT.CHK_FIL_STS=1</Set> <!-- 对账状态 1:文件已获取 -->
|
||
<Set>PWMTCKCT.CHK_SRV=OCAPCHK1</Set> <!-- 服务名 -->
|
||
<Set>PWMTCKCT.CHK_TX_CD=$GWA.TX_CD</Set> <!-- 交易码 -->
|
||
<Set>PWMTCKCT.TM_SMP=GETDATETIME()</Set> <!-- 时间戳 -->
|
||
|
||
<Exec func="PUB:InsertRecord" error="IGNORE" desc="登记总控">
|
||
<Arg name="TblNam" value="PWMTCKCT" />
|
||
<Arg name="GrpNam" value="PWMTCKCT" />
|
||
</Exec>
|
||
<If condition="~RetCod!=0">
|
||
<Exec func="PUB:RollBackWork" />
|
||
<Set>Rsp_Msg=登记对账总控表失败 </Set>
|
||
<Return />
|
||
</If>
|
||
|
||
<!-- 清空对账文件记录表 -->
|
||
<Exec func="PUB:ExecSql" error="IGNORE" desc="删除记录">
|
||
<Arg name="SqlCmd" value="DEL_CAPCHKABC" />
|
||
</Exec>
|
||
<If condition="~RetCod=-1">
|
||
<Exec func="PUB:RollBackWork" /><!-- 回滚事务 -->
|
||
<Set>Rsp_Msg=清空对账文件记录表失败 </Set>
|
||
<Return />
|
||
</If>
|
||
|
||
<!-- 导入机构对账文件到数据库表 -->
|
||
<Exec func="PUB:ImportToDB" error="IGNORE" desc="导入文件">
|
||
<Arg name="FormatName" value="ABCCHKFMT" />
|
||
<Arg name="FileName" value="$FIL_PATH" />
|
||
<Arg name="TableName" value="CAPCHKABC" />
|
||
</Exec>
|
||
<If condition="~RetCod=1">
|
||
<Exec func="PUB:RollBackWork" /><!-- 回滚事务 -->
|
||
<Set>Rsp_Msg=导入机构对账文件到数据库表失败-主键冲突 </Set>
|
||
<Return />
|
||
</If>
|
||
<ElseIf condition="~RetCod=-1">
|
||
<Exec func="PUB:RollBackWork" /><!-- 回滚事务 -->
|
||
<Set>Rsp_Msg=导入机构对账文件到数据库表失败 </Set>
|
||
<Return />
|
||
</ElseIf>
|
||
|
||
<!-- 更新对账总控表对账状态 -->
|
||
<Set>CHK_FIL_STS=2</Set> <!-- 对账状态 2:文件已入库 -->
|
||
<Set>CHK_END_TM=GETDATETIME(HHMISS)</Set> <!-- 对账结束时间 -->
|
||
<Quote name="UpdateStatus" />
|
||
|
||
<!-- 统计变量初始化 -->
|
||
<Set>SUM_FIL_CNT=0</Set>
|
||
<Set>SUM_FIL_AMT=0</Set>
|
||
<Set>SUM_MCH_CNT=0</Set>
|
||
<Set>SUM_MCH_AMT=0</Set>
|
||
<Set>SUM_ERR_CNT=0</Set>
|
||
<Set>SUM_ERR_AMT=0</Set>
|
||
<Set>SUM_LONG_CNT=0</Set>
|
||
<Set>SUM_LONG_AMT=0</Set>
|
||
<Set>SUM_SHORT_CNT=0</Set>
|
||
<Set>SUM_SHORT_AMT=0</Set>
|
||
<Set>SUM_DOUBT_CNT=0</Set>
|
||
<Set>SUM_DOUBT_AMT=0</Set>
|
||
<Set>SUM_DBTERR_CNT=0</Set>
|
||
<Set>SUM_DBTERR_AMT=0</Set>
|
||
|
||
<!-- 更新 T、T-1、T+1 日[我方]成功对账的流水记录的对账状态为 1:对账成功 -->
|
||
<Exec func="PUB:ExecSql" error="IGNORE">
|
||
<Arg name="SqlCmd" value="UPD_CAPTXNJNL_MCH" />
|
||
</Exec>
|
||
<If condition="~RetCod=-1">
|
||
<Exec func="PUB:RollBackWork" />
|
||
<Set>Rsp_Msg=更新我方成功对账的流水记录的对账状态失败 </Set>
|
||
<Return />
|
||
</If>
|
||
|
||
<!-- 更新 T 日[对方]成功对账的流水记录的对账状态为 1:对账成功 -->
|
||
<Exec func="PUB:ExecSql" error="IGNORE">
|
||
<Arg name="SqlCmd" value="UPD_CAPCHKABC_MCH" />
|
||
</Exec>
|
||
<If condition="~RetCod=-1">
|
||
<Exec func="PUB:RollBackWork" />
|
||
<Set>Rsp_Msg=更新对方成功对账的流水记录的对账状态失败 </Set>
|
||
<Return />
|
||
</If>
|
||
|
||
<!-- T-1、T 和 T+1 日[我方]关键信息不符的流水记录入差错表 -->
|
||
<Set>CHK_ERR_TM=GETDATETIME(HHMISS)</Set> <!-- 差错创建时间 -->
|
||
<Exec func="PUB:ExecSql" error="IGNORE">
|
||
<Arg name="SqlCmd" value="INS_CAPTXNJNL_ERR" />
|
||
</Exec>
|
||
<If condition="~RetCod=-1">
|
||
<Exec func="PUB:RollBackWork" />
|
||
<Set>Rsp_Msg=我方对账关键信息不符的流水记录入差错表失败 </Set>
|
||
<Return />
|
||
</If>
|
||
<ElseIf condition="~RetCod=1">
|
||
<Set>RspMsg=我方对账关键信息不符的流水记录重复入差错表-忽略 </Set>
|
||
</ElseIf>
|
||
|
||
<!-- 统计 T-1 日[我方]存疑转差错的流水记录的总金额及总笔数 -->
|
||
<Exec func="PUB:ReadRecord" error="IGNORE">
|
||
<Arg name="SqlCmd" value="CNT_CHKABC_DBTERR" />
|
||
</Exec>
|
||
<If condition="~RetCod=-1">
|
||
<Exec func="PUB:RollBackWork" />
|
||
<Set>Rsp_Msg=统计我方存疑转差错的流水记录的总金额及总笔数失败 </Set>
|
||
<Return />
|
||
</If>
|
||
|
||
<!-- 统计 T、T-1、T+1 日[我方]关键信息不符的流水记录的总金额及总笔数 -->
|
||
<Exec func="PUB:ReadRecord" error="IGNORE">
|
||
<Arg name="SqlCmd" value="CNT_CAPTXNJNL_ERR" />
|
||
</Exec>
|
||
<If condition="~RetCod=-1">
|
||
<Exec func="PUB:RollBackWork" />
|
||
<Set>Rsp_Msg=统计我方关键信息不符的流水记录的总金额及总笔数失败 </Set>
|
||
<Return />
|
||
</If>
|
||
|
||
<!-- 更新 T、T-1、T+1 日[我方]关键信息不符的流水记录的对账状态为 4:关键信息不符 -->
|
||
<Exec func="PUB:ExecSql" error="IGNORE">
|
||
<Arg name="SqlCmd" value="UPD_CAPTXNJNL_ERR" />
|
||
</Exec>
|
||
<If condition="~RetCod=-1">
|
||
<Exec func="PUB:RollBackWork" />
|
||
<Set>Rsp_Msg=更新我方存在关键信息不符的流水记录的对账状态失败 </Set>
|
||
<Return />
|
||
</If>
|
||
|
||
<!-- 更新 T 日[对方]关键信息不符的流水记录的对账状态为 4:关键信息不符 -->
|
||
<Exec func="PUB:ExecSql" error="IGNORE">
|
||
<Arg name="SqlCmd" value="UPD_CAPCHKABC_ERR" />
|
||
</Exec>
|
||
<If condition="~RetCod=-1">
|
||
<Exec func="PUB:RollBackWork" />
|
||
<Set>Rsp_Msg=更新对方存在关键信息不符的流水记录的对账状态失败 </Set>
|
||
<Return />
|
||
</If>
|
||
|
||
<!-- T-1 日[我方有对方无]的流水记录入差错表 -->
|
||
<Set>CHK_ERR_TM=GETDATETIME(HHMISS)</Set> <!-- 差错创建时间 -->
|
||
<Exec func="PUB:ExecSql" error="IGNORE">
|
||
<Arg name="SqlCmd" value="INS_CAPTXNJNL_MOR" />
|
||
</Exec>
|
||
<If condition="~RetCod=-1">
|
||
<Exec func="PUB:RollBackWork" />
|
||
<Set>Rsp_Msg=我方有对方无的流水记录入差错表失败 </Set>
|
||
<Return />
|
||
</If>
|
||
<ElseIf condition="~RetCod=1">
|
||
<Set>RspMsg=我方有对方无的流水记录重复入差错表-忽略 </Set>
|
||
</ElseIf>
|
||
|
||
<!-- T 日[对方]非对账成功且交易状态不为失败的流水记录入差错表 -->
|
||
<!--Set>CHK_ERR_TM=GETDATETIME(HHMISS)</Set> <差错创建时间 >
|
||
<Exec func="PUB:ExecSql" error="IGNORE">
|
||
<Arg name="SqlCmd" value="INS_CAPCHKABC_NOSUC" />
|
||
</Exec>
|
||
<If condition="~RetCod=-1">
|
||
<Exec func="PUB:RollBackWork" />
|
||
<Set>Rsp_Msg=对方非对账成功且交易状态不为失败的流水记录入差错表失败 </Set>
|
||
<Return />
|
||
</If>
|
||
<ElseIf condition="~RetCod=1">
|
||
<Set>RspMsg=对方非对账成功且交易状态不为失败的流水记录重复入差错表-忽略 </Set>
|
||
</ElseIf-->
|
||
|
||
<!-- 统计 T-1 日[我方有对方无]的流水记录的总金额及总笔数 -->
|
||
<Exec func="PUB:ReadRecord" error="IGNORE" desc="统计">
|
||
<Arg name="SqlCmd" value="CNT_CAPTXNJNL_LCLMOR" />
|
||
</Exec>
|
||
<If condition="~RetCod=-1">
|
||
<Exec func="PUB:RollBackWork" />
|
||
<Set>Rsp_Msg=统计我方有对方无的流水记录的总金额及总笔数失败 </Set>
|
||
<Return />
|
||
</If>
|
||
|
||
<!-- 更新 T-1 日[我方有对方无]的流水记录的对账状态为 2:我方有对方无 -->
|
||
<Exec func="PUB:ExecSql" error="IGNORE">
|
||
<Arg name="SqlCmd" value="UPD_CAPTXNJNL_MOR" />
|
||
</Exec>
|
||
<If condition="~RetCod=-1">
|
||
<Exec func="PUB:RollBackWork" />
|
||
<Set>Rsp_Msg=更新我方有对方无的流水记录的对账状态失败 </Set>
|
||
<Return />
|
||
</If>
|
||
|
||
<!-- 统计 T 日[我方]存疑的流水记录的总金额及总笔数 -->
|
||
<Exec func="PUB:ReadRecord" error="IGNORE" desc="统计">
|
||
<Arg name="SqlCmd" value="CNT_CHKABC_DOUBTAMT" />
|
||
</Exec>
|
||
<If condition="~RetCod=-1">
|
||
<Exec func="PUB:RollBackWork" />
|
||
<Set>Rsp_Msg=统计我方存疑的流水记录的总金额及总笔数失败 </Set>
|
||
<Return />
|
||
</If>
|
||
|
||
<!-- 统计 T 日[对方]有我方无的流水记录的总金额及总笔数 -->
|
||
<Exec func="PUB:ReadRecord" error="IGNORE" desc="统计">
|
||
<Arg name="SqlCmd" value="CNT_CAPCHKABC_THDMOR" />
|
||
</Exec>
|
||
<If condition="~RetCod=-1">
|
||
<Exec func="PUB:RollBackWork" />
|
||
<Set>Rsp_Msg=统计对方有我方无的流水记录的总金额及总笔数失败 </Set>
|
||
<Return />
|
||
</If>
|
||
|
||
<!-- 对账文件总金额及总笔数统计 -->
|
||
<Exec func="PUB:ReadRecord" error="IGNORE">
|
||
<Arg name="SqlCmd" value="CNT_CHKABC_TOTAMT" />
|
||
</Exec>
|
||
<If condition="~RetCod=-1">
|
||
<Exec func="PUB:RollBackWork" />
|
||
<Set>Rsp_Msg=统计对账文件总金额及总笔数失败 </Set>
|
||
<Return />
|
||
</If>
|
||
|
||
<!-- 平帐的流水记录的总金额及总笔数统计 -->
|
||
<Exec func="PUB:ReadRecord" error="IGNORE">
|
||
<Arg name="SqlCmd" value="CNT_CHKABC_MCHAMT" />
|
||
</Exec>
|
||
<If condition="~RetCod=-1">
|
||
<Exec func="PUB:RollBackWork" />
|
||
<Set>Rsp_Msg=统计平帐的流水记录的总金额及总笔数失败 </Set>
|
||
<Return />
|
||
</If>
|
||
|
||
<!-- ====================== 更新对账总控表中统计的金额及笔数 ====================== -->
|
||
<Set>CHK_BAT_NO=$CHK_BAT_NO</Set> <!-- 对账批次号 -->
|
||
<Set>FIL_TOT_AMT=$SUM_FIL_AMT</Set> <!-- 对账文件总金额 -->
|
||
<Set>FIL_TOT_CNT=$SUM_FIL_CNT</Set> <!-- 对账文件总笔数 -->
|
||
<Set>TOT_MCH_AMT=$SUM_MCH_AMT</Set> <!-- 平帐总金额 -->
|
||
<Set>TOT_MCH_CNT=$SUM_MCH_CNT</Set> <!-- 平帐总笔数 -->
|
||
<Set>ERR_TOT_AMT=$SUM_ERR_AMT</Set> <!-- 差错总笔数 -->
|
||
<Set>ERR_TOT_CNT=$SUM_ERR_CNT</Set> <!-- 差错总笔数 -->
|
||
<If condition="INTCMP($BUS_TYP,3,11)"><!-- 代收 -->
|
||
<Set>LONG_AMT=$SUM_THDMOR_AMT</Set> <!-- 长款总金额 -->
|
||
<Set>LONG_CNT=$SUM_THDMOR_CNT</Set> <!-- 长款总笔数 -->
|
||
<Set>SHORT_AMT=$SUM_LCLMOR_AMT</Set> <!-- 短款总金额 -->
|
||
<Set>SHORT_CNT=$SUM_LCLMOR_CNT</Set> <!-- 短款总笔数 -->
|
||
</If>
|
||
<Else><!-- 代付 -->
|
||
<Set>LONG_AMT=$SUM_LCLMOR_AMT</Set> <!-- 长款总金额 -->
|
||
<Set>LONG_CNT=$SUM_LCLMOR_CNT</Set> <!-- 长款总笔数 -->
|
||
<Set>SHORT_AMT=$SUM_THDMOR_AMT</Set> <!-- 短款总金额 -->
|
||
<Set>SHORT_CNT=$SUM_THDMOR_CNT</Set> <!-- 短款总笔数 -->
|
||
</Else>
|
||
<Set>DOUBT_AMT=$SUM_DOUBT_AMT</Set> <!-- 存疑金额 -->
|
||
<Set>DOUBT_CNT=$SUM_DOUBT_CNT</Set> <!-- 存疑笔数 -->
|
||
<Set>DBT_ERR_AMT=$SUM_DBTERR_AMT</Set> <!-- 存疑转差错金额 -->
|
||
<Set>DBT_ERR_CNT=$SUM_DBTERR_CNT</Set> <!-- 存疑转差错笔数 -->
|
||
<Set>CHK_FIL_STS=4</Set> <!-- 对账状态 4:对账结束 -->
|
||
<Set>CHK_END_TM=GETDATETIME(HHMISS)</Set> <!-- 对账结束时间 -->
|
||
|
||
<Exec func="PUB:ExecSql" error="IGNORE" desc="更新对账总控表">
|
||
<Arg name="SqlCmd" value="UPD_PWMTCKCT_TOTAMT" />
|
||
</Exec>
|
||
<If condition="~RetCod!=0">
|
||
<Exec func="PUB:RollBackWork" />
|
||
<Set>Rsp_Msg=更新对账主控表中统计金额及笔数失败 </Set>
|
||
<Return />
|
||
</If>
|
||
|
||
<Exec func="PUB:CommitWork" /><!-- 提交事务 -->
|
||
</FlowCtrl>
|
||
</Transaction>
|
||
|
||
<Transaction code="abc_getfile" log_switch="1" desc="农业银行获取对账文件">
|
||
<FlowCtrl>
|
||
<!-- 如果输入的对账日期不为空,判断对账日期格式是否正确 -->
|
||
<If condition="NOT(ISNULL($CHK_DAT))">
|
||
<If condition="INTCMP(CHECKDATE($CHK_DAT),4,0)">
|
||
<Set>Rsp_Msg=输入对账日期格式不正确 </Set>
|
||
<Return />
|
||
</If>
|
||
</If>
|
||
|
||
<!-- 交易初始化 -->
|
||
<Exec func="PUB:InitGWA" error="IGNORE" />
|
||
<If condition="~RetCod!=0">
|
||
<Set>Rsp_Msg=交易初始化失败 </Set>
|
||
<Return />
|
||
</If>
|
||
|
||
<!-- 对账日期 -->
|
||
<If condition="ISNULL($CHK_DAT)">
|
||
<Set>CHK_FIL_DT=CALCDATE($GWA.AC_DT,-,d,1)</Set>
|
||
</If>
|
||
<Else>
|
||
<Set>CHK_FIL_DT=$CHK_DAT</Set>
|
||
</Else>
|
||
|
||
<Set>TXN_DT=GETDATETIME()</Set> <!-- 交易时间 -->
|
||
<Quote name="Check_Cfg_ABC"/> <!-- 获取农业银行参数 -->
|
||
|
||
<!--到农行获取对账文件-->
|
||
<Set>LOCAL_USR=$PARA.LOCAL_USR</Set>
|
||
<Set>LOCAL_TYP=sftp</Set>
|
||
<Set>LOCAL_DIR=STRCAT(GETENV(WORKDIR),/dat/cap/recv/ABC)</Set>
|
||
|
||
<Set>REMOTE_IP=$PARA.REMOTE_IP</Set>
|
||
<Set>REMOTE_USR=$PARA.REMOTE_USR</Set>
|
||
<Set>REMOTE_PWD=$PARA.REMOTE_PWD</Set>
|
||
<Set>REMOTE_TYP=$PARA.REMOTE_TYP</Set>
|
||
<Set>REMOTE_DIR=$PARA.REMOTE_DIR</Set>
|
||
|
||
<Set>FTP_MOD=get</Set>
|
||
<Set>FIL_NAM=STRCAT($MerchantNo,_,$BusCode,_,$CHK_FIL_DT,.txt)</Set>
|
||
|
||
<Exec func="PUB:CallThirdComm">
|
||
<Arg name="HTxnCd" value="100005"/>
|
||
<Arg name="ObjSvr" value="S.FILSVR"/>
|
||
</Exec>
|
||
|
||
|
||
</FlowCtrl>
|
||
</Transaction>
|
||
</Application>
|