def GetNCCDate(): #=====查询农信银系统状态==== AfaLoggerFunc.tradeInfo( '>>>查询NCC工作日期' ) if((TradeContext.TRCCO[0:2] == PL_TRCCO_HD) or (TradeContext.TRCCO[0:2] == PL_TRCCO_HP)): dict = {'OPRTYPNO':PL_TRCCO_HD} #elif((TradeContext.TRCCO[0:2] == PL_TRCCO_TCTD) or (TradeContext.TRCCO == PL_TRCCO_QT)): else: dict = {'OPRTYPNO':PL_TRCCO_TCTD} records=rccpsDBTrcc_mbrifa.selectu( dict ) if( records == None ): return AfaFlowControl.ExitThisFlow('A0025', "操作数据库失败" ) elif(len(records) <= 0 ): return AfaFlowControl.ExitThisFlow('A0025', "取农信银中心日期失败" ) else: TradeContext.NCCworkDate = records['NWWKDAT'] AfaLoggerFunc.tradeInfo( '中心日期:' + TradeContext.NCCworkDate ) return TradeContext.NCCworkDate
def SubModuleDoFst(): AfaLoggerFunc.tradeInfo( '***农信银系统:往账.本地类操作(1.本地操作)交易[TRC001_8545]进入***' ) #=====判断接口是否存在==== if not TradeContext.existVariable("OPRTYPNO"): return AfaFlowControl.ExitThisFlow('M999','业务类型[OPRTYPNO]不存在') #=====判断OPRTYPNO是汇票时查询汇兑业务信息==== #=====PL_TRCCO_HP 21 汇票==== #=====PL_TRCCO_HD 20 汇兑==== #=====PL_TRCCO_TCTD 30 通存通兑==== #=====汇票使用的日期和工作状态同汇兑==== if TradeContext.OPRTYPNO == PL_TRCCO_HP: OPRTYPNO = PL_TRCCO_HD elif TradeContext.OPRTYPNO == PL_TRCCO_HD: OPRTYPNO = PL_TRCCO_HD elif TradeContext.OPRTYPNO == PL_TRCCO_TCTD: OPRTYPNO = PL_TRCCO_TCTD else: return AfaFlowControl.ExitThisFlow('M999','业务类型[OPRTYPNO]错误') #=====按行号查询==== sqldic={'OPRTYPNO':OPRTYPNO} #=====查询数据库,得到查询结果集==== records=rccpsDBTrcc_mbrifa.selectu(sqldic) if records==None: return AfaflowControl.ExitThisFlow('M999','数据库操作失败') if len(records) <= 0 : return AfaflowControl.ExitThisFlow('M999','无满足条件数据') TradeContext.NCCworkDate = records['NWWKDAT'] #中心工作日期 TradeContext.NWSYSST = records['NWSYSST'] #工作状态 TradeContext.errorMsg="查询成功" TradeContext.errorCode="0000" AfaLoggerFunc.tradeInfo( '***农信银系统:往账.本地类操作(1.本地操作)交易[TRC001_8545]退出***' ) return True
def ChkSysInfo( flag ): AfaLoggerFunc.tradeInfo( '>>>系统平台状态有效性校验' ) sql = "select status from afa_system where sysid='" sql = sql + TradeContext.sysId + "'" records=AfaDBFunc.SelectSql( sql ) if( records == None ): return AfaFlowControl.ExitThisFlow('A0025', "中间业务平台数据库操作失败" ) elif( len( records ) == 0 ): return AfaFlowControl.ExitThisFlow('A0025', "中间业务平台农信银系统无记录" ) elif( records[0][0] != '1' ): return AfaFlowControl.ExitThisFlow('A0025', "中间业务平台_农信银系统已关闭" ) else: if flag == 'RCCPS': AfaLoggerFunc.tradeInfo( '>>>农信银系统状态有效性校验' ) if ((not TradeContext.existVariable("TRCCO")) or len(TradeContext.TRCCO) == 0): return AfaFlowControl.ExitThisFlow('M999', "字段[TRCCO]为空错误") #=====查询农信银系统状态==== if((TradeContext.TRCCO[0:2] == PL_TRCCO_HD) or (TradeContext.TRCCO == PL_TRCCO_HP)): dict = {'OPRTYPNO':PL_TRCCO_HD} #elif((TradeContext.TRCCO[0:2] == PL_TRCCO_TCTD) or (TradeContext.TRCCO == PL_TRCCO_QT)): else: dict = {'OPRTYPNO':PL_TRCCO_TCTD} records=rccpsDBTrcc_mbrifa.selectu( dict ) AfaLoggerFunc.tradeInfo( 'record=' + str(records) ) if( records == None ): return AfaFlowControl.ExitThisFlow('A0025', "农信银系统操作数据库失败" ) if( len(records) <= 0 ): return AfaFlowControl.ExitThisFlow('A0025', "农信银系统没有开始营业" ) elif( records['NWSYSST'] != '10' ): return AfaFlowControl.ExitThisFlow('A0025', "农信银系统没有开始营业" ) else: AfaLoggerFunc.tradeInfo( '>>>农信银系统状态正常' ) AfaLoggerFunc.tradeInfo( '>>>系统状态校验正常' ) return True
if __name__ == "__main__": try: AfaLoggerFunc.tradeInfo("***农信银系统: 系统调度类.汇兑对账文件下载[rccpsHDDZGetFile]进入***") local_home = os.environ['AFAP_HOME'] + "/data/rccps/" #==========获取中心日期================================================ AfaLoggerFunc.tradeInfo(">>>开始获取前中心工作日期") mbrifa_where_dict = {} mbrifa_where_dict['OPRTYPNO'] = "20" mbrifa_dict = rccpsDBTrcc_mbrifa.selectu(mbrifa_where_dict) if mbrifa_dict == None: AfaLoggerFunc.tradeInfo( AfaDBFunc.sqlErrMsg ) rccpsCronFunc.cronExit("S999","查询当前中心日期异常") NCCWKDAT = mbrifa_dict['NOTE1'][:8] #对账日期 AfaLoggerFunc.tradeInfo(">>>结束获取前中心工作日期") #================判断前置机汇兑对账文件是否传送完毕========================= AfaLoggerFunc.tradeInfo(">>>开始判断前置机汇兑对账文件是否传送完毕") file_path = "settlefile/hdsendend1340000008" if not rccpsFtpFunc.getRccps(file_path):
def SubModuleDoFst(): AfaLoggerFunc.tradeInfo( '***农信银系统:来账.中心类操作(1.本地操作).系统状态变更报文接收[RCC00R6_1121]进入***' ) #=================查询本地相关业务状态的系统状态============================ mbrifa_where_dict = {} mbrifa_where_dict['OPRTYPNO'] = TradeContext.RELOPRTYPNO mbrifa_dict = rccpsDBTrcc_mbrifa.selectu(mbrifa_where_dict) if mbrifa_dict == None: return AfaFlowControl.ExitThisFlow("S999","查询本地系统状态信息异常") if len(mbrifa_dict) <= 0: return AfaFlowControl.ExitThisFlow("S999","无相关业务类型本地系统状态信息") #=================校验报文新工作日期============================================ if int(TradeContext.NWWKDAT) < int(mbrifa_dict['NWWKDAT']): AfaLoggerFunc.tradeInfo("报文新工作日期[" + TradeContext.NWWKDAT + "]在本地新工作日期[" + mbrifa_dict['NWWKDAT'] + "]之前,丢弃此报文,进入下一流程,发送表示成功的通讯回执") #======为通讯回执报文赋值=================================================== out_context_dict = {} out_context_dict['sysType'] = 'rccpst' out_context_dict['TRCCO'] = '9900503' out_context_dict['MSGTYPCO'] = 'SET008' out_context_dict['RCVMBRCO'] = TradeContext.SNDMBRCO out_context_dict['SNDMBRCO'] = TradeContext.RCVMBRCO out_context_dict['SNDBRHCO'] = TradeContext.BESBNO out_context_dict['SNDCLKNO'] = TradeContext.BETELR #out_context_dict['SNDTRDAT'] = TradeContext.BJEDTE #out_context_dict['SNDTRTIM'] = TradeContext.BJETIM #out_context_dict['MSGFLGNO'] = out_context_dict['SNDMBRCO'] + TradeContext.BJEDTE + TradeContext.SerialNo out_context_dict['ORMFN'] = TradeContext.MSGFLGNO out_context_dict['NCCWKDAT'] = TradeContext.NCCworkDate out_context_dict['OPRTYPNO'] = '99' out_context_dict['ROPRTPNO'] = TradeContext.OPRTYPNO out_context_dict['TRANTYP'] = '0' out_context_dict['ORTRCCO'] = TradeContext.TRCCO out_context_dict['PRCCO'] = 'RCCI0000' out_context_dict['STRINFO'] = '过期报文' rccpsMap0000Dout_context2CTradeContext.map(out_context_dict) return True elif int(TradeContext.NWWKDAT) == int(mbrifa_dict['NWWKDAT']): #============报文新工作日期与本地新工作日期相同,校验报文新工作状态====== if int(TradeContext.NWSYSST) <= int(mbrifa_dict['NWSYSST']): AfaLoggerFunc.tradeInfo("报文新工作状态[" + TradeContext.NWSYSST + "]不在本地新工作状态[" + mbrifa_dict['NWSYSST'] + "]之后,丢弃此报文,进入下一流程,发送表示成功的通讯回执") #======为通讯回执报文赋值=================================================== out_context_dict = {} out_context_dict['sysType'] = 'rccpst' out_context_dict['TRCCO'] = '9900503' out_context_dict['MSGTYPCO'] = 'SET008' out_context_dict['RCVMBRCO'] = TradeContext.SNDMBRCO out_context_dict['SNDMBRCO'] = TradeContext.RCVMBRCO out_context_dict['SNDBRHCO'] = TradeContext.BESBNO out_context_dict['SNDCLKNO'] = TradeContext.BETELR out_context_dict['SNDTRDAT'] = TradeContext.BJEDTE out_context_dict['SNDTRTIM'] = TradeContext.BJETIM out_context_dict['MSGFLGNO'] = out_context_dict['SNDMBRCO'] + TradeContext.BJEDTE + TradeContext.SerialNo out_context_dict['ORMFN'] = TradeContext.MSGFLGNO out_context_dict['NCCWKDAT'] = TradeContext.NCCworkDate out_context_dict['OPRTYPNO'] = '99' out_context_dict['ROPRTPNO'] = TradeContext.OPRTYPNO out_context_dict['TRANTYP'] = '0' out_context_dict['ORTRCCO'] = TradeContext.TRCCO out_context_dict['PRCCO'] = 'RCCI0000' out_context_dict['STRINFO'] = '过期报文' rccpsMap0000Dout_context2CTradeContext.map(out_context_dict) return True #增加日切报文后发先至情况的处理 #通存通兑顺序10-20-30-10 if TradeContext.RELOPRTYPNO == "30": if mbrifa_dict['NWSYSST'] == '10' and TradeContext.NWSYSST != '20': return AfaFlowControl.ExitThisFlow("S999","[" + TradeContext.RELOPRTYPNO + "]业务当前业务状态为日间开始[10],但日切报文中变更状态非业务截止准备[20],停止处理") if mbrifa_dict['NWSYSST'] == '20' and TradeContext.NWSYSST != '30': return AfaFlowControl.ExitThisFlow("S999","[" + TradeContext.RELOPRTYPNO + "]业务当前业务状态为业务截止准备[20],但日切报文中变更状态非业务截止[30],停止处理") if mbrifa_dict['NWSYSST'] == '30' and TradeContext.NWSYSST != '10': return AfaFlowControl.ExitThisFlow("S999","[" + TradeContext.RELOPRTYPNO + "]业务当前业务状态为业务截止[30],但日切报文中变更状态非日间开始[10],停止处理") #汇兑汇票顺序10-30-10 else: if mbrifa_dict['NWSYSST'] == '10' and TradeContext.NWSYSST != '30': return AfaFlowControl.ExitThisFlow("S999","[" + TradeContext.RELOPRTYPNO + "]业务当前业务状态为日间开始[10],但日切报文中变更状态非业务截止[30],停止处理") if mbrifa_dict['NWSYSST'] == '30' and TradeContext.NWSYSST != '10': return AfaFlowControl.ExitThisFlow("S999","[" + TradeContext.RELOPRTYPNO + "]业务当前业务状态为业务截止[30],但日切报文中变更状态非日间开始[10],停止处理") mbrifa_update_dict = {} mbrifa_update_dict['ORWKDAT'] = mbrifa_dict['NWWKDAT'] mbrifa_update_dict['ORSYSST'] = mbrifa_dict['NWSYSST'] mbrifa_update_dict['NWWKDAT'] = TradeContext.NWWKDAT mbrifa_update_dict['NWSYSST'] = TradeContext.NWSYSST mbrifa_update_dict['HOLFLG'] = TradeContext.HOLFLG mbrifa_update_dict['NOTE1'] = mbrifa_dict['NWWKDAT'] ret = rccpsDBTrcc_mbrifa.update(mbrifa_update_dict,mbrifa_where_dict) if ret <= 0: if not AfaDBFunc.RollbackSql( ): AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) AfaLoggerFunc.tradeError(">>>Rollback异常") AfaLoggerFunc.tradeInfo(">>>Rollback成功") return AfaFlowControl.ExitThisFlow("S999","更新系统状态异常") #======若新系统状态为业务截止,则打开对账系统调度============================ if TradeContext.NWSYSST == '30' and TradeContext.HOLFLG == '2': if TradeContext.RELOPRTYPNO == '20': #====打开汇兑对账系统调度======================================= AfaLoggerFunc.tradeInfo(">>>开始打开汇兑对账系统调度") if not rccpsCronFunc.openCron("00031"): if not AfaDBFunc.RollbackSql( ): AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) AfaLoggerFunc.tradeError(">>>Rollback异常") AfaLoggerFunc.tradeInfo(">>>Rollback成功") return AfaFlowControl.ExitThisFlow("S999","打开汇兑对账系统调度异常") AfaLoggerFunc.tradeInfo(">>>结束打开汇兑对账系统调度") #====打开汇票对账系统调度======================================= AfaLoggerFunc.tradeInfo(">>>开始打开汇票对账系统调度") if not rccpsCronFunc.openCron("00041"): if not AfaDBFunc.RollbackSql( ): AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) AfaLoggerFunc.tradeError(">>>Rollback异常") AfaLoggerFunc.tradeInfo(">>>Rollback成功") return AfaFlowControl.ExitThisFlow("S999","打开汇票对账系统调度异常") AfaLoggerFunc.tradeInfo(">>>结束打开汇票对账系统调度") elif TradeContext.RELOPRTYPNO == '30': #====打开通存通兑对账系统调度=================================== AfaLoggerFunc.tradeInfo(">>>开始打开通存通兑对账系统调度") if not rccpsCronFunc.openCron("00061"): if not AfaDBFunc.RollbackSql( ): AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) AfaLoggerFunc.tradeError(">>>Rollback异常") AfaLoggerFunc.tradeInfo(">>>Rollback成功") return AfaFlowControl.ExitThisFlow("S999","打开通存通兑对账系统调度异常") AfaLoggerFunc.tradeInfo(">>>结束打开通存通兑对账系统调度") #====打开信息类业务量统计系统调度====================== AfaLoggerFunc.tradeInfo(">>>开始打开信息类业务量统计系统调度") # if not rccpsCronFunc.openCron("00067"): # if not AfaDBFunc.RollbackSql( ): # AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) # AfaLoggerFunc.tradeError(">>>Rollback异常") # AfaLoggerFunc.tradeInfo(">>>Rollback成功") # return AfaFlowControl.ExitThisFlow("S999","打开信息类业务量统计系统调度异常") # AfaLoggerFunc.tradeInfo(">>>结束打开信息类业务量统计系统调度") #======若通存通兑新系统状态为日间开始,则打开行名行号生效系统调度=================== if TradeContext.NWSYSST == '10' and TradeContext.RELOPRTYPNO == '30': #====开始打开行名行号生效系统调度======================================= AfaLoggerFunc.tradeInfo(">>>开始打开行名行号生效系统调度") if not rccpsCronFunc.openCron("00050"): if not AfaDBFunc.RollbackSql( ): AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) AfaLoggerFunc.tradeError(">>>Rollback异常") AfaLoggerFunc.tradeInfo(">>>Rollback成功") return AfaFlowControl.ExitThisFlow("S999","打开行名行号生效系统调度异常") AfaLoggerFunc.tradeInfo(">>>结束打开行名行号生效系统调度") if not AfaDBFunc.CommitSql( ): AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return AfaFlowControl.ExitThisFlow("S999","Commit异常") AfaLoggerFunc.tradeInfo(">>>Commit成功") #======为通讯回执报文赋值=================================================== out_context_dict = {} out_context_dict['sysType'] = 'rccpst' out_context_dict['TRCCO'] = '9900503' out_context_dict['MSGTYPCO'] = 'SET008' out_context_dict['RCVMBRCO'] = TradeContext.SNDMBRCO out_context_dict['SNDMBRCO'] = TradeContext.RCVMBRCO out_context_dict['SNDBRHCO'] = TradeContext.BESBNO out_context_dict['SNDCLKNO'] = TradeContext.BETELR out_context_dict['SNDTRDAT'] = TradeContext.BJEDTE out_context_dict['SNDTRTIM'] = TradeContext.BJETIM out_context_dict['MSGFLGNO'] = out_context_dict['SNDMBRCO'] + TradeContext.BJEDTE + TradeContext.SerialNo out_context_dict['ORMFN'] = TradeContext.MSGFLGNO out_context_dict['NCCWKDAT'] = TradeContext.NCCworkDate out_context_dict['OPRTYPNO'] = '99' out_context_dict['ROPRTPNO'] = TradeContext.OPRTYPNO out_context_dict['TRANTYP'] = '0' out_context_dict['ORTRCCO'] = TradeContext.TRCCO out_context_dict['PRCCO'] = 'RCCI0000' out_context_dict['STRINFO'] = '成功' rccpsMap0000Dout_context2CTradeContext.map(out_context_dict) AfaLoggerFunc.tradeInfo( '***农信银系统:来账.中心类操作(1.本地操作).系统状态变更报文接收[RCC00R6_1121]退出***' ) return True