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

220 lines
8.2 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!--
数据库表同步
日期 编号 修改人 修改原因
2010.04.23 huang_qx 创建
-->
<Application name="WPS" code="203" trace="yes">
<Define>
<Macro name="UpdSycSts" desc="更新同步信息表状态">
<Set>UpdDat=GETDATE()</Set>
<Set>UpdTim=SUBSTR(GETDATETIME(),9,6)</Set>
<Exec func="PUB:ExecSql" error="IGNORE">
<Arg name="SqlCmd" value="UpdSycSts"/>
</Exec>
<If condition="~RetCod=-1">
<Set>RspMsg=STRCAT(更新[,$TblNam,]同步状态失败)</Set>
</If>
<ElseIf condition="~RetCod=-2">
<Set>RspMsg=STRCAT(更新[,$TblNam,]同步状态失败)</Set>
</ElseIf>
</Macro>
</Define>
<!--同步数据库-->
<Transaction code="100000" desc="同步数据库" log_switch='1'>
<!--更新同步信息表-->
<DynSentence name="UpdSycSts">
<Sentence>
UPDATE PubTblSyc SET (UpdDat,UpdTim,UpdSts,Smr)=('%s','%s','%s','%s') WHERE TblNam = '%s'
</Sentence>
<Fields>UpdDat|UpdTim|UpdSts|Smr|TblNam</Fields>
</DynSentence>
<!--查询同步信息表-->
<DynSentence name="QryTblSyc">
<Sentence>
SELECT TblNam TTblNam,UpdDat TUpdDat, UpdTim TUpdTim, UpdSts TUpdSts, SycFlg TSycFlg
FROM PubTblSyc WHERE SycFlg = '0'
</Sentence>
<Fields></Fields>
</DynSentence>
<!--清空准备同步的表-->
<DynSentence name="DelTbl">
<Sentence>
DELETE FROM %s
</Sentence>
<Fields>TblNam|</Fields>
</DynSentence>
<FlowCtrl>
<!--查询数据库同步表-->
<Exec func="PUB:QueryInGroup" error="IGNORE">
<Arg name="SqlCmd" value="QryTblSyc"/>
<Arg name="RecordName" value="RecIn"/>
</Exec>
<If condition="~RetCod=-1">
<Set>RspCod=329999</Set>
<Set>RspMsg=查询数据库同步表失败</Set>
<Return/>
</If>
<ElseIf condition="~RetCod=-2">
<Set>RspCod=329999</Set>
<Set>RspMsg=数据库同步表无记录</Set>
<Return/>
</ElseIf>
<Set>Seq=1</Set>
<!--循环数据库,进行同步表操作-->
<While condition="INTCMP($Seq,2,$RecNum)">
<Exec func="PUB:BeginWork"/>
<Exec func="PUB:GetValue">
<Arg name="SourName" value="STRCAT(ROOT.RecIn_,$Seq,.TTblNam)"/>
<Arg name="DestName" value="ROOT.TblNam"/>
</Exec>
<Exec func="PUB:GetValue">
<Arg name="SourName" value="STRCAT(ROOT.RecIn_,$Seq,.TUpdDat)"/>
<Arg name="DestName" value="ROOT.TUpdDat"/>
</Exec>
<Exec func="PUB:GetValue">
<Arg name="SourName" value="STRCAT(ROOT.RecIn_,$Seq,.TUpdTim)"/>
<Arg name="DestName" value="ROOT.TUpdTim"/>
</Exec>
<Exec func="PUB:GetValue">
<Arg name="SourName" value="STRCAT(ROOT.RecIn_,$Seq,.TUpdSts)"/>
<Arg name="DestName" value="ROOT.TUpdSts"/>
</Exec>
<Exec func="PUB:GetValue">
<Arg name="SourName" value="STRCAT(ROOT.RecIn_,$Seq,.TSycFlg)"/>
<Arg name="DestName" value="ROOT.TSycFlg"/>
</Exec>
<Set>TmpDat=GETDATE()</Set>
<!--导表脚本路径-->
<Set>FilNam=STRCAT(/home/icsmid/dat/sync/,$TmpDat,_,$TblNam)</Set>
<Exec func="PUB:IsExistFile" error="IGNORE">
<Arg name="FileName" value="$FilNam"/>
</Exec>
<If condition="~RetCod!=0">
<Set>UpdSts=1</Set>
<Set>Smr=STRCAT(文件[,$FilNam,]不存在)</Set>
<Quote name="UpdSycSts"/>
<Set>Seq=ADD($Seq,1)</Set>
<Continue/>
</If>
<!--执行导表脚本-->
<System command="SyncPubTable.sh" error="IGNORE">
<Arg name="FilNam" value="$FilNam"/>
<Arg name="TblNam" value="$TblNam"/>
</System>
<If condition="~RetCod!=0">
<Set>UpdSts=1</Set>
<Set>Smr=STRCAT(脚本执行失败[,$TblNam,])</Set>
<Quote name="UpdSycSts"/>
<Set>Seq=ADD($Seq,1)</Set>
<Continue/>
</If>
<Else>
<Set>UpdSts=0</Set>
<Set>Smr=STRCAT(同步[,$TblNam,]成功)</Set>
<Quote name="UpdSycSts"/>
</Else>
<Exec func="PUB:CommitWork"/>
<Set>Seq=ADD($Seq,1)</Set>
</While>
<Set>RspMsg=交易成功</Set>
<Set>RspCod=000000</Set>
<Set>MsgTyp=N</Set>
</FlowCtrl>
</Transaction>
<!--会计日期切换-->
<Transaction code="100001" desc="会计日期切换" log_switch='1'>
<!--更新会计日期信息表-->
<DynSentence name="UpdSysSts">
<Sentence>
UPDATE pubpltinf SET (LogNo,BLogNo,ActDat)=('90000000','900000','%s') WHERE SysID = 'F0551'
</Sentence>
<Fields>ActDat|</Fields>
</DynSentence>
<!--更新会计日期信息表-->
<DynSentence name="QrySysSts">
<Sentence>
SELECT ActDat OldDat FROM pubpltinf WHERE SysID = 'F0551'
</Sentence>
<Fields></Fields>
</DynSentence>
<FlowCtrl>
<Exec func="PUB:InitTransaction"/>
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="QrySysSts"/>
</Exec>
<If condition="~RetCod=2">
<Set>MsgTyp=E</Set>
<Set>RspCod=999999</Set>
<Set>RspMsg=查询无记录</Set>
<Return/>
</If>
<ElseIf condition="~RetCod!=0">
<Set>MsgTyp=E</Set>
<Set>RspCod=999999</Set>
<Set>RspMsg=数据库操作错误</Set>
<Return/>
</ElseIf>
<Set>TlrId=EEDIER1</Set>
<!--Exec func="AGT:GetLogNo"/-->
<Exec func="PUB:GetLogNo"/>
<Exec func="PUB:CallHostOther" error="IGNORE">
<Arg name="HTxnCd" value="458990" />
<Arg name="ObjSvr" value="SHSTPUB1" />
</Exec>
<If condition="~RetCod!=0">
<Set>MsgTyp=E</Set>
<Set>RspCod=999999</Set>
<Set>RspMsg=上主机查询会计日期错误</Set>
<Return/>
</If>
<If condition="INTCMP($ActDat,6,$OldDat)">
<Exec func="PUB:ExecSql" error="IGNORE">
<Arg name="SqlCmd" value="UpdSysSts"/>
</Exec>
<If condition="~RetCod=-1">
<Set>MsgTyp=E</Set>
<Set>RspCod=999999</Set>
<Set>RspMsg=更新[pubpltinf]会计日期失败</Set>
<Return/>
</If>
<ElseIf condition="~RetCod=-2">
<Set>MsgTyp=E</Set>
<Set>RspCod=999999</Set>
<Set>RspMsg=无记录, 更新[pubpltinf]会计日期失败</Set>
<Return/>
</ElseIf>
<Else>
<Set>MsgTyp=N</Set>
<Set>RspCod=000000</Set>
<Set>RspMsg=交易成功</Set>
<Return/>
</Else>
</If>
<Else>
<Set>MsgTyp=E</Set>
<Set>RspCod=999999</Set>
<Set>RspMsg=会计日期未切换</Set>
<Return/>
</Else>
</FlowCtrl>
</Transaction>
</Application>