def GetDetailFile(rfilename, lfilename): try: #创建文件 ftpShell = os.environ['AFAP_HOME'] + '/data/ahfs/shell/ahfs_ahfs.sh' ftpFp = open(ftpShell, "w") ftpFp.write('open ' + TradeContext.HOST_HOSTIP + '\n') ftpFp.write('user ' + TradeContext.HOST_USERNO + ' ' + TradeContext.HOST_PASSWD + '\n') #下载文件 ftpFp.write('cd ' + TradeContext.HOST_RDIR + '\n') ftpFp.write('lcd ' + TradeContext.HOST_LDIR + '\n') ftpFp.write('quote type c 1381 ' + '\n') ftpFp.write('get ' + rfilename + ' ' + lfilename + '\n') ftpFp.close() ftpcmd = 'ftp -n < ' + ftpShell + ' 1>/dev/null 2>/dev/null ' ret = os.system(ftpcmd) if ( ret != 0 ): return -1 else: return 0 except Exception, e: AfaLoggerFunc.tradeInfo(e) AfaLoggerFunc.tradeInfo('FTP处理异常') return -1
def UpdatePreDtl( action ): AfaLoggerFunc.tradeInfo( '更新原交易流水' ) sql="UPDATE FS_MAINTRANSDTL SET " if( action == 'BANK' ): sql=sql+" BANKSTATUS='3' " elif( action == 'CORP' ): sql=sql+" CORPSTATUS='3' " elif( action == 'TRADE' ): sql=sql+" BANKSTATUS='3' ,CORPSTATUS='3'" else: TradeContext.errorCode, TradeContext.errorMsg='A0041', '入口参数条件不符,没有这种类型的操作' return False sql=sql+" WHERE SERIALNO='"+TradeContext.preAgentSerno+ \ "' AND WORKDATE='"+TradeContext.workDate+"' AND REVTRANF='0'" ret=AfaDBFunc.UpdateSql( sql ) if( ret >0 ): return True AfaLoggerFunc.tradeFatal( sql ) if( ret == 0 ): TradeContext.errorCode, TradeContext.errorMsg='A0100', '未发现原始交易' else : TradeContext.errorCode, TradeContext.errorMsg='A0100', '更新流水主表原交易记录失败'+AfaDBFunc.sqlErrMsg return False
def main( ): AfaLoggerFunc.tradeInfo('******代收代付.参数下载模板[' + TradeContext.TemplateCode + ']进入******') try: #=====================初始化返回报文变量================================ TradeContext.tradeResponse=[] #=====================获取当前系统时间================================== TradeContext.workDate=AfaUtilTools.GetSysDate( ) TradeContext.workTime=AfaUtilTools.GetSysTime( ) #=====================外调接口(前处理)================================== subModuleExistFlag=0 subModuleName = 'T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode try: subModuleHandle=__import__( subModuleName ) except Exception, e: AfaLoggerFunc.tradeInfo( e ) else:
def HostParseRet( hostType ): HostContext.O1TLSQ='' AfaLoggerFunc.tradeInfo( '=======================10' ) if (HostContext.host_Error == True): #主机通讯错误 TradeContext.__status__='2' TradeContext.errorCode, TradeContext.errorMsg = 'A9998', '主机通讯错误' TradeContext.bankCode = HostContext.host_ErrorType #通讯错误代码 return False AfaLoggerFunc.tradeInfo( '=======================11'+HostContext.O1MGID ) if( HostContext.O1MGID == 'AAAAAAA' ): #成功 TradeContext.__status__='0' TradeContext.errorCode, TradeContext.errorMsg = '0000', '主机成功' TradeContext.PDTLSQ = HostContext.O1TLSQ #柜员流水号 TradeContext.PDTRDT = HostContext.O1TRDT #主机时间 TradeContext.PAMGID = HostContext.O1MGID #主机返回代码 return True else: #失败 TradeContext.__status__='1' #安徽农信-主机自动返回错误信息,不需要转换 #result = AfapFunc.RespCodeMsg(HostContext.O1MGID,'0000','100000') #if not result : TradeContext.errorCode, TradeContext.errorMsg = HostContext.O1MGID, HostContext.O1INFO return False
def SubModuleDoSnd(): AfaLoggerFunc.tradeInfo('进入续期查询交易[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']与第三方通讯后处理' ) try: names = Party3Context.getNames( ) for name in names: value = getattr( Party3Context, name ) if ( not name.startswith( '__' ) and type(value) is StringType) : setattr( TradeContext, name, value ) if(TradeContext.errorCode=='0000'): TradeContext.errorMsg="续期查询成功" #TradeContext.syr_name1 = '' #syr_name = [] #if TradeContext.existVariable('syr_name1'): # syr_name.append('xiaozhang') # syr_name.append('xig') TradeContext.O1ACUR = '1' # TradeContext.syr_name = syr_name AfaLoggerFunc.tradeInfo('退出续期查询交易与第三方通讯后处理' ) return True except AfaFlowControl.flowException, e: AfaFlowControl.exitMainFlow( str(e) )
def GetRBSQ( BRSFLG, seqName="RCCPS_SEQ" ): AfaLoggerFunc.tradeDebug( '>>>获取前置流水号' ) #=====是否为往账业务==== if BRSFLG == PL_BRSFLG_SND: #=====判断机构号是否存在==== if( not TradeContext.existVariable( "BESBNO" ) ): raise AfaFlowControl.ExitThisFlow('M999','无机构号,处理失败' ) #=====往账机构号取第3-6位==== TradeContext.Serialno = TradeContext.BESBNO[2:6] AfaLoggerFunc.tradeDebug('>>>开始判断交易代码') #====判断交易代码是否存在(中心7位代码)==== if( not TradeContext.existVariable( "TRCCO" ) ): raise AfaFlowControl.ExitThisFlow('M999','交易代码[TRCCO]字段值不存在' ) #=====判断业务类型,根据交易取不同类型==== AfaLoggerFunc.tradeDebug('>>>开始判断业务类型') if not GetTRCCO(): raise AfaFlowControl.ExitThisFlow('M999','取业务类型失败' ) #=====生成流水号==== AfaLoggerFunc.tradeInfo('>>>开始生成前置流水号') sqlStr = "SELECT NEXTVAL FOR " + seqName + " FROM SYSIBM.SYSDUMMY1" records = AfaDBFunc.SelectSql( sqlStr ) if records == None : raise AfaFlowControl.ExitThisFlow('A0025', AfaDBFun.sqlErrMsg ) #左补"0"(6位) #=====流水号规则:4位机构号+1位业务类型+1位往来账标志+6位顺序号 TradeContext.RBSQ=TradeContext.Serialno+BRSFLG+str(records[0][0]).rjust(6,'0' ) AfaLoggerFunc.tradeInfo( '>>>前置流水号' + TradeContext.RBSQ ) return str( records[0][0] )
def SubModuleDoSnd(): AfaLoggerFunc.tradeDebug('>>>开始处理AFE返回结果') #=====开始判断afe返回结果==== if TradeContext.errorCode != '0000': return AfaFlowControl.ExitThisFlow('M999','发送农信银中心失败') return True
def SubModuleDoFst( ): AfaLoggerFunc.tradeInfo( '初始化汇总查询交易变量' ) if( not (TradeContext.existVariable( "insuid" ) ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '机构号[insuid]值不存在!' ) if( not (TradeContext.existVariable( "productid" ) ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '险种[productid]值不存在!' ) if( not (TradeContext.existVariable( "instno" ) ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '机构号[instno]值不存在!' ) if( not (TradeContext.existVariable( "salerno" ) ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '销售员工工号[salerno]值不存在!' ) if( not (TradeContext.existVariable( "startdate" ) and TradeContext.startdate != '00000000') ): return AfaFlowControl.ExitThisFlow( 'A0001', '起始日期[startdate]值不存在!' ) if( not (TradeContext.existVariable( "enddate" ) and TradeContext.enddate != '00000000' ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '截止日期[enddate]值不存在!' ) if( not TradeContext.existVariable( "channelCode" ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '渠道代码[channelCode]值不存在!' ) if( TradeContext.channelCode == '005' ): if( not TradeContext.existVariable( "tellerno" ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '柜员号[tellerno]值不存在!' ) if( not TradeContext.existVariable( "brno" ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '网点号[brno]值不存在!' ) if( not TradeContext.existVariable( "termid" ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '柜员号[termid]值不存在!' ) return True
def ftpfile( sfilename, rfilename): try: #创建文件 ftpShell = os.environ['AFAP_HOME'] + '/data/ahfs/shell/AhfsFtpTf' + '.sh' ftpFp = open(ftpShell, "w") ftpFp.write('open ' + TradeContext.BATCH_HOSTIP + '\n') ftpFp.write('user ' + TradeContext.BATCH_USERNO + ' ' + TradeContext.BATCH_PASSWD + '\n') #下载文件 ftpFp.write('cd ' + TradeContext.BATCH_RDIR + '\n') ftpFp.write('lcd ' + TradeContext.BATCH_LDIR + '\n') ftpFp.write('bin ' + '\n') ftpFp.write('get ' + rfilename + ' ' + sfilename + '\n') ftpFp.close() ftpcmd = 'ftp -n < ' + ftpShell + ' 1>/dev/null 2>/dev/null ' os.system(ftpcmd) return 0 except Exception, e: AfaLoggerFunc.tradeInfo(e) AfaLoggerFunc.tradeInfo('FTP处理异常') return -1
def main( ): AfaLoggerFunc.tradeInfo('******代收代付.模板1.缴费模板['+TradeContext.TemplateCode+']进入******') try: #=====================初始化返回报文变量================================ TradeContext.tradeResponse=[] #=====================获取当前系统时间================================== TradeContext.workDate=AfaUtilTools.GetSysDate( ) TradeContext.workTime=AfaUtilTools.GetSysTime( ) #=====================判断应用系统状态================================== if not AfaFunc.ChkSysStatus( ) : raise AfaFlowControl.flowException( ) #=====================外调接口(前处理)================================== subModuleExistFlag=0 subModuleName = 'T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode try: subModuleHandle=__import__( subModuleName ) except Exception, e: AfaLoggerFunc.tradeInfo( e) else:
def TrxMain( ): AfaLoggerFunc.tradeInfo('**********批量业务公用交易(8488)开始**********') TradeContext.tradeResponse.append(['O1AFAPDATE', TradeContext.TranDate]) #工作日期 TradeContext.tradeResponse.append(['O1AFAPTIME', TradeContext.TranTime]) #工作时间 if ( TradeContext.I1PROCTYPE == '01' ): #查询账户信息 if ( not AbdtFunc.VMENU_QueryAccInfo( ) ): return False else: return ExitSubTrade( '9000', '无此操作类型' ) AfaLoggerFunc.tradeInfo('**********批量业务公用交易(8488)结束**********') #返回 TradeContext.tradeResponse.append(['errorCode', '0000']) TradeContext.tradeResponse.append(['errorMsg', '交易成功']) return True
def update( update_dict,where_dict ): if not chk(update_dict): return -1 if not chk(where_dict): return -1 updatesql = "" for update_item in update_dict.keys(): if table_dict[update_item] == 'S': updatesql = updatesql + update_item + " = '" + update_dict[update_item] + "'," else: updatesql = updatesql + update_item + " = " + str(update_dict[update_item]) + "," wheresql = "" for where_item in where_dict.keys(): if table_dict[where_item] == 'S': #begin 20110215 蔡永贵修改 #wheresql = wheresql + where_item + " LIKE '" + where_dict[where_item] + "' and " wheresql = wheresql + where_item + " LIKE '%" + where_dict[where_item] + "' and " #end else: wheresql = wheresql + where_item + " = " + str(where_dict[where_item]) + " and " sql = "UPDATE rcc_bilinf SET " + updatesql[0:-1] + " WHERE " + wheresql[0:-5] AfaLoggerFunc.tradeInfo(sql) return AfaDBFunc.UpdateSql( sql )
def SubModuleDoFst(): AfaLoggerFunc.tradeInfo("农信银.通存通兑来账.补正来账[T" + TradeContext.TemplateCode + '_' + TradeContext.TransCode+"]进入") AfaLoggerFunc.tradeInfo("交易前处理(登记流水,中心前处理) 进入") #==============================组织应答报文=========================================== AfaLoggerFunc.tradeInfo("组织应答报文开始") Ormfn = TradeContext.MSGFLGNO Rcvmbrco = TradeContext.SNDMBRCO Sndmbrco = TradeContext.RCVMBRCO #=====报文头==== TradeContext.MSGTYPCO = 'SET010' #报文类代码 TradeContext.RCVSTLBIN = Rcvmbrco #接受方成员行号 TradeContext.SNDSTLBIN = Sndmbrco #发送方成员行号 TradeContext.SNDBRHCO = TradeContext.BESBNO #发起行网点号 TradeContext.SNDCLKNO = TradeContext.BETELR #发起行柜员号 TradeContext.SNDTRDAT = TradeContext.BJEDTE #发起行交易日期 TradeContext.SNDTRTIM = TradeContext.BJETIM #发起行交易时间 TradeContext.MSGFLGNO = Rcvmbrco+TradeContext.BJEDTE + TradeContext.SerialNo #报文标示号 TradeContext.ORMFN = Ormfn #参考报文标示号 TradeContext.NCCWKDAT = TradeContext.NCCworkDate #中心工作日期 TradeContext.OPRTYPNO = '30' #业务类型 TradeContext.ROPRTPNO = '30' #参考业务类型 TradeContext.TRANTYP = '0' #传输类型 TradeContext.CURPIN = "" #异地客户密码 TradeContext.PRCCO = "NN1IA999" TradeContext.STRINFO = "本交易无法补正" AfaLoggerFunc.tradeInfo("组织应答报文结束") AfaLoggerFunc.tradeInfo("交易前处理(登记流水,中心前处理) 退出") return True
def ChkCustInfo( ): #AfaLoggerFunc.tradeInfo('>>>判断个人协议是否存在') try: sql = "" sql = "SELECT PROTOCOLNO,BUSIUSERNO,ACCNO FROM ABDT_CUSTINFO WHERE " sql = sql + "APPNO='AG1014' AND " #业务编号 sql = sql + "BUSINO=" + "'" + TradeContext.I1BUSINO + "'" + " AND (" #单位编号 sql = sql + "BUSIUSERNO=" + "'" + TradeContext.SBNO + "'" + " OR " #商户客户编号 sql = sql + "ACCNO=" + "'" + TradeContext.ACCNO + "'" + " )AND " #银行账号 sql = sql + "STATUS=" + "'" + "1" + "'" #状态 #AfaLoggerFunc.tradeInfo( sql ) records = AfaDBFunc.SelectSql( sql ) if ( records == None ): #AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return ExitSubTrade( '9000', '查询个人协议信息异常' ) if ( len(records) > 0 ): #201208 中间业务优化 llj 判断是社保编号重复,还是账号重复 if records[0][1]== TradeContext.SBNO: return ExitSubTrade( '9000', '该个人协议的社保编号已经被注册,不能再次进行注册') if records[0][2]== TradeContext.ACCNO: return ExitSubTrade( '9000', '该个人协议的账号已经被注册,不能再次进行注册') else: return ExitSubTrade( '9000', '该个人协议已经被注册,不能再次进行注册') return True except Exception, e: AfaLoggerFunc.tradeFatal( str(e) ) return ExitSubTrade( '9999', '判断个人协议信息是否存在异常')
def SubModuleDoFst( ): AfaLoggerFunc.tradeInfo( '缴费信息查询变量值的有效性校验' ) if( not TradeContext.existVariable( "unitno" ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '单位编号[unitno]值不存在!' ) if( not TradeContext.existVariable( "applno" ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '投保单号[applno]值不存在!' ) if( not TradeContext.existVariable( "userno" ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '保单印刷号[userno]值不存在!' ) if( not TradeContext.existVariable( "channelCode" ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '渠道代码[channelCode]值不存在!' ) if( TradeContext.channelCode == '005' ): if( not TradeContext.existVariable( "tellerno" ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '柜员号[tellerno]值不存在!' ) if( not TradeContext.existVariable( "brno" ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '网点号[brno]值不存在!' ) if( not TradeContext.existVariable( "termId" ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '终端号[termId]值不存在!' ) return True
def SubModuleMainFst( ): AfaLoggerFunc.tradeInfo('状态变更通知交易前处理[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']' ) try: if( not TradeContext.existVariable( "nextWorkDate" ) ): return TipsFunc.ExitThisFlow( '93002', 'TIPS工作日期[nextWorkDate]值不存在!' ) if( len(TradeContext.nextWorkDate)!=8 ): return TipsFunc.ExitThisFlow( '93001', 'TIPS工作日期[nextWorkDate]值不合法!' ) if( not TradeContext.existVariable( "SysStat" ) ): return TipsFunc.ExitThisFlow( '93002', 'TIPS[SysStat]值不存在!' ) if TradeContext.SysStat=='0':#日间 #应用运行状态为:运行 if(not TipsFunc.UpdAppStatus('1')): return TipsFunc.ExitThisFlow( 'A0001', '修改应用运行状态失败!' ) #修改应用工作日期 if(not TipsFunc.UpdAppWorkDate(TradeContext.nextWorkDate)): return TipsFunc.ExitThisFlow( 'A0001', '修改应用工作日期失败!' ) if TradeContext.SysStat=='1':#日切窗口 #修改应用工作日期 if(not TipsFunc.UpdAppWorkDate(TradeContext.nextWorkDate)): return TipsFunc.ExitThisFlow( 'A0001', '修改应用工作日期失败!' ) if TradeContext.SysStat=='2':#系统维护状态 #应用运行状态为:暂停 if(not TipsFunc.UpdAppStatus('2')): return TipsFunc.ExitThisFlow( 'A0001', '修改应用运行状态失败!' ) TradeContext.errorCode = '0000' TradeContext.errorMsg = '交易成功' #=============自动打包==================== AfaLoggerFunc.tradeInfo('状态变更通知前处理结束[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']' ) return True except Exception, e: return TipsFunc.exitMainFlow(str(e))
def start(): try: AfaLoggerFunc.tradeInfo('RunSign='+TradeContext.RunSign+' 启用调度') if( TradeContext.existVariable( "BackRunTime" ) and len(TradeContext.BackRunTime)<=0 ): return TipsFunc.ExitThisFlow( 'A0001', '[BackRunTime]值不存在!' ) year=(TradeContext.BackRunTime)[0:4] month=(TradeContext.BackRunTime)[4:6] day=(TradeContext.BackRunTime)[6:8] hour=(TradeContext.BackRunTime)[8:10] minute=(TradeContext.BackRunTime)[10:12] sql="UPDATE AFA_CRONADM " sql=sql+" SET YEAR = '"+year+"', " sql=sql+" MONTH = '"+month+"', " sql=sql+" DAY = '"+day+"', " sql=sql+" HOUR = '"+hour+"', " sql=sql+" MINUTE = '"+minute+"', " sql=sql+" STATUS = '1' " sql=sql+" WHERE TASKID = '00050' " AfaLoggerFunc.tradeInfo(sql) records = AfaDBFunc.UpdateSqlCmt(sql) if( records <=0 ): AfaLoggerFunc.tradeFatal(sql) return AfaFlowControl.ExitThisFlow( 'A0027', '未发现调度信息:'+AfaDBFunc.sqlErrMsg ) if( records == None ): AfaLoggerFunc.tradeFatal(sql) return AfaFlowControl.ExitThisFlow( 'A0002', '数据库操作异常:'+AfaDBFunc.sqlErrMsg ) return True except Exception, e: AfaLoggerFunc.tradeInfo(e) return AfaFlowControl.ExitThisFlow('9999', '程序处理异常'+str(e))
def getErrInfo(ERRKEY): AfaLoggerFunc.tradeInfo(">>>开始获取中心返回代码[" + ERRKEY + "]对应信息") errinf_where_dict = {} if ERRKEY[:2] != 'NN': errinf_where_dict['MBRTYP'] = '1' errinf_where_dict['ERRKEY'] = ERRKEY[:8] else: errinf_where_dict['MBRTYP'] = '2' errinf_where_dict['ERRKEY'] = ERRKEY[4:8] ERRSTR = "" errinf_dict = rccpsDBTrcc_errinf.selectu(errinf_where_dict) if errinf_dict == None: AfaLoggerFunc.tradeInfo("查询中心返回信息数据库异常") if len(errinf_dict) <= 0: ERRSTR = "未知错误" AfaLoggerFunc.tradeInfo("无此返回代码对应信息,返回中心返回信息[未知错误]") else: ERRSTR = errinf_dict['ERRSTR'] AfaLoggerFunc.tradeInfo("找到此返回代码对应信息,返回中心返回信息[" + ERRSTR + "]") AfaLoggerFunc.tradeInfo(">>>结束获取中心返回代码[" + ERRKEY + "]对应信息") return ERRSTR
def QueryBrnoInfo(): try: AfaLoggerFunc.tradeInfo( '--->付款人账号[' + TradeContext.accno + ']' ) AfaLoggerFunc.tradeInfo( '--->收款人账号[' + TradeContext.payeeAcct + ']' ) #通讯区打包 HostContext.I1TRCD = '8810' #主机交易码 HostContext.I1SBNO = TIPS_SBNO_QS #该交易的发起机构 HostContext.I1USID = TIPS_TELLERNO_AUTO #交易柜员号 HostContext.I1AUUS = '' #授权柜员 HostContext.I1AUPS = '' #授权柜员密码 HostContext.I1WSNO = '10.12.5.189' #终端号 HostContext.I1ACNO = TradeContext.accno #借方帐号 HostContext.I1CYNO = '01' #币种 HostContext.I1CFFG = '1' #密码校验标志(0-需要,1-不需要) HostContext.I1PSWD = '' #密码 HostContext.I1CETY = '' #凭证种类 HostContext.I1CCSQ = '' #凭证号码 HostContext.I1CTFG = '' #钞汇标志 HostTradeCode = "8810".ljust(10,' ') HostComm.callHostTrade( os.environ['AFAP_HOME'] + '/conf/hostconf/AH8810.map', HostTradeCode, "0002" ) if( HostContext.host_Error ): AfaLoggerFunc.tradeInfo('>>>主机交易失败=[' + str(HostContext.host_ErrorType) + ']:' + HostContext.host_ErrorMsg) return TipsFunc.ExitThisFlow( '9001', HostContext.host_ErrorMsg ) else: if ( HostContext.O1MGID == 'AAAAAAA' ): TradeContext.brno = HostContext.O1OPNT AfaLoggerFunc.tradeInfo( '----->开户机构[' + TradeContext.brno + ']' ) else: return TipsFunc.ExitThisFlow( HostContext.O1MGID, HostContext.O1INFO ) except Exception, e: AfaLoggerFunc.tradeInfo(e) return AfaFlowControl.ExitThisFlow('9999', '程序处理异常'+str(e))
def TrxMain( ): AfaLoggerFunc.tradeInfo('**********批量作业清单打印(8412)开始**********') TradeContext.tradeResponse.append(['O1AFAPDATE', TradeContext.TranDate]) #工作日期 TradeContext.tradeResponse.append(['O1AFAPTIME', TradeContext.TranTime]) #工作时间 #判断单位协议是否有效 if ( not AbdtFunc.ChkUnitInfo( ) ): return False #查询批量作业报表信息 if ( not QueryBatchInfo( ) ): return False AfaLoggerFunc.tradeInfo('**********批量作业清单打印(8412)结束**********') #返回 TradeContext.tradeResponse.append(['errorCode', '0000']) TradeContext.tradeResponse.append(['errorMsg', '交易成功']) return True
def UpdateUserPass(): sql = "SELECT PASSWORD FROM ABDT_USERINFO WHERE STATUS='1' AND USERNO = '" + TradeContext.USERNO + "'" AfaLoggerFunc.tradeInfo(sql) records = AfaDBFunc.SelectSql( sql ) if (records == None or len(records)==0) : return ExitSubTrade( '9000', '不存在用户信息' ) if (records[0][0] != TradeContext.OLDPASSWD): return ExitSubTrade( '9000', '旧密码不符' ) sql = "UPDATE ABDT_USERINFO SET PASSWORD='******'" sql = sql + " WHERE " sql = sql + "USERNO=" + "'" + TradeContext.USERNO + "'" #用户号 AfaLoggerFunc.tradeInfo(sql) ret = AfaDBFunc.UpdateSqlCmt( sql ) if (ret < 0): return ExitSubTrade('9000', '修改用户密码失败') return True
def SubModuleDoFst( ): AfaLoggerFunc.tradeInfo( '反交易变量值的有效性校验' ) #交易代码 TradeContext.tradeCode = TradeContext.TransCode if( not TradeContext.existVariable( "PreSerialno" ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '原交易流水号[PreSerialno]值不存在!' ) if( not TradeContext.existVariable( "channelCode" ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '渠道代码[channelCode]值不存在!' ) if( TradeContext.channelCode == '005' ): if( not TradeContext.existVariable( "tellerno" ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '柜员号[tellerno]值不存在!' ) if( not TradeContext.existVariable( "brno" ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '网点号[brno]值不存在!' ) if( not TradeContext.existVariable( "termid" ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '柜员号[termid]值不存在!' ) return True
def SubModuleMainFst( ): AfaLoggerFunc.tradeInfo( '进入请求TIPS重发对账明细查询[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']' ) sbrno=TradeContext.brno try: #====判断机构状态======= if not TipsFunc.ChkBranchStatus( ): return False #====获取清算信息======= if not TipsFunc.ChkLiquidStatus( ): return False if TradeContext.brno != TradeContext.__mainBrno__: return TipsFunc.ExitThisFlow( 'A0002', '非清算机构,不允许做此交易') #=============获取平台流水号==================== if TipsFunc.GetSerialno( ) == -1 : raise TipsFunc.flowException( ) #=============与第三方通讯==================== AfaAfeFunc.CommAfe() TradeContext.errorCode = '0000' TradeContext.errorMsg = '请求已受理,请稍候查询对账结果' AfaLoggerFunc.tradeInfo( '退出请求TIPS重发对账明细['+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']' ) return True except TipsFunc.flowException, e: return False
def InsertOnOffDTL(): sql="insert into afa_UnitOnOffDTL(SYSID,UNITNO,SUBUNITNO,STATUS,OPERFLAG,STOPTIME,STARTTIME,NOTE1,NOTE2)" sql=sql+" values" sql=sql+"('"+TradeContext.sysId +"'" sql=sql+",'"+TradeContext.unitno +"'" sql=sql+",'"+TradeContext.TaxOrgName +"'" sql=sql+",'"+'1' +"'" sql=sql+",'"+TradeContext.operFlag +"'" sql=sql+",'"+TradeContext.stopTime +"'" sql=sql+",'"+TradeContext.startTime +"'" sql=sql+",'"+TradeContext.NOTE1 +"'" sql=sql+",'"+TradeContext.NOTE2 +"'" sql=sql+")" if( AfaDBFunc.InsertSqlCmt(sql) == -1 ): AfaLoggerFunc.tradeFatal(sql) return AfaFlowControl.ExitThisFlow( 'A0025', '数据库操作异常:'+AfaDBFunc.sqlErrMsg ) return True #获取商户参数 #def GetUnitStatus(): # AfaLoggerFunc.tradeInfo('获取商户参数' ) # #============系统标识============ # sqlStr = "SELECT * FROM AFA_UNITADM WHERE SYSID = '" + TradeContext.sysId + "' AND " # #============商户代码============ # sqlStr = sqlStr+"UNITNO = '" + TradeContext.unitno + "' " # AfaLoggerFunc.tradeInfo( sqlStr ) # records = AfaDBFunc.SelectSql( sqlStr ) # if( records == None ): # AfaLoggerFunc.tradeFatal( sqlStr ) # return AfaFlowControl.ExitThisFlow( 'A0025', '数据库错误,商户信息表操作异常:'+AfaDBFunc.sqlErrMsg ) # elif( len( records )!=0 ): # AfaUtilTools.ListFilterNone( records ) # TradeContext.__busiMode__ = records[0][6] #=============业务模式=============
def insTransWtr(wtr_dict): AfaLoggerFunc.tradeInfo( ">>>开始登记通存通兑业务登记簿[" + wtr_dict["BJEDTE"] + "][" + wtr_dict["BSPSQN"] + "]交易信息及相关状态" ) if not wtr_dict.has_key("BJEDTE"): return AfaFlowControl.ExitThisFlow( 'S999',"登记通存通兑业务登记簿,BJEDTE不能为空") if not wtr_dict.has_key("BSPSQN"): return AfaFlowControl.ExitThisFlow( 'S999',"登记通存通兑业务登记簿,BSPSQN不能为空") #==========将输入字典赋值到通存通兑业务登记簿字典========================== wtrbka_dict = {} if not rccpsMap0000Dwtr_dict2Dwtrbka.map(wtr_dict,wtrbka_dict): return AfaFlowControl.ExitThisFlow( 'S999', '将输入字典赋值到通存通兑业务登记簿字典异常' ) #==========登记信息到汇兑登记簿============================================ AfaLoggerFunc.tradeInfo(wtrbka_dict) ret = rccpsDBTrcc_wtrbka.insert(wtrbka_dict) if ret <= 0: AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return AfaFlowControl.ExitThisFlow( 'S999', '登记通存通兑业务详细信息到通存通兑业务登记簿异常' ) AfaLoggerFunc.tradeInfo("插入成功") #==========登记初始状态==================================================== if not rccpsState.newTransState(wtr_dict["BJEDTE"],wtr_dict["BSPSQN"],PL_BCSTAT_INIT,PL_BDWFLG_SUCC): return False AfaLoggerFunc.tradeInfo( ">>>结束登记通存通兑业务登记簿[" + wtr_dict["BJEDTE"] + "][" + wtr_dict["BSPSQN"] + "]交易信息及相关状态" ) return True
def Query_ChkVariableExist( ): AfaLoggerFunc.tradeInfo( '查询类变量值的有效性校验[begin]' ) if( not TradeContext.existVariable( "appNo" ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '业务编号[appNo]值不存在!' ) if( not TradeContext.existVariable( "busiNo" ) ): return AfaFlowControl.ExitThisFlow( 'A0001', 'busiNo[busiNo]值不存在!' ) if( not TradeContext.existVariable( "trxCode" ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '交易代码[trxCode]值不存在!' ) if( not TradeContext.existVariable( "channelCode" ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '渠道代码[channelCode]值不存在!' ) else: TradeContext.channelCode=AfaUtilTools.Lfill( TradeContext.channelCode, 3, '0' ) if( TradeContext.channelCode == '001' ): if( not TradeContext.existVariable( "brno" ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '机构代码[brno]值不存在!' ) if( not TradeContext.existVariable( "teller" ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '柜员号[teller]值不存在!' ) AfaLoggerFunc.tradeInfo( '查询类变量值的有效性校验[end]' ) return True
def Delete(): try: if( TradeContext.existVariable( "BRNO" ) and len(TradeContext.BRNO)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[分行行号]:不能为空') sql="SELECT BRNO,PAYBKCODE,BANKNO,BANKACCT,BANKNAME,PAYEEBANKNO,STATUS,ACCNO,NOTE1,NOTE2,NOTE3,NOTE4,NOTE5 " sql=sql+" FROM TIPS_BRANCH_ADM WHERE 1=1 " sql=sql+"AND BRNO='"+ TradeContext.BRNO+"'" AfaLoggerFunc.tradeInfo(sql) records = AfaDBFunc.SelectSql(sql) if( records == None ): AfaLoggerFunc.tradeFatal(sql) return AfaFlowControl.ExitThisFlow( 'A0002', '数据库操作异常:'+AfaDBFunc.sqlErrMsg ) elif( len( records ) == 0 ): return AfaFlowControl.ExitThisFlow( 'A0027', '不存在此上线行信息' ) sql="DELETE " sql=sql+" FROM TIPS_BRANCH_ADM WHERE 1=1 " if( TradeContext.existVariable( "BRNO" ) and len(TradeContext.BRNO)>0): sql=sql+"AND BRNO='"+ TradeContext.BRNO+"'" AfaLoggerFunc.tradeInfo(sql) records = AfaDBFunc.DeleteSqlCmt(sql) if( records == None or records <=0 ): AfaLoggerFunc.tradeFatal(sql) return AfaFlowControl.ExitThisFlow( 'A0002', '数据库操作异常:'+AfaDBFunc.sqlErrMsg ) return True except Exception, e: AfaLoggerFunc.tradeInfo(e) return AfaFlowControl.ExitThisFlow('9999', '程序处理异常'+str(e))
def main( ): AfaLoggerFunc.tradeInfo('======进入缴费交易模板['+TradeContext.TemplateCode+']=======') flag = 0 try: #=============初始化返回报文变量==================== TradeContext.tradeResponse=[] #=============获取当前系统时间==================== TradeContext.workDate = AfaUtilTools.GetSysDate( ) TradeContext.workTime = AfaUtilTools.GetSysTime( ) #begin 20100625 蔡永贵修改 #TradeContext.sysId = "AG2008" TradeContext.sysId = TradeContext.appNo #end TradeContext.agentFlag = "01" TradeContext.__respFlag__='0' #=============外调接口1==================== subModuleExistFlag=0 subModuleName = 'T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode try: subModuleHandle=__import__( subModuleName ) except Exception, e: AfaLoggerFunc.tradeInfo( e) else:
def SubModuleDoSnd(): AfaLoggerFunc.tradeInfo('进入单证重打交易[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']与第三方通信后处理' ) try: names = Party3Context.getNames( ) for name in names: value = getattr( Party3Context, name ) if ( not name.startswith( '__' ) and type(value) is StringType or type(value) is ListType) : setattr( TradeContext, name, value ) if(TradeContext.errorCode=='0000'): #第三方返回成功后更新原保单印刷号 update_sql = "update afa_maintransdtl set " update_sql = update_sql + " userno = '" + TradeContext.userno1 + "'" #user1新保单印刷号 update_sql = update_sql + " where userno = '" + TradeContext.userno + "'" #user原保单印刷号 update_sql = update_sql + " and workdate = '" + TradeContext.workDate + "'" #日期 update_sql = update_sql + " and agentserialno = '" + TradeContext.PreSerialno + "'" #缴费成功的中间业务流水号 #更新并提交数据 if AfaDBFunc.UpdateSqlCmt(update_sql)<0: return AfaFlowControl.ExitThisFlow("A999","更新投保单号失败") #第三方返回成功后生成现金价值文件 if not YbtFunc.createFile( ): return False AfaLoggerFunc.tradeInfo('退出单证重打[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']与第三方通讯后处理' ) return True except Exception, e: AfaFlowControl.exitMainFlow(str(e))
def ADBUpdateTransdtlRev( ): sqlupdate = "" AfaLoggerFunc.tradeInfo( '>>>>>>>开始更新原冲正交易结果信息<<<<<<<') sqlupdate = sqlupdate + "update afa_maintransdtl set " sqlupdate = sqlupdate + " corpcode = '"+TradeContext.errorCode.strip()+"' " sqlupdate = sqlupdate + ", errorMsg = '"+TradeContext.errorMsg.strip()+"' " sqlupdate = sqlupdate + " where sysid = '"+TradeContext.sysId+"' and agentserialno = '"+TradeContext.agentSerialno+"'" AfaLoggerFunc.tradeInfo( 'sqlupdate = ' + str(sqlupdate)) record=AfaDBFunc.UpdateSqlCmt( sqlupdate ) if( record > 0 ): AfaLoggerFunc.tradeInfo( '>>>>>>>更新原冲正交易结果信息成功<<<<<<<') return True if( record == 0 ): AfaLoggerFunc.tradeInfo( '>>>>>>>更新原冲正交易结果信息失败<<<<<<<') TradeContext.errorCode,TradeContext.errorMsg='A0100','未发现原始交易' return False else : AfaLoggerFunc.tradeInfo( '>>>>>>>更新原冲正交易结果信息失败<<<<<<<') TradeContext.errorCode, TradeContext.errorMsg='A0100', '更新原交易状态失败' + AfaDBFunc.sqlErrMsg return False
def chkLimited(BJEDTE,PYRACC,OCCAMT): AfaLoggerFunc.tradeInfo(">>>开始检查当前交易金额是否超限额") pamtbl_where_dict = {'BPATPE':'4','BPARAD':'TDLZXE'} pamtbl_dict = {} pamtbl_dict = rccpsDBTrcc_pamtbl.selectu(pamtbl_where_dict) if pamtbl_dict == None: return AfaFlowControl.ExitThisFlow("S999","查询通兑来账交易限额异常") if len(pamtbl_dict) <= 0: return AfaFlowControl.ExitThisFlow("S999","参数表中无通兑来账参数") else: AfaLoggerFunc.tradeInfo("交易金额限额为[" + str(pamtbl_dict['BPADAT'])+ "]") where_sql = "select count(*),sum(a.occamt) from rcc_wtrbka as a,rcc_spbsta as b where a.bjedte = b.bjedte and a.bspsqn = b.bspsqn and a.PYRACC = '" + PYRACC + "' and a.BJEDTE = '" + BJEDTE + "' and b.bcstat in ('70','72') and b.bdwflg = '1'" records = AfaDBFunc.SelectSql(where_sql) if records == None: return AfaFlowControl.ExitThisFlow('S999','统计账户今日交易总金额异常') else: rec_count = records[0][0] rec_sum = records[0][1] if records[0][0] <= 0: rec_count = 0 rec_sum = 0.00 AfaLoggerFunc.tradeInfo("今日历史交易金额总和为[" + str(rec_sum) + "],本次交易金额为[" + str(OCCAMT) + "]") if float(rec_sum) + float(OCCAMT) > float(pamtbl_dict['BPADAT']): return AfaFlowControl.ExitThisFlow("S999","本账户交易金额超限") AfaLoggerFunc.tradeInfo(">>>结束检查当前交易金额是否超限额") return True
def xnb_Login(): try: sqlStr = "UPDATE AFA_SYSTEM SET STATUS='1' WHERE" sqlStr = sqlStr + " SYSID ='AG2015'" AfaLoggerFunc.tradeInfo('签到sql:'+sqlStr) retcode = AfaDBFunc.UpdateSqlCmt( sqlStr ) if (retcode==None or retcode <= 0): AfaLoggerFunc.tradeInfo('>>>处理结果:签到失败,数据库异常') TradeContext.errorCode,TradeContext.errorMsg = "0001","签到失败,数据库异常" sys.exit(1) AfaLoggerFunc.tradeInfo('>>>处理结果:签到成功') except Exception, e: AfaLoggerFunc.tradeInfo(str(e)) TradeContext.errorCode,TradeContext.errorMsg = "0001",str(e) sys.exit(1)
def ChkAppStatus(): sqlstr = "select status from abdt_unitinfo where appno='" + TradeContext.appNo + "' and busino ='" + TradeContext.busiNo + "'" records = AfaDBFunc.SelectSql( sqlstr ) if( records == None or len( records)==0 ): AfaLoggerFunc.tradeInfo('查找应用状态库失败') return False elif len( records ) == 1: if records[0][0].strip() == '1': return True else: AfaLoggerFunc.tradeInfo('应用状态没有开启') return False else: AfaLoggerFunc.tradeInfo('应用签约异常') return False
def SubModuleDoFst(): AfaLoggerFunc.tradeInfo( '***农信银系统:往账.本地类操作(1.本地操作)交易[TRC001_8554]进入***' ) ##===张恒增加于20091230==== trcbka_where_dict1={} trcbka_where_dict1 = {'BJEDTE':TradeContext.BJEDTE,'BSPSQN':TradeContext.BSPSQN} #==========查询汇兑登记簿相关业务信息======================================= trcbka_dict = rccpsDBTrcc_trcbka.selectu(trcbka_where_dict1) if trcbka_dict == None: AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return AfaFlowControl.ExitThisFlow( 'S999', '查询汇兑业务登记簿交易信息异常' ) if len(trcbka_dict) <= 0: return AfaFlowControl.ExitThisFlow( 'S999', '汇兑业务登记簿中无此交易信息' ) if trcbka_dict['BESBNO'] != TradeContext.BESBNO : return AfaFlowControl.ExitThisFlow( 'S999', '非本机构业务!' ) ##====end================= #=====查询汇兑单笔信息==== trcbka = {} bka = rccpsDBFunc.getTransTrc(TradeContext.BJEDTE,TradeContext.BSPSQN,trcbka) if bka == False: return AfaFlowControl.ExitThisFlow('M999','查询单笔信息失败') else: AfaLoggerFunc.tradeInfo( '>>>查询成功' ) #=====字典赋值到TradeContext==== rccpsMap8554Dtrcbka2CTradeContext.map(trcbka) TradeContext.OCCAMT = str(trcbka['OCCAMT']) #金额 TradeContext.LOCCUSCHRG = str(trcbka['LOCCUSCHRG']) #手续费金额 增加于20091228 张恒 TradeContext.errorCode = '0000' TradeContext.errorMsg = '查询成功' AfaLoggerFunc.tradeInfo( '***农信银系统:往账.本地类操作(1.本地操作)交易[TRC001_8554]退出***' ) return True
def SubModuleDoSnd(): AfaLoggerFunc.tradeInfo('缴费信息查询交易[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']' ) try: sql = "select agentserialno," sql = sql + "userno,username,idcode,amount,usernameb,idcodeb,loandate,loanenddate,crevouno,crebarno,procode,cpicteller,note1 " sql = sql + " from afa_adbinfo where userno = '" + TradeContext.CpicNo.strip() + "' and note3 = '" + TradeContext.unitno.strip() + "'" sql = sql + " and workdate = '"+TradeContext.workDate + "'" sql = sql + " and tellerno = '"+TradeContext.tellerno + "'" sql = sql + " and dtlstatus = '0' " sql = sql + " order by agentserialno desc" AfaLoggerFunc.tradeInfo('缴费信息查询语句'+ sql) records = AfaDBFunc.SelectSql( sql ) if(len(records) < 1): TradeContext.errorCode,TradeContext.errorMsg = "0001","无此投保信息" return False else: #用户编号(保险单号) TradeContext.CpicNo = records[0][1] #投保人名称 TradeContext.UserName = records[0][2] #投保人身份证号码 TradeContext.GovtID = records[0][3] #金额 TradeContext.PaymentAmt = records[0][4] #被保人姓名 TradeContext.UserNameB = records[0][5] #被保人身份证号码 TradeContext.GovtIDB = records[0][6] #借款日期 TradeContext.LoanDate = records[0][7] #借款到期日 TradeContext.LoanEndDate = records[0][8] #借款凭证编号 TradeContext.CreVouNo = records[0][9] #贷款合同编号 TradeContext.CreBarNo = records[0][10] #保险种类 TradeContext.ProCode = records[0][11] #太保业务员代码 TradeContext.CpicTeller = records[0][12] #保单号 TradeContext.CpciPNo = records[0][13] #交易返回码 TradeContext.errorCode = '0000' AfaLoggerFunc.tradeInfo('退出缴费信息查询交易' ) return True except Exception, e: AfaFlowControl.exitMainFlow(str(e))
def DoSumAmountDiff(psSubUnitno): sSqlStr="SELECT SUM(AMOUNT) FROM AFA_MAINTRANSDTL WHERE APPNO='"+TradeContext.appNo+"'" sSqlStr=sSqlStr+" AND UNITNO='"+TradeContext.unitno+"'" sSqlStr=sSqlStr+" AND SUBUNITNO='"+psSubUnitno+"'" sSqlStr=sSqlStr+" AND NOTE9='"+TradeContext.ChkDate+"'" sSqlStr=sSqlStr+" AND NOTE10='"+TradeContext.ChkAcctOrd+"'" sSqlStr=sSqlStr+" AND CHKFLAG='0'" AfaLoggerFunc.tradeInfo( sSqlStr ) SumRecords = AfaDBFunc.SelectSql( sSqlStr ) if(SumRecords == None ): # AfaLoggerFunc.tradeFatal( sqlStr ) return AfaFlowControll.ExitThisFlow( 'A0002', '流水表表操作异常:'+AfaDBFunc.sqlErrMsg ) else: SumRecords=UtilTools.ListFilterNone( SumRecords ,'0') TradeContext.amount=str(SumRecords[0][0]) AfaLoggerFunc.tradeInfo( '汇总联社发生额'+str(TradeContext.amount) ) sSqlStr="SELECT SUM(AMOUNT)*100 FROM CHECK_TRANSDTL WHERE APPNO='"+TradeContext.appNo+"'" sSqlStr=sSqlStr+" AND UNITNO='"+TradeContext.unitno+"'" sSqlStr=sSqlStr+" AND SUBUNITNO='"+psSubUnitno+"'" sSqlStr=sSqlStr +" and workDate = '" + TradeContext.ChkDate + "'" sSqlStr=sSqlStr +" and Batchno = '" + TradeContext.ChkAcctOrd + "'" sSqlStr=sSqlStr +" AND NOTE3 ='" + TradeContext.PayBkCode.strip() + "'" sSqlStr=sSqlStr +" AND NOTE2 ='" + TradeContext.PayeeBankNo.strip() + "'" #sSqlStr=sSqlStr+" AND CHKFLAG!='0' AND CORPCHKFLAG='0'" AfaLoggerFunc.tradeInfo( sSqlStr ) SumRecords = AfaDBFunc.SelectSql( sSqlStr ) if(SumRecords == None ): # AfaLoggerFunc.tradeFatal( sqlStr ) return AfaFlowControll.ExitThisFlow( 'A0002', '流水表表操作异常:'+AfaDBFunc.sqlErrMsg ) else: SumRecords=UtilTools.ListFilterNone( SumRecords ,'0') TradeContext.amountQS=str(SumRecords[0][0]) AfaLoggerFunc.tradeInfo( '汇总联社清算额'+str(TradeContext.amount) ) TradeContext.amountDiff=str(long(float(TradeContext.amountQS)) - long(float(TradeContext.amount))) return True
def UpdUnitDayendStatus(flag): AfaLoggerFunc.tradeInfo('修改商户日终状态' ) GetUnitStatus() if(TradeContext.__busiMode__!='2'): sql="UPDATE AFA_UNITADM SET DAYENDSTATUS='"+flag+"',dayendtime='"+TradeContext.workTime+\ "' WHERE SYSID='"+TradeContext.sysId+"'and UNITNO='"+TradeContext.unitno+"'" else: sql="UPDATE AFA_SUBUNITADM SET DAYENDSTATUS='"+flag+"' , dayendtime='"+TradeContext.workTime+\ "' WHERE SYSID='"+TradeContext.sysId+"' AND UNITNO='"+TradeContext.unitno+"' AND "\ "SUBUNITNO='"+TradeContext.subUnitno+"'" AfaLoggerFunc.tradeInfo(sql ) records=AfaDBFunc.UpdateSqlCmt( sql ) if( records <0 ): AfaLoggerFunc.tradeFatal( sql ) return AfaFlowControl.ExitThisFlow( 'A0025', '数据库错误,商户信息表操作异常:'+AfaDBFunc.sqlErrMsg ) return True
def ADBCheckCert( ): AfaLoggerFunc.tradeInfo('>>>>获取保险公司[' + TradeContext.unitno + ']凭证号,做校验<<<<') sql = "" sql = sql + " select certtype from afa_adbpam where " sql = sql + " unitno='" + TradeContext.unitno + "'" #单位名称(根据保险公司编号来 #查询凭证种类) sql = sql + " and certtype='" + TradeContext.I1CETY + "'" AfaLoggerFunc.tradeInfo( sql ) record = AfaDBFunc.SelectSql( sql ) if ( record==None ): AfaLoggerFunc.tradeInfo( '>>>>查询凭证种类异常<<<<' ) TradeContext.errorCode,TradeContext.errorMsg = 'A0100', '查询凭证种类异常' return False if ( len(record) <= 0): AfaLoggerFunc.tradeInfo( '>>>>保险公司代码或凭证种类非法<<<<' ) TradeContext.errorCode,TradeContext.errorMsg = 'A0100', '保险公司代码或凭证种类非法' return False return True
def GetUnitStatus(): AfaLoggerFunc.tradeInfo('获取商户参数' ) #============系统标识============ sqlStr = "SELECT * FROM AFA_UNITADM WHERE SYSID = '" + TradeContext.sysId + "' AND " #============商户代码============ sqlStr = sqlStr+"UNITNO = '" + TradeContext.unitno + "' " AfaLoggerFunc.tradeInfo( sqlStr ) records = AfaDBFunc.SelectSql( sqlStr ) if( records == None ): AfaLoggerFunc.tradeFatal( sqlStr ) return AfaFlowControl.ExitThisFlow( 'A0025', '数据库错误,商户信息表操作异常:'+AfaDBFunc.sqlErrMsg ) elif( len( records )!=0 ): AfaUtilTools.ListFilterNone( records ) TradeContext.__busiMode__ = records[0][6] #=============业务模式============= if( TradeContext.__busiMode__!="2" ): TradeContext.__unitStatus__ = records[0][4] #=============业务状态============= TradeContext.__unitLoginStatus__ = records[0][27] #=============签到务状态============= TradeContext.__unitDayendStatus__ = records[0][28] #=============日终状态============= TradeContext.__unitCheckStatus__ = records[0][30] #=============对账业务状态============= if( TradeContext.__busiMode__=="2" ): AfaLoggerFunc.tradeInfo('获取子商户参数' ) #============系统标识============ sqlStr = "SELECT * FROM AFA_SUBUNITADM WHERE SYSID = '" + TradeContext.sysId + "' AND " #============商户代码============ sqlStr = sqlStr+"UNITNO = '" + TradeContext.unitno + "' AND " #============子商户代码============ sqlStr = sqlStr+"SUBUNITNO = '" + TradeContext.subUnitno + "' " subRecords = AfaDBFunc.SelectSql( sqlStr ) if(subRecords == None ): return AfaFlowControl.ExitThisFlow( 'A0025', '数据库错误,商户分支单位信息表操作异常:'+AfaDBFunc.sqlErrMsg ) elif( len( subRecords )!=0 ): AfaUtilTools.ListFilterNone( subRecords ) TradeContext.__unitStatus__ = subRecords[0][4] #=============业务状态============= TradeContext.__unitLoginStatus__ = subRecords[0][27] #=============签到务状态============= TradeContext.__unitDayendStatus__ = subRecords[0][28] #=============日终状态============= TradeContext.__unitCheckStatus__ = subRecords[0][30] #=============对账业务状态============= return True
def MainExp_Proc( ): if (len(sys.argv)==1): TradeContext.workDate = AfaUtilTools.GetSysDate( ) #默认导出当天数据 else: TradeContext.workDate = sys.argv[1] #导出指定日期的数据 try: config = ConfigParser.ConfigParser( ) configFileName = os.environ['AFAP_HOME'] + '/conf/lapp.conf' config.readfp( open(configFileName) ) LDIR = config.get("AG2017_AHJF_EXPORT","LDIR") LFileName_AHJF = "ahjf_export_" + TradeContext.workDate + ".txt" DFileName_AHJF = LDIR + "/" + "ahjf_export" + ".txt" FileName_AHJF = "ahjf_export" + ".txt" sql_export = " db2 \"export to '" + DFileName_AHJF + "' of del select * from afa_maintransdtl where sysid='AG2017' and workdate='" + TradeContext.workDate + "' \"" os.system( "db2 connect to maps" ) AfaLoggerFunc.tradeInfo(">>>开始导出表afa_maintransdtl,导出语句:" + sql_export) os.system( sql_export ) os.system( "db2 disconnect maps" ) #上传导出文件 RFileName_AHJF = LFileName_AHJF if not ( AfaFtpFunc.putFile( "AG2017_AHJF_EXPORT",FileName_AHJF,RFileName_AHJF ) ): AfaLoggerFunc.tradeInfo( ">>>上传文件[" + LFileName_AHJF + "]失败" ) return False return True except Exception, e: AfaLoggerFunc.tradeInfo( str(e) ) AfaLoggerFunc.tradeInfo("操作异常") return False
def PutData(filename): AfaLoggerFunc.tradeInfo("开始上传文件:"+TradeContext.busiNo + filename + TradeContext.workDate + ".txt"+"中的数据") try: #创建文件 ftpShell = os.environ['AFAP_HOME'] + '/data/ahfs/shell/ftp_ahfs.sh' ftpFp = open(ftpShell, "w") ftpFp.write('open ' + TradeContext.CROP_HOSTIP + '\n') ftpFp.write('user ' + TradeContext.CROP_USERNO + ' ' + TradeContext.CROP_PASSWD + '\n') #上传文件 if TradeContext.CROP_RDIR : ftpFp.write('cd ' + TradeContext.CROP_RDIR + '\n') ftpFp.write('lcd ' + TradeContext.CROP_LDIR + '\n') ftpFp.write('bin ' + '\n') #=====刘雨龙 20080819 修改文件名称保证唯一性==== #ftpFp.write('put ' + TradeContext.bankCode + filename + TradeContext.workDate + ".txt" + '\n') ftpFp.write('put ' + TradeContext.busiNo + filename + TradeContext.workDate + ".txt " + TradeContext.bankCode+filename+TradeContext.workDate+'.txt\n') ftpFp.close() ftpcmd = 'ftp -n < ' + ftpShell + ' 1>/dev/null 2>/dev/null ' ret = os.system(ftpcmd) if ( ret != 0 ): AfaLoggerFunc.tradeInfo( "上传文件" + TradeContext.busiNo + filename + TradeContext.workDate + ".txt" + "失败" ) #AfaLoggerFunc.tradeInfo( "上传文件" + TradeContext.bankCode + filename + TradeContext.workDate + ".txt" + "失败" ) return -1 else: AfaLoggerFunc.tradeInfo( "上传文件" + TradeContext.busiNo + filename + TradeContext.workDate + ".txt" + "成功" ) #AfaLoggerFunc.tradeInfo( "上传文件" + TradeContext.bankCode + filename + TradeContext.workDate + ".txt" + "成功" ) return 0 except Exception, e: AfaLoggerFunc.tradeInfo('FTP处理异常') return -1
def GetFtpFile(RemoteFileName): TradeContext.sysId = "FTP" TradeContext.hostip = TradeContext.CROP_HOSTIP TradeContext.user = TradeContext.CROP_USERNO TradeContext.pwd = TradeContext.CROP_PASSWD TradeContext.localpath = TradeContext.CROP_LDIR #TradeContext.localfilename = LocalFileName TradeContext.remotefilename = RemoteFileName TradeContext.remotepath = TradeContext.CROP_RDIR TradeContext.TransCode = "8889" TradeContext.TemplateCode = "3001" #=============与第三方通讯通讯==================== TradeContext.__respFlag__='0' AfaAfeFunc.CommAfe() flag = -1 if( TradeContext.errorCode != '0000' ): AfaLoggerFunc.tradeInfo("文件[" + TradeContext.localpath + "/" + RemoteFileName + "]下载失败") flag = -1 else: AfaLoggerFunc.tradeInfo("文件[" + TradeContext.localpath + "/" + RemoteFileName + "]下载成功") flag = 0 #下载完成之后把下载日志记录到数据库中 sql = "" sql = sql + "insert into fs_ftpreturn(busino,hostip,succflag,ftpflag,workdate,worktime,filename,note1,note2) values( " sql = sql + "'" + TradeContext.busiNo + "'," #单位编号 sql = sql + "'" + TradeContext.hostip + "'," #主机地址 sql = sql + "'" + str(flag) + "'," #成功失败标志(0-成功,-1-失败) sql = sql + "'" + "1" + "'," #上传下载标志(0-上传,1-下载) sql = sql + "'" + TradeContext.WORKDATE + "'," #操作日期 sql = sql + "'" + AfaUtilTools.GetSysTime( ) + "'," #操作时间 sql = sql + "'" + RemoteFileName + "'," #下载文件名 sql = sql + "''," #备注1 sql = sql + "'')" #备注2 AfaLoggerFunc.tradeInfo( ">>>>登记下载记录:" + sql ) AfaDBFunc.UpdateSqlCmt( sql ) return flag
def SubModuleDoFst( ): try: AfaLoggerFunc.tradeInfo('进入缴费交易['+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']前处理' ) #TradeContext.tradeType='T' #转账类交易 #if( not TradeContext.existVariable( "corpTime" ) ): # return TipsFunc.ExitThisFlow( 'A0001', '委托日期[corpTime]值不存在!' ) #if( not TradeContext.existVariable( "corpSerno" ) ): # return TipsFunc.ExitThisFlow( 'A0001', '第三方.交易流水号[corpSerno]值不存在!' ) #====判断应用状态======= if not TipsFunc.ChkAppStatus(): return False TradeContext.payeeBankNo = '011100000003' #====获取清算信息======= if not TipsFunc.ChkLiquidStatus(): return False #====检查是否签约户======= #if not TipsFunc.ChkCustSign(): # return False #====判断机构状态======= if not TipsFunc.ChkBranchStatus(): return False #====获取摘要代码======= #if not AfaFlowControl.GetSummaryCode(): # return False #摘要代码 TradeContext.summary_code = 'TIP' #转换金额(以元为单位->以分为单位) #AfaLoggerFunc.tradeInfo('转换前金额(以元为单位)=' + TradeContext.amount) #TradeContext.amount=str(long((float(TradeContext.amount))*100 + 0.1)) #AfaLoggerFunc.tradeInfo('转换后金额(以分为单位)=' + TradeContext.amount) #初始化 #TradeContext.catrFlag = '1' #现金转账标志 TradeContext.__agentEigen__ = '0' #从表标志 TradeContext.channelCode = '001' TradeContext.userno = '12' TradeContext.zoneno = '000' AfaLoggerFunc.tradeInfo('==========================[' +TradeContext.accno+ ']') AfaLoggerFunc.tradeInfo('退出缴费交易['+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']前处理' ) return True except Exception, e: TipsFunc.exitMainFlow(str(e))
def getFile(ConfigNode,LocalFileName,RemoteFileName): AfaLoggerFunc.tradeInfo( '>>>FTP下载文件' ) try: #读取FTP配置文件 config = ConfigParser.ConfigParser( ) configFileName = os.environ['AFAP_HOME'] + '/conf/lapp.conf' config.readfp( open( configFileName ) ) HOSTIP = config.get(ConfigNode,'HOSTIP') HOSTPORT = config.get(ConfigNode,'HOSTPORT') USERNO = config.get(ConfigNode,'USERNO') PASSWD = config.get(ConfigNode,'PASSWD') LDIR = config.get(ConfigNode,'LDIR') RDIR = config.get(ConfigNode,'RDIR') #建立FTP实例 ftp_p = ftplib.FTP() #连接FTP ftp_p.connect(HOSTIP,HOSTPORT) #登陆FTP ftp_p.login(USERNO,PASSWD) #移动到远程FTP服务器指定目录 ftp_p.cwd(RDIR) #以写入方式打开本地文件 file_handler = open(LDIR + "/" + LocalFileName,'wb') #获取指定下载文件内容,并写入到本地文件 ftp_p.retrbinary("RETR " + RDIR + "/" + RemoteFileName,file_handler.write) #关闭本地文件 file_handler.close() #退出FTP ftp_p.quit() #判断本地文件是否生成,若未生成,则抛出异常 if not os.path.exists(LDIR + "/" + LocalFileName): raise Exception,"文件[" + LDIR + "/" + LocalFileName + "]下载失败" AfaLoggerFunc.tradeInfo("文件[" + LDIR + "/" + LocalFileName + "]下载成功") return True except Exception, e: AfaLoggerFunc.tradeInfo(e) return False
def ChkAppStatus( ): AfaLoggerFunc.tradeInfo( '判断应用状态[begin]' ) #============业务编号============ sqlStr = "SELECT STATUS,STARTDATE,ENDDATE,STARTTIME,ENDTIME,ACCNO FROM ABDT_UNITINFO WHERE APPNO = '" + TradeContext.appNo + "'" #============单位编码============ sqlStr = sqlStr + " AND BUSINO = '" + TradeContext.busiNo + "'" #============委托方式============ sqlStr = sqlStr + " AND AGENTTYPE IN ('1','2')" records = AfaDBFunc.SelectSql( sqlStr ) if( records == None ): # AfaLoggerFunc.tradeFatal( sqlStr ) return AfaFlowControl.ExitThisFlow( 'A0002', '代收代付_单位信息表:'+AfaDBFunc.sqlErrMsg ) elif( len( records )!=0 ): AfaUtilTools.ListFilterNone( records ) #===============判断业务状态============================ if( records[0][0]=="0" ): return AfaFlowControl.ExitThisFlow( 'A0004', '该业务处于未启用状态,不能做此交易' ) elif( records[0][0]=="2" ): return AfaFlowControl.ExitThisFlow( 'A0005', '该业务处于关闭状态,不能做此交易' ) elif( records[0][0]=="3" ): return AfaFlowControl.ExitThisFlow( 'A0006', '该业务处于停用状态,不能做此交易' ) #===============判断服务时间============================ if( long( TradeContext.workDate )<long( records[0][1] ) or long( TradeContext.workDate )>long( records[0][2] ) ): return AfaFlowControl.ExitThisFlow ('A0008', "该业务已过期,有效期:["+records[0][1] + "-->" + records[0][2] + "]") #================判断有效时间=========================== if( long(TradeContext.workTime) < long(records[0][3])) or (long(TradeContext.workTime) > long(records[0][4])): return AfaFlowControl.ExitThisFlow( 'A0007', "超过业务开放时间,请在["+records[0][3]+"-->"+records[0][4]+"]做此业务" ) #=============代理业务帐号============= TradeContext.__agentAccno__ = records[0][5] TradeContext.Daccno = records[0][5] AfaLoggerFunc.tradeInfo( '判断应用状态[end]' ) return True else: AfaLoggerFunc.tradeError( sqlStr ) return AfaFlowControl.ExitThisFlow( 'A0003', '该地区没有开放此业务' )
def putFile(ConfigNode,LocalFileName,RemoteFileName): AfaLoggerFunc.tradeInfo( '>>>FTP上传文件' ) try: #读取FTP配置文件 config = ConfigParser.ConfigParser( ) configFileName = os.environ['AFAP_HOME'] + '/conf/lapp.conf' config.readfp( open( configFileName ) ) HOSTIP = config.get(ConfigNode,'HOSTIP') HOSTPORT = config.get(ConfigNode,'HOSTPORT') USERNO = config.get(ConfigNode,'USERNO') PASSWD = config.get(ConfigNode,'PASSWD') LDIR = config.get(ConfigNode,'LDIR') RDIR = config.get(ConfigNode,'RDIR') if not os.path.exists(LDIR + "/" + LocalFileName): raise Exception,"上传文件[" + LDIR + "/" + LocalFileName + "]不存在" #建立FTP实例 ftp_p = ftplib.FTP() #连接FTP ftp_p.connect(HOSTIP,HOSTPORT) #登陆FTP ftp_p.login(USERNO,PASSWD) #移动到远程FTP服务器指定目录下 ftp_p.cwd(RDIR) #以读取方式打开本地文件 file_handler = open(LDIR + "/" + LocalFileName,'rb') #读取本地文件内容,并写入到远程FTP服务器指定文件 ftp_p.storbinary("STOR " + RDIR + "/" + RemoteFileName,file_handler) #关闭本地文件 file_handler.close() #退出FTP ftp_p.quit() AfaLoggerFunc.tradeInfo("文件[" + LDIR + "/" + LocalFileName + "]上传成功") return True except Exception, e: AfaLoggerFunc.tradeInfo(e) return False
def CrtSequence( ): try: sqlStr = "SELECT NEXTVAL FOR AHXNB_ONLINE_SEQ FROM SYSIBM.SYSDUMMY1" records = AfaDBFunc.SelectSql( sqlStr ) if records == None : AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return ExitSubTrade( '9000', '生成序列号异常' ) AfaLoggerFunc.tradeInfo( "序列号:" + str(records[0][0]) ) #序列号 TradeContext.sequenceNo = str(records[0][0]).rjust(3,'0') return True except Exception, e: AfaLoggerFunc.tradeFatal( str(e) ) return ExitSubTrade( '9999', '生成委托号异常' )
def UpdUnitWorkDate(): AfaLoggerFunc.tradeInfo('修改商户当前工作日期' ) curworkdate=TradeContext.workDate if( TradeContext.existVariable( "nextWorkDate" ) ): curworkdate=TradeContext.nextWorkDate GetUnitStatus() if(TradeContext.__busiMode__!='2'): sql="UPDATE AFA_UNITADM SET PREWORKDATE=WORKDATE,WORKDATE='"+curworkdate+"'"+\ " WHERE SYSID='"+TradeContext.sysId+"' AND UNITNO='"+TradeContext.unitno+"'" else: sql="UPDATE AFA_SUBUNITADM SET PREWORKDATE=WORKDATE,WORKDATE='"+curworkdate+"' "+\ " WHERE SYSID='"+TradeContext.sysId+"' AND UNITNO='"+TradeContext.unitno+"' AND "\ "SUBUNITNO='"+TradeContext.subUnitno+"'" AfaLoggerFunc.tradeInfo(sql ) records=AfaDBFunc.UpdateSqlCmt( sql ) if( records <0 ): AfaLoggerFunc.tradeFatal( sql ) return AfaFlowControl.ExitThisFlow( 'A0025', '数据库错误,商户信息表操作异常:'+AfaDBFunc.sqlErrMsg ) return True
def GetFtpConfig( ): AfaLoggerFunc.tradeInfo( '--->获取地市ftp配置信息' ) sql = " select * from fs_dsconf " records = AfaDBFunc.SelectSql( sql ) if records == None: TradeContext.errorCode,TradeContext.errorMsg = "0001","查找地市ftp配置信息异常" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False elif len( records ) == 0: TradeContext.errorCode,TradeContext.errorMsg = "0001","没有找到地市ftp配置信息" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False else: TradeContext.ldir = records[0][5] #本地路径 return records
def SubModuleDoSnd(): AfaLoggerFunc.tradeInfo('进入安徽交罚查询交易[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']与第三方通讯后处理' ) try: names = Party3Context.getNames( ) for name in names: value = getattr( Party3Context, name ) if ( not name.startswith( '__' ) and type(value) is StringType) : setattr( TradeContext, name, value ) if(TradeContext.errorCode=='0000'): TradeContext.errorMsg="安徽交罚查询成功" AfaLoggerFunc.tradeInfo(TradeContext.errorMsg) AfaLoggerFunc.tradeInfo('退出安徽交罚查询交易[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']与第三方通讯后处理' ) return True except Exception, e: AfaFlowControl.ExitThisFlow( "E0001", str(e) )
def SubModuleMainFst( ): TradeContext.TransCode='2111' AfaLoggerFunc.tradeInfo('财税库行_对账回执处理_前处理[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']' ) try: #=============获取平台流水号==================== if TipsFunc.GetSerialno( ) == -1 : AfaLoggerFunc.tradeInfo('>>>处理结果:获取平台流水号异常' ) return TipsFunc.ExitThisFlow( 'A0027', '获取流水号失败' ) #=============与第三方通讯==================== AfaAfeFunc.CommAfe() TradeContext.errorCode='0000' TradeContext.errorMsg='交易成功' AfaLoggerFunc.tradeInfo('财税库行_对账回执处理_前处理结束[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']' ) return True except Exception, e: TipsFunc.exitMainFlow(str(e))
def ChkCustInfo( ): sql = "" AfaLoggerFunc.tradeInfo('>>>判断个人协议是否有效') try: sql = "SELECT USERNAME,IDTYPE,IDCODE,PROTOCOLNO FROM ABDT_CUSTINFO WHERE " sql = sql + "APPNO=" + "'" + TradeContext.I1APPNO + "'" + " AND " #业务编号 sql = sql + "BUSINO=" + "'" + TradeContext.I1BUSINO + "'" + " AND (" #单位编号 sql = sql + "BUSIUSERNO=" + "'" + TradeContext.I1BUSIUSERNO + "'" + " OR " #商户客户编号 sql = sql + "BANKUSERNO=" + "'" + TradeContext.I1BANKUSERNO + "'" + " OR " #银行客户编号 sql = sql + "ACCNO=" + "'" + TradeContext.I1ACCNO + "'" + ") AND " #银行账号 sql = sql + "STATUS=" + "'" + "1" + "'" #状态 AfaLoggerFunc.tradeInfo( sql ) records = AfaDBFunc.SelectSql( sql ) if ( len(records) == 0 ): return ExitSubTrade('9000','没有该客户信息,不能进行相关的操作') #过滤None AfaUtilTools.ListFilterNone( records ) TradeContext.USERNAME = str(records[0][0]) TradeContext.IDTYPE = str(records[0][1]) TradeContext.IDCODE = str(records[0][2]) rPROTOCOLNO = str(records[0][3]) TradeContext.ACCSTATUS = "0" if ( rPROTOCOLNO != TradeContext.I1PROTOCOLNO ): return ExitSubTrade( '9000', '不能修改个人协议编码') return True except Exception, e: AfaLoggerFunc.tradeFatal( str(e) ) return ExitSubTrade( '9999', '判断个人协议信息是否存在异常')
def file_Pro( ): try: #-----1,查询未处理的批量文件 sql = "" sql = sql + " select batchno,filename,workdate,busino,WorkTime,tellerno,filename" sql = sql + " from ahnx_file" sql = sql + " where status='0'" #上传成功 sql = sql + " and filetype='4'" #已有账号签约 AfaLoggerFunc.tradeInfo('>>>>>>>开始查询AHNX_FILE原交易:'+ str(sql)) records = AfaDBFunc.SelectSql( sql ) if records==None: return ExitSubTrade("D0001" ,"查询AHNX_FILE失败") elif(len(records) == 0): return ExitSubTrade("D0001" ,"无此信息") else: AfaLoggerFunc.tradeInfo("AHNX_FILE表中的记录数:" +str(len(records))) for i in range(len(records)): #委托号 TradeContext.batchno = records[i][0] #取得批量签约需转换的文件名 TradeContext.FileName = records[i][1] #开户日期 TradeContext.WorkDate = records[i][2] #单位编号 TradeContext.I1BUSINO = records[i][3] #时间 TradeContext.WorkTime = records[i][4] #柜员号 TradeContext.I1USID = records[i][5] #原始文件名 TradeContext.preFilename = records[i][6] #把批量开户成功的数据转换成社保需要的文件格式 if ( not CrtXnbFile_To_Sb( ) ): continue except Exception, e: AfaLoggerFunc.tradeFatal( str(e) ) return False
def SubModuleDoTrd( ): AfaLoggerFunc.tradeInfo('进入缴费交易[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']与第三方通讯后处理' ) names = Party3Context.getNames( ) for name in names: value = getattr( Party3Context, name ) if ( not name.startswith( '__' ) and type(value) is StringType or type(value) is ListType) : setattr( TradeContext,name, value ) if( TradeContext.errorCode == '0000' ): TradeContext.errorMsg = '交易成功' else: AfaLoggerFunc.tradeInfo('与第三方交易失败') return False AfaLoggerFunc.tradeInfo('退出缴费交易与第三方通讯后处理' ) return True
def CrtBatchNo( ): AfaLoggerFunc.tradeInfo('>>>生成批次委托号') try: sqlStr = "SELECT NEXTVAL FOR ABDT_ONLINE_SEQ FROM SYSIBM.SYSDUMMY1" records = AfaDBFunc.SelectSql( sqlStr ) if records == None : AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return ExitSubTrade( '9000', '生成委托号异常' ) #批次号 TradeContext.BATCHNO = TradeContext.TranDate + str(records[0][0]).rjust(8, '0') return True except Exception, e: AfaLoggerFunc.tradeFatal( str(e) ) return ExitSubTrade( '9999', '生成委托号异常' )
def GetData(RemoteFileName,LocalFileName): ##======== START 20091110 by zhangheng =============================================================== try: HOSTIP = TradeContext.CROP_HOSTIP HOSTPORT = '21' USERNO = TradeContext.CROP_USERNO PASSWD = TradeContext.CROP_PASSWD LDIR = TradeContext.CROP_LDIR RDIR = TradeContext.CROP_RDIR #设置默认超时时间 socket.setdefaulttimeout(15) #建立FTP实例 ftp_p = ftplib.FTP() #连接FTP ftp_p.connect(HOSTIP,HOSTPORT) #登陆FTP ftp_p.login(USERNO,PASSWD) #移动到远程FTP服务器指定目录 ftp_p.cwd(RDIR) #以写入方式打开本地文件 file_handler = open(LDIR + "/" + LocalFileName,'wb') #获取指定下载文件内容,并写入到本地文件 ftp_p.retrbinary("RETR " + RDIR + "/" + RemoteFileName,file_handler.write) #关闭本地文件 file_handler.close() #退出FTP ftp_p.quit() #判断本地文件是否生成,若未生成,则抛出异常 if not os.path.exists(LDIR + "/" + LocalFileName): AfaLoggerFunc.tradeInfo("文件[" + LDIR + "/" + LocalFileName + "]下载失败") return -1 AfaLoggerFunc.tradeInfo("文件[" + LDIR + "/" + LocalFileName + "]下载成功") return 0 ##========= END ================================================================ except Exception, e: AfaLoggerFunc.tradeInfo('FTP处理异常') return -1
def Query(): try: if( TradeContext.existVariable( "PAYEEBANKNO" ) and len(TradeContext.PAYEEBANKNO)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[清算国库支付系统行号]:不能为空') if( TradeContext.existVariable( "PAYBKCODE" ) and len(TradeContext.PAYBKCODE)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[国库关联行行号]:不能为空') sql="SELECT PAYEEBANKNO,TRECODE,TRENAME,PAYEEACCT,PAYEEACCTNAME,PAYBKCODE,PAYBKNAME,LIQUIDATEMODE,STATUS,BRNO,TELLERNO,NOTE1,NOTE2,NOTE3,NOTE4,NOTE5 " sql=sql+" FROM TIPS_LIQUIDATE_ADM WHERE 1=1 " sql=sql+"AND PAYEEBANKNO='"+ TradeContext.PAYEEBANKNO+"'" sql=sql+"AND PAYBKCODE='"+ TradeContext.PAYBKCODE+"'" AfaLoggerFunc.tradeInfo(sql) records = AfaDBFunc.SelectSql(sql) if( records == None ): AfaLoggerFunc.tradeFatal(sql) return AfaFlowControl.ExitThisFlow( 'A0002', '数据库操作异常:'+AfaDBFunc.sqlErrMsg ) elif( len(records) ==0 ): return AfaFlowControl.ExitThisFlow( 'A0027', '未此清算信息' ) elif( len(records) > 1 ): return AfaFlowControl.ExitThisFlow( 'A0027', 'TIPS_LIQUIDATE_ADM表配置错误' ) else: if records[0][7]=='0': return AfaFlowControl.ExitThisFlow( 'A0027', '业务已停止' ) if records[0][7]=='2': return AfaFlowControl.ExitThisFlow( 'A0027', '业务已暂停' ) TradeContext.PAYEEBANKNO = records[0][0] TradeContext.TRECODE = records[0][1] TradeContext.TRENAME = records[0][2] TradeContext.PAYEEACCT = records[0][3] TradeContext.PAYEEACCTNAME = records[0][4] TradeContext.PAYBKCODE = records[0][5] TradeContext.PAYBKNAME = records[0][6] TradeContext.LIQUIDATEMODE = records[0][7] TradeContext.BRNO = records[0][8] TradeContext.TELLERNO = records[0][10] return True except Exception, e: AfaLoggerFunc.tradeInfo(e) return AfaFlowControl.ExitThisFlow('9999', '程序处理异常'+str(e))
def ExpUnitInfo( filename ): AfaLoggerFunc.tradeInfo( '--->开始导出单位协议签约数据' ) try: os.system("db2 connect to maps") #cmd = "db2 \" export to '" + TradeContext.ldir + "/" + filename + "' of del select * from abdt_unitinfo where appno in ('AG2008','AG2012')\" " #begin 20110811 修改,因为芜湖扬子银行三县支行非税与当地非税的012相互冲突,所以增加银行编码015,新增AG2104与银行编码015对应 cmd = "db2 \" export to '" + TradeContext.ldir + "/" + filename + "' of del select * from abdt_unitinfo where appno in ('AG2008','AG2012','AG2104')\" " #end 20110811 os.system( cmd ) os.system("db2 disconnect maps") return True except Exception, e: AfaLoggerFunc.tradeInfo(e) AfaLoggerFunc.tradeInfo('导出单位协议签约数据异常') return False
def SubModuleDoFst(): AfaLoggerFunc.tradeInfo( '***农信银系统:往账.本地类操作(1.本地操作)交易[TRC001_8554]进入***' ) #=====查询汇兑单笔信息==== trcbka = {} bka = rccpsDBFunc.getTransTrc(TradeContext.BJEDTE,TradeContext.BSPSQN,trcbka) if bka == False: return AfaFlowControl.ExitThisFlow('M999','查询单笔信息失败') else: AfaLoggerFunc.tradeInfo( '>>>查询成功' ) #=====字典赋值到TradeContext==== rccpsMap8554Dtrcbka2CTradeContext.map(trcbka) TradeContext.OCCAMT = str(trcbka['OCCAMT']) #金额 TradeContext.LOCCUSCHRG = str(trcbka['LOCCUSCHRG']) #手续费金额 增加于20091228 张恒 TradeContext.errorCode = '0000' TradeContext.errorMsg = '查询成功' AfaLoggerFunc.tradeInfo( '***农信银系统:往账.本地类操作(1.本地操作)交易[TRC001_8554]退出***' ) return True
def main( ): AfaLoggerFunc.tradeInfo('********安徽省新农保.批量模板['+TradeContext.TemplateCode+']进入********') try: #=====================初始化返回报文变量================================ TradeContext.tradeResponse=[] #=====================获取系统日期时间================================== TradeContext.WorkDate=AfaUtilTools.GetSysDate( ) TradeContext.WorkTime=AfaUtilTools.GetSysTime( ) #=====================判断应用系统状态================================== if not AfaFunc.ChkSysStatus( ) : raise AfaFlowControl.flowException( ) #=====================动态加载交易脚本================================== trxModuleName = 'T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode try: trxModuleHandle=__import__( trxModuleName ) except Exception, e: AfaLoggerFunc.tradeInfo(e) raise AfaFlowControl.flowException( 'A0001', '加载交易脚本失败或交易脚本不存在' ) #=====================安徽新农保业务个性化操作========================== if not trxModuleHandle.TrxMain( ) : raise AfaFlowControl.flowException( TradeContext.errorCode,TradeContext.errorMsg) #=====================自动打包========================================== AfaFunc.autoPackData() #=====================退出模板========================================== AfaLoggerFunc.tradeInfo('********安徽省新农保.批量模板['+TradeContext.TemplateCode+']退出********')