Files
2021-01-12 22:04:24 +08:00

341 lines
18 KiB
XML

<?xml version='1.0' encoding='UTF-8'?>
<Application name="CAP" trace="yes">
<!-- 从文件服务器上获取银联对账, 此交易由文件服务器调起 -->
<!-- 银联对账文件包括两种类型对账(代付,撤销),此交易必须保证两种对账数据均成功入库,且对账状态均变更为2,否则便认为是失败 -->
<Transaction code="204041" log_switch="1" desc="对账文件获取">
<!--查询对账总控表 -->
<DynSentence name="QRY_PWMTCKCT">
<Sentence>
SELECT CHK_FIL_STS, CHK_FIL_NM, CHK_FIL_DT, FIL_DT_SEQ, COP_BUS_TYP,RUT_CORG
FROM PWMTCKCT
WHERE RUT_CORG = ? AND COP_BUS_TYP = ? AND CHK_FIL_DT = ?
</Sentence>
<Fields>RUT_CORG|COP_BUS_TYP|CHK_FIL_DT|</Fields>
</DynSentence>
<!--查询商户基本信息表 -->
<DynSentence name="QRY_URMTMINF_1">
<Sentence>
SELECT MERC_ID
FROM URMTMINF
WHERE MERC_STS ='0' AND MERC_TYP = '12'
</Sentence>
<Fields></Fields>
</DynSentence>
<FlowCtrl>
<Set>CK_LOCK=CUP_PPDCK_LOCK</Set>
<!-- 应用加锁,防止并发 -->
<Exec func="PUB:Lock" error="IGNORE" desc="应用加锁">
<Arg name="RecKey" value="$CK_LOCK" />
<Arg name="TimOut" value="21600" />
<Arg name="AutoUnlock" value="no" />
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:GWASetMsg"><!-- @msg 对账加锁失败 -->
<arg name="MsgCd" value="PWM90000" />
</Exec>
<Return/>
</If>
<!-- 设置锁名,解锁时需使用 -->
<Set>PWM_LOCK_NM=$CK_LOCK</Set>
<Exec func="PUB:DumpETF" />
<!-- 主控记录查询标识,0:记录不存在;1:记录存在 -->
<Set>QRY_FLAG11=0</Set>
<Set>QRY_FLAG13=0</Set>
<!-- 从对账文件名中截取对账文件日期 -->
<!--set>FIL_NM=WKDS802440359602008120119</Set-->
<!--Set>CHK_FIL_DT=STRCAT(20,SUBSTR($FIL_NM,20,6))</Set-->
<!--Set>CHK_FIL_DT=CALCDATE($CHK_FIL_DT1,-,d,1)</Set -->
<!-- 查询代收对账主控记录 -->
<Set>COP_BUS_TYP=11</Set>
<Set>RUT_CORG=EBPP</Set>
<Exec func="PUB:ReadRecord" desc="单条查询:查询代收对账主控记录">
<Arg name="SqlCmd" value="QRY_PWMTCKCT" />
<Arg name="GrpNam" value="CT_REC11" />
</Exec>
<If condition="~RetCod=0"><!-- 记录存在,查询成功 -->
<Set>QRY_FLAG11=1</Set>
</If>
<ElseIf condition="~RetCod=2"><!-- 记录不存在 -->
<Set>QRY_FLAG11=0</Set>
</ElseIf>
<Else><!-- @msg 查询对账总控表失败 -->
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="PWM90001" />
</Exec>
<Return />
</Else>
<!-- 查询代收撤销对账主控记录 -->
<Set>COP_BUS_TYP=13</Set>
<Exec func="PUB:ReadRecord" desc="单条查询:查询代收撤销对账主控记录">
<Arg name="SqlCmd" value="QRY_PWMTCKCT" />
<Arg name="GrpNam" value="CT_REC13" />
</Exec>
<If condition="~RetCod=0"><!-- 记录存在,查询成功 -->
<Set>QRY_FLAG13=1</Set>
</If>
<ElseIf condition="~RetCod=2"><!-- 记录不存在 -->
<Set>QRY_FLAG13=0</Set>
</ElseIf>
<Else>
<!-- @msg 查询对账总控表失败 -->
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="PWM90001" />
</Exec>
<Return />
</Else>
<!--若记录不存在则轮询商户基本信息表到银联取文件 -->
<If condition="AND(IS_EQUAL_STRING($QRY_FLAG11,0),IS_EQUAL_STRING($QRY_FLAG13,0))">
<Exec func="PUB:OpenCursor"> <!-- 开启游标 -->
<Arg name="SqlCmd" value="QRY_URMTMINF_1" />
<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" />
<Arg name="ObjectName" value="URM_REC" />
</Exec>
<If condition="~RetCod=2"> <!-- 查无数据 -->
<Break />
</If>
<ElseIf condition="~RetCod!=0"><!-- @msg 获取游标失败 -->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="PWM25806" />
</Exec>
<Return />
</ElseIf>
<Set>FIL_NM1=STRCAT(CUPS_,$URM_REC.MERC_ID,_,$CHK_FIL_DT)</Set>
<Set>FIL_NM2=STRCAT(MC,$URM_REC.MERC_ID,SUBSTR($CHK_FIL_DT,3,6),_,GNETE)</Set>
<Set>SrcDir=STRCAT(GETENV(HWORKDIR),/dat/cap/recv/EBPP/)</Set>
<Set>FILE_PATH1=STRCAT($SrcDir,$FIL_NM1)</Set>
<Exec func="PUB:IsValidFile" error="IGNORE" desc="检查文件">
<Arg name="FileName" value="$FILE_PATH1" />
</Exec>
<If condition="~RetCod=0"><!--文件存在,删除此文件 -->
<!--Exec func="PUB:DeleteFile" error="IGNORE">
<Arg name="FilNam" value="$FILE_PATH" />
</Exec-->
<If condition="~RetCod!=0"><!--@msg 删除已存在文件失败 -->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="PWM25833" />
</Exec>
<Return />
</If>
</If>
<Set>FILE_PATH2=STRCAT($SrcDir,$FIL_NM2)</Set>、
<Exec func="PUB:IsValidFile" error="IGNORE" desc="检查文件">
<Arg name="FileName" value="$FILE_PATH2" />
</Exec>
<If condition="~RetCod=0"><!--文件存在,删除此文件 -->
<!--Exec func="PUB:DeleteFile" error="IGNORE">
<Arg name="FilNam" value="$FILE_PATH" />
</Exec-->
<If condition="~RetCod!=0"><!--@msg 删除已存在文件失败 -->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="PWM25833" />
</Exec>
<Return />
</If>
</If>
<!--从文件服务器获取对账文件 获取两次 一次CUPS 一次好易连-->
<!--Exec func="PUB:CallThirdService" error="IGNORE">
<Arg name="HTxnCd" value="CUP001" />
<Arg name="ObjSvr" value="OCUPPUB1" />
</Exec-->
<!--If condition="~RetCod!=0">
<Exec func="PUB:GWAAddMsg">
<Arg name="MsgCd" value="PWM25606" />
</Exec>
<Return />
</If-->
</While>
<Exec func="PUB:CloseCursor"> <!-- 关闭游标 -->
<Arg name="CursorName" value="CURSOR_1" />
</Exec>
<If condition="~RetCod!=0">
<!-- @msg 关闭游标失败 -->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="PWM25804" />
</Exec>
<Return />
</If>
<!-- 用于通知文件服务器获取文件成功 -->
<Exec func="PUB:GWAAddMsg">
<Arg name="MsgCd" value="FIL00000" />
<Arg name="MsgDat" value="执行成功" />
</Exec>
<!-- 获取用于组成对账批次号的索引 -->
<Exec func="PUB:GetUniqueNo" desc="获取序号">
<Arg name="Name" value="nextval" />
<Arg name="SeqNam" value="ck_sequence" />
<Arg name="Len" value="8" />
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:GWASetMsg"><!-- @msg 获取索引失败(对账总控表指登记) -->
<Arg name="MsgCd" value="PWM22737" />
</Exec>
<Return />
</If>
<!-- 登记对账类型为代收(cap)的对账批次 -->
<!-- 登记对账总控表,对账状态为1:已获取文件 -->
<Set>PWMTCKCT.CHK_BAT_NO=STRCAT($GWA.AC_DT,$nextval)</Set> <!-- 对账批次号(16位) -->
<Set>PWMTCKCT.RUT_CORG=EBPP</Set> <!-- 路径合作机构号 -->
<Set>CORG_NO=EBPP</Set> <!-- 路径合作机构号 -->
<Set>CHK_DT=$GWA.AC_DT</Set> <!-- 对账日期 -->
<Set>CHK_STS=0</Set> <!-- 对账状态 -->
<Set>PWMTCKCT.COP_BUS_TYP=11</Set> <!-- 合作业务类型,11:代收 -->
<Set>PWMTCKCT.CHK_FIL_DT=$CHK_FIL_DT</Set> <!-- 路径合作机构对账文件日期 -->
<Set>PWMTCKCT.FILE_RCV_DT=$CHK_DT</Set> <!-- 路径合作机构对账文件日期 -->
<Set>PWMTCKCT.AC_DT=$GWA.AC_DT</Set> <!-- 路径合作机构对账文件日期 -->
<Set>PWMTCKCT.CHK_DT=$GWA.AC_DT</Set> <!-- 路径合作机构对账文件日期 -->
<Set>PWMTCKCT.CHK_TYP=1</Set> <!-- 对账类型,1:代收 -->
<!--Set>PWMTCKCT.CHK_FIL_NM=$FIL_NM</Set--> <!-- 对账文件名称 -->
<Set>PWMTCKCT.CHK_FIL_STS=1</Set> <!-- 对账状态,1:已获取文件 -->
<Set>PWMTCKCT.CHK_SRV=OPWMCHK1</Set> <!-- 服务名 -->
<Set>PWMTCKCT.CHK_TX_CD=204040</Set> <!-- 交易码 -->
<Set>PWMTCKCT.OTHER_INF=CAP1</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"><!-- @msg 登记对账总控表失败(银联对账文件获取) -->
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="PWM25602" />
</Exec>
<Return />
</If>
<!-- 获取用于组成对账批次号的索引 -->
<Exec func="PUB:GetUniqueNo" desc="获取序号">
<Arg name="Name" value="nextval" />
<Arg name="SeqNam" value="ck_sequence" />
<Arg name="Len" value="8" />
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:GWASetMsg">
<!-- @msg 获取索引失败(对账总控表指登记) -->
<Arg name="MsgCd" value="PWM22737" />
</Exec>
<Return />
</If>
<!-- 登记对账类型为退款(0002)的对账批次 -->
<!-- 登记对账总控表,对账状态为1:已获取文件 -->
<Set>PWMTCKCT1.AC_DT=$GWA.AC_DT</Set>
<Set>PWMTCKCT1.CHK_DT=$GWA.AC_DT</Set> <!-- 路径合作机构对账文件日期 -->
<Set>PWMTCKCT1.CHK_BAT_NO=STRCAT($GWA.AC_DT,$nextval)</Set> <!-- 对账批次号(16位) -->
<Set>PWMTCKCT1.RUT_CORG=EBPP</Set> <!-- 路径合作机构号 -->
<Set>CORG_NO=EBPP</Set> <!-- 路径合作机构号 -->
<Set>CHK_DT=$GWA.AC_DT</Set> <!-- 对账日期 -->
<Set>PWMTCKCT1.FILE_RCV_DT=$CHK_DT</Set> <!-- 路径合作机构对账文件日期 -->
<Set>PWMTCKCT1.CHK_BAT_NO=STRCAT($GWA.AC_DT,$nextval)</Set> <!-- 对账批次号(16位) -->
<Set>PWMTCKCT1.COP_BUS_TYP=13</Set> <!-- 合作业务类型,13:撤销 -->
<Set>PWMTCKCT1.CHK_FIL_DT=$CHK_FIL_DT</Set> <!-- 路径合作机构对账文件日期 -->
<Set>PWMTCKCT1.CHK_TYP=1</Set> <!-- 对账类型,1:充值 -->
<Set>PWMTCKCT1.CHK_FIL_NM=$FIL_NM</Set> <!-- 对账文件名称 -->
<Set>PWMTCKCT1.CHK_FIL_STS=1</Set> <!-- 对账状态,1:已获取文件 -->
<Set>PWMTCKCT1.CHK_SRV=OPWMCHK2</Set> <!-- 服务名 -->
<Set>PWMTCKCT1.CHK_TX_CD=204040</Set> <!-- 交易码 -->
<Set>PWMTCKCT1.OTHER_INF=CAP2</Set> <!-- 用于存储类型 -->
<Set>PWMTCKCT1.TM_SMP=GETDATETIME()</Set> <!-- 时间戳 -->
<Exec func="PUB:InsertRecord" error="IGNORE" desc="插入数据">
<Arg name="TblNam" value="PWMTCKCT" />
<Arg name="GrpNam" value="PWMTCKCT1" />
</Exec>
<If condition="~RetCod!=0">
<!-- @msg 登记对账总控表失败(银联对账文件获取) -->
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="PWM25602" />
</Exec>
<Return />
</If>
<Exec func="PUB:CommitWork" desc="提交事务" />
<!--入库 -->
<!--Set>CHK_BAT_NO=$PWMTCKCT.CHK_BAT_NO</Set-->
<Set>TRAN_TYP=$PWMTCKCT.OTHER_INF</Set>
<Call package="CAP" function="CUP_IMPORT" desc="调用组件:入库">
<Output>MSG_CD|</Output>
</Call>
<If condition="IS_SUCC(@O.MSG_CD)=0">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD" />
</Exec>
<Return />
</If>
<!-- 正常结束 -->
<Exec func="PUB:GWAAddMsg">
<Arg name="MsgCd" value="PWM00000" />
</Exec>
</If>
<Else>
<If condition="IS_NOEQUAL_STRING($QRY_FLAG11,$QRY_FLAG13)">
<Exec func="PUB:GWASetMsg">
<!-- @msg 银联对账获取文件入库异常 -->
<Arg name="MsgCd" value="PWM25857" />
</Exec>
<Return />
</If>
<Else>
<If
condition="OR(INTCMP($CT_REC11.CHK_FIL_STS,1,2),INTCMP($CT_REC13.CHK_FIL_STS,1,2))">
<Exec func="PUB:GWASetMsg"><!-- @msg 银联对账获取文件入库异常 -->
<Arg name="MsgCd" value="PWM25857" />
</Exec>
<Return />
</If>
<Else><!-- 用于通知文件服务器获取文件成功 -->
<Exec func="PUB:GWAAddMsg">
<Arg name="MsgCd" value="PWM000000" />
<Arg name="MsgCd" value="FIL000000" />
<Arg name="MsgDat" value="执行成功" />
</Exec>
<Return />
</Else>
</Else>
</Else>
<Exec func="PUB:CallThirdService">
<Arg name="HTxnCd" value="204042" />
<Arg name="ObjSvr" value="OCAPCHK1" />
</Exec>
<If condition="~RetCod=0" >
<If condition="NOT(IS_SUCC($GWA.MSG_CD))">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="$GWA.MSG_CD"/>
</Exec>
<Return/>
</If>
</If>
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="PWM00000" />
</Exec>
</FlowCtrl>
</Transaction>
</Application>