def GetDataFromDB(item,value,table,field): sql = "select " + field + " from " + "FS_" + table + " where " + item + "='" + value +"'" #afc163开票日期 records = AfaDBFunc.SelectSql( sql ) if ( records == None or len(records) == 0 ): AfaLoggerFunc.tradeInfo( sql ) AfaLoggerFunc.tradeInfo( AfaDBFunc.sqlErrMsg ) return False else: if not records[0][0]: return "null" else: return records[0][0]
def SubModuleDoSnd(): AfaLoggerFunc.tradeInfo('>>>中心后处理') if TradeContext.errorCode == '0000': TradeContext.BDWFLG = PL_BDWFLG_SUCC else: TradeContext.BDWFLG = PL_BDWFLG_FAIL sstlog_dict={} sstlog_dict['BSPSQN'] = TradeContext.BSPSQN sstlog_dict['BJEDTE'] = TradeContext.BJEDTE sstlog_dict['BCSTAT'] = PL_BCSTAT_SND sstlog_dict['BDWFLG'] = TradeContext.BDWFLG if not rccpsState.setTransState(sstlog_dict): AfaDBFunc.RollBackSql() return AfaFlowControl.ExitThisFlow("S999","修改原交易当前状态为发送-成功异常") else: AfaDBFunc.CommitSql( ) AfaLoggerFunc.tradeInfo(">>>结束修改原交易状态为发送-成功") AfaLoggerFunc.tradeInfo( '***农信银系统:往账.中心类操作(1.本地操作).柜台补正[TRCC003_8587]退出***' ) 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 deleteCmt( where_dict ): if not chk(where_dict): return -1 wheresql = "" for where_item in where_dict.keys(): if table_dict[where_item] == 'S': wheresql = wheresql + where_item + " LIKE '" + where_dict[where_item] + "' and " else: wheresql = wheresql + where_item + " = " + str(where_dict[where_item]) + " and " sql = "DELETE FROM rcc_tdzjcz WHERE " + wheresql[0:-5] AfaLoggerFunc.tradeInfo(sql) return AfaDBFunc.DeleteSqlCmt( sql )
def sumall(): #成功总计 AfaLoggerFunc.tradeInfo('查询对账成功,差异笔数和金额') sumsql="SELECT count(*),sum(cast(amount as decimal(17,2))) " sumsql = sumsql + "FROM TIPS_MAINTRANSDTL " sumsql = sumsql + "WHERE NOTE1 ='"+TradeContext.checkDate+"'" sumsql = sumsql + " AND NOTE2 = '"+TradeContext.checkNo+"'" sumsql = sumsql + " AND CHKFLAG='0' and CORPCHKFLAG='0'" sumsql = sumsql + " AND NOTE3='" + TradeContext.payBkCode.strip() + "'" sumsql = sumsql + " AND NOTE4='" + TradeContext.payeeBankNo.strip() + "'" sumSucc=AfaDBFunc.SelectSql( sumsql) AfaLoggerFunc.tradeInfo(sumsql) AfaLoggerFunc.tradeInfo("成功总计"+repr(sumSucc)) if( sumSucc == None or sumSucc < 0 ): # None 查询失败 return TipsFunc.ExitThisFlow( 'A0025', '数据库操作错误 统计成功笔数出错!'+AfaDBFunc.sqlErrMsg ) #差异总计 sumsql="SELECT count(*),sum(cast(amount as decimal(17,2))) " sumsql = sumsql + "FROM TIPS_MAINTRANSDTL " sumsql = sumsql + "WHERE NOTE1 ='"+TradeContext.checkDate+"'" sumsql = sumsql + " AND NOTE2 = '"+TradeContext.checkNo+"'" sumsql = sumsql + " AND (CHKFLAG!='9' and CORPCHKFLAG='9' or CHKFLAG!='0' and CORPCHKFLAG='0')" sumsql = sumsql + " AND NOTE3='" + TradeContext.payBkCode.strip() + "'" sumsql = sumsql + " AND NOTE4='" + TradeContext.payeeBankNo.strip() + "'" AfaLoggerFunc.tradeInfo(sumsql) sumFail=AfaDBFunc.SelectSql( sumsql) AfaLoggerFunc.tradeInfo("差异总计"+repr(sumFail)) if( sumFail == None or sumFail < 0): # None 查询失败 return TipsFunc.ExitThisFlow( 'A0025', '数据库操作错误 统计差异笔数出错!' +AfaDBFunc.sqlErrMsg ) sumSucc=UtilTools.ListFilterNone(sumSucc,0) sumFail=UtilTools.ListFilterNone(sumFail,0) TradeContext.tradeResponse.append( ['sSum', str(sumSucc[0][0])] ) TradeContext.tradeResponse.append( ['sAmt', str(sumSucc[0][1])] ) TradeContext.tradeResponse.append( ['fSum', str(sumFail[0][0])] ) TradeContext.tradeResponse.append( ['fAmt', str(sumFail[0][1])] ) return True
def GetUnitStatus(): AfaLoggerFunc.tradeInfo('获取商户参数' ) #============系统标识============ sqlStr = "SELECT * FROM AFA_UNITADM WHERE SYSID = '" + TradeContext.sysId + "' AND " #============商户代码============ sqlStr = sqlStr+"UNITNO = '" + TradeContext.unitno + "' " AfaLoggerFunc.tradeInfo( sqlStr ) records = AfaDBFunc.SelectSql( sqlStr ) if( records == None ): AfaLoggerFunc.tradeFatal( sqlStr ) return AfaFlowControl.ExitThisFlow( 'A0025', '数据库错误,商户信息表操作异常:'+AfaDBFunc.sqlErrMsg ) elif( len( records )!=0 ): AfaUtilTools.ListFilterNone( records ) TradeContext.__busiMode__ = records[0][6] #=============业务模式============= if( TradeContext.__busiMode__!="2" ): TradeContext.__unitStatus__ = records[0][4] #=============业务状态============= TradeContext.__unitLoginStatus__ = records[0][27] #=============签到务状态============= TradeContext.__unitDayendStatus__ = records[0][28] #=============日终状态============= TradeContext.__unitCheckStatus__ = records[0][30] #=============对账业务状态============= if( TradeContext.__busiMode__=="2" ): AfaLoggerFunc.tradeInfo('获取子商户参数' ) #============系统标识============ sqlStr = "SELECT * FROM AFA_SUBUNITADM WHERE SYSID = '" + TradeContext.sysId + "' AND " #============商户代码============ sqlStr = sqlStr+"UNITNO = '" + TradeContext.unitno + "' AND " #============子商户代码============ sqlStr = sqlStr+"SUBUNITNO = '" + TradeContext.subUnitno + "' " subRecords = AfaDBFunc.SelectSql( sqlStr ) if(subRecords == None ): return AfaFlowControl.ExitThisFlow( 'A0025', '数据库错误,商户分支单位信息表操作异常:'+AfaDBFunc.sqlErrMsg ) elif( len( subRecords )!=0 ): AfaUtilTools.ListFilterNone( subRecords ) TradeContext.__unitStatus__ = subRecords[0][4] #=============业务状态============= TradeContext.__unitLoginStatus__ = subRecords[0][27] #=============签到务状态============= TradeContext.__unitDayendStatus__ = subRecords[0][28] #=============日终状态============= TradeContext.__unitCheckStatus__ = subRecords[0][30] #=============对账业务状态============= return True
def 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 ChkUnitInfo( ): WrtLog('>>>判断单位协议是否有效') try: sql = "" sql = "SELECT SIGNUPMODE,GETUSERNOMODE,STARTDATE,ENDDATE,STARTTIME,ENDTIME,ACCNO,AGENTTYPE,VOUHNO FROM ABDT_UNITINFO WHERE " sql = sql + "APPNO=" + "'" + TradeContext.sysId + "'" + " AND " #业务编号 sql = sql + "BUSINO=" + "'" + TradeContext.busino + "'" + " AND " #单位编号 sql = sql + "STATUS=" + "'" + "1" + "'" #状态 WrtLog( sql ) records = AfaDBFunc.SelectSql( sql ) if ( records == None ): WrtLog( 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]) #凭证号(内部帐户) WrtLog( "TranDate=[" + TradeContext.workDate + "]" ) if ( (TradeContext.STARTDATE > TradeContext.workDate) or (TradeContext.workDate > TradeContext.ENDDATE) ): return ExitSubTrade( '9000', '该单位委托协议还没有生效或已过有效期') if ( (TradeContext.STARTTIME > TradeContext.workTime) or (TradeContext.workTime > TradeContext.ENDTIME) ): return ExitSubTrade( '9000', '已经超过该系统的服务时间,该业务必须在[' + s_StartDate + ']-[' + s_EndDate + ']时间段运行') return True except Exception, e: WrtLog( str(e) ) return ExitSubTrade( '9999', '判断单位协议信息是否存在失败')
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 DelHostFile(curBatchNo, HostFileName, Flag): AbdtManager.WrtLog('删除主机文件:[' + HostFileName + ']') try: HostBatchNo = curBatchNo[4:16] #通讯区打包 HostContext.I1TRCD = '8819' #交易码 HostContext.I1SBNO = TradeContext.BRNO #交易机构号 HostContext.I1USID = '999986' #交易柜员号 HostContext.I1AUUS = "" #授权柜员 HostContext.I1AUPS = "" #授权柜员密码 HostContext.I1WSNO = "" #终端号 HostContext.I1NBBH = TradeContext.APPNO #代理业务标识 HostContext.I1CLDT = TradeContext.BATCHDATE #原批量日期 HostContext.I1UNSQ = HostBatchNo #原批量委托号 HostContext.I1FILE = HostFileName #删除文件名 HostContext.I1OPFG = Flag #操作标志(0-查询 1-删除上传文件 2-删除下传文件) HostTradeCode = "8819".ljust(10,' ') HostComm.callHostTrade( os.environ['AFAP_HOME'] + '/conf/hostconf/AH8819.map', HostTradeCode, "0002" ) if( HostContext.host_Error ): AbdtManager.WrtLog('>>>处理结果=[' + str(HostContext.host_ErrorType) + ']:' + HostContext.host_ErrorMsg) return -1 if ( HostContext.O1MGID == "AAAAAAA" ): AbdtManager.WrtLog('>>>处理结果=[' + HostContext.O1MGID + ']交易成功') else: AbdtManager.WrtLog('>>>处理结果=[' + HostContext.O1MGID + ']' + HostContext.O1INFO) #删除批量表中的数据 sql = "" sql = sql + "UPDATE ABDT_BATCHINFO SET STATUS='**' WHERE " sql = sql + "APPNO='" + TradeContext.APPNO + "'" + " AND " sql = sql + "BUSINO='" + TradeContext.BUSINO + "'" + " AND " sql = sql + "BATCHNO='" + TradeContext.BATCHNO + "'" retcode = AfaDBFunc.UpdateSqlCmt( sql ) if (retcode==None or retcode <= 0): return -1 else: return 0 except Exception, e: AbdtManager.WrtLog( str(e) ) AbdtManager.WrtLog('删除主机文件异常') return -1
def ChkAppStatus(): sqlstr = "select status from abdt_unitinfo where appno='" + TradeContext.appNo + "' and busino ='" + TradeContext.busiNo + "'" records = AfaDBFunc.SelectSql( sqlstr ) if( records == None or len( records)==0 ): AfaLoggerFunc.tradeInfo('查找应用状态库失败') return False elif len( records ) == 1: if records[0][0].strip() == '1': return True else: AfaLoggerFunc.tradeInfo('应用状态没有开启') return False else: AfaLoggerFunc.tradeInfo('应用签约异常') return False
def Delete(): 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', '不存在此清算信息' ) sql="DELETE " 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.DeleteSqlCmt(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 GetRccSerialno( seqName="RCC_SEQ" ): AfaLoggerFunc.tradeDebug( '>>>开始生成交易流水号' ) #=====判断交易代码是否存在==== if not TradeContext.existVariable("TRCCO"): return AfaFlowControl.ExitThisFlow('M999', '交易代码不存在') elif (TradeContext.TRCCO=='2000009' or TradeContext.TRCCO=='9900522' or TradeContext.TRCCO=='9900523' or TradeContext.TRCCO=='9900524'): #=====生成4位的流水号==== sqlStr = "SELECT NEXTVAL FOR TYHD_SEQ FROM SYSIBM.SYSDUMMY1" records = AfaDBFunc.SelectSql( sqlStr ) if records == None : raise AfaFlowControl.ExitThisFlow('A0025', AfaDBFun.sqlErrMsg ) TradeContext.SerialNo=str( records[0][0] ).rjust( 8, '0' ) else: #=====生成流水号==== sqlStr = "SELECT NEXTVAL FOR " + seqName + " FROM SYSIBM.SYSDUMMY1" records = AfaDBFunc.SelectSql( sqlStr ) if records == None : raise AfaFlowControl.ExitThisFlow('A0025', AfaDBFun.sqlErrMsg ) TradeContext.SerialNo=str( records[0][0] ).rjust( 8, '0' ) AfaLoggerFunc.tradeInfo( '交易流水号' + TradeContext.SerialNo ) return TradeContext.SerialNo
def SerachDB(): #=====查询FS_BUSINOINFO表,得到账号等信息==== tradeLogger.info("进入SearchDB,查询FS_BUSINOINFO表") sqlstr = "select BUSINO,ACCNO,TELLER,BANKNO from FS_BUSINOINFO" records = AfaDBFunc.SelectSql(sqlstr) if(records == None): tradeLogger.info( "查找数据库异常" ) return False elif(len(records) == 0): tradeLogger.info( "查找数据库为空" ) return False else: return records
def SubModuleDoFst( ): AfaLoggerFunc.tradeInfo( '反交易数据预查询,查询是否有此缴费记录' ) try: sql = "select workdate,worktime,userno,tellerno,brno,unitno,amount,trxcode from afa_maintransdtl" sql = sql + " where agentserialno = '"+TradeContext.preAgentSerno+"' and workdate = '"+TradeContext.workDate+"' and trxcode='8495'" sql = sql + " and revtranf = '0' and bankstatus = '0'and chkflag = '9'" #20120718陈浩添加 sql = sql + " and sysid = '" + TradeContext.sysId.strip() + "' " sql = sql + " and note2 = '" + TradeContext.busino.strip() + "' " AfaLoggerFunc.tradeInfo('反交易查询语句:'+ sql) records = AfaDBFunc.SelectSql( sql ) AfaLoggerFunc.tradeInfo('反交易查询的结果:'+ str(records)) if records == None: TradeContext.errorCode,TradeContext.errorMsg = "0001","反交易查询数据失败" raise AfaFlowControl.flowException( ) elif(len(records) < 1): TradeContext.errorCode,TradeContext.errorMsg = "0001","无此交易" return False else: if(records[0][3] != TradeContext.tellerno): TradeContext.errorCode,TradeContext.errorMsg = "0001","原交易非本柜员所做,不能做此交易" return False if(records[0][4] != TradeContext.brno): TradeContext.errorCode,TradeContext.errorMsg = "0001","原交易非本网点所做,不能做此交易" return False if(records[0][5] != TradeContext.unitno): TradeContext.errorCode,TradeContext.errorMsg = "0001","与原交易公司不符,不能做此交易" return False if(records[0][6].strip() != TradeContext.amount.strip()): TradeContext.errorCode,TradeContext.errorMsg = "0001","与原交易金额不符,不能做此交易" return False TradeContext.PreWorkDate = records[0][0] #原交易日期 TradeContext.PreWorktime = records[0][1] #原交易时间 TradeContext.PreTrxCode = records[0][7] #原交易码 TradeContext.amount = records[0][6] #金额 TradeContext.preAgentSerno = TradeContext.preAgentSerno #原交易流水号 return True except Exception, e: AfaLoggerFunc.tradeInfo( str(e) ) AfaFlowControl.flowException( )
def SubModuleDoSnd(): AfaLoggerFunc.tradeInfo('缴费信息查询交易[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']' ) try: sql = "select agentserialno," sql = sql + "userno,username,idcode,amount,usernameb,idcodeb,loandate,loanenddate,crevouno,crebarno,procode,cpicteller,note1 " sql = sql + " from afa_adbinfo where userno = '" + TradeContext.CpicNo.strip() + "' and note3 = '" + TradeContext.unitno.strip() + "'" sql = sql + " and workdate = '"+TradeContext.workDate + "'" sql = sql + " and tellerno = '"+TradeContext.tellerno + "'" sql = sql + " and dtlstatus = '0' " sql = sql + " order by agentserialno desc" AfaLoggerFunc.tradeInfo('缴费信息查询语句'+ sql) records = AfaDBFunc.SelectSql( sql ) if(len(records) < 1): TradeContext.errorCode,TradeContext.errorMsg = "0001","无此投保信息" return False else: #用户编号(保险单号) TradeContext.CpicNo = records[0][1] #投保人名称 TradeContext.UserName = records[0][2] #投保人身份证号码 TradeContext.GovtID = records[0][3] #金额 TradeContext.PaymentAmt = records[0][4] #被保人姓名 TradeContext.UserNameB = records[0][5] #被保人身份证号码 TradeContext.GovtIDB = records[0][6] #借款日期 TradeContext.LoanDate = records[0][7] #借款到期日 TradeContext.LoanEndDate = records[0][8] #借款凭证编号 TradeContext.CreVouNo = records[0][9] #贷款合同编号 TradeContext.CreBarNo = records[0][10] #保险种类 TradeContext.ProCode = records[0][11] #太保业务员代码 TradeContext.CpicTeller = records[0][12] #保单号 TradeContext.CpciPNo = records[0][13] #交易返回码 TradeContext.errorCode = '0000' AfaLoggerFunc.tradeInfo('退出缴费信息查询交易' ) return True except Exception, e: AfaFlowControl.exitMainFlow(str(e))
def 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 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 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 UpdChkFlag(chkFlag,wrokDate): VouhFunc.WrtLog('>>>修改对帐标志') updSql = "UPDATE VOUH_MODIFY SET CHKFLAG ='" + chkFlag + "' WHERE WORKDATE = '" + wrokDate + "' \ and TRANSTATUS = '0'" VouhFunc.WrtLog(updSql) result = AfaDBFunc.UpdateSqlCmt( updSql ) if ( result <= 0 ): VouhFunc.WrtLog( AfaDBFunc.sqlErrMsg ) VouhFunc.WrtLog('>>>处理结果:修改对帐标志,数据库异常') return False VouhFunc.WrtLog('>>>修改对帐标志 ---> 成功') return True
def UpdSysStatus(sysId, sysStatus): WrtLog('>>>修改系统状态') updSql = "UPDATE AFA_SYSTEM SET STATUS='" + sysStatus + "' WHERE SYSID='" + sysId + "'" WrtLog(updSql) result = AfaDBFunc.UpdateSqlCmt( updSql ) if ( result <= 0 ): WrtLog( AfaDBFunc.sqlErrMsg ) WrtLog('>>>处理结果:修改系统状态,数据库异常') return False WrtLog('>>>修改系统状态 ---> 成功') return True
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 ChkAppStatus( ): AfaLoggerFunc.tradeInfo( '判断应用状态[begin]' ) #============业务编号============ sqlStr = "SELECT STATUS,STARTDATE,ENDDATE,STARTTIME,ENDTIME,ACCNO FROM ABDT_UNITINFO WHERE APPNO = '" + TradeContext.appNo + "'" #============单位编码============ sqlStr = sqlStr + " AND BUSINO = '" + TradeContext.busiNo + "'" #============委托方式============ sqlStr = sqlStr + " AND AGENTTYPE IN ('1','2')" records = AfaDBFunc.SelectSql( sqlStr ) if( records == None ): # AfaLoggerFunc.tradeFatal( sqlStr ) return AfaFlowControl.ExitThisFlow( 'A0002', '代收代付_单位信息表:'+AfaDBFunc.sqlErrMsg ) elif( len( records )!=0 ): AfaUtilTools.ListFilterNone( records ) #===============判断业务状态============================ if( records[0][0]=="0" ): return AfaFlowControl.ExitThisFlow( 'A0004', '该业务处于未启用状态,不能做此交易' ) elif( records[0][0]=="2" ): return AfaFlowControl.ExitThisFlow( 'A0005', '该业务处于关闭状态,不能做此交易' ) elif( records[0][0]=="3" ): return AfaFlowControl.ExitThisFlow( 'A0006', '该业务处于停用状态,不能做此交易' ) #===============判断服务时间============================ if( long( TradeContext.workDate )<long( records[0][1] ) or long( TradeContext.workDate )>long( records[0][2] ) ): return AfaFlowControl.ExitThisFlow ('A0008', "该业务已过期,有效期:["+records[0][1] + "-->" + records[0][2] + "]") #================判断有效时间=========================== if( long(TradeContext.workTime) < long(records[0][3])) or (long(TradeContext.workTime) > long(records[0][4])): return AfaFlowControl.ExitThisFlow( 'A0007', "超过业务开放时间,请在["+records[0][3]+"-->"+records[0][4]+"]做此业务" ) #=============代理业务帐号============= TradeContext.__agentAccno__ = records[0][5] TradeContext.Daccno = records[0][5] AfaLoggerFunc.tradeInfo( '判断应用状态[end]' ) return True else: AfaLoggerFunc.tradeError( sqlStr ) return AfaFlowControl.ExitThisFlow( 'A0003', '该地区没有开放此业务' )
def GetFtpFile(RemoteFileName): TradeContext.sysId = "FTP" TradeContext.hostip = TradeContext.CROP_HOSTIP TradeContext.user = TradeContext.CROP_USERNO TradeContext.pwd = TradeContext.CROP_PASSWD TradeContext.localpath = TradeContext.CROP_LDIR #TradeContext.localfilename = LocalFileName TradeContext.remotefilename = RemoteFileName TradeContext.remotepath = TradeContext.CROP_RDIR TradeContext.TransCode = "8889" TradeContext.TemplateCode = "3001" #=============与第三方通讯通讯==================== TradeContext.__respFlag__='0' AfaAfeFunc.CommAfe() flag = -1 if( TradeContext.errorCode != '0000' ): AfaLoggerFunc.tradeInfo("文件[" + TradeContext.localpath + "/" + RemoteFileName + "]下载失败") flag = -1 else: AfaLoggerFunc.tradeInfo("文件[" + TradeContext.localpath + "/" + RemoteFileName + "]下载成功") flag = 0 #下载完成之后把下载日志记录到数据库中 sql = "" sql = sql + "insert into fs_ftpreturn(busino,hostip,succflag,ftpflag,workdate,worktime,filename,note1,note2) values( " sql = sql + "'" + TradeContext.busiNo + "'," #单位编号 sql = sql + "'" + TradeContext.hostip + "'," #主机地址 sql = sql + "'" + str(flag) + "'," #成功失败标志(0-成功,-1-失败) sql = sql + "'" + "1" + "'," #上传下载标志(0-上传,1-下载) sql = sql + "'" + TradeContext.WORKDATE + "'," #操作日期 sql = sql + "'" + AfaUtilTools.GetSysTime( ) + "'," #操作时间 sql = sql + "'" + RemoteFileName + "'," #下载文件名 sql = sql + "''," #备注1 sql = sql + "'')" #备注2 AfaLoggerFunc.tradeInfo( ">>>>登记下载记录:" + sql ) AfaDBFunc.UpdateSqlCmt( sql ) return flag
def DoSumAmount(psSubUnitno): sSqlStr="SELECT SUM(AMOUNT) FROM AFA_MAINTRANSDTL WHERE APPNO='"+TradeContext.appNo+"'" sSqlStr=sSqlStr+" AND UNITNO='"+TradeContext.unitno+"'" sSqlStr=sSqlStr+" AND SUBUNITNO='"+psSubUnitno+"'" sSqlStr=sSqlStr+" AND NOTE9='"+TradeContext.ChkDate+"'" sSqlStr=sSqlStr+" AND NOTE10='"+TradeContext.ChkAcctOrd+"'" sSqlStr=sSqlStr+" AND CHKFLAG='0' AND CORPCHKFLAG='0'" AfaLoggerFunc.tradeInfo( sSqlStr ) SumRecords = AfaDBFunc.SelectSql( sSqlStr ) if(SumRecords == None ): # AfaLoggerFunc.tradeFatal( sqlStr ) return AfaFlowControll.ExitThisFlow( 'A0002', '流水表表操作异常:'+AfaDBFunc.sqlErrMsg ) else: SumRecords=UtilTools.ListFilterNone( SumRecords ,'0') TradeContext.amount=SumRecords[0][0] AfaLoggerFunc.tradeInfo( '汇总联社发生额'+str(TradeContext.amount) ) return True
def SubModuleDoFst( ): AfaLoggerFunc.tradeInfo( '反交易数据预查询,查询是否有此缴费记录' ) try: sql = "select workdate,userno,tellerno,brno,amount from afa_maintransdtl" sql = sql + " where agentserialno = '"+TradeContext.preAgentSerno+"' and workdate = '"+TradeContext.workDate+"' and trxcode='8627'" sql = sql + " and revtranf = '0' and bankstatus = '0'and chkflag = '9'" AfaLoggerFunc.tradeInfo('反交易查询语句:'+ sql) records = AfaDBFunc.SelectSql( sql ) AfaLoggerFunc.tradeInfo('反交易查询的结果:'+ str(records)) if records == None: TradeContext.errorCode,TradeContext.errorMsg = "0001","反交易查询数据失败" raise AfaFlowControl.flowException( ) elif(len(records) < 1): TradeContext.errorCode,TradeContext.errorMsg = "0001","无此交易" return False else: if(records[0][1] != TradeContext.punishNo): TradeContext.errorCode,TradeContext.errorMsg = "0001","与原交易的处罚交款书编号不一致,不能做此交易" return False if(records[0][2] != TradeContext.tellerno): TradeContext.errorCode,TradeContext.errorMsg = "0001","原交易非本柜员所做,不能做此交易" return False if(records[0][3] != TradeContext.brno): TradeContext.errorCode,TradeContext.errorMsg = "0001","原交易非本网点所做,不能做此交易" return False if(records[0][4].strip() != TradeContext.amount.strip()): TradeContext.errorCode,TradeContext.errorMsg = "0001","与原交易金额不符,不能做此交易" return False TradeContext.orgDate = records[0][0] #原交易日期 TradeContext.punishNo = records[0][1] #处罚交款书编号 TradeContext.userno = records[0][1] #初始化userno的值,取消变量检查时需要 TradeContext.amount = records[0][4] #金额 TradeContext.preAgentSerno = TradeContext.preAgentSerno #原交易流水号 TradeContext.note2 = TradeContext.busino #签约单位编号 return True except Exception, e: AfaLoggerFunc.tradeInfo( str(e) ) AfaFlowControl.flowException( )
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 GetFtpConfig( ): AfaLoggerFunc.tradeInfo( '--->获取地市ftp配置信息' ) sql = " select * from fs_dsconf " records = AfaDBFunc.SelectSql( sql ) if records == None: TradeContext.errorCode,TradeContext.errorMsg = "0001","查找地市ftp配置信息异常" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False elif len( records ) == 0: TradeContext.errorCode,TradeContext.errorMsg = "0001","没有找到地市ftp配置信息" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False else: TradeContext.ldir = records[0][5] #本地路径 return records
def ChkAbnormal( ): AfaLoggerFunc.tradeInfo( '查询流水表中的主机异常交易' ) sql="SELECT COUNT(*) FROM FS_MAINTRANSDTL WHERE WORKDATE='"+ \ TradeContext.workDate+"' AND AGENTCODE='"+TradeContext.agentCode+ \ "' AND AGENTZONENO='"+TradeContext.zoneno+"' AND BRNO='"+TradeContext.brno+\ "' AND TELLERNO='"+TradeContext.teller+"' AND REVTRANF='0'AND \ (BANKSTATUS='2' OR (BANKSTATUS='0' AND CORPSTATUS IN ('1', '2','3')))" result=AfaDBFunc.SelectSql( sql ) if( result == None ): # AfaLoggerFunc.tradeFatal( sql ) return -1 if( result[0][0]!=0 ): return 1 else: AfaLoggerFunc.tradeError( sql ) return 0
def SubModuleMainFst( ): AfaLoggerFunc.tradeInfo( '进入TIPS运行参数查看['+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']' ) try: sqlstr = "select ParamTypeNo,ParamTypeDesc,DetailNo,DetailDesc,ParamValue from TIPS_RUNPARAM WHERE" sqlstr = sqlstr + " ParamTypeNo='" + TradeContext.paramType + "'" sqlstr = sqlstr + " order by DetailNo " AfaLoggerFunc.tradeInfo(sqlstr) records = AfaDBFunc.SelectSql( sqlstr ) if ( records==None or len(records) == 0 ): return AfaFlowControl.ExitThisFlow('A0001', '没有满足条件的记录') mx_file_name = os.environ['AFAP_HOME'] + '/tmp/' + 'AH_' + TradeContext.teller + '.txt' TradeContext.tradeResponse.append(['fileName', 'AH_' + TradeContext.teller + '.txt']) if (os.path.exists(mx_file_name) and os.path.isfile(mx_file_name)): #文件存在,先删除-再创建 os.system("rm " + mx_file_name) sfp = open(mx_file_name, "w") AfaLoggerFunc.tradeInfo('明细文件=['+mx_file_name+']') i = 0 while ( i < len(records) ): A0 = str(records[i][0]).strip() #ParamTypeNo A1 = str(records[i][1]).strip() #ParamTypeDesc A2 = str(records[i][2]).strip() #DetailNo A3 = str(records[i][3]).strip() #DetailDesc A4 = str(records[i][4]).strip() #ParamValue sfp.write(A0 + '|' + A1 + '|' + A2 + '|' + A3 + '|' + A4 + '|' + '\n') i=i+1 sfp.close() TradeContext.tradeResponse.append(['errorCode', '0000']) TradeContext.tradeResponse.append(['errorMsg', '交易成功']) AfaLoggerFunc.tradeInfo( '退出TIPS运行参数查看['+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']' ) return True except AfaFlowControl.flowException, e: return AfaFlowControl.ExitThisFlow('9999',str(e))