312 lines
12 KiB
XML
312 lines
12 KiB
XML
<?xml version='1.0' encoding='UTF-8'?>
|
|
<Package>
|
|
<!-- 单笔代收付错误码转换 -->
|
|
<Function name="CAP_SIG_CSW">
|
|
<Input>CSW_TYP|CAP_TYP|CORG_NO|TRSP_CD|TRSP_MSG|</Input>
|
|
<Output>DST_RSP_CD|DST_RSP_MSG|DST_TXN_STS|</Output>
|
|
<DynSentence name="SleDftRspCd"> <!--默认错误码 -->
|
|
<Sentence>
|
|
SELECT RSP_CD DFT_RSP_CD,RSP_MSG DFT_RSP_MSG,'T' AS DST_TXN_STS FROM CAPCODEINF
|
|
WHERE RUL_TYP=?
|
|
AND CAP_TYP=?
|
|
AND IS_DFT='1'
|
|
</Sentence>
|
|
<Fields>RUL_TYP|CAP_TYP|</Fields>
|
|
</DynSentence>
|
|
|
|
<DynSentence name="QRYBYRSPCD"> <!--错误码匹配 -->
|
|
<Sentence>
|
|
SELECT DST_RSP_CD ,DST_RSP_MSG ,DST_TXN_STS FROM CAPCSWRULE
|
|
WHERE RUL_TYP=?
|
|
AND CAP_TYP=?
|
|
AND CORG_NO=?
|
|
AND CSW_TYP='0'
|
|
AND SRC_RSP_CD=?
|
|
AND ROWNUM='1'
|
|
</Sentence>
|
|
<Fields>RUL_TYP|CAP_TYP|CORG_NO|SRC_RSP_CD|</Fields>
|
|
</DynSentence>
|
|
|
|
<DynSentence name="QRYBYRSPMSG"> <!--错误信息完全匹配 -->
|
|
<Sentence>
|
|
SELECT DST_RSP_CD ,DST_RSP_MSG ,DST_TXN_STS FROM CAPCSWRULE
|
|
WHERE RUL_TYP=?
|
|
AND CAP_TYP=?
|
|
AND CORG_NO=?
|
|
AND CSW_TYP='1'
|
|
AND SRC_RSP_MSG=?
|
|
AND ROWNUM='1'
|
|
</Sentence>
|
|
<Fields>RUL_TYP|CAP_TYP|CORG_NO|SRC_RSP_MSG|</Fields>
|
|
</DynSentence>
|
|
|
|
<DynSentence name="QRYBYRSPMSGBLUR"> <!--错误信息模糊匹配 -->
|
|
<Sentence>
|
|
SELECT DST_RSP_CD ,DST_RSP_MSG ,DST_TXN_STS FROM CAPCSWRULE
|
|
WHERE RUL_TYP=?
|
|
AND CAP_TYP=?
|
|
AND CORG_NO=?
|
|
AND CSW_TYP='2'
|
|
AND ? LIKE '%'||SRC_RSP_MSG||'%'
|
|
AND ROWNUM='1'
|
|
</Sentence>
|
|
<Fields>RUL_TYP|CAP_TYP|CORG_NO|SRC_RSP_MSG|</Fields>
|
|
</DynSentence>
|
|
<Process>
|
|
<!-- 取出RTR_IN节点参数 -->
|
|
<Set>RUL_TYP=BIS</Set><!-- 转码规则类型 -->
|
|
<Set>SRC_RSP_CD=$TRSP_CD</Set><!-- 来源错误码 -->
|
|
<Set>SRC_RSP_MSG=$TRSP_MSG</Set><!-- 来源错误信息 -->
|
|
|
|
<!-- 预置默认错误码 -->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="SleDftRspCd" />
|
|
</Exec>
|
|
<!--错误码匹配 -->
|
|
<If condition="IS_EQUAL_STRING($CSW_TYP,0)">
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRYBYRSPCD" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>DST_RSP_CD=$DFT_RSP_CD</Set>
|
|
<Set>DST_RSP_MSG=$DFT_RSP_MSG</Set>
|
|
<Set>DST_TXN_STS=$DST_TXN_STS</Set>
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Set>Rsp_Cod=80</Set>
|
|
<Set>Rsp_Inf=数据库错误</Set>
|
|
<Return/>
|
|
</ElseIf>
|
|
</If>
|
|
<Else>
|
|
<!--错误信息完全匹配 -->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRYBYRSPMSG" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<!--错误信息模糊匹配 -->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRYBYRSPMSGBLUR" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>DST_RSP_CD=$DFT_RSP_CD</Set>
|
|
<Set>DST_RSP_MSG=$DFT_RSP_MSG</Set>
|
|
<Set>DST_TXN_STS=$DST_TXN_STS</Set>
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Set>Rsp_Cod=80</Set>
|
|
<Set>Rsp_Inf=数据库错误</Set>
|
|
<Return/>
|
|
</ElseIf>
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Set>Rsp_Cod=80</Set>
|
|
<Set>Rsp_Inf=数据库错误</Set>
|
|
<Return/>
|
|
</ElseIf>
|
|
</Else>
|
|
</Process>
|
|
</Function>
|
|
|
|
<!-- 批量代收付错误码转换 -->
|
|
<Function name="CAP_BAT_CSW">
|
|
<Input>RUL_TYP|CAP_TYP|CORG_NO|CSW_TYP|ORD_DT|CORG_DSK_NO|</Input>
|
|
<Output></Output>
|
|
<DynSentence name="UpdRspCd">
|
|
<Sentence>
|
|
UPDATE CAPTXNJNL A
|
|
SET RSP_CD=''
|
|
WHERE A.ORD_DT=?
|
|
AND A.CORG_NO=?
|
|
AND A.CORG_DSK_NO=?
|
|
AND A.DSK_NAM_STS='4'
|
|
</Sentence>
|
|
<Fields>ORD_DT|CORG_NO|CORG_DSK_NO|</Fields>
|
|
</DynSentence>
|
|
<DynSentence name="SleDftRspCd"> <!--默认错误码 -->
|
|
<Sentence>
|
|
SELECT RSP_CD DFT_RSP_CD,RSP_MSG DFT_RSP_MSG FROM CAPCODEINF
|
|
WHERE RUL_TYP=?
|
|
AND CAP_TYP=?
|
|
AND IS_DFT='1'
|
|
</Sentence>
|
|
<Fields>RUL_TYP|CAP_TYP|</Fields>
|
|
</DynSentence>
|
|
<DynSentence name="UpdRspCdByCd"> <!--以错误码匹配更新流水 -->
|
|
<Sentence>
|
|
UPDATE CAPTXNJNL A
|
|
SET (RSP_CD,RSP_MSG)
|
|
=(SELECT DST_RSP_CD,DST_RSP_MSG FROM CAPCSWRULE B
|
|
WHERE B.RUL_TYP=? AND B.CAP_TYP=? AND B.CORG_NO=A.CORG_NO AND CSW_TYP='0' AND B.SRC_RSP_CD=A.TRSP_CD AND ROWNUM='1')
|
|
WHERE A.ORD_DT=?
|
|
AND A.CORG_NO=?
|
|
AND A.CORG_DSK_NO=?
|
|
AND A.DSK_NAM_STS='4'
|
|
AND NVL(LENGTH(TRIM(A.RSP_CD)),0) = 0
|
|
</Sentence>
|
|
<Fields>RUL_TYP|CAP_TYP|ORD_DT|CORG_NO|CORG_DSK_NO|</Fields>
|
|
</DynSentence>
|
|
<DynSentence name="UpdDftRspCd"> <!--更新默认错误码 -->
|
|
<Sentence>
|
|
UPDATE CAPTXNJNL A
|
|
SET RSP_CD=?,RSP_MSG=replace(SUBSTR(TRSP_MSG,1,100),'#','')
|
|
WHERE A.ORD_DT=?
|
|
AND A.CORG_NO=?
|
|
AND A.CORG_DSK_NO=?
|
|
AND A.DSK_NAM_STS='4'
|
|
AND NVL(LENGTH(TRIM(A.RSP_CD)),0) = 0
|
|
</Sentence>
|
|
<Fields>DFT_RSP_CD|ORD_DT|CORG_NO|CORG_DSK_NO|</Fields>
|
|
</DynSentence>
|
|
<DynSentence name="UpdRspCdByMsg"> <!--以错误信息匹配更新流水 -->
|
|
<Sentence>
|
|
UPDATE CAPTXNJNL A
|
|
SET (RSP_CD,RSP_MSG)
|
|
=(SELECT DST_RSP_CD,DST_RSP_MSG FROM CAPCSWRULE B
|
|
WHERE B.RUL_TYP=? AND B.CAP_TYP=? AND B.CORG_NO=A.CORG_NO AND CSW_TYP='1' AND B.SRC_RSP_MSG=A.TRSP_MSG AND ROWNUM='1')
|
|
WHERE A.ORD_DT=?
|
|
AND A.CORG_NO=?
|
|
AND A.CORG_DSK_NO=?
|
|
AND A.DSK_NAM_STS='4'
|
|
AND NVL(LENGTH(TRIM(A.RSP_CD)),0) = 0
|
|
</Sentence>
|
|
<Fields>RUL_TYP|CAP_TYP|ORD_DT|CORG_NO|CORG_DSK_NO|</Fields>
|
|
</DynSentence>
|
|
<DynSentence name="Cnt_UupdCt">
|
|
<Sentence>
|
|
SELECT COUNT(*) UupdCt FROM CAPTXNJNL
|
|
WHERE ORD_DT=?
|
|
AND CORG_NO=?
|
|
AND CORG_DSK_NO=?
|
|
AND DSK_NAM_STS='4'
|
|
AND NVL(LENGTH(TRIM(RSP_CD)),0) = 0
|
|
</Sentence>
|
|
<Fields>ORD_DT|CORG_NO|CORG_DSK_NO|</Fields>
|
|
</DynSentence>
|
|
<DynSentence name="SleSrcMsg"> <!--查询模糊错误信息 -->
|
|
<Sentence>
|
|
SELECT SRC_RSP_MSG FROM CAPCSWRULE
|
|
WHERE RUL_TYP=?
|
|
AND CAP_TYP=?
|
|
AND CORG_NO=?
|
|
AND CSW_TYP='2'
|
|
</Sentence>
|
|
<Fields>RUL_TYP|CAP_TYP|CORG_NO|</Fields>
|
|
</DynSentence>
|
|
<DynSentence name="UpdRspCdByMsg2"> <!--以错误信息匹配更新流水 -->
|
|
<Sentence>
|
|
UPDATE CAPTXNJNL A
|
|
SET (RSP_CD,RSP_MSG)
|
|
=(SELECT DST_RSP_CD,DST_RSP_MSG FROM CAPCSWRULE B
|
|
WHERE B.RUL_TYP=? AND B.CAP_TYP=? AND B.CORG_NO=A.CORG_NO AND B.SRC_RSP_MSG=?)
|
|
WHERE A.ORD_DT=?
|
|
AND A.CORG_NO=?
|
|
AND A.CORG_DSK_NO=?
|
|
AND A.DSK_NAM_STS='4'
|
|
AND NVL(LENGTH(TRIM(A.RSP_CD)),0) = 0
|
|
AND A.TRSP_MSG LIKE '%%s%'
|
|
</Sentence>
|
|
<Fields>RUL_TYP|CAP_TYP|SRC_RSP_MSG|ORD_DT|CORG_NO|CORG_DSK_NO|SRC_RSP_MSG|</Fields>
|
|
</DynSentence>
|
|
<Process>
|
|
<!-- 取出RTR_IN节点参数 -->
|
|
<Set>RUL_TYP=$RUL_TYP</Set><!-- 转码规则类型 -->
|
|
<Set>CAP_TYP=$CAP_TYP</Set><!-- 交易类型 -->
|
|
<Set>CORG_NO=$CORG_NO</Set><!-- 合作机构号 -->
|
|
<Set>CSW_TYP=$CSW_TYP</Set><!-- 匹配类型 -->
|
|
<Set>ORD_DT=$ORD_DT</Set>
|
|
<Set>CORG_DSK_NO=$CORG_DSK_NO</Set>
|
|
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UpdRspCd" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>Rsp_Cod=80</Set>
|
|
<Set>Rsp_Inf=更新流水错误码失败</Set>
|
|
<Return/>
|
|
</If>
|
|
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="SleDftRspCd" />
|
|
</Exec>
|
|
|
|
<If condition="IS_EQUAL_STRING($CSW_TYP,0)"><!-- 错误码匹配 -->
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UpdRspCdByCd" />
|
|
</Exec>
|
|
<If condition="~RetCod=-1">
|
|
<Set>Rsp_Cod=80</Set>
|
|
<Set>Rsp_Inf=更新流水错误码失败</Set>
|
|
<Return/>
|
|
</If>
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UpdDftRspCd" />
|
|
</Exec>
|
|
<If condition="~RetCod=-1">
|
|
<Set>Rsp_Cod=80</Set>
|
|
<Set>Rsp_Inf=更新流水错误码失败</Set>
|
|
<Return/>
|
|
</If>
|
|
</If>
|
|
<Else>
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UpdRspCdByMsg" />
|
|
</Exec>
|
|
<If condition="~RetCod=-1">
|
|
<Set>Rsp_Cod=80</Set>
|
|
<Set>Rsp_Inf=更新流水错误码失败</Set>
|
|
<Return/>
|
|
</If>
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="Cnt_UupdCt" />
|
|
</Exec>
|
|
<If condition="INTCMP($UupdCt,4,0)"><!-- 4!= -->
|
|
<Exec func="PUB:OpenCursor" error="IGNORE">
|
|
<Arg name="SqlCmd" value="SleSrcMsg"/>
|
|
</Exec>
|
|
<If condition="~RetCod != 0">
|
|
<Set>Rsp_Cod=80</Set>
|
|
<Set>Rsp_Inf=打开游标失败</Set>
|
|
<Exec func="PUB:RollbackWork"/>
|
|
<Return/>
|
|
</If>
|
|
<While>
|
|
<Exec func="PUB:FetchCursor" error="IGNORE"/>
|
|
<If condition="~RetCod=2">
|
|
<Exec func="PUB:CloseCursor"/>
|
|
<Break/>
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Set>Rsp_Cod=80</Set>
|
|
<Set>Rsp_Inf=循环游标失败</Set>
|
|
<Exec func="PUB:RollbackWork"/>
|
|
<Return/>
|
|
</ElseIf>
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UpdRspCdByMsg2" />
|
|
</Exec>
|
|
<If condition="~RetCod=-1">
|
|
<Set>Rsp_Cod=80</Set>
|
|
<Set>Rsp_Inf=更新流水错误码失败</Set>
|
|
<Return/>
|
|
</If>
|
|
</While>
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="Cnt_UupdCt" />
|
|
</Exec>
|
|
<If condition="INTCMP($UupdCt,4,0)"><!-- 4!= -->
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UpdDftRspCd" />
|
|
</Exec>
|
|
<If condition="~RetCod=-1">
|
|
<Set>Rsp_Cod=80</Set>
|
|
<Set>Rsp_Inf=更新流水错误码失败</Set>
|
|
<Return/>
|
|
</If>
|
|
</If>
|
|
</If>
|
|
</Else>
|
|
</Process>
|
|
</Function>
|
|
</Package>
|