Files
2021-01-12 23:30:48 +08:00

367 lines
13 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<Package>
<Function name="ReplaceVarByCorg">
<!-- 根据商户号,渠道标志,业务类型找到默认的场景名称 -->
<DynSentence name="QRY_CAPMERCDEF">
<Sentence>
SELECT * FROM CAPMERCDEF WHERE MERC_ID=? AND TXN_CNL=? AND
CAP_TYP=? AND LIC_NAME IS NOT NULL
</Sentence>
<Fields>MERC_ID|TXN_CNL|CAP_TYP|</Fields>
</DynSentence>
<!-- 判断默认场景是否生效 -->
<DynSentence name="QRY_CAPLICDATA">
<Sentence>
SELECT * FROM CAPLICDATA WHERE CAP_TYP=? AND LIC_NAME=? AND IS_USED='Y'
</Sentence>
<Fields>CAP_TYP|LIC_NAME|</Fields>
</DynSentence>
<!-- 根据业务类型机构编码找到机构的默认场景名称 -->
<DynSentence name="QRY_CAPLICTOL1">
<Sentence>
SELECT * FROM CAPLICTOL WHERE CAP_TYP=? AND CORG_NO=? AND IS_DEFAULT='Y'
</Sentence>
<Fields>CAP_TYP|CORG_NO|</Fields>
</DynSentence>
<!-- 判断该业务类型该场景名称下是否支持支持该合作机构 -->
<DynSentence name="QRY_CAPLICTOL">
<Sentence>
SELECT * FROM CAPLICTOL WHERE CAP_TYP=? AND LIC_NAME=? AND CORG_NO=?
</Sentence>
<Fields>CAP_TYP|LIC_NAME|CORG_NO|</Fields>
</DynSentence>
<!--通过上面找到的汇总表里的序号找到所有需要替换并且生效的参数-->
<DynSentence name="QRY_CAPLICINFO">
<Sentence>
SELECT A.LIC_VAR, A.VAR_NUM, A.FORCE_COVER, B.LIC_LOC_NAM
FROM (SELECT *
FROM CAPLICINFO
WHERE IS_USED = 'Y'
AND LIC_NO = ?) A,
CAPBANKCOL B
WHERE A.CORG_NO = B.CORG_NO
AND A.CAP_TYP = B.CAP_TYP
AND A.LIC_VAR = B.LIC_VAR
</Sentence>
<Fields>LIC_NO|</Fields>
</DynSentence>
<!--通过合作机构跟业务类型找到全部需要替换的参数-->
<DynSentence name="QRY_CAPBANKCOL">
<Sentence>
SELECT LIC_LOC_NAM,LIC_VALUE FROM CAPBANKCOL WHERE CORG_NO=? AND CAP_TYP=?
</Sentence>
<Fields>CORG_NO|CAP_TYP|</Fields>
</DynSentence>
<Process>
<Exec func="PUB:DumpETF" />
<Set>V=0</Set>
<!-- 根据商户号,渠道标志,业务类型判断是否有默认场景 -->
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="QRY_CAPMERCDEF" />
</Exec>
<If condition="~RetCod=-1">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="CAP99999" />
</Exec>
<Return />
</If>
<If condition="~RetCod=0"><!-- 找到 -->
<!-- 根据场景名称,业务类型判断是否支持该合作机构-->
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="QRY_CAPLICTOL" />
</Exec>
<If condition="~RetCod=-1">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="CAP99999" />
</Exec>
<Return />
</If>
<If condition="~RetCod=2"><!-- 不支持 -->
<!-- 根据业务类型机构编码找到机构的默认场景名称 -->
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="QRY_CAPLICTOL1" />
</Exec>
<If condition="~RetCod=-1">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="CAP99999" />
</Exec>
<Return />
</If>
<If condition="~RetCod=2"><!-- 没找到 -->
<Set>v=1</Set>
</If>
</If>
<Else><!-- 找到 -->
<Exec func="PUB:ReadRecord" error="IGNORE"><!-- 判断场景名称是否生效 -->
<Arg name="SqlCmd" value="QRY_CAPLICDATA" />
</Exec>
<If condition="~RetCod=-1">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="CAP99999" />
</Exec>
<Return />
</If>
<If condition="~RetCod=2"><!-- 不生效 -->
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="QRY_CAPLICTOL1" />
</Exec>
<If condition="~RetCod=-1">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="CAP99999" />
</Exec>
<Return />
</If>
<If condition="~RetCod=2"><!-- 没找到 -->
<Set>v=1</Set>
</If>
</If>
</Else>
</If>
<Else><!-- 没找到 -->
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="QRY_CAPLICTOL1" />
</Exec>
<If condition="~RetCod=-1">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="CAP99999" />
</Exec>
<Return />
</If>
<If condition="~RetCod=2">
<Set>v=1</Set>
</If>
</Else>
<If condition="IS_EQUAL_STRING($V,0)">
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="QRY_CAPLICDATA" />
</Exec>
<If condition="~RetCod=-1">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="CAP99999" />
</Exec>
<Return />
</If>
<If condition="~RetCod=2">
<Set>V=1</Set>
</If>
<Else>
<Exec func="PUB:OpenCursor" error="IGNORE"> <!-- 开启游标 -->
<Arg name="SqlCmd" value="QRY_CAPLICINFO" />
<Arg name="CursorName" value="CURSOR_1" />
</Exec>
<If condition="~RetCod!=0">
<!-- @msg 查询充值对账明细表,开启游标失败 -->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="PWM22150" />
</Exec>
<Return />
</If>
<While>
<Exec func="PUB:FetchCursor"> <!-- 读取下一条记录 -->
<Arg name="CursorName" value="CURSOR_1" />
</Exec>
<If condition="~RetCod=2"> <!-- 查无数据 -->
<Break />
</If>
<ElseIf condition="~RetCod!=0">
<!-- @msg 获取游标失败 -->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="PWM25806" />
</Exec>
<Return />
</ElseIf>
<!-- @msg LIC_LOC_NAM里面含有_.就是循环节点 -->
<If condition="INTCMP(GETSTRPOS($LIC_LOC_NAM,_.),6,0)">
<Exec func="PUB:IsExistNode">
<Arg name="FieldName" value="REC_NUM" />
</Exec>
<If condition="~RetCod=1">
<Set>N=1</Set>
<Set>LEN=STRLEN($LIC_LOC_NAM)</Set>
<Set>LEN1=GETSTRPOS($LIC_LOC_NAM,_.)
</Set>
<While condition="INTCMP($N,2,$REC_NUM)">
<Set>
LIC_LOC_NAM1=STRCAT(SUBSTR($LIC_LOC_NAM,1,$LEN1),$N,.,SUBSTR($LIC_LOC_NAM,ADD($LEN1,2),SUB($LEN,ADD($LEN1,1))))
</Set>
<Exec func="PUB:IsExistNode">
<Arg name="FieldName" value="$LIC_LOC_NAM1" />
</Exec>
<If condition="~RetCod=1">
<If condition="IS_EQUAL_STRING($FORCE_COVER,Y)">
<If condition="IS_EQUAL_STRING(SUBSTR($VAR_NUM,1,1),^)">
<Set>
VAR_NUM1=SUBSTR($VAR_NUM,ADD(STRLEN($VAR_NUM),2),SUB(STRLEN($VAR_NUM),ADD(GETSTRPOS($VAR_NUM,_.),1)))
</Set>
<Exec func="PUB:GetValue">
<Arg name="SourName" value="$VAR_NUM1" />
<Arg name="DestName" value="$LIC_LOC_NAM1" />
</Exec>
</If>
<Else>
<Exec func="PUB:SetValue" error="IGNORE">
<Arg name="FieldName" value="$LIC_LOC_NAM1" />
<Arg name="FieldValue" value="$VAR_NUM" />
</Exec>
</Else>
</If>
<Else>
<If condition="ISNULL($LIC_LOC_NAM1)">
<If condition="IS_EQUAL_STRING(SUBSTR($VAR_NUM,1,1),^)">
<Set>
VAR_NUM1=SUBSTR($VAR_NUM,ADD(STRLEN($VAR_NUM),2),SUB(STRLEN($VAR_NUM),ADD(GETSTRPOS($VAR_NUM,_.),1)))
</Set>
<Exec func="PUB:GetValue">
<Arg name="SourName" value="$VAR_NUM1" />
<Arg name="DestName" value="$LIC_LOC_NAM1" />
</Exec>
</If>
<Else>
<Exec func="PUB:SetValue" error="IGNORE">
<Arg name="FieldName" value="$LIC_LOC_NAM1" />
<Arg name="FieldValue" value="$VAR_NUM" />
</Exec>
</Else>
</If>
</Else>
</If>
<Set>N=ADD($N,1)</Set>
</While>
</If>
</If>
<Else>
<Exec func="PUB:IsExistNode">
<Arg name="FieldName" value="$LIC_LOC_NAM" />
</Exec>
<If condition="~RetCod=1">
<If condition="IS_EQUAL_STRING($FORCE_COVER,Y)">
<If condition="IS_EQUAL_STRING(SUBSTR($VAR_NUM,1,1),^)">
<Exec func="PUB:GetValue">
<Arg name="SourName" value="SUBSTR($VAR_NUM,2,SUB(STRLEN($VAR_NUM),1))" />
<Arg name="DestName" value="$LIC_LOC_NAM" />
</Exec>
</If>
<Else>
<Exec func="PUB:SetValue" error="IGNORE">
<Arg name="FieldName" value="$LIC_LOC_NAM" />
<Arg name="FieldValue" value="$VAR_NUM" />
</Exec>
</Else>
</If>
<Else>
<If condition="ISNULL($LIC_LOC_NAM)">
<If condition="IS_EQUAL_STRING(SUBSTR($VAR_NUM,1,1),^)">
<Exec func="PUB:GetValue">
<Arg name="SourName" value="SUBSTR($VAR_NUM,2,SUB(STRLEN($VAR_NUM),1))" />
<Arg name="DestName" value="$LIC_LOC_NAM" />
</Exec>
</If>
<Else>
<Exec func="PUB:SetValue" error="IGNORE">
<Arg name="FieldName" value="$LIC_LOC_NAM" />
<Arg name="FieldValue" value="$VAR_NUM" />
</Exec>
</Else>
</If>
</Else>
</If>
</Else>
</While>
</Else>
</If>
<If condition="IS_EQUAL_STRING($V,1)">
<Exec func="PUB:OpenCursor" error="IGNORE"> <!-- 开启游标 -->
<Arg name="SqlCmd" value="QRY_CAPBANKCOL" />
<Arg name="CursorName" value="CURSOR_1" />
</Exec>
<If condition="~RetCod!=0">
<!-- @msg 查询充值对账明细表,开启游标失败 -->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="PWM22150" />
</Exec>
<Return />
</If>
<While>
<Exec func="PUB:FetchCursor"> <!-- 读取下一条记录 -->
<Arg name="CursorName" value="CURSOR_1" />
</Exec>
<If condition="~RetCod=2"> <!-- 查无数据 -->
<Break />
</If>
<ElseIf condition="~RetCod!=0">
<!-- @msg 获取游标失败 -->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="PWM25806" />
</Exec>
<Return />
</ElseIf>
<If condition="INTCMP(GETSTRPOS($LIC_LOC_NAM,_.),6,0)">
<Exec func="PUB:IsExistNode">
<Arg name="FieldName" value="REC_NUM" />
</Exec>
<If condition="~RetCod=1">
<Set>N=1</Set>
<Set>LEN=STRLEN($LIC_LOC_NAM)</Set>
<Set>LEN1=GETSTRPOS($LIC_LOC_NAM,_.)
</Set>
<While condition="INTCMP($N,2,$REC_NUM)">
<Set>
LIC_LOC_NAM1=STRCAT(SUBSTR($LIC_LOC_NAM,1,$LEN1),$N,.,SUBSTR($LIC_LOC_NAM,ADD($LEN1,2),SUB($LEN,ADD($LEN1,1))))
</Set>
<Exec func="PUB:IsExistNode">
<Arg name="FieldName" value="$LIC_LOC_NAM1" />
</Exec>
<If condition="~RetCod=1">
<If condition="ISNULL($LIC_LOC_NAM1)">
<If condition="IS_EQUAL_STRING(SUBSTR($LIC_VALUE,1,1),^)">
<Set>
LIC_VALUE1=SUBSTR($LIC_VALUE,ADD(STRLEN($LIC_VALUE),2),SUB(STRLEN($LIC_VALUE),ADD(GETSTRPOS($LIC_VALUE,_.),1)))
</Set>
<Exec func="PUB:GetValue">
<Arg name="SourName" value="$LIC_VALUE1" />
<Arg name="DestName" value="$LIC_LOC_NAM1" />
</Exec>
</If>
<Else>
<Exec func="PUB:SetValue" error="IGNORE">
<Arg name="FieldName" value="$LIC_LOC_NAM1" />
<Arg name="FieldValue" value="$LIC_VALUE" />
</Exec>
</Else>
</If>
</If>
<Set>N=ADD($N,1)</Set>
</While>
</If>
</If>
<Else>
<Exec func="PUB:IsExistNode">
<Arg name="FieldName" value="$LIC_LOC_NAM" />
</Exec>
<If condition="~RetCod=1">
<If condition="ISNULL($LIC_LOC_NAM)">
<If condition="IS_EQUAL_STRING(SUBSTR($LIC_VALUE,1,1),^)">
<Exec func="PUB:GetValue">
<Arg name="SourName" value="SUBSTR($LIC_VALUE,2,SUB(STRLEN($LIC_VALUE),1))" />
<Arg name="DestName" value="$LIC_LOC_NAM" />
</Exec>
</If>
<Else>
<Exec func="PUB:SetValue" error="IGNORE">
<Arg name="FieldName" value="$LIC_LOC_NAM" />
<Arg name="FieldValue" value="$LIC_VALUE" />
</Exec>
</Else>
</If>
</If>
</Else>
</While>
</If>
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="RRC00000" />
</Exec>
</Process>
</Function>
</Package>