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 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 Insert(): try: if( TradeContext.existVariable( "PAYEEBANKNO" ) and len(TradeContext.PAYEEBANKNO)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[清算国库支付系统行号]:不能为空') if( TradeContext.existVariable( "TRECODE" ) and len(TradeContext.TRECODE)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[清算国库代码]:不能为空') if( TradeContext.existVariable( "TRENAME" ) and len(TradeContext.TRENAME)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[清算国库名称]:不能为空') if( TradeContext.existVariable( "PAYEEACCT" ) and len(TradeContext.PAYEEACCT)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[清算国库收款账号]:不能为空') if( TradeContext.existVariable( "PAYEEACCTNAME" ) and len(TradeContext.PAYEEACCTNAME)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[清算国库收款账户名称]:不能为空') if( TradeContext.existVariable( "PAYBKCODE" ) and len(TradeContext.PAYBKCODE)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[国库关联行行号]:不能为空') if( TradeContext.existVariable( "PAYBKNAME" ) and len(TradeContext.PAYBKNAME)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[国库关联行名称]:不能为空') if( TradeContext.existVariable( "LIQUIDATEMODE" ) and len(TradeContext.LIQUIDATEMODE)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[清算模式]:不能为空') if( TradeContext.existVariable( "BRNO" ) and len(TradeContext.BRNO)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[机构代码]:不能为空') if( TradeContext.existVariable( "TELLERNO" ) and len(TradeContext.TELLERNO)<=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', '已存在此清算信息' ) sql="INSERT INTO TIPS_LIQUIDATE_ADM(PAYEEBANKNO,TRECODE,TRENAME,PAYEEACCT,PAYEEACCTNAME,PAYBKCODE,PAYBKNAME,LIQUIDATEMODE,STATUS,BRNO,TELLERNO) " sql=sql+" VALUES " sql=sql+"('"+ TradeContext.PAYEEBANKNO +"'" sql=sql+",'"+ TradeContext.TRECODE +"'" sql=sql+",'"+ TradeContext.TRENAME +"'" sql=sql+",'"+ TradeContext.PAYEEACCT +"'" sql=sql+",'"+ TradeContext.PAYEEACCTNAME+"'" sql=sql+",'"+ TradeContext.PAYBKCODE +"'" sql=sql+",'"+ TradeContext.PAYBKNAME +"'" sql=sql+",'"+ TradeContext.LIQUIDATEMODE+"'" sql=sql+",'"+ '1' +"'" sql=sql+",'"+ TradeContext.BRNO +"'" sql=sql+",'"+ TradeContext.TELLERNO +"'" sql=sql+" ) " AfaLoggerFunc.tradeInfo(sql) records = AfaDBFunc.InsertSqlCmt(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 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 ADBUpdateQueDtl( ): sqlupdate = "" AfaLoggerFunc.tradeInfo( '>>>>>>>新报试算更新原交易流水<<<<<<<') sqlupdate = sqlupdate + "update afa_adbinfo set " sqlupdate = sqlupdate + " note8 = '"+TradeContext.errorMsg.strip()+"' " if( TradeContext.errorCode.strip() == "0000"): sqlupdate = sqlupdate + ", dtlstatus = '0' " sqlupdate = sqlupdate + ", amount = '"+TradeContext.PaymentAmt.strip()+"' " #太保业务员号码 if( TradeContext.existVariable( "CpicTeller" ) and len(TradeContext.CpicTeller.strip()) > 0): sqlupdate = sqlupdate + ", CpicTeller = '"+TradeContext.CpicTeller.strip()+"'" #被保人姓名 if( TradeContext.existVariable( "FullNameB" ) and len(TradeContext.FullNameB.strip()) > 0): sqlupdate = sqlupdate + ", UserNameB = '"+TradeContext.FullNameB.strip()+"'" #被保人证件号码 if( TradeContext.existVariable( "GovtIDB" ) and len(TradeContext.GovtIDB.strip()) > 0): sqlupdate = sqlupdate + ", IdCodeB = '"+TradeContext.GovtIDB.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 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 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 TrxMain( ): try: AfaLoggerFunc.tradeInfo('---------安徽省批量状态查询进入------------') #业务编号 if not( TradeContext.existVariable( "I1APPNO" ) and len(TradeContext.I1APPNO.strip()) > 0): TradeContext.errorCode,TradeContext.errorMsg = 'E9999', "不存在业务编号" raise AfaFlowControl.flowException( ) #单位编号 if not( TradeContext.existVariable( "I1BUSINO" ) and len(TradeContext.I1BUSINO.strip()) > 0): TradeContext.errorCode,TradeContext.errorMsg = 'E9999', "不存在单位编号" raise AfaFlowControl.flowException( ) #申请日期 if not( TradeContext.existVariable( "I1WORKDATE" ) and len(TradeContext.I1WORKDATE.strip()) > 0): TradeContext.errorCode,TradeContext.errorMsg = 'E9999', "不存在申请日期" raise AfaFlowControl.flowException( ) #批次号 if not( TradeContext.existVariable( "I1BATCHNO" ) and len(TradeContext.I1BATCHNO.strip()) > 0): TradeContext.errorCode,TradeContext.errorMsg = 'E9999', "不存在批次号" raise AfaFlowControl.flowException( ) sql = '' sql = "select procmsg from ahnx_file" sql = sql + " where workdate = '"+ TradeContext.I1WORKDATE + "' " sql = sql + " and batchno = '"+ TradeContext.I1BATCHNO + "' " if TradeContext.I1APPNO != "NBKH": sql = sql + " and appno = '"+ TradeContext.I1APPNO +"' " sql = sql + " and busino = '"+ TradeContext.I1BUSINO + "' " AfaLoggerFunc.tradeInfo('>>>>>>>开始查询原交易:'+ str(sql)) records = AfaDBFunc.SelectSql( sql ) if records==None: TradeContext.errorCode,TradeContext.errorMsg = "0001" ,"查询AHNX_FILE表失败" AfaLoggerFunc.tradeInfo('>>>>>>>:'+ TradeContext.errorMsg) return False if(len(records) == 0): TradeContext.errorCode,TradeContext.errorMsg = "0001","无此信息" AfaLoggerFunc.tradeInfo('>>>>>>>:'+ TradeContext.errorMsg) return False else: TradeContext.O1DESCRIBE = records[0][0] TradeContext.errorCode='0000' AfaLoggerFunc.tradeInfo('---------安徽省批量状态查询退出------------') return True except Exception, e: AfaLoggerFunc.tradeInfo( str(e) ) return False
def SubModuleDoFst(): #====begin 蔡永贵 20110215 增加==== #新票据号是16位,需要取后8位,版本号为02,同时要兼容老票据号8位,版本号为01 if len(TradeContext.BILNO) == 16: TradeContext.TMP_BILNO = TradeContext.BILNO[-8:] else: TradeContext.TMP_BILNO = TradeContext.BILNO #============end============ #=================查询原交易信息============================================ if not TradeContext.existVariable('BJEDTE'): return AfaFlowControl.ExitThisFlow("S999", "查询日期不能为空") if not TradeContext.existVariable('RCVBNKCO'): return AfaFlowControl.ExitThisFlow("S999", "接收行行号不能为空") #=================登记查询书信息============================================ AfaLoggerFunc.tradeInfo(">>>开始登记票据业务查询书信息") TradeContext.NCCWKDAT = TradeContext.NCCworkDate TradeContext.ISDEAL = PL_ISDEAL_UNDO #查复标识为未查复 pjcbka_insert_dict = {} if not rccpsMap8514CTradeContext2Dpjcbka.map(pjcbka_insert_dict): return AfaFlowControl.ExitThisFlow("S999", "为票据业务查询查复登记簿赋值异常") ret = rccpsDBTrcc_pjcbka.insertCmt(pjcbka_insert_dict) if ret <= 0: return AfaFlowControl.ExitThisFlow("S999", "登记票据业务查询书信息异常") AfaLoggerFunc.tradeInfo(">>>结束登记票据业务查询书信息") #=================为票据查询书报文赋值====================================== AfaLoggerFunc.tradeInfo(">>>开始为票据查询书报文赋值") TradeContext.MSGTYPCO = 'SET008' TradeContext.SNDBRHCO = TradeContext.BESBNO TradeContext.SNDCLKNO = TradeContext.BETELR TradeContext.SNDTRDAT = TradeContext.BJEDTE TradeContext.SNDTRTIM = TradeContext.BJETIM TradeContext.MSGFLGNO = TradeContext.SNDSTLBIN + TradeContext.TRCDAT + TradeContext.SerialNo TradeContext.NCCWKDAT = TradeContext.NCCworkDate TradeContext.OPRTYPNO = '99' TradeContext.ROPRTPNO = '20' TradeContext.TRANTYP = '0' #TradeContext.TRCDAT = TradeContext.BJEDTE TradeContext.TRCNO = TradeContext.SerialNo #TradeContext.BILPNAM = TradeContext.PYENAM #TradeContext.BILAMT = str(TradeContext.BILAMT) AfaLoggerFunc.tradeInfo(">>>结束为票据查询书报文赋值") return True
def SubTransDtlProc( action ): AfaLoggerFunc.tradeInfo( '>>>增加交易流水从表信息' ) #新增 if ( action == '1' ): sql = "INSERT INTO AFA_SUBTRANSDTL(AGENTSERIALNO,WORKDATE,RECSEQNO,DATA1,DATA2) VALUES(" sql = sql + "'" + TradeContext.agentSerialno + "'" sql = sql + ",'" + TradeContext.workDate + "'" sql = sql + ",'" + '1' + "'" if( TradeContext.existVariable( "appendData1" ) ): sql = sql + ",'" + TradeContext.appendData1 + "'" else: sql = sql + ",'" + "" + "'" if( TradeContext.existVariable( "appendData2" ) ): sql = sql + ",'" + TradeContext.appendData2 + "'" else: sql = sql + ",'" + "" + "'" sql = sql + ")" AfaLoggerFunc.tradeInfo( sql ) subresult = AfaDBFunc.InsertSqlCmt( sql ) if( subresult < 1 ): TradeContext.errorCode, TradeContext.errorMsg='A0044', '插入流水从表失败'+AfaDBFunc.sqlErrMsg return False #修改 if ( action == '2' ): sql = "UPDATE AFA_SUBTRANSDTL SET " if( TradeContext.existVariable( "afe_appendData1" ) ): sql = sql + "DATA1='" + TradeContext.afe_appendData1 + "'" if( TradeContext.existVariable( "afe_appendData2" ) ): sql = sql + ",DATA2='" + TradeContext.afe_appendData2 + "'" sql = sql + " WHERE " sql = sql + "AGENTSERIALNO='" + TradeContext.agentSerialno + "' AND " sql = sql + "WORKDATE='" + TradeContext.workDate + "'" AfaLoggerFunc.tradeInfo( sql ) subresult = AfaDBFunc.UpdateSqlCmt( sql ) if( subresult < 1 ): TradeContext.errorCode, TradeContext.errorMsg='A0044', '插入流水从表失败'+AfaDBFunc.sqlErrMsg return False return True
def SubModuleDoFst(): AfaLoggerFunc.tradeInfo('>>>开始清算账户余额回执发送交易') #=====判断字段值是否存在==== if not TradeContext.existVariable('CHKDAT'): return AfaFlowControl.ExitThisFlow('S999','对账日期不可为空') if not TradeContext.existVariable('OCCAMT'): return AfaFlowControl.ExitThisFlow('S999','本日余额不可为空') if not TradeContext.existVariable('CHKRST'): return AfaFlowControl.ExitThisFlow('S999','对账结果不可为空') #=====进入查询rekbal==== rek_sel = {} rek_sel['NCCWKDAT'] = TradeContext.CHKDAT rek_sel['BRSFLG'] = PL_BRSFLG_RCV record = rccpsDBTrcc_rekbal.selectu(rek_sel) if record == None: return AfaFlowControl.ExitThisFlow('S999','查询清算账户余额通知登记簿异常') elif len(record) <= 0: return AfaFlowControl.ExitThisFlow('S999','查询清算账户余额通知登记簿无记录') else: TradeContext.BOJEDT = record['BJEDTE'] TradeContext.BOSPSQ = record['BSPSQN'] TradeContext.TODAYBAL= record['TODAYBAL'] TradeContext.LSTDTBAL= record['LSTDTBAL'] TradeContext.LBDCFLG = record['LBDCFLG'] TradeContext.NTTDCFLG= record['NTTDCFLG'] TradeContext.NTTBAL = record['NTTBAL'] TradeContext.BALDCFLG= record['BALDCFLG'] TradeContext.AVLBAL = record['AVLBAL'] #=====TradeContext向字典赋值==== TradeContext.NTODAYBAL = TradeContext.OCCAMT TradeContext.SNDMBRCO = record['RCVMBRCO'] TradeContext.RCVMBRCO = record['SNDMBRCO'] rekbal_dict = {} if not rccpsMap8557CTradeContext2Drekbal_dict.map(rekbal_dict): return AfaFlowControl.ExitThisFlow('S999','字典赋值错误') ret = rccpsDBTrcc_rekbal.insertCmt(rekbal_dict) if ret <= 0: return AfaFlowControl.ExitThisFlow('S999','登记清算账户余额通知登记簿异常') #=====赋值发送农信银中心==== TradeContext.ORTRCDAT = record['TRCDAT'] TradeContext.ORTRCNO = record['TRCNO'] TradeContext.TODAYBAL = TradeContext.OCCAMT TradeContext.OPRTYPNO = '99' TradeContext.ROPRTPNO = '99' TradeContext.ORMFN = record['SNDMBRCO'] + TradeContext.ORTRCDAT + TradeContext.ORTRCNO return True
def TrxMain( ): AfaLoggerFunc.tradeInfo('---------新农保柜面业务进入------------') #业务编号 if ( not (TradeContext.existVariable( "Appno" ) and len(TradeContext.Appno.strip()) > 0) ): TradeContext.errorCode,TradeContext.errorMsg = 'NB001', "不存在业务编号" raise AfaFlowControl.flowException( ) #单位编号 if ( not (TradeContext.existVariable( "Busino" ) and len(TradeContext.Busino.strip()) > 0) ): TradeContext.errorCode,TradeContext.errorMsg = 'NB001', "不存在单位编号" raise AfaFlowControl.flowException( ) #上传文件名 if ( not (TradeContext.existVariable( "FileName" ) and len(TradeContext.FileName.strip()) > 0) ): TradeContext.errorCode,TradeContext.errorMsg = 'NB001', "不存在上传文件名" raise AfaFlowControl.flowException( ) #申请日期 if ( not (TradeContext.existVariable( "ApplyDate" ) and len(TradeContext.ApplyDate.strip()) > 0) ): TradeContext.errorCode,TradeContext.errorMsg = 'NB001', "不存在申请日期" raise AfaFlowControl.flowException( ) sql = "" sql = sql + "select BATCHNO,FILENAME,SWAPFILENAME,WORKDATE,STATUS," sql = sql + "PROCMSG,APPLYDATE,APPNO,BUSINO,TOTALNUM,TOTALAMT,FILETYPE," sql = sql + "BRNO,TELLERNO,BEGINDATE,ENDDATE,WORKTIME,NOTE1,NOTE2,NOTE3,NOTE4" sql = sql + " from ahnx_file where" sql = sql + " FileName = '"+ TradeContext.FileName +"'" #上传文件名 sql = sql + " and ApplyDate = '"+ TradeContext.ApplyDate +"'" #申请日期 sql = sql + " and status <>" + "'2'" #文件状态 sql = sql + " and Appno = '"+ TradeContext.Appno +"'" #业务编号 sql = sql + " and Busino = '"+ TradeContext.Busino +"'" #单位编号 AfaLoggerFunc.tradeInfo("批量处理信息查询sql="+sql) records = AfaDBFunc.SelectSql( sql ) if(records == None): AfaLoggerFunc.tradeInfo("批量处理信息查询数据库异常") return ExitSubTrade('NB000', '批量处理信息查询数据库异常') elif(len(records)==0): AfaLoggerFunc.tradeInfo("没有查询到相关的批量处理信息") return ExitSubTrade('NB002', '没有查询到相关的批量处理信息') elif(len(records)>1): AfaLoggerFunc.tradeInfo("该批量处理信息不唯一") return ExitSubTrade('NB003', '该批量处理信息不唯一') else: TradeContext.SwapFileName = records[0][2].strip() TradeContext.ProcMsg = records[0][5].strip() TradeContext.FileType = records[0][11].strip() TradeContext.batchNo = records[0][0].strip() TradeContext.errorCode = "0000" TradeContext.errorMsg = "交易成功" AfaLoggerFunc.tradeInfo('---------新农保柜面业务退出------------') return ExitSubTrade('0000', '交易成功')
def SubModuleDoFst( ): #begin 20091120 蔡永贵 增加 #校验保险公司代码和凭证种类是否合法 if not AfaAhAdb.ADBCheckCert( ): return False #end AfaLoggerFunc.tradeInfo( '初始化交易变量' ) #交易代码 TradeContext.tradeCode = TradeContext.TransCode #用户编号/保险单号 TradeContext.UserNo = TradeContext.CpicNo #地址 if( TradeContext.existVariable( "Line" ) and len(TradeContext.Line.strip()) > 0): TradeContext.Address = TradeContext.Line #电话 if( TradeContext.existVariable( "DialNum" ) and len(TradeContext.DialNum.strip()) > 0): TradeContext.TelePhone = TradeContext.DialNum #邮编 if( TradeContext.existVariable( "Zip" ) and len(TradeContext.Zip.strip()) > 0): TradeContext.ZipCode = TradeContext.Zip #身份证号码 TradeContext.IdCode = TradeContext.GovtID #受益人是否为法定标志 #if( TradeContext.existVariable( "BenficType" ) ): # if ( TradeContext.BenficType == "1"): # TradeContext.BenficStr = "Y" # else: # TradeContext.BenficStr = "N" #AfaLoggerFunc.tradeDebug("BenficStr=[" + TradeContext.BenficStr + "]") #关彬捷 20091124 根据单位编码获取保险公司信息 AfaAhAdb.ADBGetInfoByUnitno() #险种 if( TradeContext.existVariable( "ProCode" ) ): if ( TradeContext.ProCode == '1'): #TradeContext.ProCodeStr = "EL5612" #安贷宝B TradeContext.BenficStr = "N" #第一受益人类型 TradeContext.BenficName2 = "法定" #第二受益人-法定 elif ( TradeContext.ProCode == '2'): #TradeContext.ProCodeStr = "211610" #华夏借款人意外伤害保险 TradeContext.BenficStr = "Y" #第一受益人类型 else: TradeContext.BenficStr = "" AfaLoggerFunc.tradeDebug("BenficStr=[" + TradeContext.BenficStr + "]") return True
def SubModuleDoFst(): #=================汇兑自由格式书检查============================================ if not TradeContext.existVariable('BOJEDT'): return AfaFlowControl.ExitThisFlow("S999", "日期不能为空") if not TradeContext.existVariable('RCVBNKCO'): return AfaFlowControl.ExitThisFlow("S999", "接收行行号不能为空") #=================登记汇兑自由格式书信息============================================ AfaLoggerFunc.tradeInfo(">>>开始登记汇兑业务查询书信息") TradeContext.NCCWKDAT = TradeContext.NCCworkDate #=====刘雨龙 20080701 增加汇兑业务查询查复登记簿信息==== TradeContext.TRCNO = TradeContext.SerialNo #交易流水号 hdcbka_insert_dict = {} if not rccpsMap8513CTradeContext2Dhdcbka.map(hdcbka_insert_dict): return AfaFlowControl.ExitThisFlow("S999", "为汇兑业务查询查复登记簿赋值异常") #AfaLoggerFunc.tradeInfo(hdcbka_insert_dict) ret = rccpsDBTrcc_hdcbka.insertCmt(hdcbka_insert_dict) if ret <= 0: return AfaFlowControl.ExitThisFlow("S999", "登记汇兑业务自由格式信息异常") AfaLoggerFunc.tradeInfo(">>>结束登记汇兑业务查询书信息") #=================为汇兑查询书报文赋值====================================== AfaLoggerFunc.tradeInfo(">>>开始为汇兑查询书报文赋值") TradeContext.TRCCO = '9900513' TradeContext.MSGTYPCO = 'SET008' TradeContext.SNDBRHCO = TradeContext.BESBNO TradeContext.SNDCLKNO = TradeContext.BETELR TradeContext.SNDTRDAT = TradeContext.BJEDTE TradeContext.SNDTRTIM = TradeContext.BJETIM #TradeContext.MSGFLGNO = TradeContext.SNDSTLBIN + TradeContext.TRCDAT + TradeContext.SerialNo TradeContext.ORMFN = hdcbka_insert_dict['SNDMBRCO'] + hdcbka_insert_dict['TRCDAT'] + hdcbka_insert_dict['TRCNO'] TradeContext.NCCWKDAT = TradeContext.NCCworkDate TradeContext.OPRTYPNO = '99' TradeContext.ROPRTPNO = '20' TradeContext.TRANTYP = '0' #TradeContext.TRCDAT = TradeContext.BOJEDT TradeContext.TRCNO = TradeContext.SerialNo AfaLoggerFunc.tradeInfo(">>>结束为汇兑自由格式书报文赋值") AfaLoggerFunc.tradeInfo('发起行交易日期:'+TradeContext.SNDTRDAT) AfaLoggerFunc.tradeInfo( '***农信银系统:往账.中心类操作(1.本地操作).汇兑自由格式书发送[TRC003_8513]退出***' ) return True
def Update(): try: if( TradeContext.existVariable( "BRNO" ) and len(TradeContext.BRNO)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[分行行号]:不能为空') if( TradeContext.existVariable( "PAYBKCODE" ) and len(TradeContext.PAYBKCODE)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[清算行行号]:不能为空') if( TradeContext.existVariable( "STATUS" ) and len(TradeContext.STATUS)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[是否为清算行]:不能为空') if( TradeContext.existVariable( "ACCNO" ) and len(TradeContext.ACCNO)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[待结算财税库款]:不能为空') if( TradeContext.existVariable( "PAYEEBANKNO" ) and len(TradeContext.PAYEEBANKNO)<=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="UPDATE TIPS_BRANCH_ADM SET " sql=sql+"PAYBKCODE='"+ TradeContext.PAYBKCODE+"'," sql=sql+"BANKNO='"+ TradeContext.BANKNO+"'," sql=sql+"BANKACCT='"+ TradeContext.BANKACCT+"'," sql=sql+"BANKNAME='"+ TradeContext.BANKNAME+"'," sql=sql+"PAYEEBANKNO='"+ TradeContext.PAYEEBANKNO+"'," sql=sql+"STATUS='"+ TradeContext.STATUS+"'," sql=sql+"ACCNO='"+ TradeContext.ACCNO+"'," sql=sql+"NOTE3='"+ TradeContext.ACCNAME+"'," sql=sql+"BRNO='"+ TradeContext.BRNO+"' " sql=sql+"WHERE " sql=sql+"BRNO = '"+ TradeContext.BRNO+"'" 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 SubModuleDoFst(): AfaLoggerFunc.tradeInfo("回执个性化处理(本地操作) 进入") #=====校验变量的有效性==== AfaLoggerFunc.tradeInfo("检验变量的有效性") if not TradeContext.existVariable("TRCDAT"): return AfaFlowControl.ExitThisFlow('A099','没有委托日期') if not TradeContext.existVariable("TRCNO"): return AfaFlowControl.ExitThisFlow('A099','没有交易流水号') if not TradeContext.existVariable("SNDBNKCO"): return AfaFlowControl.ExitThisFlow('A099','没有发起行行号') #=====检查是否有对应的请求报文==== AfaLoggerFunc.tradeInfo("检查是否有对应的请求报文") balbka_where_dict = {'TRCDAT':TradeContext.ORMFN[10:18],'TRCNO':TradeContext.ORMFN[18:],'SNDMBRCO':TradeContext.ORMFN[:10]} res = rccpsDBTrcc_balbka.selectu(balbka_where_dict) if( res == None ): return AfaFlowControl.ExitThisFlow('A099','检查对应的请求报文失败') if( len(res) == 0 ): return AfaFlowControl.ExitThisFlow('A099','没有对应的请求报文') #=====组织更新字典==== AfaLoggerFunc.tradeInfo("开始组织更新字典") update_dict = {} update_dict['AVLBAL'] = TradeContext.AVLBAL update_dict['ACCBAL'] = TradeContext.ACCBAL update_dict['PRCCO'] = TradeContext.PRCCO #update_dict['PRCINFO'] = "AFE发送成功,已收到应答报文" update_dict['STRINFO'] = TradeContext.STRINFO where_dict = {} where_dict['TRCDAT'] = TradeContext.TRCDAT where_dict['TRCNO'] = TradeContext.TRCNO where_dict['SNDBNKCO'] = TradeContext.SNDBNKCO #=====更新余额查询登记簿==== AfaLoggerFunc.tradeInfo("更新余额查询登记簿") res = rccpsDBTrcc_balbka.updateCmt(update_dict,where_dict) if( res == -1 ): return AfaFlowControl.ExitThisFlow('A009','更新余额查询登记簿失败') TradeContext.errorCode = '0000' TradeContext.errorMsg = '交易成功' AfaLoggerFunc.tradeInfo("回执个性化处理(本地操作) 退出") return True
def Update(): AfaLoggerFunc.tradeInfo( '********************修改数据表开始*******************' ) try: if( TradeContext.existVariable( "busiNo" ) and len(TradeContext.busiNo)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[单位编码]:不能为空') if( TradeContext.existVariable( "hostIp" ) and len(TradeContext.hostIp)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[财政地址]:不能为空') if( TradeContext.existVariable( "upUser" ) and len(TradeContext.upUser)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[上传用户]:不能为空') if( TradeContext.existVariable( "upPwd" ) and len(TradeContext.upPwd)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[上传密码]:不能为空') if( TradeContext.existVariable( "downUser" ) and len(TradeContext.downUser)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[下载用户]:不能为空') if( TradeContext.existVariable( "downPwd" ) and len(TradeContext.downPwd)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[下载密码]:不能为空') if( TradeContext.existVariable( "accDate" ) and len(TradeContext.accDate)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[开户余额]:不能为空') if( TradeContext.existVariable( "remain" ) and len(TradeContext.remain)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[开户日期]:不能为空') sqlstr="UPDATE fs_businoconf SET " sqlstr1= sqlstr sqlstr1=sqlstr1+"hostIp='"+ TradeContext.hostIp+"'," sqlstr1=sqlstr1+"upUser='******'," sqlstr1=sqlstr1+"upPasswd='"+ TradeContext.upPwd+"'," sqlstr1=sqlstr1+"downUser='******'," sqlstr1=sqlstr1+"downPasswd='"+ TradeContext.downPwd+"'" sqlstr1=sqlstr1+" WHERE " sqlstr1=sqlstr1+"busiNo = '"+ TradeContext.busiNo+"'" AfaLoggerFunc.tradeInfo(sqlstr1) records = AfaDBFunc.UpdateSqlCmt(sqlstr1) if( records <=0 ): AfaLoggerFunc.tradeFatal(sqlstr1) return AfaFlowControl.ExitThisFlow( 'A0027', '未发现信息:'+AfaDBFunc.sqlErrMsg ) if( records == None ): AfaLoggerFunc.tradeFatal(sqlstr1) return AfaFlowControl.ExitThisFlow( 'A0002', '数据库操作异常:'+AfaDBFunc.sqlErrMsg ) sqlstr="UPDATE fs_remain SET " sqlstr2= sqlstr sqlstr2=sqlstr2+"date='"+ TradeContext.accDate+"'," sqlstr2=sqlstr2+"this='"+ TradeContext.remain+"'" sqlstr2=sqlstr2+" WHERE " sqlstr2=sqlstr2+"busiNo = '"+ TradeContext.busiNo+"'" AfaLoggerFunc.tradeInfo(sqlstr2) records = AfaDBFunc.UpdateSqlCmt(sqlstr2) if( records == None or records <=0 ): AfaLoggerFunc.tradeFatal(sqlstr2) return AfaFlowControl.ExitThisFlow( 'A0002', '数据库操作异常:'+AfaDBFunc.sqlErrMsg ) AfaLoggerFunc.tradeInfo( '********************修改数据表结束*******************' ) return True except Exception, e: AfaLoggerFunc.tradeInfo(e) return AfaFlowControl.ExitThisFlow('9999', '程序处理异常'+str(e))
def SubModuleDoFst( ): AfaLoggerFunc.tradeInfo( '初始化交易变量' ) AfaLoggerFunc.tradeInfo( '缴费信息查询变量值的有效性校验' ) if( not TradeContext.existVariable( "CpicNo" ) ): return AfaFlowControl.ExitThisFlow( 'A0001', '保险单号[CpicNo]值不存在!' ) 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 Insert(): try: if( TradeContext.existVariable( "BRNO" ) and len(TradeContext.BRNO)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[分行行号]:不能为空') if( TradeContext.existVariable( "PAYBKCODE" ) and len(TradeContext.PAYBKCODE)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[清算行行号]:不能为空') if( TradeContext.existVariable( "STATUS" ) and len(TradeContext.STATUS)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[是否为清算行]:不能为空') if( TradeContext.existVariable( "ACCNO" ) and len(TradeContext.ACCNO)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[财税库款帐号]:不能为空') if( TradeContext.existVariable( "PAYEEBANKNO" ) and len(TradeContext.PAYEEBANKNO)<=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+"'" #guanbinjie 20090901 设置清算行号为唯一值 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', '已存在此上线行信息' ) sql="INSERT INTO TIPS_BRANCH_ADM(BRNO,PAYBKCODE,BANKNO,BANKACCT,BANKNAME,PAYEEBANKNO,STATUS,ACCNO,NOTE3) " sql=sql+" VALUES " sql=sql+"('"+ TradeContext.BRNO +"'" sql=sql+",'"+ TradeContext.PAYBKCODE +"'" sql=sql+",'"+ TradeContext.BANKNO +"'" sql=sql+",'"+ TradeContext.BANKACCT +"'" sql=sql+",'"+ TradeContext.BANKNAME +"'" sql=sql+",'"+ TradeContext.PAYEEBANKNO +"'" sql=sql+",'"+ TradeContext.STATUS +"'" sql=sql+",'"+ TradeContext.ACCNO +"'" sql=sql+",'"+ TradeContext.ACCNAME +"'" sql=sql+" ) " AfaLoggerFunc.tradeInfo(sql) records = AfaDBFunc.InsertSqlCmt(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 exitMainFlow( msgStr='' ): if( not TradeContext.existVariable( "errorCode" ) or msgStr ): TradeContext.errorCode = 'A9999' TradeContext.errorMsg = '系统错误['+msgStr+']' if TradeContext.errorCode != '0000' : AfaLoggerFunc.tradeFatal( 'errorCode=['+TradeContext.errorCode+']' ) AfaLoggerFunc.tradeFatal( 'errorMsg=['+TradeContext.errorMsg+']' ) AfaLoggerFunc.tradeFatal(TradeContext.TransCode+'交易中断') if( not AfaFunc.autoPackData() ): lenContext=len( TradeContext.tradeResponse ) chkFlag=0 for i in range( lenContext ): if( type(TradeContext.tradeResponse[i][0]) is str and (TradeContext.tradeResponse[i][0]=='errorCode' or TradeContext.tradeResponse[i][0]=='errorMsg')): if(TradeContext.tradeResponse[i][0]=='errorCode'): TradeContext.tradeResponse[i][1]=TradeContext.errorCode chkFlag=chkFlag+1 if(TradeContext.tradeResponse[i][0]=='errorMsg'): TradeContext.tradeResponse[i][1]=TradeContext.errorMsg chkFlag=chkFlag+1 if(chkFlag>=2): break elif i==lenContext-1 : TradeContext.tradeResponse.append( [ 'errorCode', TradeContext.errorCode ] ) TradeContext.tradeResponse.append( [ 'errorMsg', TradeContext.errorMsg ] )
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 Query(): 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', '未定义信息' ) elif( len( records )>1 ): return AfaFlowControl.ExitThisFlow( 'A0027', 'TIPS_BRANCH_ADM表配置错误' ) else: #if records[0][5]=='0': # return AfaFlowControl.ExitThisFlow( 'A0027', '业务已停止' ) # if records[0][5]=='2': # return AfaFlowControl.ExitThisFlow( 'A0027', '业务已暂停' ) TradeContext.BRNO = records[0][0] TradeContext.PAYBKCODE = records[0][1] TradeContext.BANKNO = records[0][2] TradeContext.BANKACCT = records[0][3] TradeContext.BANKNAME = records[0][4] TradeContext.PAYEEBANKNO = records[0][5] TradeContext.STATUS = records[0][6] TradeContext.ACCNO = records[0][7] TradeContext.ACCNAME = records[0][10] return True except Exception, e: AfaLoggerFunc.tradeInfo(e) return AfaFlowControl.ExitThisFlow('9999', '程序处理异常'+str(e))
def main( ): AfaLoggerFunc.tradeInfo('==========进入查询维护类模板['+TradeContext.TemplateCode+']==========') try: #=============初始化返回报文变量==================== TradeContext.tradeResponse=[] #=============获取当前系统时间==================== AfaLoggerFunc.tradeInfo('>>>获取当前系统时间') if not (TradeContext.existVariable( "workDate" ) and len(TradeContext.workDate)>0): TradeContext.workDate = UtilTools.GetSysDate( ) TradeContext.workTime=UtilTools.GetSysTime( ) TradeContext.sysId ='AG2010' TradeContext.busiNo ='00000000000001' #不使用转换返回码 TradeContext.__respFlag__="0" #=============外调接口1==================== subModuleExistFlag=0 subModuleName = 'T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode try: subModuleHandle=__import__( subModuleName ) except Exception, e: AfaLoggerFunc.tradeInfo( e) else:
def Delete(): try: if( TradeContext.existVariable( "busiNo" ) and len(TradeContext.busiNo)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[单位编码]:不能为空') sql="DELETE " sqlstr1=sql+" FROM fs_businoconf WHERE 1=1 " sqlstr1=sqlstr1+"AND busiNo='"+ TradeContext.busiNo+"'" AfaLoggerFunc.tradeInfo(sqlstr1) records = AfaDBFunc.DeleteSqlCmt(sqlstr1) if( records == None or records <=0 ): AfaLoggerFunc.tradeFatal(sqlstr1) return AfaFlowControl.ExitThisFlow( 'A0002', '数据库操作异常:'+AfaDBFunc.sqlErrMsg ) sql="DELETE " sqlstr2=sql+" FROM fs_remain WHERE 1=1 " sqlstr2=sqlstr2+"AND busiNo='"+ TradeContext.busiNo+"'" AfaLoggerFunc.tradeInfo(sqlstr2) records = AfaDBFunc.DeleteSqlCmt(sqlstr2) if( records == None or records <=0 ): AfaLoggerFunc.tradeFatal(sqlstr2) return AfaFlowControl.ExitThisFlow( 'A0002', '数据库操作异常:'+AfaDBFunc.sqlErrMsg ) return True except Exception, e: AfaLoggerFunc.tradeInfo(e) return AfaFlowControl.ExitThisFlow('9999', '程序处理异常'+str(e))
def SubModuleDoFst(): AfaLoggerFunc.tradeInfo( '***农信银系统:往账.本地类操作(1.本地操作)交易[TRC001_8558]进入***' ) #=====判断对账日期是否存在==== if not TradeContext.existVariable('CHKDAT'): return AfaFlowControl.ExitThisFlow('S999','对账日期[CHKDAT]不存在') #=====进入查询rekbal==== rek_sel = {} rek_sel['NCCWKDAT'] = TradeContext.CHKDAT record = rccpsDBTrcc_rekbal.selectu(rek_sel) if record == None: return AfaFlowControl.ExitThisFlow('S999','查询清算账户余额通知登记簿异常') elif len(record) <= 0: return AfaFlowControl.ExitThisFlow('S999','查询清算账户余额通知登记簿无记录') else: TradeContext.CHKRST = record['CHKRST'] #对账结果 TradeContext.OCCAMT = str(record['TODAYBAL']) #行内余额 TradeContext.errorCode = '0000' TradeContext.errorMsg = '成功' AfaLoggerFunc.tradeInfo( '***农信银系统:往账.本地类操作(1.本地操作)交易[TRC001_8558]退出***' ) return True
def WrtLog(logstr): if ( TradeContext.existVariable('CRON_TRACE') ): if ( TradeContext.CRON_TRACE == 'off' ): #不输出日志 return True #elif ( TradeContext.CRON_TRACE == 'dsdf' ): # #向日志输入 # return True # #elif ( TradeContext.CRON_TRACE == 'aix' ): # #向文件输出 # return True elif ( TradeContext.CRON_TRACE == 'file' ): #向文件输出 cronLogger.info(logstr) elif ( TradeContext.CRON_TRACE == 'all' ): #向文件和屏幕同时输出 cronLogger.info(logstr) print logstr elif ( TradeContext.CRON_TRACE == 'stdout' ): #向屏幕输出 print logstr else: #默认向文件和屏幕同时输出 cronLogger.info(logstr) print logstr return True
def Insert(): AfaLoggerFunc.tradeInfo( '********************插入数据表开始*******************' ) try: if( TradeContext.existVariable( "busiNo" ) and len(TradeContext.busiNo)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[单位编码]:不能为空') if( TradeContext.existVariable( "hostIp" ) and len(TradeContext.hostIp)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[财政地址]:不能为空') if( TradeContext.existVariable( "upUser" ) and len(TradeContext.upUser)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[上传用户]:不能为空') if( TradeContext.existVariable( "upPwd" ) and len(TradeContext.upPwd)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[上传密码]:不能为空') if( TradeContext.existVariable( "downUser" ) and len(TradeContext.downUser)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[下载用户]:不能为空') if( TradeContext.existVariable( "downPwd" ) and len(TradeContext.downPwd)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[下载密码]:不能为空') if( TradeContext.existVariable( "accDate" ) and len(TradeContext.accDate)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[开户余额]:不能为空') if( TradeContext.existVariable( "remain" ) and len(TradeContext.remain)<=0): return AfaFlowControl.ExitThisFlow( 'A0027', '[开户日期]:不能为空') sqlstr = "insert into fs_businoconf(BUSINO,HOSTIP,UPUSER,UPPASSWD,UPLDIR,DOWNUSER,DOWNPASSWD,DOWNLDIR,UPRDIR,DOWNRDIR) values(" sqlstr1 = sqlstr sqlstr1 = sqlstr1 + "'" + TradeContext.busiNo + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.hostIp + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.upUser + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.upPwd + "'," sqlstr1 = sqlstr1 + "'/home/maps/afa/data/ahfs'," sqlstr1 = sqlstr1 + "'" + TradeContext.downUser + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.downPwd + "'," sqlstr1 = sqlstr1 + "'/home/maps/afa/data/ahfs',' ',' ')" AfaLoggerFunc.tradeInfo(sqlstr1) records = AfaDBFunc.InsertSqlCmt(sqlstr1) if( records == None or records <=0 ): AfaLoggerFunc.tradeFatal(sqlstr1) return AfaFlowControl.ExitThisFlow( 'A0002', '数据库操作异常:'+AfaDBFunc.sqlErrMsg ) sqlstr = "insert into fs_remain(busino,date,this) values(" sqlstr2 = sqlstr sqlstr2 = sqlstr2 + "'" + TradeContext.busiNo + "'," sqlstr2 = sqlstr2 + "'" + TradeContext.accDate + "'," sqlstr2 = sqlstr2 + "'" + TradeContext.remain + "')" AfaLoggerFunc.tradeInfo(sqlstr2) records = AfaDBFunc.InsertSqlCmt(sqlstr2) if( records == None or records <=0 ): AfaLoggerFunc.tradeFatal(sqlstr2) return AfaFlowControl.ExitThisFlow( 'A0002', '数据库操作异常:'+AfaDBFunc.sqlErrMsg ) AfaLoggerFunc.tradeInfo( '********************插入数据表结束*******************' ) return True except Exception, e: AfaLoggerFunc.tradeInfo(e) return AfaFlowControl.ExitThisFlow('9999', '程序处理异常'+str(e))
def SubModuleDoSnd(): AfaLoggerFunc.tradeInfo('进入查询交易[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']与第三方通讯后处理' ) try: Party3Context.agentSerialno = TradeContext.agentserialno Party3Context.workDate = TradeContext.workDate Party3Context.workTime = TradeContext.workTime Party3Context.amount = TradeContext.amount Party3Context.hostserialno = TradeContext.hostserialno Party3Context.CreBarNo = TradeContext.CreBarNo Party3Context.CreVouNo = TradeContext.CreVouNo Party3Context.LoanDate = TradeContext.LoanDate Party3Context.LoanEndDate = TradeContext.LoanEndDate Party3Context.ProCode = TradeContext.ProCode Party3Context.ProCodeStr = TradeContext.ProCodeStr Party3Context.PlanName = TradeContext.PlanName Party3Context.AccType = TradeContext.AccType names = Party3Context.getNames( ) for name in names: value = getattr( Party3Context, name ) setattr( TradeContext, name, value ) #AfaLoggerFunc.tradeInfo("字段名称 ["+str(name)+"] = "+str(value)) if( TradeContext.errorCode == '0000' ): #if( TradeContext.existVariable( "ProCodeStr" ) ): # if (TradeContext.ProCodeStr == "EL5602"): # TradeContext.ProCode == "1" # else: # TradeContext.ProCode == "0" #责任起始日期日期 if ( TradeContext.existVariable( "EffDate" )): if ( len(str(TradeContext.EffDate)) == 14 ): TradeContext.EffDate = TradeContext.EffDate[0:4]+TradeContext.EffDate[6:8]+TradeContext.EffDate[10:12] if ( TradeContext.existVariable( "TermDate" )): if ( len(str(TradeContext.TermDate)) == 14 ): TradeContext.TermDate = TradeContext.TermDate[0:4]+TradeContext.TermDate[6:8]+TradeContext.TermDate[10:12] update_sql = "update afa_maintransdtl set " update_sql = update_sql + " userno = '" + TradeContext.NCpicNo + "'" update_sql = update_sql + " where userno = '" + TradeContext.OCpicNo + "'" if not AfaDBFunc.UpdateSqlCmt(update_sql): return AfaFlowControl.exitThisFlow("A999","更新投保单号失败") AfaLoggerFunc.tradeInfo('退出查询交易[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']与第三方通讯后处理' ) return True except Exception, e: AfaFlowControl.exitMainFlow(str(e))
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 UpdatePreDtl( action ): AfaLoggerFunc.tradeInfo( '>>>更新原交易流水信息' ) sqlstr="UPDATE AFA_MAINTRANSDTL SET " if( action == 'BANK' ): sqlstr=sqlstr+" BANKSTATUS='3' " elif( action == 'CORP' ): sqlstr=sqlstr+" CORPSTATUS='3' " elif( action == 'TRADE' ): sqlstr=sqlstr+" BANKSTATUS='3',CORPSTATUS='3'" else: TradeContext.errorCode, TradeContext.errorMsg='A0041', '入口参数条件不符,没有这种类型的操作' return False sqlstr = sqlstr + " WHERE " #原交易流水号 if(TradeContext.existVariable( "preAgentSerno" )) : sqlstr=sqlstr + " AGENTSERIALNO='"+TradeContext.preAgentSerno+"' AND " #原渠道流水号 if(TradeContext.existVariable( "preChannelSerno" )) : sqlstr=sqlstr + " CHANNELSERNO='"+TradeContext.preChannelSerno+"' AND " sqlstr = sqlstr + " WORKDATE='" + TradeContext.workDate + "' AND REVTRANF='0'" AfaLoggerFunc.tradeInfo( sqlstr ) ret=AfaDBFunc.UpdateSqlCmt( sqlstr ) if( ret > 0 ): return True if( ret == 0 ): TradeContext.errorCode,TradeContext.errorMsg='A0100','未发现原始交易' return False else : TradeContext.errorCode, TradeContext.errorMsg='A0100', '更新原交易状态失败' + AfaDBFunc.sqlErrMsg return False
def SubModuleDoFst( ): AfaLoggerFunc.tradeInfo( '初始化续期查询交易变量' ) #交易代码(8612) TradeContext.tradeCode = TradeContext.TransCode #保险公司代码 if not( TradeContext.existVariable( "unitno" ) and len(TradeContext.unitno.strip()) > 0): TradeContext.errorCode,TradeContext.errorMsg = 'E9999', "不存在保险公司代码" raise AfaFlowControl.flowException( ) #保险单号 if not( TradeContext.existVariable( "policy" ) and len(TradeContext.policy.strip()) > 0): TradeContext.errorCode,TradeContext.errorMsg = 'E9999', "不存在保险单号" raise AfaFlowControl.flowException( ) return True
def SubModuleDoTrd( ): AfaLoggerFunc.tradeInfo('进入缴费交易[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']与第三方通讯后处理' ) # try: #AfaLoggerFunc.tradeInfo('status='+TradeContext.__status__+'autoRevTranCtl='+TradeContext.__autoRevTranCtl__) Party3Context.agentSerialno = TradeContext.agentSerialno Party3Context.workDate = TradeContext.workDate Party3Context.workTime = TradeContext.workTime Party3Context.amount = TradeContext.amount Party3Context.ProCode = TradeContext.ProCode Party3Context.ProCodeStr = TradeContext.ProCodeStr Party3Context.PlanName = TradeContext.PlanName if not Party3Context.existVariable('CpicTeller'): AfaLoggerFunc.tradeInfo( '>>>保险公司未返回业务员编号,系统自动冲正' ) TradeContext.errorCode, TradeContext.errorMsg = 'A0100', '保险公司未返回业务员编号' return False names = Party3Context.getNames( ) for name in names: value = getattr( Party3Context, name ) if ( not name.startswith( '__' ) and type(value) is StringType) : setattr( TradeContext, name, value ) #AfaLoggerFunc.tradeInfo("字段名称 ["+str(name)+"] = "+str(value)) if( TradeContext.errorCode == '0000' ): TradeContext.errorMsg = '交易成功' if ( TradeContext.existVariable( "EffDate" ) and len(str(TradeContext.EffDate)) == 14): TradeContext.EffDate = TradeContext.EffDate[0:4] + TradeContext.EffDate[6:8] + TradeContext.EffDate[10:12] if ( TradeContext.existVariable( "TermDate" ) and len(str(TradeContext.TermDate)) == 14): TradeContext.TermDate = TradeContext.TermDate[0:4] + TradeContext.TermDate[6:8] + TradeContext.TermDate[10:12] if not AfaAhAdb.ADBUpdateTransdtl( ): #raise AfaFlowControl.accException() return False else: AfaLoggerFunc.tradeInfo('与第三方交易失败') return False #AfaLoggerFunc.tradeInfo("贷款合同和凭证编号 "+TradeContext.CreBarNo+"$$$$$$$"+TradeContext.CreVouNo) #AfaLoggerFunc.tradeInfo("核心流水"+ str(TradeContext.bankSerno)) #TradeContext.CreBarNo = TradeContext.CreBarNo #TradeContext.CreVouNo = TradeContext.CreVouNo #TradeContext.bankSerno = TradeContext.bankSerno AfaLoggerFunc.tradeInfo('退出缴费交易与第三方通讯后处理' ) return True
def QueryUserInfo(): sql = "SELECT ZONENO,BRNO,USERNO,USERNAME,DUTYNO,TEL,ADDRESS FROM ABDT_USERINFO WHERE STATUS='1'" if( TradeContext.existVariable( "USERNO" ) and len(TradeContext.USERNO)>0 ): sql = sql + " AND USERNO = '" + TradeContext.USERNO + "' ORDER BY USERNO" AfaLoggerFunc.tradeInfo(sql) records = AfaDBFunc.SelectSql( sql ) if (records == None): AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return ExitSubTrade( '9999', '查询用户信息异常' ) if (len(records)==0) : return ExitSubTrade( '9000', '不存在用户信息' ) else: TradeContext.RETDATA = "" if(len(records)>5): TradeContext.RETFINDNUM = 5 else: TradeContext.RETFINDNUM = len(records) for i in range(0,TradeContext.RETFINDNUM): TradeContext.RETDATA = TradeContext.RETDATA + records[i][0] #ZONENO TradeContext.RETDATA = TradeContext.RETDATA +"|" TradeContext.RETDATA = TradeContext.RETDATA + records[i][1] #BRNO TradeContext.RETDATA = TradeContext.RETDATA +"|" TradeContext.RETDATA = TradeContext.RETDATA + records[i][2] #USERNO TradeContext.RETDATA = TradeContext.RETDATA +"|" TradeContext.RETDATA = TradeContext.RETDATA + records[i][3] #USERNAME TradeContext.RETDATA = TradeContext.RETDATA +"|" TradeContext.RETDATA = TradeContext.RETDATA + records[i][4] #DUTYNO TradeContext.RETDATA = TradeContext.RETDATA +"|" TradeContext.RETDATA = TradeContext.RETDATA + records[i][5] #TEL TradeContext.RETDATA = TradeContext.RETDATA +"|" TradeContext.RETDATA = TradeContext.RETDATA + records[i][6] #ADDRESS TradeContext.RETDATA = TradeContext.RETDATA +"|" AfaLoggerFunc.tradeInfo( records[i][0] + '|' + records[i][1] + "|" + records[i][2] + "|" + records[i][3] + "|") TradeContext.tradeResponse.append(['RETDATA',TradeContext.RETDATA]) TradeContext.tradeResponse.append(['RETFINDNUM',str(TradeContext.RETFINDNUM)]) 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( ) #=====================校验公共节点的有效性============================== if( not TradeContext.existVariable( "statType" ) ): raise AfaFlowControl.flowException( 'A0001', '轧帐类型[statType]值不存在,不能进行轧帐' ) if( not TradeContext.existVariable( "TransType" ) ): raise AfaFlowControl.flowException( 'A0001', '传输类型[TransType]值不存在,不能进行轧帐' ) AfaLoggerFunc.tradeInfo( '>>>statType = ' + TradeContext.statType ) AfaLoggerFunc.tradeInfo( '>>>TransType = ' + TradeContext.TransType) #=====================轧帐操作========================================== if not StatAccountInfo( TradeContext.statType ) : raise AfaFlowControl.flowException( ) #=====================自动打包========================================== TradeContext.tradeResponse.append( ['errorCode', '0000'] ) TradeContext.tradeResponse.append( ['errorMsg', '交易成功'] ) AfaFunc.autoPackData() #=====================退出模板========================================== AfaLoggerFunc.tradeInfo( '******代收代付.通用轧帐模板[' + TradeContext.TemplateCode + ']退出******' ) except AfaFlowControl.flowException, e: AfaFlowControl.exitMainFlow( str(e) )