This commit is contained in:
alawn
2021-01-20 17:47:47 +08:00
parent 20c95ed3d6
commit f1b0f4060f
7 changed files with 321 additions and 0 deletions
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
+2
View File
@@ -0,0 +1,2 @@
PACKAGE=com.murong.ctg.util
CLASS=ZipUtils
+143
View File
@@ -0,0 +1,143 @@
<?xml version='1.0' encoding='UTF-8'?>
<Tran>
<Transaction code="BAT_GET_DISK_RESULT" log_switch='1' desc="获取批量回盘">
<Attributes>
<Attribute name="nodatabase" value="2"/> <!--数据库长连接-->
</Attributes>
<DynSentence name="QryBatLst">
<Sentence>
select dsk_nam from
(select dsk_nam,sum(unfinished_num) unfinished_num,sum(finish_num) finish_num
from (select dsk_nam,(case when BAT_STS!= '4' then 1 else 0 end)
unfinished_num ,(case when BAT_STS= '4' then 1 else 0 end) finish_num
from CAPBATINF b where b.dsk_nam in
(select DSK_NAM from CAPDSKINF a where a.dsk_sts = '1')) group by dsk_nam) c
where c.unfinished_num = 0 and c.finish_num &gt; 0
</Sentence>
<Fields>|</Fields>
</DynSentence>
<DynSentence name="UpdCapdskinf">
<Sentence>
UPDATE CAPDSKINF SET dsk_sts = '4',END_DT=?, END_TM=?, MD5_RESULT=? WHERE DSK_NAM = ?
</Sentence>
<Fields>END_DT|END_TM|MD5_RESULT|DSK_NAM|</Fields>
</DynSentence>
<DynSentence name="QRY_CAPDSKINF_DSK_NAM">
<Sentence>
SELECT DSK_STS ,END_DT,END_TM ,ORN_CNT ,ORN_AMT,SUC_CNT,SUC_AMT,FAL_CNT,FAL_AMT,
FILE_PATH,MD5_RESULT,TM_SMP FROM CAPDSKINF
WHERE DSK_NAM = ?
</Sentence>
<Fields>DSK_NAM|</Fields>
</DynSentence>
<FlowCtrl>
<!---test结束-->
<Quote name="Init_CAP01"/> <!--交易初始化-->
<Exec func="PUB:OpenCursor" error="IGNORE">
<Arg name="SqlCmd" value="QryBatLst"/>
</Exec>
<If condition="~RetCod != 0">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=打开游标失败</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_Cd=80</Set>
<Set>Rsp_Msg=循环游标失败</Set>
<Exec func="PUB:RollbackWork"/>
<Return/>
</ElseIf>
<!--所有参数由节点RTR_IN传进路由-->
<Set>RTR_IN.DSK_NAM=$DSK_NAM</Set>
<!--生成文件-->
<Call package="DISKRESULLT" function="GET_DISK_RESULT_FILE">
<Input>RTR_IN</Input>
<Output>MSG_CD|RTR_OUT</Output>
</Call>
<If condition="SUBSTR(@O.MSG_CD,4,5)!=00000">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=文件生成失败</Set>
<Break/>
</If>
<Set>MD5_RESULT=@O.RTR_OUT.MD5</Set>
<Set>END_TM=GETDATETIME(HHMISS)</Set> <!-- 交易时间 -->
<Set>END_DT=GETDATE()</Set> <!-- 交易日期 -->
<!--调用文件上传接口-->
<!--更新批次状态为已完成(终态)-->
<Exec func="PUB:ExecSql" error="IGNORE">
<Arg name="SqlCmd" value="UpdCapdskinf"/>
</Exec>
<If condition="~RetCod&lt;0">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg="数据库错误"</Set>
<Break/>
</If>
<Exec func="PUB:CommitWork"/>
<!--调用HRO送盘接口-->
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="QRY_CAPDSKINF_DSK_NAM"/>
</Exec>
<If condition="~RetCod!=0">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=批次不存在</Set>
<Return/>
</If>
<Set>DISK_STS=$DSK_STS</Set>
<Set>DISK_MESSAGE=$DISK_MESSAGE</Set>
<Set>LAST_DATE=SUBSTR($TM_SMP,0,8)</Set>
<Set>LAST_TIME=SUBSTR($TM_SMP,9,6)</Set>
<Set>TOTAL_COUNT=$ORN_CNT</Set>
<Set>TOTAL_AMOUNT=FMUL($ORN_AMT,100,0)</Set>
<Set>SUCC_COUNT=$SUC_CNT</Set>
<Set>SUCC_AMOUNT=FMUL($SUC_AMT,100,0)</Set>
<Set>FAIL_COUNT=$FAL_CNT</Set>
<Set>FAIL_AMOUNT=FMUL($FAL_AMT,100,0)</Set>
<Set>FILE_PATH=$FILE_PATH</Set>
<Set>MD5=$MD5_RESULT</Set>
<!-- &lt;!&ndash;调用HRO送盘接口&ndash;&gt;
<Exec func="PUB:CallThirdComm" error="IGNORE">
<Arg name="HTxnCd" value="diskNotify"/>
<Arg name="ObjSvr" value="STHDHRO1"/>
</Exec>
<If condition="~RetCod!=0">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=发送文件送盘失败</Set>
</If>-->
<!--删除关键域避免重复-->
<Delete>DSK_NAM</Delete>
<Delete>DISK_STS</Delete>
<Delete>DISK_MESSAGE</Delete>
<Delete>LAST_DATE</Delete>
<Delete>LAST_TIME</Delete>
<Delete>TOTAL_COUNT</Delete>
<Delete>TOTAL_AMOUNT</Delete>
<Delete>SUCC_COUNT=</Delete>
<Delete>SUCC_AMOUNT</Delete>
<Delete>FAIL_COUNT</Delete>
<Delete>FAIL_AMOUNT</Delete>
<Delete>FILE_PATH</Delete>
<Delete>MD5</Delete>
<Delete>MD5_RESULT</Delete>
<Delete>END_TM</Delete>
<Delete>END_DT</Delete>
</While>
<Set>Rsp_Cd=00</Set>
<Set>Rsp_Msg=交易成功</Set>
</FlowCtrl>
</Transaction>
</Tran>
+135
View File
@@ -0,0 +1,135 @@
<?xml version="1.0" encoding="UTF-8"?>
<Package>
<Function name="GET_DISK_RESULT_FILE">
<Input>RTR_IN</Input>
<Output>MSG_CD|RTR_OUT</Output>
<!--查询文件是否入库 -->
<DynSentence name="QRY_CAPDSKINF">
<Sentence>
SELECT DSK_STS,ORN_CNT TOTAL_COUNT,ORN_AMT TOTAL_AMOUNT,SUC_CNT SUCC_COUNT,SUC_AMT SUCC_AMOUNT,FAL_CNT
FAIL_COUNT,FAL_AMT FAIL_AMOUNT,TITLE_ID,CUSTOMER_ID FROM CAPDSKINF
WHERE DSK_NO = ?
</Sentence>
<Fields>DSK_NAM|</Fields>
</DynSentence>
<DynSentence name="QRY_CAPBATINF">
<Sentence>
SELECT count(1) BAT_NUM FROM CAPBATINF
WHERE DSK_NAM = ? AND (BAT_STS &lt;4 OR BAT_STS &gt;4)
</Sentence>
<Fields>DSK_NAM|</Fields>
</DynSentence>
<DynSentence name="QRY_CAPTXNJNL">
<Sentence>
select AC_TYP ACCT_TYPE,AC_NO ACCT_NO,CUS_NAM ACCT_NAME,CAP_ORD_NO TRANS_ID,
MERC_ORD_NO REF_ID,CORG_JRN_NO BANK_REF_ID, TXN_AMT AMOUNT,BNK_TYP BANK_TYPE,POSTSCRIPT,
TAC_NO PAYER_ACCT_NO,TAC_NAM PAYER_ACCT_NAME, CORG_NO ORG_NO,'' REMARK ,
TXN_STS TRANS_STS,RSP_MSG RESP_MESSAGE
from CAPTXNJNL t where t.dsk_nam = '%s'
</Sentence>
<Fields>DSK_NAM|</Fields>
</DynSentence>
<Process>
<Set>DSK_NAM=$RTR_IN.DSK_NAM</Set>
<!--查询大批批次表-->
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="QRY_CAPDSKINF"/>
</Exec>
<If condition="~RetCod!=0">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=批次不存在</Set>
<Return/>
</If>
<!--<If condition="IS_NOEQUAL_STRING($DSK_STS,4)">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=批次未完成</Set>
<Return/>
</If>-->
<!--查询小批是否处理完成-->
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="QRY_CAPBATINF"/>
</Exec>
<If condition="~RetCod!=0">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=系统异常</Set>
<Return/>
</If>
<If condition="IS_NOEQUAL_STRING($BAT_NUM,0)">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=批次未完成</Set>
<Return/>
</If>
<!--生成文件-->
<Set>FIL_PTH=STRCAT(GETENV(WORKDIR),/dat/cap/send/)</Set>
<Set>FIL_NAM=STRCAT($DSK_NAM,RESULT)</Set>
<!--导出文件-->
<Exec func="PUB:ExportFromDB">
<Arg name="FormatName" value="HroFmt02"></Arg>
<Arg name="FileName" value="STRCAT($FIL_PTH,$FIL_NAM)"></Arg>
<Arg name="TableName" value="CAPTXNJNL"></Arg>
<Arg name="SqlName" value="QRY_CAPTXNJNL"></Arg>
</Exec>
<If condition="~RetCod=-1">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=失败</Set>
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="CAP99999"/>
</Exec>
<Return/>
</If>
<If condition="~RetCod=1">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=数据不存在</Set>
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="CAP88888"/>
</Exec>
<Return/>
</If>
<ElseIf condition="~RetCod!=0">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=生成文件失败</Set>
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="CAP88888"/>
</Exec>
<Return/>
</ElseIf>
<!--文件压缩-->
<Set>TGZ_PATH=STRCAT(GETENV(WORKDIR),/dat/cap/send/)</Set>
<Set>TGZ_FILE=STRCAT($TGZ_PATH,$FIL_NAM)</Set>
<Set>TGZ_NAME=STRCAT($TGZ_FILE,.tar.gz)</Set>
<Exec func="PUB:SystemAndWait">
<Arg name="cmd" value="tar"/>
<Arg name="arg1" value="cvzf"/>
<Arg name="arg2" value="$TGZ_NAME"/>
<Arg name="arg3" value="-C"/>
<Arg name="arg4" value="$FIL_PTH"/>
<Arg name="arg5" value="$FIL_NAM" />
</Exec>
<!--判断文件是否存在-->
<Exec func="PUB:IsValidFile" error="IGNORE">
<Arg name="FileName" value="$TGZ_NAME"/>
</Exec>
<If condition="OR( INTCMP($FIL_BYT,3,0), INTCMP(~RetCod,4,0) )">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=文件压缩失败</Set>
<Return/>
</If>
<!--生成MD5值-->
<Exec func="ENC:EncryptFilByMD5" error="IGNORE">
<Arg name="fileName" value="$TGZ_NAME"/>
<Arg name="nodeName" value="BSIG_VAL"/>
</Exec>
<Set>RTR_OUT.MD5=$BSIG_VAL</Set><!--文件校验值-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="AGW00000"/>
</Exec>
</Process>
</Function>
</Package>
+41
View File
@@ -0,0 +1,41 @@
<?xml version='1.0' encoding='UTF-8'?>
<Tran>
<Transaction code="TRANS_STS_SYNC" log_switch='1' desc="业务状态同步">
<!--修改交易流水状态 -->
<DynSentence name="UpdCapTxnJnl">
<Sentence>
UPDATE CAPTXNJNL SET TXN_STS = ?, RMK = ? WHERE MERC_ORD_NO = ?
</Sentence>
<Fields>TRANS_STS|REMARK|REF_ID|</Fields>
</DynSentence>
<FlowCtrl>
<Quote name="Init_CAP01"/> <!--交易初始化-->
<!-- 组合一些关键信息 -->
<Set>DSK_NO=$DISK_NO</Set>
<Set>APPLY_DATE=$APPLY_DATE</Set>
<Set>MAKE_FILE=$MAKE_FILE</Set>
<If condition="IS_NOEQUAL_STRING($TRANS_STS,S,F,R)">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg="交易状态有误"</Set>
<Break/>
</If>
<!-- 更新交易状态 -->
<Exec func="PUB:ExecSql" error="IGNORE">
<Arg name="SqlCmd" value="UpdCapTxnJnl"/>
</Exec>
<If condition="~RetCod&lt;0">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg="数据库错误"</Set>
<Break/>
</If>
<Set>Rsp_Cd=00</Set>
<Set>Rsp_Msg=交易成功</Set>
</FlowCtrl>
</Transaction>
</Tran>