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 ChkLiquidStatus(): AfaLoggerFunc.tradeInfo( '>>>获取清算信息' ) sql ="SELECT PAYBKCODE,PAYEEBANKNO,TRECODE,TRENAME,PAYEEACCT,PAYBKNAME,STATUS FROM TIPS_LIQUIDATE_ADM WHERE " sql =sql + "BRNO = '" + TradeContext.brno + "'" AfaLoggerFunc.tradeInfo(sql) records = AfaDBFunc.SelectSql(sql) if( records == None ): AfaLoggerFunc.tradeFatal(sql) return TipsFunc.ExitThisFlow( 'A0002', '数据库操作异常:'+AfaDBFunc.sqlErrMsg ) elif( len( records )==0 ): return TipsFunc.ExitThisFlow( 'A0027', '本机构不是清算行,不可以进行对账差错查询' ) else: if records[0][6]=='0': return TipsFunc.ExitThisFlow( 'A0027', '业务已停止,不可进行查询' ) if records[0][6]=='2': return TipsFunc.ExitThisFlow( 'A0027', '业务已暂停,不可进行查询' ) AfaLoggerFunc.tradeInfo('本机构的清算行号为'+ records[0][0]) AfaLoggerFunc.tradeInfo('柜面送的清算行号为'+ TradeContext.payBkCode) if(records[0][0]!=TradeContext.payBkCode): return TipsFunc.ExitThisFlow( 'A0002', '清算行行号不正确,不允许做此交易') AfaLoggerFunc.tradeInfo( '>>>获取清算信息完成' ) return True
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 SubModuleMainFst( ): AfaLoggerFunc.tradeInfo( '进入自由格式报文接收交易[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']' ) try: #=============初始化返回报文变量==================== TradeContext.tradeResponse=[] sql="insert into TIPS_NOTE(WORKDATE,WORKTIME,SRCNODECODE,DESNODECODE,SENDORGCODE,RCVORGCODE,CONTENT)" sql=sql+" values" sql=sql+"('"+TradeContext.workDate +"'" sql=sql+",'"+TradeContext.workTime +"'" sql=sql+",'"+TradeContext.SrcNodeCode +"'" sql=sql+",'"+TradeContext.DesNodeCode +"'" sql=sql+",'"+TradeContext.SendOrgCode +"'" sql=sql+",'"+TradeContext.RcvOrgCode +"'" sql=sql+",'"+TradeContext.Content +"'" sql=sql+")" AfaLoggerFunc.tradeInfo(sql) if( AfaDBFunc.InsertSqlCmt(sql) == -1 ): AfaLoggerFunc.tradeFatal(sql) TipsFunc.ExitThisFlow( 'A0002', '数据库操作异常:'+AfaDBFunc.sqlErrMsg ) return False #=============自动打包==================== TradeContext.errorCode='0000' TradeContext.errorMsg='交易成功' TipsFunc.autoPackData() #=============程序退出==================== AfaLoggerFunc.tradeInfo( '退出自由格式报文接收交易[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']\n' ) return True except TipsFunc.flowException, e: return TipsFunc.exitMainFlow( )
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 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 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 TrxMain(): AfaLoggerFunc.tradeInfo('**********用户登陆(8800)开始**********') sqlStr = "SELECT ZONENO,BRNO,USERNAME,TEL,ADDRESS,PASSWORD FROM ABDT_USERINFO WHERE STATUS='1'" sqlStr = sqlStr + " AND USERNO = '" + TradeContext.USERNO + "'" AfaLoggerFunc.tradeInfo(sqlStr) records = AfaDBFunc.SelectSql( sqlStr ) if (records == None): AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return ExitSubTrade( '9999', '查询用户信息异常' ) if (len(records)==0) : return ExitSubTrade( '9000', '该用户号不存在' ) else: if ( records[0][5] == TradeContext.PASSWD ): TradeContext.tradeResponse.append(['ZONENO', records[0][0]]) TradeContext.tradeResponse.append(['BRNO', records[0][1]]) TradeContext.tradeResponse.append(['USERNAME', records[0][2]]) else: return ExitSubTrade( '9999', '密码错误,请重试!') AfaLoggerFunc.tradeInfo('**********用户登陆(8800)结束**********') #返回 TradeContext.tradeResponse.append(['errorCode', '0000']) TradeContext.tradeResponse.append(['errorMsg', '交易成功']) return True
def ChkCustInfo( ): AfaLoggerFunc.tradeInfo('>>>判断企业协议是否存在') try: sql = "" sql = "SELECT PROTOCOLNO FROM ABDT_CUSTINFO WHERE " sql = sql + "APPNO=" + "'" + TradeContext.Appno + "'" + " AND " #业务编号 sql = sql + "BUSINO=" + "'" + TradeContext.PayeeUnitno + "'" + " AND (" #单位编号 sql = sql + "BUSIUSERNO=" + "'" + TradeContext.PayerUnitno + "'" + " OR " #商户客户编号 sql = sql + "BANKUSERNO=" + "'" + TradeContext.PayerAccno[0:12] + "'" + " OR " #银行客户编号 sql = sql + "ACCNO=" + "'" + TradeContext.PayerAccno + "'" + ") 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 ): return ExitSubTrade( '9000', '该企业协议已经被注册,不能再次进行注册') return True except Exception, e: AfaLoggerFunc.tradeFatal( str(e) ) return ExitSubTrade( '9999', '判断企业协议信息是否存在异常')
def insTransTrc(trc_dict): AfaLoggerFunc.tradeInfo( ">>>开始登记汇兑业务登记簿[" + trc_dict["BJEDTE"] + "][" + trc_dict["BSPSQN"] + "]交易信息及相关状态" ) if not trc_dict.has_key("BJEDTE"): return AfaFlowControl.ExitThisFlow( 'S999',"登记汇兑业务登记簿,BJEDTE不能为空") if not trc_dict.has_key("BSPSQN"): return AfaFlowControl.ExitThisFlow( 'S999',"登记汇兑业务登记簿,BSPSQN不能为空") #==========将输入字典赋值到汇兑业务登记簿字典============================== trcbka_dict = {} if not rccpsMap0000Dtrc_dict2Dtrcbka.map(trc_dict,trcbka_dict): return AfaFlowControl.ExitThisFlow( 'S999', '将输入字典赋值到汇兑业务登记簿字典异常' ) #==========登记信息到汇兑登记簿============================================ ret = rccpsDBTrcc_trcbka.insert(trcbka_dict) if ret <= 0: AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return AfaFlowControl.ExitThisFlow( 'S999', '登记汇兑业务详细信息到汇兑业务登记簿异常' ) AfaLoggerFunc.tradeInfo("插入成功") #==========登记初始状态==================================================== if not rccpsState.newTransState(trc_dict["BJEDTE"],trc_dict["BSPSQN"],PL_BCSTAT_INIT,PL_BDWFLG_SUCC): return False AfaLoggerFunc.tradeInfo( ">>>结束登记汇兑业务登记簿[" + trc_dict["BJEDTE"] + "][" + trc_dict["BSPSQN"] + "]交易信息及相关状态" ) return True
def CommHost( result = '8844' ): AfaLoggerFunc.tradeInfo('>>>主机通讯函数[CommHost]') #根据正反交易标志TradeContext.revTranF判断具体选择哪个map文件和主机接口方式 if (result == '8844'): AfaLoggerFunc.tradeInfo('>>>核心记帐') mapfile=os.environ['AFAP_HOME'] + '/conf/hostconf/AH8844.map' TradeContext.HostCode = '8844' else: TradeContext.errorCode = 'A9999' TradeContext.errorMsg = '主机代码错误' return False AfaLoggerFunc.tradeInfo( '=======================7' ) #此处交易代码要求10位,右补空格 HostComm.callHostTrade( mapfile, UtilTools.Rfill(TradeContext.HostCode,10,' ') ,'0002' ) AfaLoggerFunc.tradeInfo( '=======================8' ) if HostContext.host_Error: AfaLoggerFunc.tradeFatal( 'host_Error:'+str( HostContext.host_ErrorType )+':'+HostContext.host_ErrorMsg ) if HostContext.host_ErrorType != 5 : TradeContext.__status__='1' TradeContext.errorCode='A0101' TradeContext.errorMsg=HostContext.host_ErrorMsg else : TradeContext.__status__='2' TradeContext.errorCode='A0102' TradeContext.errorMsg=HostContext.host_ErrorMsg return False AfaLoggerFunc.tradeInfo( '=======================9' ) #================分析主机返回包==================== return HostParseRet(result )
def SubModuleDealFst( ): AfaLoggerFunc.tradeInfo('进入缴费反交易[TPS003_845002]数据预查询' ) #====判断应用状态======= if not TipsFunc.ChkAppStatus(): return False sqlstr="SELECT TAXPAYCODE,AMOUNT,SERIALNO,ZONENO,BRNO,TELLERNO,BANKSTATUS,CORPSTATUS FROM TIPS_MAINTRANSDTL WHERE " sqlstr=sqlstr + " WORKDATE='"+TradeContext.workDate+ "' AND REVTRANF='0'" sqlstr=sqlstr + "AND CORPSERNO='"+TradeContext.preCorpSerno+"'" AfaLoggerFunc.tradeInfo( sqlstr ) tmp = AfaDBFunc.SelectSql( sqlstr ) if tmp == None : return TipsFunc.ExitThisFlow( 'A0025', AfaDBFunc.sqlErrMsg ) elif len( tmp ) == 0 : AfaLoggerFunc.tradeFatal( sqlstr ) return TipsFunc.ExitThisFlow( 'A0045', '未发现原交易' ) else: if tmp[0][6]=='1': return TipsFunc.ExitThisFlow( 'A0045', '原交易未成功' ) if tmp[0][6]=='3': return TipsFunc.ExitThisFlow( 'A0045', '原交易已冲正' ) else: tmp=UtilTools.ListFilterNone( tmp ) TradeContext.taxPayCode =tmp[0][0] #用户号 TradeContext.amount =tmp[0][1] #金额 TradeContext.preAgentSerno =tmp[0][2] #原交易流水号 TradeContext.zoneno =tmp[0][3] TradeContext.brno =tmp[0][4] TradeContext.teller =tmp[0][5] #TradeContext.appNo =tmp[0][9] AfaLoggerFunc.tradeInfo('退出缴费反交易[T004203_031021]数据预查询' ) return True
def TrxMain( ): AfaLoggerFunc.tradeInfo('**********批量处理多笔查询(8490)开始**********') TradeContext.O1AFAPDATE = TradeContext.TranDate #工作日期 TradeContext.O1AFAPTIME = TradeContext.TranTime #工作日期 #查询单位信息,获得单位编号 try: sql = "" sql = "SELECT BUSINO FROM ABDT_UNITINFO WHERE " sql = sql + "APPNO=" + "'" + TradeContext.I1APPNO + "'" + " AND " #业务编号 sql = sql + "ACCNO=" + "'" + TradeContext.I1ACCNO + "'" #对公账户 AfaLoggerFunc.tradeInfo( sql ) results = AfaDBFunc.SelectSql( sql ) if ( results == None ): AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return ExitSubTrade( '9000', '查询单位信息异常' ) if ( len(results) <= 0 ): return ExitSubTrade( '9000', '没有单位信息,不能进行此类操作') except Exception, e: AfaLoggerFunc.tradeFatal( str(e) ) return ExitSubTrade( '9999', '查询单位信息失败')
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 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 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 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 CommHost( result = '8830' ): AfaLoggerFunc.tradeInfo('>>>主机通讯函数[CommHost]') if(not InitHostReq()): return False #根据正反交易标志TradeContext.revTranF判断具体选择哪个map文件和主机接口方式 if (result == '8830'): AfaLoggerFunc.tradeInfo('>>>批量上传') mapfile=os.environ['AFAP_HOME'] + '/conf/hostconf/AH8830.map' TradeContext.HostCode = '8830' elif(result == '8831'): AfaLoggerFunc.tradeInfo('>>>批量记账申请') mapfile=os.environ['AFAP_HOME'] + '/conf/hostconf/AH8831.map' TradeContext.HostCode = '8831' elif(result == '8833'): AfaLoggerFunc.tradeInfo('>>>批量回盘文件生成申请') mapfile=os.environ['AFAP_HOME'] + '/conf/hostconf/AH8833.map' TradeContext.HostCode = '8833' elif(result == '8834'): AfaLoggerFunc.tradeInfo('>>>查询批量记账结果') mapfile=os.environ['AFAP_HOME'] + '/conf/hostconf/AH8834.map' TradeContext.HostCode = '8834' elif(result == '8810'): AfaLoggerFunc.tradeInfo('>>>查询单个账户信息') mapfile=os.environ['AFAP_HOME'] + '/conf/hostconf/AH8810.map' TradeContext.HostCode = '8810' elif(result == '8835'): AfaLoggerFunc.tradeInfo('>>>凭证消号') mapfile=os.environ['AFAP_HOME'] + '/conf/hostconf/AH8835.map' TradeContext.HostCode = '8835' else: TradeContext.errorCode = 'A9999' TradeContext.errorMsg = '主机代码错误' return False #此处交易代码要求10位,右补空格 HostComm.callHostTrade( mapfile, UtilTools.Rfill(TradeContext.HostCode,10,' ') ,'0002' ) if HostContext.host_Error: AfaLoggerFunc.tradeFatal( 'host_Error:'+str( HostContext.host_ErrorType )+':'+HostContext.host_ErrorMsg ) if HostContext.host_ErrorType != 5 : TradeContext.__status__='1' TradeContext.errorCode='A0101' TradeContext.errorMsg=HostContext.host_ErrorMsg else : TradeContext.__status__='2' TradeContext.errorCode='A0102' TradeContext.errorMsg=HostContext.host_ErrorMsg return False #================分析主机返回包==================== return HostParseRet(result )
def ChkBatchInfo( ): sql = "" AfaLoggerFunc.tradeInfo('>>>判断批量申请是否已存在') try: #begin 20100105 蔡永贵 修改 查询的时候把NOTE2也查出来 #sql = "SELECT BATCHNO,STATUS,NOTE5,USERNO FROM ABDT_BATCHINFO WHERE " sql = "SELECT BATCHNO,STATUS,NOTE5,USERNO,NOTE2 FROM ABDT_BATCHINFO WHERE " #end sql = sql + "APPNO=" + "'" + TradeContext.I1APPNO + "'" + " AND " #业务编号 sql = sql + "BUSINO=" + "'" + TradeContext.I1BUSINO + "'" + " AND " #单位编号 sql = sql + "ZONENO=" + "'" + TradeContext.I1ZONENO + "'" + " AND " #地区代码 sql = sql + "BRNO=" + "'" + TradeContext.I1SBNO + "'" + " AND " #机构代码 sql = sql + "INDATE=" + "'" + TradeContext.I1WORKDATE + "'" + " AND " #委托日期 sql = sql + "BATCHNO=" + "'" + TradeContext.I1BATCHNO + "'" #委托号 AfaLoggerFunc.tradeInfo(sql) records = AfaDBFunc.SelectSql( sql ) if ( records == None ): AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return ExitSubTrade( '9000', '查询批量信息表异常' ) if ( len(records) == 0 ): return ExitSubTrade( '9000', '没有该单位批量申请信息,不能撤销' ) #begin 蔡永贵 增加 TradeContext.NOTE2 = records[0][4] #NOTE2(批次序号) #end if ( str(records[0][1]) == "40" ): return ExitSubTrade('9000', '该单位的批量数据已经被撤消:['+ str(records[0][2]) +']') elif ( str(records[0][1]) == "88" ): return ExitSubTrade('9000', '该单位的批量数据文件已经处理完成,不能撤销') elif ( str(records[0][1]) == "10" ): if ( str(records[0][3]) != TradeContext.I1USID ): return ExitSubTrade('9000', '只有申请柜员才能撤消') AfaLoggerFunc.tradeInfo('>>>该单位的批量数据文件为申请状态,可以撤销') return True else: return ExitSubTrade( '9000', '该单位批量数据文件已经被提交,不能撤销' ) except Exception, e: AfaLoggerFunc.tradeFatal( str(e) ) return ExitSubTrade( '9999', '判断批量申请是否已存在,数据库异常' )
def ChkUnitInfo( ): AfaLoggerFunc.tradeInfo('>>>判断单位协议是否有效') try: sql = "" sql = "SELECT SIGNUPMODE,GETUSERNOMODE,STARTDATE,ENDDATE,STARTTIME,ENDTIME,ACCNO,AGENTTYPE,VOUHNO FROM ABDT_UNITINFO WHERE " sql = sql + "APPNO=" + "'" + TradeContext.I1APPNO + "'" + " AND " #业务编号 sql = sql + "BUSINO=" + "'" + TradeContext.I1BUSINO + "'" + " 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 ): return ExitSubTrade( '9000', '没有单位协议信息,不能进行此类操作') #过滤None AfaUtilTools.ListFilterNone( records ) TradeContext.SIGNUPMODE = str(records[0][0]) #签约方式 TradeContext.GETUSERNOMODE = str(records[0][1]) #商户客户编号获取方式 TradeContext.STARTDATE = str(records[0][2]) #生效日期 TradeContext.ENDDATE = str(records[0][3]) #失效日期 TradeContext.STARTTIME = str(records[0][4]) #服务开始时间 TradeContext.ENDTIME = str(records[0][5]) #服务终止时间 TradeContext.ACCNO = str(records[0][6]) #对公账户 TradeContext.AGENTTYPE = str(records[0][7]) #委托方式 TradeContext.VOUHNO = str(records[0][8]) #凭证号(内部帐户) AfaLoggerFunc.tradeInfo( "TranDate=[" + TradeContext.TranDate + "]" ) if ( (TradeContext.STARTDATE > TradeContext.TranDate) or (TradeContext.TranDate > TradeContext.ENDDATE) ): return ExitSubTrade( '9000', '该单位委托协议还没有生效或已过有效期') if ( (TradeContext.STARTTIME > TradeContext.TranTime) or (TradeContext.TranTime > TradeContext.ENDTIME) ): return ExitSubTrade( '9000', '已经超过该系统的服务时间,该业务必须在[' + s_StartDate + ']-[' + s_EndDate + ']时间段运行') if ((TradeContext.SIGNUPMODE=="1") and (TradeContext.GETUSERNOMODE=="1")): #发送到通讯前置并从第三方获取协议 return True return True except Exception, e: AfaLoggerFunc.tradeFatal( str(e) ) return ExitSubTrade( '9999', '判断单位协议信息是否存在失败')
def SubModuleDoSnd(): AfaLoggerFunc.tradeInfo( '***农信银系统:往账.主机类操作(2.中心操作).汇票解付[TRCC003_8502]进入***' ) #=================判断afe是否发送成功======================================= if TradeContext.errorCode != '0000': #=============AFE发送失败,设置状态为发送失败============================ AfaLoggerFunc.tradeInfo('>>>AFE发送失败,开始设置状态为发送失败') stat_dict = {} stat_dict['BJEDTE'] = TradeContext.BJEDTE stat_dict['BSPSQN'] = TradeContext.BSPSQN stat_dict['BESBNO'] = TradeContext.BESBNO stat_dict['BETELR'] = TradeContext.BETELR stat_dict['BCSTAT'] = PL_BCSTAT_SND stat_dict['BDWFLG'] = PL_BDWFLG_FAIL stat_dict['PRCCO'] = TradeContext.errorCode stat_dict['STRINFO'] = TradeContext.errorMsg if not rccpsState.setTransState(stat_dict): return AfaFlowControl.ExitThisFlow('S999','设置状态为发送失败异常') AfaLoggerFunc.tradeInfo('>>>结束设置状态为发送失败') else: #=============AFE发送成功,设置状态为发送成功============================ AfaLoggerFunc.tradeInfo('>>>AFE发送成功,开始设置状态为发送成功') stat_dict = {} stat_dict['BJEDTE'] = TradeContext.BJEDTE stat_dict['BSPSQN'] = TradeContext.BSPSQN stat_dict['BESBNO'] = TradeContext.BESBNO stat_dict['BETELR'] = TradeContext.BETELR stat_dict['BCSTAT'] = PL_BCSTAT_SND stat_dict['BDWFLG'] = PL_BDWFLG_SUCC stat_dict['PRCCO'] = TradeContext.errorCode stat_dict['STRINFO'] = TradeContext.errorMsg if not rccpsState.setTransState(stat_dict): return AfaFlowControl.ExitThisFlow('S999','设置状态为发送成功异常') AfaLoggerFunc.tradeInfo('>>>结束设置状态为发送成功') if not AfaDBFunc.CommitSql( ): AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return AfaFlowControl.ExitThisFlow("S999","Commit异常") AfaLoggerFunc.tradeInfo(">>>Commit成功") TradeContext.errorCode = '0000' TradeContext.errorMsg = '发送农信银中心成功' AfaLoggerFunc.tradeInfo( '***农信银系统:往账.主机类操作(2.中心操作).汇票解付[TRCC003_8502]结束***' ) return True
def GetMainDict(ItemName): AfaLoggerFunc.tradeInfo('获取字典主表数据' ) AfaLoggerFunc.tradeInfo('|'+ItemName+'|') sql_m="SELECT * FROM AFA_MAINDICT " sql_m=sql_m+"WHERE ITEMENAME='"+ItemName+"'" sql_m=sql_m+" ORDER BY ITEM" records_m = AfaDBFunc.SelectSql(sql_m) AfaLoggerFunc.tradeInfo(sql_m) if( records_m == None or len(records_m) == 0): AfaLoggerFunc.tradeFatal(sql_m) return '0' AfaUtilTools.ListFilterNone( records_m ) AfaLoggerFunc.tradeInfo('|'+records_m[0][0]+'|'+records_m[0][1]+'|'+records_m[0][2]+'|') return records_m[0][0]
def insInfoBil(bil_dict): AfaLoggerFunc.tradeInfo( ">>>开始登记汇票信息登记簿[" + bil_dict["BILVER"] + "][" + bil_dict["BILNO"] + "][" + bil_dict["BILRS"] + "]交易信息及相关状态" ) if not bil_dict.has_key("BILVER"): return AfaFlowControl.ExitThisFlow("S999","登记汇票信息登记簿,BILVER不能为空") if not bil_dict.has_key("BILNO"): return AfaFlowControl.ExitThisFlow("S999","登记汇票信息登记簿,BILNO不能为空") if not bil_dict.has_key("BILRS"): return AfaFlowControl.ExitThisFlow("S999","登记汇票信息登记簿,BILRS不能为空") #===========将输入字典赋值到汇票信息登记簿字典============================== bilinf_dict = {} if not rccpsMap0000Dbil_dict2Dbilinf.map(bil_dict,bilinf_dict): return AfaFlowControl.ExitThisFlow( 'S999', '将输入字典赋值到汇票信息登记簿字典异常' ) bilinf_where_dict = {} bilinf_where_dict['BILRS'] = bil_dict['BILRS'] bilinf_where_dict['BILVER'] = bil_dict['BILVER'] bilinf_where_dict['BILNO'] = bil_dict['BILNO'] tmp_bilinf_dict = rccpsDBTrcc_bilinf.selectu(bilinf_where_dict) if tmp_bilinf_dict == None: return AfaFlowControl.ExitThisFlow( 'S999', '校验汇票信息登记簿是否存在相同汇票异常' ) if len(tmp_bilinf_dict) <= 0: AfaLoggerFunc.tradeError("汇票信息登记簿不存在此汇票,插入汇票信息") #===========登记信息到汇票信息登记簿======================================== ret = rccpsDBTrcc_bilinf.insert(bilinf_dict) if ret <= 0: AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return AfaFlowControl.ExitThisFlow( 'S999', '登记汇票详细信息异常' ) return True else: AfaLoggerFunc.tradeError("汇票信息登记簿存在此汇票,更新汇票信息") #===========登记信息到汇票信息登记簿======================================== ret = rccpsDBTrcc_bilinf.update(bilinf_dict,bilinf_where_dict) if ret <= 0: AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return AfaFlowControl.ExitThisFlow( 'S999', '登记汇票详细信息异常' ) return True
def getTransStateAll(BJEDTE,BSPSQN,stat_list): AfaLoggerFunc.tradeInfo(">>>进入getTransStateAll") #===========获取sstlog所有状态及相关信息==================================== sstlog_where_sql = "BJEDTE = '" + BJEDTE + "' and BSPSQN = '" + BSPSQN + "'" sstlog_order_sql = " order by BCURSQ desc " sstlog_list = rccpsDBTrcc_sstlog.selectm(1,0,sstlog_where_sql,sstlog_order_sql) if sstlog_list == None: AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) AfaLoggerFunc.tradeFatal("获取交易[" + BJEDTE + "][" + BSPSQN + "]所有状态详细信息异常") return AfaFlowControl.ExitThisFlow( 'S999', '获取交易所有状态详细信息异常' ) if len(sstlog_list) <= 0: AfaLoggerFunc.tradeFatal("流水状态登记簿中无此交易[" + BJEDTE + "][" + BSPSQN + "]状态详细信息") return AfaFlowControl.ExitThisFlow( 'S999', '流水状态登记簿中无此交易状态详细信息' ) for i in xrange(0,len(sstlog_list)): stat_dict = {} if not rccpsMap0000Dsstlog2Dstat_dict.map(sstlog_list[i],stat_dict): AfaLoggerFunc.tradeFatal("将查询出的业务状态详细信息赋值到输出字典异常") return AfaFlowControl.ExitThisFlow( 'S999', '将查询出的业务状态详细信息赋值到输出字典异常' ) stat_list.append(stat_dict) AfaLoggerFunc.tradeInfo(">>>结束getTransStateAll") return True
def getTransStateSetm(BJEDTE,BSPSQN,BCSTAT,BDWFLG,stat_list): AfaLoggerFunc.tradeInfo(">>>进入getTransStateSetm") #==========获取sstlog对应状态及信息========================================= sstlog_where_sql = "BJEDTE LIKE '" + BJEDTE + "' and BSPSQN LIKE '" + BSPSQN + "' and BCSTAT LIKE '" + BCSTAT + "' and BDWFLG LIKE '" + BDWFLG + "'" sstlog_order_sql = 'order by BCURSQ desc' sstlog_list = rccpsDBTrcc_sstlog.selectm(1,0,sstlog_where_sql,sstlog_order_sql) if sstlog_list == None: AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) AfaLoggerFunc.tradeFatal("获取交易[" + BJEDTE + "][" + BSPSQN + "]指定状态详细信息异常") return AfaFlowControl.ExitThisFlow( 'S999', '获取交易指定状态详细信息异常' ) if len(sstlog_list) <= 0: AfaLoggerFunc.tradeFatal("流水状态登记簿中无此交易" + BJEDTE + "][" + BSPSQN + "]指定状态[" + BCSTAT + "][" + BDWFLG + "]详细信息") return AfaFlowControl.ExitThisFlow( 'S999', '流水状态登记簿中无此交易指定状态详细信息' ) for i in xrange(0,len(sstlog_list)): stat_dict = {} if not rccpsMap0000Dsstlog2Dstat_dict.map(sstlog_list[i],stat_dict): AfaLoggerFunc.tradeFatal("将查询出的业务状态详细信息赋值到输出字典异常") return AfaFlowControl.ExitThisFlow( 'S999', '将查询出的业务状态详细信息赋值到输出字典异常' ) stat_list.append(stat_dict) AfaLoggerFunc.tradeInfo(">>>结束getTransStateSetm") return True
def getBatchConfig( cfgFileName = None ): try: config = ConfigParser.ConfigParser( ) if ( cfgFileName == None ): cfgFileName = os.environ['AFAP_HOME'] + '/conf/lapp.conf' config.readfp( open( cfgFileName ) ) TradeContext.BATCH_APPTRFG = config.get( 'BATCH', 'APPTRFG' ) TradeContext.BATCH_MAXCOUNT = config.get( 'BATCH', 'MAXCOUNT' ) return True except Exception, e: AfaLoggerFunc.tradeFatal( str(e) ) return ExitSubTrade( '9999', '读取配置文件异常' )
def ChkUnitInfo( ): AfaLoggerFunc.tradeInfo('>>>判断单位协议是否有效') try: sql = "" sql = "SELECT SIGNUPMODE,GETUSERNOMODE,STARTDATE,ENDDATE,STARTTIME,ENDTIME,ACCNO,AGENTTYPE,VOUHNO FROM ABDT_UNITINFO WHERE " sql = sql + "APPNO=" + "'" + TradeContext.Appno + "'" + " AND " #业务编号 sql = sql + "BUSINO=" + "'" + TradeContext.PayeeUnitno + "'" + " 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 ): return ExitSubTrade( '9000', '没有单位协议信息,不能进行此类操作') #过滤None AfaUtilTools.ListFilterNone( records ) TradeContext.SIGNUPMODE = str(records[0][0]) #签约方式 TradeContext.GETUSERNOMODE = str(records[0][1]) #商户客户编号获取方式 TradeContext.STARTDATE = str(records[0][2]) #生效日期 TradeContext.ENDDATE = str(records[0][3]) #失效日期 TradeContext.STARTTIME = str(records[0][4]) #服务开始时间 TradeContext.ENDTIME = str(records[0][5]) #服务终止时间 TradeContext.ACCNO = str(records[0][6]) #对公账户 TradeContext.AGENTTYPE = str(records[0][7]) #委托方式 TradeContext.VOUHNO = str(records[0][8]) #凭证号(内部帐户) AfaLoggerFunc.tradeInfo( "TranDate=[" + TradeContext.TranDate + "]" ) if ( (TradeContext.STARTDATE > TradeContext.TranDate) or (TradeContext.TranDate > TradeContext.ENDDATE) ): return ExitSubTrade( '9000', '该单位委托协议还没有生效或已过有效期') if ( (TradeContext.STARTTIME > TradeContext.TranTime) or (TradeContext.TranTime > TradeContext.ENDTIME) ): return ExitSubTrade( '9000', '已经超过该系统的服务时间,该业务必须在[' + s_StartDate + ']-[' + s_EndDate + ']时间段运行') if ((TradeContext.SIGNUPMODE=="1") and (TradeContext.GETUSERNOMODE=="1")): #发送到通讯前置并从第三方获取协议 return True return True except Exception, e: AfaLoggerFunc.tradeFatal( str(e) ) return ExitSubTrade( '9999', '判断单位协议信息是否存在失败')
def getTransStateSet(BJEDTE,BSPSQN,BCSTAT,BDWFLG,stat_dict): AfaLoggerFunc.tradeInfo(">>>进入getTransStateSet") #==========获取sstlog对应状态及信息========================================= sstlog_where_dict = {} sstlog_where_dict["BJEDTE"] = BJEDTE sstlog_where_dict["BSPSQN"] = BSPSQN sstlog_where_dict["BCSTAT"] = BCSTAT sstlog_where_dict["BDWFLG"] = BDWFLG sstlog_dict = rccpsDBTrcc_sstlog.selectu(sstlog_where_dict) if sstlog_dict == None: AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) AfaLoggerFunc.tradeFatal("获取交易[" + BJEDTE + "][" + BSPSQN + "]指定状态详细信息异常") return AfaFlowControl.ExitThisFlow( 'S999', '获取交易指定状态详细信息异常' ) if len(sstlog_dict) <= 0: AfaLoggerFunc.tradeFatal("流水状态登记簿中无此交易" + BJEDTE + "][" + BSPSQN + "]指定状态[" + BCSTAT + "][" + BDWFLG + "]详细信息") return AfaFlowControl.ExitThisFlow( 'S999', '流水状态登记簿中无此交易指定状态详细信息' ) if not rccpsMap0000Dsstlog2Dstat_dict.map(sstlog_dict,stat_dict): AfaLoggerFunc.tradeFatal("将查询出的业务状态详细信息赋值到输出字典异常") return AfaFlowControl.ExitThisFlow( 'S999', '将查询出的业务状态详细信息赋值到输出字典异常' ) AfaLoggerFunc.tradeInfo(">>>结束getTransStateSet") return True
def TrxMain( ): AfaLoggerFunc.tradeInfo('**********查询(8804)开始**********') try: sql = "" sql = "SELECT * FROM ABDT_BATCHINFO WHERE " sql = sql + "INDATE=" + "'" + TradeContext.indate + "'" + " AND " #申请日期 sql = sql + "BATCHNO=" + "'" + TradeContext.batchno + "'" #委托号 AfaLoggerFunc.tradeInfo( sql ) records = AfaDBFunc.SelectSql( sql ) if ( records == None ): AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return ExitSubTrade( '9000', '查询批量信息表异常' ) if ( len(records) == 0 ): return ExitSubTrade( '9000', '没有该委托号的批次信息' ) #过滤None AfaUtilTools.ListFilterNone( records ) TradeContext.tradeResponse.append(['appno', str(records[0][1])]) #业务编号 TradeContext.tradeResponse.append(['busino', str(records[0][2])]) #单位编号 TradeContext.tradeResponse.append(['brno', str(records[0][4])]) #网点号 TradeContext.tradeResponse.append(['status', str(records[0][19])]) #状态 TradeContext.tradeResponse.append(['procmsg', str(records[0][22])]) #错误描述 #处理结果信息 BatchResultMsg = str(records[0][22]) AfaLoggerFunc.tradeInfo('**********查询(8804)结束**********') #返回 TradeContext.tradeResponse.append(['errorCode', '0000']) TradeContext.tradeResponse.append(['errorMsg', BatchResultMsg]) return True except Exception, e: AfaLoggerFunc.tradeFatal( str(e) ) return ExitSubTrade( '9999', '查询,数据库异常' )
def SubModuleDoSnd(): AfaLoggerFunc.tradeInfo( '***农信银系统:往账.中心类操作(2.中心操作).汇票撤销[TRCC003_8503]进入***' ) stat_dict = {} stat_dict['BJEDTE'] = TradeContext.BJEDTE stat_dict['BSPSQN'] = TradeContext.BSPSQN stat_dict['BESBNO'] = TradeContext.BESBNO stat_dict['BETELR'] = TradeContext.BETELR stat_dict['BCSTAT'] = PL_BCSTAT_SND stat_dict['BDWFLG'] = PL_BDWFLG_SUCC stat_dict['PRCCO'] = TradeContext.errorCode stat_dict['STRINFO'] = TradeContext.errorMsg AfaLoggerFunc.tradeInfo("TradeContext.errorCode = [" + TradeContext.errorCode + "]") if TradeContext.errorCode == '0000': #发送农信银成功,设置业务状态为发送成功 AfaLoggerFunc.tradeInfo(">>>发送农信银总中心成功") AfaLoggerFunc.tradeInfo(">>>开始设置业务状态为发送成功") stat_dict['BCSTAT'] = PL_BCSTAT_SND stat_dict['BDWFLG'] = PL_BDWFLG_SUCC if not rccpsState.setTransState(stat_dict): return AfaFlowControl.ExitThisFlow('S999', "设置业务状态为发送成功异常") AfaLoggerFunc.tradeInfo(">>>结束设置业务状态为发送成功") else: #发送农信银失败,设置业务状态为发送失败 AfaLoggerFunc.tradeInfo(">>>发送农信银总中心失败") AfaLoggerFunc.tradeInfo(">>>开始设置业务状态为发送失败") stat_dict['BCSTAT'] = PL_BCSTAT_SND stat_dict['BDWFLG'] = PL_BDWFLG_FAIL if not rccpsState.setTransState(stat_dict): return AfaFlowControl.ExitThisFlow('S999', "设置业务状态为发送失败异常") AfaLoggerFunc.tradeInfo(">>>结束设置业务状态为发送失败") #COMMIT if not AfaDBFunc.CommitSql( ): AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return AfaFlowControl.ExitThisFlow("S999","Commit异常") AfaLoggerFunc.tradeInfo(">>>Commit成功") AfaLoggerFunc.tradeInfo( '***农信银系统:往账.中心类操作(2.中心操作).汇票撤销[TRCC003_8503]退出***' ) return True
def TrxMain(): AfaLoggerFunc.tradeInfo('**********撤销批量作业(8410)开始**********') TradeContext.tradeResponse.append(['O1AFAPDATE', TradeContext.TranDate]) #工作日期 TradeContext.tradeResponse.append(['O1AFAPTIME', TradeContext.TranTime]) #工作时间 #判断单位协议是否有效 if ( not AbdtFunc.ChkUnitInfo( ) ): return False #判断批量申请是否已存在 if ( not ChkBatchInfo( ) ): return False #修改批次记录为撤销状态 if ( UpdateBatchInfo() < 0 ): return False #移动数据文件到撤消目录中 try: #begin 20100105 蔡永贵 修改 文件名后加上批次序号(TradeContext.NOTE2) sFileName = os.environ['AFAP_HOME'] + '/data/batch/in/' + TradeContext.I1APPNO + TradeContext.I1BUSINO + TradeContext.NOTE2 + "_" + TradeContext.TranDate dFileName = os.environ['AFAP_HOME'] + '/data/batch/dust/' + TradeContext.I1APPNO + TradeContext.I1BUSINO + TradeContext.NOTE2 + "_" + TradeContext.TranDate + TradeContext.TranTime #end if ( os.path.exists(sFileName) and os.path.isfile(sFileName) ): AfaLoggerFunc.tradeInfo('>>>批量处理数据文件存在') cp_cmd_str="mv " + sFileName + " " + dFileName os.system(cp_cmd_str) else: AfaLoggerFunc.tradeInfo('>>>批量处理数据文件不存在,请查询原因') return ExitSubTrade( '9999', '批量处理数据文件不存在(转移),请查询原因' ) except Exception, e: AfaLoggerFunc.tradeFatal( str(e) ) return ExitSubTrade( '9999', '批量处理数据文件操作异常(转移)' )
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 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 GetSubDict(MainItem,SubCode): AfaLoggerFunc.tradeInfo('获取字典子表数据' ) AfaLoggerFunc.tradeInfo('|'+MainItem+'|'+SubCode+'|') sql_m="SELECT * FROM AFA_SUBDICT " sql_m=sql_m+"WHERE ITEM='"+MainItem+"'" sql_m=sql_m+"AND CODE='"+SubCode+"'" sql_m=sql_m+" ORDER BY ITEM,CODE" records_m = AfaDBFunc.SelectSql(sql_m) AfaLoggerFunc.tradeInfo(sql_m) if( records_m == None or len(records_m) == 0): AfaLoggerFunc.tradeFatal(sql_m) return '未知' AfaUtilTools.ListFilterNone( records_m ) AfaLoggerFunc.tradeInfo('|'+records_m[0][0]+'|'+records_m[0][1]+'|'+records_m[0][2]+'|') return records_m[0][2]
def ChkUnitInfo( ): AfaLoggerFunc.tradeInfo( '=====判断应用状态开始=====' ) sqlStr = '' sqlStr = sqlStr + "SELECT STATUS,STARTDATE,ENDDATE,STARTTIME,ENDTIME,ACCNO FROM ABDT_UNITINFO " sqlStr = sqlStr + " AND WHERE APPNO = '" + TradeContext.sysId + "'" #============单位编码============ sqlStr = sqlStr + " AND BUSINO = '" + TradeContext.busino + "'" #============委托方式============ sqlStr = sqlStr + " AND AGENTTYPE IN ('1','2')" AfaLoggerFunc.tradeFatal( '查询结果 :'+sqlStr ) records = AfaDBFunc.SelectSql( sqlStr ) if( records == None ): return AfaFlowControl.ExitThisFlow( 'A0002', '查询单位协议信息异常') elif( len( records )!=0 ): AfaUtilTools.ListFilterNone( records ) TradeContext.STATUS = str(records[0][0]) #签约状态 TradeContext.STARTDATE = str(records[0][1]) #生效日期 TradeContext.ENDDATE = str(records[0][2]) #失效日期 TradeContext.STARTTIME = str(records[0][3]) #服务开始时间 TradeContext.ENDTIME = str(records[0][4]) #服务终止时间 TradeContext.ACCNO = str(records[0][5]) #对公账户 if ( (TradeContext.STARTDATE > TradeContext.workDate) or (TradeContext.workDate > TradeContext.ENDDATE) ): return AfaFlowControl.ExitThisFlow( '9000', '该单位委托协议还没有生效或已过有效期') if ( (TradeContext.STARTTIME > TradeContext.workTime) or (TradeContext.workTime > TradeContext.ENDTIME) ): return AfaFlowControl.ExitThisFlow( '9000', '已经超过该系统的服务时间,该业务必须在[' + s_StartDate + ']-[' + s_EndDate + ']时间段运行') #=============代理业务帐号============= #TradeContext.__agentAccno__ = records[0][5] #AfaLoggerFunc.tradeInfo('收款人帐户__agentAccno__ BB::'+ TradeContext.__agentAccno__) AfaLoggerFunc.tradeInfo( '=====判断应用状态结束=======' ) return True else: AfaLoggerFunc.tradeError( sqlStr ) return AfaFlowControl.ExitThisFlow( 'A0003', '该地区没有开放此业务' )
def VMENU_QueryAccInfo(): AfaLoggerFunc.tradeInfo('>>>查询账户信息') try: #通讯区打包 HostContext.I1TRCD = '8810' #主机交易码 HostContext.I1SBNO = TradeContext.I1SBNO #该交易的发起机构 HostContext.I1USID = TradeContext.I1USID #交易柜员号 HostContext.I1AUUS = TradeContext.I1AUUS #授权柜员 HostContext.I1AUPS = TradeContext.I1AUPS #授权柜员密码 HostContext.I1WSNO = TradeContext.I1WSNO #终端号 HostContext.I1ACNO = TradeContext.I1ACCNO #帐号 HostContext.I1CYNO = '01' #币种 HostContext.I1CFFG = '1' #密码校验标志(0-需要,1-不需要) HostContext.I1PSWD = '' #密码 HostContext.I1CETY = TradeContext.I1VOUHTYPE #凭证种类 HostContext.I1CCSQ = TradeContext.I1VOUHNO #凭证号码 HostContext.I1CTFG = TradeContext.I1CHFLAG #钞汇标志 #与主机通讯 if not AfaHostFunc.CommHost('8810'): return ExitSubTrade( TradeContext.errorCode, TradeContext.errorMsg ) if ( HostContext.O1REKD == '900' ): return ExitSubTrade( '9000', '非个人结算户,不能操作' ) TradeContext.tradeResponse.append(['O1USERNAME', HostContext.O1CUNM]) #客户姓名 TradeContext.tradeResponse.append(['O1IDTYPE', HostContext.O1IDTY]) #证件种类 TradeContext.tradeResponse.append(['O1IDCODE', HostContext.O1IDNO]) #证件号码 TradeContext.tradeResponse.append(['O1MAFG', HostContext.O1MAFG]) #公司卡/个人卡标志(0:单位 1:个人) TradeContext.tradeResponse.append(['O1REKD', HostContext.O1REKD]) #账户类型(特殊处理:900-非个人结算户) TradeContext.tradeResponse.append(['O1ACBL', HostContext.O1ACBL]) #账户余额 TradeContext.tradeResponse.append(['O1CUBL', HostContext.O1CUBL]) #可用余额 TradeContext.tradeResponse.append(['O1DATA', HostContext.O1ITEM]) #附加信息(科目代码) return True except Exception, e: AfaLoggerFunc.tradeFatal( str(e) ) return ExitSubTrade( '9999', '查询账户信息异常(主机)' )
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 QueryAccInfo( ): AfaLoggerFunc.tradeInfo(">>>查询账户信息(主机)") try: #通讯区打包 HostContext.I1TRCD = '8810' #主机交易码 HostContext.I1SBNO = TradeContext.I1SBNO #该交易的发起机构 HostContext.I1USID = TradeContext.I1USID #交易柜员号 HostContext.I1AUUS = TradeContext.I1AUUS #授权柜员 HostContext.I1AUPS = TradeContext.I1AUPS #授权柜员密码 HostContext.I1WSNO = TradeContext.I1WSNO #终端号 HostContext.I1ACNO = TradeContext.I1ACCNO #帐号 HostContext.I1CYNO = TradeContext.I1CURRTYPE #币种 if ( TradeContext.I1PASSCHKFLAG == "1" ): HostContext.I1CFFG = "0" #密码校验标志(需要) else: HostContext.I1CFFG = "1" #密码校验标志(不需要) HostContext.I1PSWD = TradeContext.I1PASSWD #密码 HostContext.I1CETY = TradeContext.I1VOUHTYPE #凭证种类 HostContext.I1CCSQ = TradeContext.I1VOUHNO #凭证号码 HostContext.I1CTFG = '0' #钞汇标志 #与主机通讯 if not AfaHostFunc.CommHost('8810'): return ExitSubTrade( TradeContext.errorCode, TradeContext.errorMsg ) #缓冲主机返回信息 TradeContext.USERNAME = HostContext.O1CUNM #用户名称 TradeContext.IDTYPE = HostContext.O1IDTY #证件类型 TradeContext.IDCODE = HostContext.O1IDNO #证件号码 TradeContext.ACCSTATUS = HostContext.O1ACST #账户状态 return True except Exception, e: AfaLoggerFunc.tradeFatal( str(e) ) return ExitSubTrade( '9999', '查询账户信息(主机)异常')
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,swapfilename,workdate,busino,WorkTime,tellerno,filename" sql = sql + " from ahnx_file" sql = sql + " where status='4'" #开户上传文件转换成功 sql = sql + " and filetype='2'" #批量开户前 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.swapFileName = records[i][1] AfaLoggerFunc.tradeInfo( '需转换的文件:'+ TradeContext.swapFileName ) #开户日期 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 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 SubModuleDoSnd(): AfaLoggerFunc.tradeInfo(" 农信银系统:来账.中心类操作(2.中心回执).卡本转异应答报文接收[TRCC006_1155]进入 ") stat_dict = {} stat_dict['BJEDTE'] = TradeContext.BJEDTE stat_dict['BSPSQN'] = TradeContext.BSPSQN stat_dict['BESBNO'] = TradeContext.BESBNO stat_dict['BETELR'] = TradeContext.BETELR stat_dict['BCSTAT'] = PL_BCSTAT_CONFPAY stat_dict['BDWFLG'] = PL_BDWFLG_SUCC stat_dict['PRCCO'] = TradeContext.errorCode stat_dict['STRINFO'] = TradeContext.errorMsg AfaLoggerFunc.tradeInfo("TradeContext.errorCode = [" + TradeContext.errorCode + "]") if TradeContext.errorCode == '0000': #=====发送农信银成功,设置状态为确认付款成功==== stat_dict['BCSTAT'] = PL_BCSTAT_CONFPAY stat_dict['BDWFLG'] = PL_BDWFLG_SUCC if not rccpsState.setTransState(stat_dict): return AfaFlowControl.ExitThisFlow('S999', "设置业务状态为确认付款成功异常") AfaLoggerFunc.tradeInfo(">>>设置业务状态为确认付款成功") else: #=====发送农信银失败,设置状态为确认付款失败==== stat_dict['BCSTAT'] = PL_BCSTAT_CONFPAY stat_dict['BDWFLG'] = PL_BDWFLG_FAIL if not rccpsState.setTransState(stat_dict): return AfaFlowControl.ExitThisFlow('S999', "设置业务状态为确认付款失败异常") AfaLoggerFunc.tradeInfo(">>>设置业务状态为确认付款失败") if not AfaDBFunc.CommitSql( ): AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return AfaFlowControl.ExitThisFlow("S999","Commit异常") AfaLoggerFunc.tradeInfo(" 农信银系统:来账.中心类操作(2.中心回执).卡本转异应答报文接收[TRCC006_1155]退出 ") return True
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 ChkBatchInfo( ): sql = "" AfaLoggerFunc.tradeInfo('>>>判断批量申请是否已存在') try: sql = "SELECT BATCHNO,STATUS FROM ABDT_BATCHINFO WHERE " sql = sql + "APPNO=" + "'" + TradeContext.I1APPNO + "'" + " AND " #业务编号 sql = sql + "BUSINO=" + "'" + TradeContext.I1BUSINO + "'" + " AND " #单位编号 sql = sql + "ZONENO=" + "'" + TradeContext.I1ZONENO + "'" + " AND " #地区代码 sql = sql + "BRNO=" + "'" + TradeContext.I1SBNO + "'" + " AND " #机构代码 sql = sql + "INDATE=" + "'" + TradeContext.TranDate + "'" + " AND " #委托日期 sql = sql + "FILENAME=" + "'" + TradeContext.I1FILENAME + "'" + " AND " #文件名称 sql = sql + "STATUS<>" + "'" + "40" + "'" #状态(撤销) AfaLoggerFunc.tradeInfo(sql) records = AfaDBFunc.SelectSql(sql) if ( records == None ): AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return ExitSubTrade( '9000', '查询批量信息表异常' ) if ( len(records) > 0 ): #判断状态 if ( str(records[0][1]) == "10" ): return ExitSubTrade( '9000', '该机构该单位的批量数据今天已经申请,不能再次申请' ) elif ( str(records[0][1]) == "88" ): return ExitSubTrade( '9000', '该机构该单位的批量数据文件已经处理完成,不能再次申请' ) else: return ExitSubTrade( '9000', '该机构该单位的批量数据文件正在处理,不能进行申请操作' ) else: AfaLoggerFunc.tradeInfo('>>>没有发现该机构今天申请批量数据文件,可以申请') return True except Exception, e: AfaLoggerFunc.tradeFatal( str(e) ) return ExitSubTrade( '9999', '判断批量申请是否已存在,数据库异常' )
def UpdateUserInfo(): sql = "UPDATE ABDT_USERINFO SET " sql = sql + "ZONENO='" + TradeContext.ZONENO + "'," #地区号 sql = sql + "BRNO='" + TradeContext.BRNO + "'," #网点 sql = sql + "USERNAME='******'," #用户名 sql = sql + "DUTYNO='" + TradeContext.DUTYNO + "'," #岗位编码 sql = sql + "ADDRESS='" + TradeContext.ADDRESS + "'," #地址 sql = sql + "TEL='" + TradeContext.TEL + "'" #电话 sql = sql + " WHERE " sql = sql + "USERNO=" + "'" + TradeContext.USERNO + "'" #用户号 AfaLoggerFunc.tradeInfo(sql) ret = AfaDBFunc.UpdateSqlCmt( sql ) if (ret <= 0): AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return ExitSubTrade( '9000', '修改用户信息失败' ) return True
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 batch_DK_Fail_FilePro(sFileName,dFileName_fail): try: if ( os.path.exists(sFileName) and os.path.isfile(sFileName) ): AfaLoggerFunc.tradeInfo("批量处理数据文件存在") wfp = open(dFileName_fail,"w") bfp = open(sFileName, "r") linebuf = bfp.readline() while ( len(linebuf) > 0 ): linebuf1=linebuf.split('|') wbuffer = '' wbuffer = wbuffer + linebuf1[0] + '|' #社保编号 wbuffer = wbuffer + linebuf1[1] + '|' #姓名 wbuffer = wbuffer + linebuf1[2] + '|' #身份证号 wbuffer = wbuffer + linebuf1[3] + '|' #代发金额 wbuffer = wbuffer + linebuf1[4] + '|' #社保单据号 wbuffer = wbuffer + "批量系统处理失败(40状态)" + '' #返回说明 wbuffer = wbuffer + '\n' wfp.write(wbuffer) linebuf = bfp.readline() #关闭文件 wfp.close() bfp.close() return True else: AfaLoggerFunc.tradeInfo("批量处理数据文件不存在或不是文件") return False except Exception, e: AfaLoggerFunc.tradeFatal( str(e) ) wfp.close() bfp.close() return False
def getTransWtrCK(SNDBNKCO,COTRCDAT,COTRCNO,wtr_dict): AfaLoggerFunc.tradeInfo( ">>>开始查询通存通兑业务登记簿[" + SNDBNKCO + "][" + COTRCDAT + "][" + COTRCNO + "]交易信息" ) #===========组织查询条件=================================================== wtrbka_where_dict = {'SNDBNKCO':SNDBNKCO,'COTRCDAT':COTRCDAT,'COTRCNO':COTRCNO} #===========查询通存通兑登记簿相关业务信息================================= wtrbka_dict = rccpsDBTrcc_wtrbka.selectu(wtrbka_where_dict) if wtrbka_dict == None: AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return AfaFlowControl.ExitThisFlow( 'S999', '获取通存通兑业务详细信息异常' ) if len(wtrbka_dict) <= 0: return AfaFlowControl.ExitThisFlow( 'S999', '通存通兑业务登记簿中无此通存通兑业务详细信息' ) AfaLoggerFunc.tradeInfo( ">>>结束查询通存通兑业务登记簿[" + SNDBNKCO + "][" + COTRCDAT + "][" + COTRCNO + "]交易信息" ) #==========将查询出的通存通兑登记簿相关业务信息赋值到输出字典============== if not rccpsMap0000Dwtrbka2Dwtr_dict.map(wtrbka_dict,wtr_dict): return AfaFlowControl.ExitThisFlow( 'S999', '将查询出的通存通兑登记簿相关业务信息赋值到输出字典异常' ) BJEDTE = wtrbka_dict["BJEDTE"] BSPSQN = wtrbka_dict["BSPSQN"] #==========查询当前业务状态================================================= AfaLoggerFunc.tradeInfo( ">>>开始查询交易[" + BJEDTE + "][" + BSPSQN + "]当前状态" ) stat_dict = {} if not rccpsState.getTransStateCur(BJEDTE,BSPSQN,stat_dict): return False AfaLoggerFunc.tradeInfo( ">>>结束查询交易[" + BJEDTE + "][" + BSPSQN + "]当前状态" ) #==========将查询出的业务状态详细信息赋值到输出字典========================= if not rccpsMap0000Dstat_dict2Dwtr_dict.map(stat_dict,wtr_dict): return AfaFlowControl.ExitThisFlow( 'S999', '将查询出的业务状态详细信息赋值到输出字典异常' ) AfaLoggerFunc.tradeInfo( ">>>结束查询通存通兑业务登记簿[" + BJEDTE + "][" + BSPSQN + "]交易信息" ) return True
def getTransBilAK(SNDBNKCO,TRCDAT,TRCNO,bil_dict): AfaLoggerFunc.tradeInfo( ">>>开始查询汇票业务登记簿[" + SNDBNKCO + "][" + TRCDAT + "][" + TRCNO + "]交易信息" ) #==========组织查询条件===================================================== bilbka_where_dict = {'SNDBNKCO':SNDBNKCO,'TRCDAT':TRCDAT,'TRCNO':TRCNO} #==========查询汇票业务登记簿相关业务信息=================================== bilbka_dict = rccpsDBTrcc_bilbka.selectu(bilbka_where_dict) if bilbka_dict == None: AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return AfaFlowControl.ExitThisFlow( 'S999', '获取汇票业务详细信息异常' ) if len(bilbka_dict) <= 0: return AfaFlowControl.ExitThisFlow( 'S999', '汇票业务登记簿中无此汇票业务详细信息' ) AfaLoggerFunc.tradeInfo( ">>>结束查询汇票业务登记簿[" + SNDBNKCO + "][" + TRCDAT + "][" + TRCNO + "]交易信息" ) #==========将查询出的汇票业务登记簿相关业务信息赋值到输出字典=============== if not rccpsMap0000Dbilbka2Dbil_dict.map(bilbka_dict,bil_dict): return AfaFlowControl.ExitThisFlow( 'S999', '将查询出的汇票业务登记簿相关业务信息赋值到输出字典异常' ) BJEDTE = bilbka_dict["BJEDTE"] BSPSQN = bilbka_dict["BSPSQN"] #==========查询当前业务状态================================================= AfaLoggerFunc.tradeInfo( ">>>开始查询交易[" + BJEDTE + "][" + BSPSQN + "]当前业务状态" ) stat_dict = {} if not rccpsState.getTransStateCur(BJEDTE,BSPSQN,stat_dict): return False AfaLoggerFunc.tradeInfo( ">>>结束查询交易[" + BJEDTE + "][" + BSPSQN + "]当前业务状态" ) #==========将查询出的业务状态详细信息赋值到输出字典========================= if not rccpsMap0000Dstat_dict2Dbil_dict.map(stat_dict,bil_dict): return AfaFlowControl.ExitThisFlow( 'S999', '将查询出的业务状态详细信息赋值到输出字典异常' ) AfaLoggerFunc.tradeInfo( ">>>结束查询汇票业务登记簿[" + BJEDTE + "][" + BSPSQN + "]交易信息" ) return True
def getTransMpc(BJEDTE,BSPSQN,mpc_dict): AfaLoggerFunc.tradeInfo( ">>>开始查询通存通兑冲销登记簿[" + BJEDTE + "][" + BSPSQN + "]交易信息" ) #==========组织查询条件===================================================== mpcbka_where_dict = {'BJEDTE':BJEDTE,'BSPSQN':BSPSQN} #==========查询冲销登记簿相关业务信息======================================= mpcbka_dict = rccpsDBTrcc_mpcbka.selectu(mpcbka_where_dict) if mpcbka_dict == None: AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return AfaFlowControl.ExitThisFlow( 'S999', '查询通存通兑冲销登记簿交易信息异常' ) if len(mpcbka_dict) <= 0: return AfaFlowControl.ExitThisFlow( 'S999', '通存通兑冲销登记簿中无此交易信息' ) #==========将查询出的通存通兑冲销登记簿相关信息赋值到输出字典============== if not rccpsMap0000Dmpcbka2Dmpc_dict.map(mpcbka_dict,mpc_dict): return AfaFlowControl.ExitThisFlow( 'S999', '将查询出的通存通兑冲销登记簿相关信息赋值到输出字典异常' ) AfaLoggerFunc.tradeInfo( ">>>结束查询通存通兑冲销登记簿[" + BJEDTE + "][" + BSPSQN + "]交易信息" ) return True
def SubModuleDoSnd(): AfaLoggerFunc.tradeInfo( '***农信银系统:来账.中心类操作(2.中心回执).卡通存请求报文接收[TRCC006_1135]进入***' ) stat_dict = {} stat_dict['BJEDTE'] = TradeContext.BJEDTE stat_dict['BSPSQN'] = TradeContext.BSPSQN stat_dict['BESBNO'] = TradeContext.BESBNO stat_dict['BETELR'] = TradeContext.BETELR stat_dict['PRCCO'] = TradeContext.PRCCO stat_dict['STRINFO'] = TradeContext.STRINFO #根据afe返回码判断应答报文是否发送成功,并设置相应业务状态 AfaLoggerFunc.tradeInfo("TradeContext.errorCode = [" + TradeContext.errorCode + "]") if TradeContext.errorCode == '0000': #=====发送农信银成功,设置状态为确认入账\拒绝\冲正成功==== stat_dict['BCSTAT'] = TradeContext.BCSTAT stat_dict['BDWFLG'] = PL_BDWFLG_SUCC if not rccpsState.setTransState(stat_dict): return AfaFlowControl.ExitThisFlow('S999', "设置业务状态为" + + "成功异常") AfaLoggerFunc.tradeInfo(">>>成功设置业务状态为" + TradeContext.BCSTATNM + "成功") else: #=====发送农信银失败,设置状态为确认入账\拒绝\冲正失败==== stat_dict['BCSTAT'] = TradeContext.BCSTAT stat_dict['BDWFLG'] = PL_BDWFLG_FAIL if not rccpsState.setTransState(stat_dict): return AfaFlowControl.ExitThisFlow('S999', "设置业务状态为确认入账\拒绝\冲正失败异常") AfaLoggerFunc.tradeInfo(">>>成功设置业务状态为" + TradeContext.BCSTATNM + "失败") if not AfaDBFunc.CommitSql( ): AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return AfaFlowControl.ExitThisFlow("S999","Commit异常") AfaLoggerFunc.tradeInfo( '***农信银系统:来账.中心类操作(2.中心回执).卡通存请求报文接收[TRCC006_1135]退出***' ) return True