📄 cispub.cpp
字号:
return FALSE; } memcpy(mainInfo->WorkDate, recvBuf, 8); memcpy(mainInfo->SendBank, recvBuf+8, 12); memcpy(mainInfo->RecvBank, recvBuf+20, 12); memcpy(mainInfo->TrxNo, recvBuf+32, 8); filelog(CIS_INTER_MB, "Exit BepsPub::GetMainInfo\n"); return TRUE;}/****************************************************************************函数说明:根据业务要素从CSIDATA中取得业务的明细*输入参数:MainInfo *sMainInfo :业务的要素信息*输出参数:CISDATA *sCisData :业务的明细信息* char *sResList :格式化的定长业务明细信息* *返回值 :TRUE :处理成功* FALSE:处理失败*作 者:zhanglongping *日 期: 2006-09-30****************************************************************************/BOOL BepsPub::GetSingleCisData( MainInfo *sMainInfo, CISDATA *sCisData, int OprType){ filelog(CIS_INTER_MB, "Enter BepsPub::GetSingleCisData\n"); if((NULL == sMainInfo) || (NULL == sCisData)) { filelog(CIS_INTER_MB, "Error:parameter invalid in file=%s at line=%d", __FILE__, __LINE__); return FALSE; } int retCode = 0; char sqlCmd[1024]; memset(sqlCmd, 0, 1024); if(OprType == OPRTYPE_CHECK) { sprintf(sqlCmd, "SELECT %s FROM %s WHERE PreDate='%s'" "and RecverBKCD='%s' and PayerBKCD='%s' and rsflag='0' and " "doflag='03' and TrxNo='%s' ", CISINFO, T_CISDATA,sMainInfo->WorkDate, sMainInfo->SendBank, sMainInfo->RecvBank, sMainInfo->TrxNo); } else if(OprType == OPRTYPE_MODIFY) { sprintf(sqlCmd, "SELECT %s FROM %s WHERE PreDate='%s' and " "RecverBKCD='%s' and PayerBKCD='%s' and rsflag='0' and " "doflag='02' and TrxNo='%s'", CISINFO, T_CISDATA, sMainInfo->WorkDate, sMainInfo->SendBank, sMainInfo->RecvBank, sMainInfo->TrxNo); } else if(OprType == OPRTYPE_QUERY) { sprintf(sqlCmd, "SELECT %s FROM %s WHERE PreDate='%s' and TrxNo='%s' and " "RecverBKCD='%s' and PayerBKCD='%s' and rsflag='0'", CISINFO, T_CISDATA, sMainInfo->WorkDate, sMainInfo->TrxNo, sMainInfo->SendBank, sMainInfo->RecvBank); } else { filelog(CIS_INTER_MB, "Warning:OperType invalid"); return FALSE; } filelog(CIS_INTER_MB, "sqlCmd is:[%s]\n", sqlCmd); retCode = clsSybCommand.GetLastRecord(sqlCmd, sCisData->CisIdx, INTBIND, sCisData->MbfeIdx, INTBIND, sCisData->doflag, NTBSTRINGBIND, sCisData->rsflag, NTBSTRINGBIND, sCisData->OprNo, NTBSTRINGBIND, sCisData->PkgType, NTBSTRINGBIND, sCisData->TrxsType, NTBSTRINGBIND, sCisData->PreDate, NTBSTRINGBIND, sCisData->TrxNo, NTBSTRINGBIND, sCisData->RecverBKCD, NTBSTRINGBIND, sCisData->RecverACC, NTBSTRINGBIND, sCisData->RecverName, NTBSTRINGBIND, sCisData->PayerBKCD, NTBSTRINGBIND, sCisData->PayerACC, NTBSTRINGBIND, sCisData->PayerName, NTBSTRINGBIND, sCisData->MEYSYB, NTBSTRINGBIND, sCisData->Amount, NTBSTRINGBIND, sCisData->AccKind, NTBSTRINGBIND, sCisData->AccNo, NTBSTRINGBIND, sCisData->ChkDate, NTBSTRINGBIND, sCisData->AccDate, NTBSTRINGBIND, sCisData->AccPsw, NTBSTRINGBIND, sCisData->Info, NTBSTRINGBIND, sCisData->Remark, NTBSTRINGBIND, sCisData->SysDate, NTBSTRINGBIND, sCisData->RtnLimted, NTBSTRINGBIND, sCisData->SRCFlag, NTBSTRINGBIND, sCisData->ChkSatus, NTBSTRINGBIND, sCisData->PicFront, NTBSTRINGBIND, sCisData->PicBack, NTBSTRINGBIND, sCisData->SignInfo, NTBSTRINGBIND, sCisData->RedoCount, NTBSTRINGBIND, sCisData->RedoInfo, NTBSTRINGBIND, sCisData->CisData, NTBSTRINGBIND, sCisData->TagData, NTBSTRINGBIND); if(retCode <= 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; } char FrntFilePath[255]; char BackFilePath[255]; memset(FrntFilePath, 0, 255); memset(BackFilePath, 0, 255); sprintf(FrntFilePath, "%s/%s/%s", getenv("WORKDIR"), "pic", sCisData->PicFront); sprintf(BackFilePath, "%s/%s/%s", getenv("WORKDIR"), "pic", sCisData->PicBack); if(FALSE==FindFile(FrntFilePath) || FALSE==FindFile(BackFilePath)) { char FrontImage[1024*1024]; char BackImage[1024*1024]; memset(FrontImage, 0, 1024*1024); memset(BackImage, 0, 1024*1024); memset(sqlCmd, 0, 1024); sprintf(sqlCmd, "SET TEXTSIZE 3048576 select FrontImage, BackImage from CISDATA where " "TrxNo='%s' and PreDate='%s' and RecverBKCD='%s' and PayerBKCD='%s' " " and rsflag='0'", sCisData->TrxNo, sCisData->PreDate, sCisData->RecverBKCD, sCisData->PayerBKCD); filelog(CIS_INTER_MB, "sqlCmd is:[%s]\n", sqlCmd); retCode = clsSybCommand.GetLastRecord(sqlCmd, FrontImage, NTBSTRINGBIND, BackImage, NTBSTRINGBIND); if(retCode <= 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; } //解析正面影像信息并生成文件 unsigned char * FileImageBuff=NULL; FileImageBuff=new unsigned char[1024*1024]; CBase64 base64Fp; int FileImageLen=base64Fp.DecodeBuffer(FrontImage, (char*)FileImageBuff); filelog(CIS_INTER_MB, "Base64 decode file=[%d][%s]", FileImageLen, FrntFilePath); int fpFront=0; if(0==(fpFront=open(FrntFilePath, O_RDWR|O_CREAT, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP))) { filelog(CIS_INTER_MB, "open file=[%s] failed", FrntFilePath); delete [] FileImageBuff; return FALSE; } if(0 >= write(fpFront, FileImageBuff, FileImageLen)) { filelog(CIS_INTER_MB, "Save file=[%s] failed", FrntFilePath); delete [] FileImageBuff; close(fpFront); return FALSE; } close(fpFront); //解析背面影像信息并生成文件 memset(FileImageBuff, 0, sizeof(FileImageBuff)); CBase64 base64Bp; FileImageLen=base64Bp.DecodeBuffer(BackImage, (char*)FileImageBuff); filelog(CIS_INTER_MB, "Base64 decode file=[%d][%s]", FileImageLen, BackFilePath); int fpBack=0; if(0==(fpBack=open(BackFilePath, O_RDWR|O_CREAT, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP))) { filelog(CIS_INTER_MB, "open file=[%s] failed", BackFilePath); delete [] FileImageBuff; return FALSE; } if(0 >= write(fpBack, FileImageBuff, FileImageLen)) { filelog(CIS_INTER_MB, "Save file=[%s] failed", FrntFilePath); delete [] FileImageBuff; close(fpBack); return FALSE; } close(fpBack); delete [] FileImageBuff; } filelog(CIS_INTER_MB, "Exit BepsPub::GetSingleCisData\n"); return TRUE;}/****************************************************************************函数说明:提出复核时的批量查询数据*输入参数:char *sOprNo :前台输入的柜台号*输出参数:char *sResList:得到业务要素后拼装成定长格式的批量包* *返回值 :TRUE :处理成功* FALSE:处理失败*作 者:zhanglongping *日 期: 2006-09-30****************************************************************************/BOOL BepsPub::GetManyCisDataForReCheck( char *sOprNo, char *sResList){ filelog(CIS_INTER_MB, "Enter BepsPub::GetSameCisData\n"); if((NULL == sOprNo) || (NULL == sResList)) { filelog(CIS_INTER_MB, "Error:parameter invalid in file=%s at line=%d\n", __FILE__, __LINE__); return FALSE; } char accDate[8+1]; char trxNo[8+1]; char sendBank[12+1]; char recvBank[12+1]; char oprNo[10+1]; int count=0; int sumCount=0; int retCount=0; memset(oprNo, 0, 11); memset(oprNo, ' ', 10); memcpy(oprNo, sOprNo, 10); memset(sResList, '0', strlen(sResList)); char sqlCmd[1024]; memset(sqlCmd, 0, 1024); sprintf(sqlCmd, "select count(1),PreDate,TrxNo,RecverBKCD,PayerBKCD from %s" " where OprNo='%s'and rsflag='0'", T_CISDATA, sOprNo); filelog(CIS_INTER_MB, "sqlCmd is:%s\n", sqlCmd); retCount = clsSybCommand.Select(sqlCmd); if(retCount <=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; } for(int i=0; ; i++) { memset(accDate, 0, 9); memset(accDate, '0', 8); memset(trxNo, 0, 9); memset(trxNo, '0', 8); memset(sendBank, 0, 13); memset(sendBank, '0', 12); memset(recvBank, 0, 13); memset(recvBank, '0', 12); count=0; clsSybCommand.MapColumn( 1, &count, INTBIND); clsSybCommand.MapColumn( 2, accDate, NTBSTRINGBIND); clsSybCommand.MapColumn( 3, trxNo, NTBSTRINGBIND); clsSybCommand.MapColumn( 4, recvBank,NTBSTRINGBIND); clsSybCommand.MapColumn( 5, sendBank,NTBSTRINGBIND); int retCode=clsSybCommand.GetData(); if(retCode > 0) { memcpy(sResList, oprNo, 10); sResList += 10; memcpy(sResList, accDate, 8); sResList += 8; memcpy(sResList, sendBank, 12); sResList += 12; memcpy(sResList, recvBank, 12); sResList += 12; memcpy(sResList, trxNo, 8); sResList += 8; sumCount++; } else { if (!clsSybCommand.HasNextResultSet()) { filelog(CIS_INTER_MB, "Get total=%s record\n", sumCount); filelog(CIS_INTER_MB, "Database operator return[%d][%s]" " at file=%s in line=%d\n", sqlca.sqlcode, sqlca.sqlerrtext, __FILE__, __LINE__); break; } } } filelog(CIS_INTER_MB, "Get total=%s and count(1)=%d\n", sumCount, count); filelog(CIS_INTER_MB, "Get main info set is:%s\n", sResList); filelog(CIS_INTER_MB, "Exit BepsPub::GetSameCisData\n"); return TRUE;}/****************************************************************************函数说明:查询时的批量查询数据*输入参数:char *sRecvBuf:前台输入的查询条件*输出参数:char *sResList:得到满足条件的数据拼装成定长格式的批量包* *返回值 :TRUE :处理成功* FALSE:处理失败*作 者:zhanglongping *日 期: 2006-09-30****************************************************************************/BOOL BepsPub::GetManyCisDataForQuery( char *sRecvBuf, char *sResList){ filelog(CIS_INTER_MB, "Enter BepsPub::GetManyCisDataForQuery\n"); if((NULL == sRecvBuf) || (NULL == sResList)) { filelog(CIS_INTER_MB, "Error:parameter invalid in file=%s at line=%d\n", __FILE__, __LINE__); return FALSE; } //定义保存数据库查询条件的变量 char db_oprNo[11]; char db_workDate[9]; char db_sendBank[13]; char db_recvBank[13]; memset(db_oprNo, 0, 11); memset(db_workDate, 0, 9); memset(db_sendBank, 0, 13); memset(db_recvBank, 0, 13); memcpy(db_oprNo, sRecvBuf+6, 10); memcpy(db_workDate, sRecvBuf+16, 8); memcpy(db_sendBank, sRecvBuf+24, 12); memcpy(db_recvBank, sRecvBuf+36, 12); //定义保存查询结果的变量 char oprNo[11]; char preDate[9]; char trxNo[9]; char sendBank[13]; char recvBank[13]; char amount[16]; char ticketNo[13]; char status[3]; int len =0; //int count=0; int sumCount=0; //int retCount=0; int totalLen=0; char sqlCmd[1024]; memset(sqlCmd, 0, 1024); if(memcmp(db_oprNo, " ", 10)==0) { if(memcmp(db_sendBank, "000000000000", 12)!=0 && memcmp(db_recvBank, "000000000000", 12)!=0) { if(memcmp(db_workDate, "20001229", 8)==0) { sprintf(sqlCmd, "select OprNo,PreDate,TrxNo,RecverBKCD,PayerBKCD," "Amount, AccNo, doflag from %s where RecverBKCD='%s'" " and PayerBKCD='%s' and rsflag='0'", T_CISDATA, db_sendBank, db_recvBank); } else { sprintf(sqlCmd, "select OprNo,PreDate,TrxNo,RecverBKCD,PayerBKCD," "Amount, AccNo, doflag from %s where PreDate='%s' and RecverBKCD='%s'" " and PayerBKCD='%s' and rsflag='0'", T_CISDATA, db_workDate, db_sendBank, db_recvBank); } } else if(memcmp(db_sendBank, "000000000000", 12)==0 && memcmp(db_recvBank, "000000000000", 12)==0) { if(memcmp(db_workDate, "20001229", 8)==0) { sprintf(sqlCmd, "select OprNo,PreDate,TrxNo,RecverBKCD,PayerBKCD," "Amount, AccNo, doflag from %s where rsflag='0'", T_CISDATA); } else { sprintf(sqlCmd, "select OprNo,PreDate,TrxNo,RecverBKCD,PayerBKCD," "Amount, AccNo, doflag from %s where PreDate='%s' and rsflag='0'", T_CISDATA, db_workDate); } } else if(memcmp(db_sendBank, "000000000000", 12)!=0 && memcmp(db_recvBank, "000000000000", 12)==0) { if(memcmp(db_workDate, "20001229", 8)==0) { sprintf(sqlCmd, "select OprNo,PreDate,TrxNo,RecverBKCD,PayerBKCD," "Amount, AccNo, doflag from %s where RecverBKCD='%s' and rsflag='0'", T_CISDATA, db_sendBank); } else { sprintf(sqlCmd, "select OprNo,PreDate,TrxNo,RecverBKCD,PayerBKCD," "Amount, AccNo, doflag from %s where PreDate='%s' and RecverBKCD='%s'" " and rsflag='0'", T_CISDATA, db_workDate, db_sendBank); } } else if(memcmp(db_sendBank, "000000000000", 12)==0 && memcmp(db_recvBank, "000000000000", 12)!=0) { if(memcmp(db_workDate, "20001229", 8)==0) { sprintf(sqlCmd, "select OprNo,PreDate,TrxNo,RecverBKCD,PayerBKCD," "Amount, AccNo, doflag from %s where PayerBKCD='%s' and rsflag='0'", T_CISDATA, db_recvBank); } else { sprintf(sqlCmd, "select OprNo,PreDate,TrxNo,RecverBKCD,PayerBKCD," "Amount, AccNo, doflag from %s where PreDate='%s' and PayerBKCD='%s' " "and rsflag='0'",
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -