Files
2021-03-15 10:21:05 +08:00

126 lines
4.9 KiB
XML

<?xml version='1.0' encoding='UTF-8'?>
<Package>
<!-- 计算净额机构交易金额及手续费 -->
<!-- 场景路由改造 -->
<Function name="RANDOM_SELECT_ORG">
<!--Input>GWA|ORD_TYP|PAY_TYP|AC_NO|TXN_AMT|BNK_COD|TXN_CNL</Input-->
<Input>RTR_IN</Input>
<Output>MSG_CD|RTR_OUT</Output>
<!--Output>MSG_CD|BNK_TYP|CRD_FLG|CRD_NM|CORG_NO|LBNK_NO|UNION_FLG|ROUT_FLG</Output-->
<!--查询有效路由信息-->
<DynSentence name="QRY_RULERTR">
<Sentence>
SELECT a.CORP_ORG,WEIGHT,RUL_LVL,RUL_NO FROM CMMTORGN a, CMMTRTRULE_BATCH b
WHERE a.CORP_ORG = b.CORG_NO
AND ENB_FLG = '1'
AND RUL_STS = '2'
AND GRP_NM = '%s'
AND (TRA_CD = '%s' OR TRA_CD IS NULL or TRA_CD = '')
AND (CRD_FLG = '%s' OR CRD_FLG IS NULL or CRD_FLG = '')
AND (b.BNK_TYP = '%s' OR b.BNK_TYP IS NULL or b.BNK_TYP = '')
AND ((TO_NUMBER(NVL(ATM_LOW,0)) &lt; '%s' AND TO_NUMBER(NVL(ATM_UP,99999999999)) &gt;= '%s') OR
(TO_NUMBER(NVL(ATM_LOW,0)) = '0' AND TO_NUMBER(NVL(ATM_UP,99999999999)) = '99999999999'))
AND (DAT_LOW &lt;= '%s' AND DAT_UP &gt;= '%s')
AND (TIM_LOW &lt;= '%s' AND TIM_UP &gt;= '%s')
AND (TXN_CNL ='%s' OR TXN_CNL IS NULL or TXN_CNL='')
AND (SKIP_HLD = '%s' OR SKIP_HLD = 'N')
ORDER BY RUL_LVL
</Sentence>
<Fields>GRP_NM|PAY_TYP|CRD_FLG|BNK_TYP|AMTMP|AMTMP|CRE_DT|CRE_DT|CRE_TM|CRE_TM|TXN_CNL|SKIP_HLD|</Fields>
</DynSentence>
<!--通过RUL_NO字段来查询路由信息-->
<DynSentence name="QRY_CMMTRTRULE_BATCH">
<Sentence>
select ROUT_FLG from CMMTRTRULE_BATCH where RUL_NO = '%s'
</Sentence>
<Fields>RUL_NO|</Fields>
</DynSentence>
<Process>
<!-- 取出RTR_IN节点参数 -->
<Set>ORD_TYP=$RTR_IN.ORD_TYP</Set>
<Set>PAY_TYP=$RTR_IN.PAY_TYP</Set>
<Set>AC_NO=$RTR_IN.AC_NO</Set>
<Set>TXN_AMT=$RTR_IN.TXN_AMT</Set>
<Set>TXN_CNL=$RTR_IN.TXN_CNL</Set>
<Set>TXN_MOD=$RTR_IN.TXN_MOD</Set>
<Set>GRP_NM=$RTR_IN.GRP_NM</Set>
<Set>BNK_TYP=$RTR_IN.BNK_TYP</Set>
<Set>CRD_FLG=$RTR_IN.CRD_FLG</Set>
<Set>CRD_NM=$RTR_IN.CRD_NM</Set>
<Set>TXN_TM=GETDATETIME()</Set>
<Set>CRE_TM=SUBSTR($TXN_TM,9,6)</Set> <!--交易时间-->
<Set>CRE_DT=SUBSTR($TXN_TM,1,8)</Set> <!--交易日期-->
<!-- 1 是工作日期 0 是假期 -1 失败 -2 输入的日期不在假期表范围内 -->
<Set>NodNo=341</Set>
<Exec func="PUB:IsWorkDate" error="IGNORE">
<Arg name="Date" value="$CRE_DT" />
</Exec>
<If condition="~RetCod=1">
<Set>SKIP_HLD=Y</Set>
</If>
<Else>
<Set>SKIP_HLD=N</Set>
</Else>
<If condition="ISNULL($TXN_AMT)=0">
<Set>AMTMP=AMTDELZERO($TXN_AMT)</Set>
</If>
<Else>
<Set>AMTMP=0</Set>
</Else>
<If condition="ISNULL($TXN_CNL)=1">
<Set>TXN_CNL=HRO</Set>
</If>
<Exec func="SXP:GetRandom" error="IGNORE">
<Arg name="SqlCmd" value="QRY_RULERTR"/>
<Arg name="DestName" value="CORG_NO"/>
</Exec>
<If condition="~RetCod&lt;0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="RTR88888"/>
<Arg name="MsgDat" value="GetRandom错误"/>
</Exec>
<Return/>
</If>
<ElseIf condition="~RetCod=1">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="RTR99999"/>
<Arg name="MsgDat" value="交易路由查找失败"/>
</Exec>
<Return/>
</ElseIf>
<!--查询路由信息-->
<Exec func="PUB:ReadRecord">
<Arg name="SqlCmd" value="QRY_CMMTRTRULE_BATCH"/>
</Exec>
<If condition="~RetCod !=0">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=查询路由信息失败</Set>
<Return/>
</If>
<Set>CORG_NO=$CORG_NO</Set>
<!-- 把参数放入RTR_OUT节点 -->
<Set>RTR_OUT.CORG_NO=$CORG_NO</Set>
<Set>RTR_OUT.ROUT_FLG=$ROUT_FLG</Set>
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00000" /><!--错误码待定 999999999-->
</Exec>
</Process>
</Function>
</Package>