📄 cispub.cpp
字号:
* FALSE:处理失败*作 者:zhanglongping *日 期: 2006-09-30****************************************************************************/BOOL BepsPub::GetMbfeData( MainInfo *sMainInfo , MBFEDATA *sMbfeData ){ filelog(CIS_INTER_MB, "Enter BepsPub::GetMbfeData\n"); int nResCode; char sSqlCmd[2048]; memset( sSqlCmd , 0 , sizeof(sSqlCmd)); sprintf( sSqlCmd , "SELECT * FROM %s WHERE PkgPreDate='%s' and " "ISDfiCode='%s' and OSDfiCode='%s' and PkgSerNo ='%s'", T_MBFEDATA, sMainInfo->WorkDate,sMainInfo->SendBank, sMainInfo->RecvBank,sMainInfo->TrxNo); filelog(CIS_INTER_MB, "sqlCmd=[%d][%s]\n", strlen(sSqlCmd), sSqlCmd); nResCode = clsSybCommand.GetLastRecord(sSqlCmd, sMbfeData->MbfeIdx ,INTBIND, sMbfeData->CisIdx ,INTBIND, sMbfeData->doflag ,NTBSTRINGBIND, sMbfeData->rsflag ,NTBSTRINGBIND, sMbfeData->PkgType ,NTBSTRINGBIND, sMbfeData->ISDfiCode ,NTBSTRINGBIND, sMbfeData->OSDfiCode ,NTBSTRINGBIND, sMbfeData->RtnLimted ,NTBSTRINGBIND, sMbfeData->PkgPreDate ,NTBSTRINGBIND, sMbfeData->PkgSerNo ,NTBSTRINGBIND, sMbfeData->RNTurnDate ,NTBSTRINGBIND, sMbfeData->PkgExpData ,NTBSTRINGBIND, sMbfeData->TrxsType ,NTBSTRINGBIND, sMbfeData->IDfiCode ,NTBSTRINGBIND, sMbfeData->ODfiCode ,NTBSTRINGBIND, sMbfeData->PreDate ,NTBSTRINGBIND, sMbfeData->TrxNo ,NTBSTRINGBIND, sMbfeData->MEYSYB ,NTBSTRINGBIND, sMbfeData->Amount ,NTBSTRINGBIND, sMbfeData->PayerBKCD ,NTBSTRINGBIND, sMbfeData->PayerACC ,NTBSTRINGBIND, sMbfeData->PayerName ,NTBSTRINGBIND, sMbfeData->PayerAddr ,NTBSTRINGBIND, sMbfeData->RecverBKCD ,NTBSTRINGBIND, sMbfeData->RecverACC ,NTBSTRINGBIND, sMbfeData->RecverName ,NTBSTRINGBIND, sMbfeData->RecverAddr ,NTBSTRINGBIND, sMbfeData->OprtType ,NTBSTRINGBIND, sMbfeData->RtnInfo ,NTBSTRINGBIND, sMbfeData->ExpDataLen ,NTBSTRINGBIND, sMbfeData->ExpType ,NTBSTRINGBIND, sMbfeData->ChkDate ,NTBSTRINGBIND, sMbfeData->AccNo ,NTBSTRINGBIND, sMbfeData->Info ,NTBSTRINGBIND, sMbfeData->RedoCount ,NTBSTRINGBIND, sMbfeData->RedoInfo ,NTBSTRINGBIND, sMbfeData->RedoInfo1 ,NTBSTRINGBIND, sMbfeData->ChkModel ,NTBSTRINGBIND, sMbfeData->ChkPsw ,NTBSTRINGBIND, sMbfeData->MbfeData ,NTBSTRINGBIND, sMbfeData->TagData ,NTBSTRINGBIND); if ( nResCode <= 0 ) { filelog(CIS_INTER_MB, "Database operator return[%d][%s]" " at file=%s in line=%d\n", sqlca.sqlcode, sqlca.sqlerrtext, __FILE__, __LINE__); return FALSE; } filelog(CIS_INTER_MB, "Exit BepsPub::GetMbfeData\n"); return TRUE;}/****************************************************************************函数说明:MBFE业务明细数据转CIS明细*输入参数:*输出参数:* *返回值 :TRUE :处理成功* FALSE:处理失败*作 者: *日 期: ****************************************************************************/BOOL BepsPub::MbfeToCis(MainInfo *sMainInfo , MBFEDATA *sMbfeData , CISDATA *sCisData){ filelog(CIS_INTER_MB, "Enter BepsPub::MbfeToCis\n"); int nCisIdx = 0; int nCount = 0; char sResDesc[255]; if (!MakeTrxsSerialNo(&nCisIdx,sResDesc,CISID)) { return FALSE; } sCisData->CisIdx = nCisIdx; sCisData->MbfeIdx = sMbfeData->MbfeIdx; //处理标志// memcpy( sCisData->doflag , sMbfeData->doflag , 2 ); strcpy( sCisData->doflag ,CIS_NO ); //来往标志// memcpy( sCisData->rsflag , sMbfeData->rsflag , 1 ); strcpy( sCisData->rsflag ,CISOUT ); //柜员号 memcpy( sCisData->OprNo , sMainInfo->OprNo , 10 ); //包类型号 memcpy( sCisData->PkgType , sMbfeData->PkgType , 3 ); //业务类型号 memcpy( sCisData->TrxsType , sMbfeData->TrxsType , 5 ); //委托日期 memcpy( sCisData->PreDate , sMbfeData->PreDate , 8 ); //交易序号 memcpy( sCisData->TrxNo , sMbfeData->TrxNo , 8 ); //收款人开户行 memcpy( sCisData->RecverBKCD , sMbfeData->RecverBKCD , 12 ); //收款人账号 memcpy( sCisData->RecverACC , sMbfeData->RecverACC , 32 ); //收款人名称 memcpy( sCisData->RecverName , sMbfeData->RecverName , 60 ); //付款人开户行行 memcpy( sCisData->PayerBKCD , sMbfeData->PayerBKCD , 12 ); //付款人账号 memcpy( sCisData->PayerACC , sMbfeData->PayerACC , 32 ); //收款人名称 memcpy( sCisData->PayerName , sMbfeData->PayerName , 60 ); //货币符号 memcpy( sCisData->MEYSYB , sMbfeData->MEYSYB , 3 ); //金额 memcpy( sCisData->Amount , sMbfeData->Amount , 15 ); //支票种类 memcpy( sCisData->AccKind , sMainInfo->AccKind , 2 ); //票据号码 memcpy( sCisData->AccNo , sMbfeData->AccNo , 12 ); //出票日期 memcpy( sCisData->ChkDate , sMbfeData->ChkDate , 8 ); //提示付款日期 memcpy( sCisData->AccDate , sMainInfo->AccDate , 8 ); //支付密码?=校验密码 memcpy( sCisData->AccPsw , sMbfeData->ChkPsw , 20 ); //用途 memcpy( sCisData->Info , sMbfeData->Info , 60 ); //备注 // memcpy( sCisData->Remark , sMbfeData->Remark , 120 ); //系统受理日期 // memcpy( sCisData->SysDate , sMbfeData->SysDate , 8 ); //回执期限 memcpy( sCisData->RtnLimted , sMbfeData->RtnLimted , 8 ); //补发标志 // memcpy( sCisData->SRCFlag , sMbfeData->SRCFlag , 1 ); //核签状态// memcpy( sCisData->ChkSatus , sMbfeData->ChkSatus , 2 ); //正面图像 memcpy( sCisData->PicFront , sMainInfo->PicFrt , 29 ); //背面图像 memcpy( sCisData->PicBack , sMainInfo->PicBck , 29 ); //数字签名 // memcpy( sCisData->SignInfo , sMbfeData->SignInfo , 1800); //背书次数 memcpy( sCisData->RedoCount , sMbfeData->RedoCount , 2 ); nCount = atoi( sCisData->RedoCount ); //背书人清单 memcpy( sCisData->RedoInfo , sMbfeData->RedoInfo , nCount*60); sprintf( sCisData->CisData , "%3s%5s%8s%8s%12s%32s%60s%12s%32s%60s%3s%15s" "%2s%12s%8s%8s%20s%60s%120s%8s%8s%1s%2s%2s%s", sCisData->PkgType , sCisData->TrxsType , sCisData->PreDate , sCisData->TrxNo , sCisData->RecverBKCD , sCisData->RecverACC , sCisData->RecverName , sCisData->PayerBKCD , sCisData->PayerACC , sCisData->PayerName , sCisData->MEYSYB , sCisData->Amount , sCisData->AccKind , sCisData->AccNo , sCisData->ChkDate , sCisData->AccDate , sCisData->AccPsw , sCisData->Info , sCisData->Remark , sCisData->SysDate , sCisData->RtnLimted , sCisData->SRCFlag , sCisData->ChkSatus , sCisData->PicFront , sCisData->PicBack , sCisData->SignInfo , sCisData->RedoCount , sCisData->RedoInfo ); filelog(CIS_INTER_MB, "Exit BepsPub::MbfeToCis\n"); return TRUE;}/****************************************************************************函数说明:CIS报文入库*输入参数:*输出参数:* *返回值 :TRUE :处理成功* FALSE:处理失败*作 者: *日 期: ****************************************************************************/BOOL BepsPub::SaveCis(CISDATA *sCisData){ filelog(CIS_INTER_MB, "Enter BepsPub::SaveCis"); char sSqlCmd[8192]; int nResCode; memset( sSqlCmd , 0 , sizeof( sSqlCmd )); sprintf(sSqlCmd, "INSERT INTO %s VALUES(%d, %d, '%s', '%s', '%s', '%s', " "'%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', " "'%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', " "'%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')", T_CISDATA , sCisData->CisIdx , sCisData->MbfeIdx, sCisData->doflag , sCisData->doflag , sCisData->rsflag , sCisData->rsflag , sCisData->OprNo , sCisData->PkgType , sCisData->TrxsType , sCisData->PreDate , sCisData->TrxNo , sCisData->RecverBKCD , sCisData->RecverACC , sCisData->RecverName , sCisData->PayerBKCD , sCisData->PayerACC , sCisData->PayerName , sCisData->MEYSYB , sCisData->Amount , sCisData->AccKind , sCisData->AccNo , sCisData->ChkDate , sCisData->AccDate , sCisData->AccPsw , sCisData->Info , sCisData->Remark , sCisData->SysDate , sCisData->RtnLimted , sCisData->SRCFlag , sCisData->ChkSatus , sCisData->PicFront , sCisData->PicBack , sCisData->SignInfo , sCisData->RedoCount , sCisData->RedoInfo , sCisData->CisData ); nResCode = clsSybCommand.Insert(sSqlCmd); if ( nResCode <= 0 ) { filelog(CIS_INTER_MB,"SaveCis = [%d][%s][%s]\n",sqlca.sqlcode, sqlca.sqlerrtext,sSqlCmd); return FALSE; }//CIS报文入库处理 filelog(CIS_INTER_MB, "Exit BepsPub::SaveCis"); return TRUE; } /****************************************************************************函数说明:CIS业务明细数据转MBFE明细*输入参数:*输出参数:* *返回值 :TRUE :处理成功* FALSE:处理失败*作 者: *日 期: ****************************************************************************/BOOL BepsPub::CisToMbfe(MainInfo *sMainInfo , MBFEDATA *sMbfeData , CISDATA *sCisData){ char sResDesc[255]; int nMbfeIdx = 0; int nCount = 0; BankInfo sBankInfo; BOOL bret; memset( &sBankInfo , 0 , sizeof( sBankInfo )); if (!MakeTrxsSerialNo(&nMbfeIdx,sResDesc,MBFEID)) return FALSE; sCisData->MbfeIdx = nMbfeIdx; sCisData->CisIdx = sMbfeData->CisIdx; //处理标志 memcpy ( sMbfeData->doflag , sCisData->doflag , 2 ); strcpy ( sMbfeData->rsflag , CISIN); //来往标志 //包类型号 memcpy ( sMbfeData->PkgType , sCisData->PkgType , 3 ); //发起清算行号 // memcpy ( sMbfeData->ISDfiCode , sCisData->ISDfiCode , 12 ); strcpy ( sBankInfo.sBankCode , sCisData->PayerBKCD); bret = FindBankInfo(&sBankInfo,sResDesc); if( bret == FALSE ) { filelog("CisPub.log" , "bankno[%s]%s" , sBankInfo.sBankCode , sResDesc ); return FALSE; } memcpy ( sMbfeData->ISDfiCode , sBankInfo.sSapBkCode , 12 ); //接收清算行号// memcpy ( sMbfeData->OSDfiCode , sCisData->OSDfiCode , 12 ); strcpy ( sBankInfo.sBankCode , sCisData->RecverBKCD); bret = FindBankInfo(&sBankInfo,sResDesc); if( bret == FALSE ) { filelog("CisPub.log" , "bankno[%s]%s" , sBankInfo.sBankCode , sResDesc ); return FALSE; } memcpy ( sMbfeData->OSDfiCode , sBankInfo.sSapBkCode , 12 ); //回执期限// memcpy ( sMbfeData->RtnLimted , sCisData->RtnLimted , 8 ); //包委托日期 同当前业务系统日期 memcpy ( sMbfeData->PkgPreDate , sCisData->PreDate , 8 ); bret = GetSysCtlPar(WKDATE, sMbfeData->PkgPreDate , sResDesc); if( bret == FALSE ) { filelog("CisPub.log" , "[CisToMbfe]获取工作日期失败!" ); return FALSE; } //包序号 strcpy ( sMbfeData->PkgSerNo , "99999999" ); //转发日期 // memcpy ( sMbfeData->RNTurnDate , sCisData->RNTurnDate , 8 ); //包附加数据 // memcpy ( sMbfeData->PkgExpData , sCisData->PkgExpData , 64 ); //业务类型号 memcpy ( sMbfeData->TrxsType , sCisData->TrxsType , 5 ); /****************************************************************/ //发起行号 memcpy ( sMbfeData->IDfiCode , sCisData->PayerBKCD , 12 ); //接收行号 memcpy ( sMbfeData->ODfiCode , sCisData->RecverBKCD , 12 ); /****************************************************************/ //委托日期 memcpy ( sMbfeData->PreDate , sCisData->PreDate , 8 ); //支付交易序号 memcpy ( sMbfeData->TrxNo , sCisData->TrxNo , 8 ); //货币符号 memcpy ( sMbfeData->MEYSYB , sCisData->MEYSYB , 3 ); //金额 memcpy ( sMbfeData->Amount , sCisData->Amount , 15 ); //付款人开户行行号 memcpy ( sMbfeData->PayerBKCD , sCisData->PayerBKCD , 12 ); //付款人账号 memcpy ( sMbfeData->PayerACC , sCisData->PayerACC , 32 ); //付款人姓名 memcpy ( sMbfeData->PayerName , sCisData->PayerName , 60 ); //收款人开户行 memcpy ( sMbfeData->RecverBKCD , sCisData->RecverBKCD , 12 ); //收款人账号 memcpy ( sMbfeData->RecverACC , sCisData->RecverACC , 32 ); //收款人名称 memcpy ( sMbfeData->RecverName , sCisData->RecverName , 60 ); //业务类型 99-其他 memcpy ( sMbfeData->OprtType , "99" , 2 ); //退汇附言 // memcpy ( sMbfeData->RtnInfo , sCisData->RtnInfo , 60 ); //附加域长度 strcpy ( sMbfeData->ExpDataLen , "00000755" ); //附加域类型 strcpy ( sMbfeData->ExpType , "0"); //出票日期 memcpy ( sMbfeData->ChkDate , sCisData->ChkDate , 8 ); //票据号码 memcpy ( sMbfeData->AccNo , sCisData->AccNo , 12 ); //用途 memcpy ( sMbfeData->Info , sCisData->Info , 60 ); //背书次数 memcpy ( sMbfeData->RedoCount , sCisData->RedoCount , 2 ); //背书人清单 nCount = atoi( sMbfeData->RedoCount ); memcpy ( sMbfeData->RedoInfo , sCisData->RedoInfo , nCount*60 ); //校验模式 05-其他 strcpy ( sMbfeData->ChkModel , "05" ); //校验密码// memcpy ( sMbfeData->ChkPsw , sCisData->AccPsw , 512 ); sprintf( sMbfeData->ChkPsw , "%512s" , sCisData->AccPsw); sprintf( sMbfeData->MbfeData,"%3s%12s%12s%8s%8s%8s%8s%64s%5s%12s%12s%8s%8s" "%3s%15s%12s%32s%60s%60s%12s%32s%60s%60s%12s%60s%8s%1s%8s%12s%60s%2s" "%1000s%60s%2s%512s", sMbfeData->PkgType , sMbfeData->ISDfiCode , sMbfeData->OSDfiCode , sMbfeData->RtnLimted , sMbfeData->PkgPreDate , sMbfeData->PkgSerNo , sMbfeData->RNTurnDate , sMbfeData->PkgExpData , sMbfeData->TrxsType , sMbfeData->IDfiCode , sMbfeData->ODfiCode , sMbfeData->PreDate , sMbfeData->TrxNo , sMbfeData->MEYSYB , sMbfeData->Amount , sMbfeData->PayerBKCD , sMbfeData->PayerACC , sMbfeData->PayerName , sMbfeData->PayerAddr , sMbfeData->RecverBKCD , sMbfeData->RecverACC , sMbfeData->RecverName , sMbfeData->RecverAddr , sMbfeData->OprtType , sMbfeData->RtnInfo , sMbfeData->ExpDataLen , sMbfeData->ExpType , sMbfeData->ChkDate , sMbfeData->AccNo , sMbfeData->Info , sMbfeData->RedoCount , sMbfeData->RedoInfo ,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -