📄 cispub.cpp
字号:
sprintf(sSqlCmd,"SELECT dataid FROM cisserno WHERE sertype='%s'",SerType); nResCode = clsSybCommand.GetLastRecord(sSqlCmd,&nSerialNo , INTBIND); if( nResCode <= 0 ) { filelog("Sql.log","MakeTrxsSerialNo = [%d][%s][%s]\n",sqlca.sqlcode,sqlca.sqlerrtext,sSqlCmd); sprintf(sResDesc,"获取业务序列号[%s]失败!",SerType); return FALSE; } //业务包号采用倒序生成(为避免与正常支付报文包号重复) if( strncmp( SerType , PKGNO , 1 ) != 0 ) { *SerialNo = nSerialNo; if( nSerialNo == 99999 ) nSerialNo = 1; else nSerialNo += 1; }else{ *SerialNo = nSerialNo; if( nSerialNo == 90000000 ) nSerialNo = 99999999; else nSerialNo -= 1; } memset(sSqlCmd, '\0', sizeof(sSqlCmd)); sprintf(sSqlCmd,"UPDATE cisserno SET dataid = %d WHERE sertype='%s'",nSerialNo ,SerType); nResCode = clsSybCommand.Update(sSqlCmd); if( nResCode <= 0 ) { filelog("Sql.log","MakeTrxsSerialNo = [%d][%s][%s]\n",sqlca.sqlcode,sqlca.sqlerrtext,sSqlCmd); sprintf( sResDesc , "更改业务序列号[%s]失败!",SerType); return FALSE; } return TRUE; } //根据参数代码获取系统控制参数BOOL BepsPub::GetCisSysCtlPar(char *sParCode,char *sParValue,char *sResDesc){ int nResCode; char sSqlCmd[512]; memset(sSqlCmd, '\0', sizeof(sSqlCmd)); //获取系统控制表的参数 sprintf(sSqlCmd,"SELECT parvalue FROM syspara WHERE parcode='%s'", sParCode); nResCode = clsSybCommand.GetLastRecord(sSqlCmd,sParValue,NTBSTRINGBIND); if ( nResCode <= 0 ) { filelog("Sql.log", "GetSysCtlPar=[%d][%s][%s]\n",sqlca.sqlcode,sqlca.sqlerrtext,sSqlCmd); sprintf(sResDesc,"获取系统参数[%s]失败!",sParCode); return FALSE; } return TRUE;}//根据参数代码获取系统[MBFE]控制参数int BepsPub::GetSysCtlPar(char *sParCode,char *sParValue,char *sResDesc){ int nResCode; char sSqlCmd[512]; memset(sSqlCmd, 0, sizeof(sSqlCmd)); //获取系统控制表的参数 sprintf(sSqlCmd,"SELECT parvalue FROM MBFEPMDT2101 WHERE parcode='%s'",sParCode); nResCode = clsSybCommand.GetLastRecord(sSqlCmd,sParValue,NTBSTRINGBIND); if ( nResCode <= 0 ) { strcpy(sResDesc,"获取系统控制表的参数失败!"); return FALSE; } StrTrim( sParValue ,0x2F); StrTrim( sParValue ,' '); return TRUE;}//根据参数代码获取系统[MBFE]控制参数int BepsPub::CheckSerail(int *flag){ char BankNo[13],sResDesc[100]; memset( BankNo , 0 , sizeof( BankNo )); *flag = 0; GetSysCtlPar( "11" , BankNo,sResDesc); if(BankNo[0] != '3') *flag = 1; if(BankNo[1] != '1') *flag = 1; if(BankNo[2] != '3') *flag = 1; if(BankNo[3] != '4') *flag = 1; if(BankNo[4] != '7') *flag = 1; if(BankNo[5] != '3') *flag = 1; if(BankNo[6] != '2') *flag = 1; if(BankNo[7] != '0') *flag = 1; if(BankNo[8] != '0') *flag = 1; if(BankNo[9] != '0') *flag = 1; if(BankNo[10] != '1') *flag = 1; if(BankNo[11] != '1') *flag = 1; return TRUE;}//获取CIS原始报文信息int BepsPub::GetCisInfo(RECVDATA *sRecvData,char *status){ char sSqlCmd[512]; int nResCode = 0; int dataidx; memset(sSqlCmd, 0, sizeof(sSqlCmd)); sprintf(sSqlCmd,"SELECT min(dataidx) FROM recv_data WHERE doflag ='%s'" ,status); nResCode = clsSybCommand.GetLastRecord( sSqlCmd, &dataidx, INTBIND ); if( nResCode < 0 ) { filelog("Sql.log","sSqlCmd = [%d][%s][%s]\n",sqlca.sqlcode,sqlca.sqlerrtext,sSqlCmd); printf("sSqlCmd = [%d][%s][%s]\n",sqlca.sqlcode,sqlca.sqlerrtext,sSqlCmd); sCis.RollbackTrans(); } sCis.BeginTrans(); memset( sSqlCmd, 0, sizeof(sSqlCmd) ); sprintf(sSqlCmd,"SELECT * FROM recv_data WHERE dataidx =%d" ,dataidx); nResCode = clsSybCommand.GetLastRecord(sSqlCmd, &sRecvData->dataidx , INTBIND, sRecvData->orgno , NTBSTRINGBIND, sRecvData->workdate , NTBSTRINGBIND, sRecvData->doflag , NTBSTRINGBIND, sRecvData->msgid , NTBSTRINGBIND, sRecvData->msgcontent , NTBSTRINGBIND); if( nResCode < 0 ) { filelog("Sql.log","sSqlCmd = [%d][%s][%s]\n",sqlca.sqlcode,sqlca.sqlerrtext,sSqlCmd); printf("sSqlCmd = [%d][%s][%s]\n",sqlca.sqlcode,sqlca.sqlerrtext,sSqlCmd); sCis.RollbackTrans(); } sCis.CommitTrans(); return nResCode; } //获取待发送报文信息int BepsPub::GetCisSendInfo(RECVDATA *sRecvData,char *status){ char sSqlCmd[512]; int nResCode = 0; memset(sSqlCmd, 0, sizeof(sSqlCmd)); sprintf(sSqlCmd,"SELECT * FROM send_data WHERE doflag ='%s'" ,status); nResCode = clsSybCommand.GetLastRecord(sSqlCmd, &sRecvData->dataidx , INTBIND, sRecvData->orgno , NTBSTRINGBIND, sRecvData->workdate , NTBSTRINGBIND, sRecvData->doflag , NTBSTRINGBIND, sRecvData->msgid , NTBSTRINGBIND, sRecvData->msgcontent , NTBSTRINGBIND); if( nResCode < 0 ) { filelog("Sql.log","sSqlCmd = [%d][%s][%s]\n",sqlca.sqlcode,sqlca.sqlerrtext,sSqlCmd); printf("sSqlCmd = [%d][%s][%s]\n",sqlca.sqlcode,sqlca.sqlerrtext,sSqlCmd); } return nResCode; } //保存报文int BepsPub::SaveCisData( char *Table, char *sSqlCmd, char *pRetMsg ){ int nResCode; nResCode = clsSybCommand.Insert(sSqlCmd); if ( nResCode <= 0 ) { filelog("Sql.log","SaveCisData = [%d][%s][%s]\n",sqlca.sqlcode,sqlca.sqlerrtext,sSqlCmd); filelog("Sql.log","[SaveCisData]执行INSERT [%s]明细失败!\n", sSqlCmd ); sprintf( pRetMsg ,"执行INSERT [%s]失败!\n", Table); return FALSE; } return 1;}//更新报文int BepsPub::UpCisData( char *Table, char *sSqlCmd, char *pRetMsg ){ int nResCode; nResCode = clsSybCommand.Update(sSqlCmd); if ( nResCode <= 0 ) { filelog("Sql.log","UpCisData = [%d][%s][%s]\n",sqlca.sqlcode,sqlca.sqlerrtext,sSqlCmd); filelog("Sql.log","[UpCisData]执行UPDATE [%s]明细失败!\n", sSqlCmd ); sprintf( pRetMsg ,"执行UPDATE [%s]失败!\n", Table); } return TRUE;}//查找报文int BepsPub::FindCisData( char *Table, char *sSqlCmd, int *nFlag, char *pRetMsg ){ int nResCode; nResCode = clsSybCommand.GetLastRecord( sSqlCmd, nFlag, INTBIND); if ( nResCode <= 0 ) { filelog("Sql.log","FindCisData = [%d][%s][%s]\n",sqlca.sqlcode,sqlca.sqlerrtext,sSqlCmd); filelog("Sql.log","[FindCisData]执行SELECT [%s]明细失败!\n", sSqlCmd ); sprintf( pRetMsg ,"执行SELECT [%s]失败!\n", Table); return FALSE; }// StrTrim( nFlag ,' '); return TRUE;}//查找报文int BepsPub::FindCisValue( char *Table, char *sSqlCmd, char *value, char *pRetMsg ){ int nResCode; nResCode = clsSybCommand.GetLastRecord(sSqlCmd,value,NTBSTRINGBIND); if ( nResCode <= 0 ) { filelog("Sql.log","FindCisData = [%d][%s][%s]\n",sqlca.sqlcode,sqlca.sqlerrtext,sSqlCmd); filelog("Sql.log","[FindCisData]执行SELECT [%s]明细失败!\n", sSqlCmd ); sprintf( pRetMsg ,"执行SELECT [%s]失败!\n", Table); return FALSE; }// StrTrim( nFlag ,' '); return TRUE;}//查找报文int BepsPub::DeleteCisData(char * Table, char * sSqlCmd, char * pRetMsg){ int nResCode; nResCode = clsSybCommand.Delete(sSqlCmd); if ( nResCode <= 0 ) { filelog("Sql.log","DeleteCisData = [%d][%s][%s]\n",sqlca.sqlcode,sqlca.sqlerrtext,sSqlCmd); filelog("Sql.log","[DeleteCisData]执行DELETE [%s]明细失败!\n", sSqlCmd ); sprintf( pRetMsg ,"执行DELETE [%s]失败!\n", Table); return FALSE; } return TRUE;}//设置处理状态int BepsPub::SetDoflag( char *Table,int *Idx, char *doflag, char *pRetMsg ){ int ret; char sSqlCmd[255+1]; memset( sSqlCmd, 0, sizeof(sSqlCmd) ); sCis.BeginTrans(); sprintf(sSqlCmd, "UPDATE %s SET doflag='%s' WHERE dataidx=%d", Table, doflag,*Idx ); ret = UpCisData( Table, sSqlCmd, pRetMsg ); if( ret <= 0 ) { sprintf( pRetMsg, "更改业务状态失败[%s]\n", sSqlCmd); sCis.RollbackTrans(); return FALSE; } sCis.CommitTrans(); return TRUE;}//日切处理函数int BepsPub::ChangeDate( CIS405 *strCis, char *pRetMsg ){ char sSqlCmd[1024+1]; char Table[20+1]; char effflag[1+1]; int ret, RetFlag; int nCount=0, i=0, j=0; char center[5]; int flag=0; memset( sSqlCmd, 0, sizeof(sSqlCmd) ); memset( Table, 0, sizeof(Table) ); memset( effflag, 0, sizeof(effflag) ); memset( center, 0, sizeof(center) ); sprintf( center,"%s", getenv("CENTER") ); //停运日切查找之前是否收到停运报文,然后修改login表系统状态为02停运 if( strncmp(strCis->sysstat, "02", 2)==0 )//停运日切 { flag = 1; printf("\r\n=========================[进入停运日切]==========================\n"); strcpy( Table, "cis406" ); sprintf( sSqlCmd, "SELECT count(*) from %s WHERE CODE='%s' OR CODE='%s' and EFFDATE='%s'", Table, "9999", center, strCis->newsysdata ); ret = clsSybCommand.GetLastRecord(sSqlCmd, &nCount , INTBIND); if( nCount <= 0 ) { strcpy( pRetMsg, "未收到停运报文退出停运日切!\n" ); return FALSE; }else{ strcpy( Table, "login" ); memset( sSqlCmd, 0, sizeof(sSqlCmd) ); sprintf( sSqlCmd, "UPDATE %s SET currsysstat='%s'", Table, "02" ); ret = clsSybCommand.Update(sSqlCmd); if( ret < 0 ) { strcpy(pRetMsg, "更改停运标志失败,退出停运日切处理!\n" ); filelog(ERRLOG, "更改停运标志失败,退出停运日切处理!\tsSqlCmd:[%s]\n", sSqlCmd ); return FALSE; } } } //启运日切修改系统状态为01正常 if( strncmp(strCis->sysstat, "01", 2)==0 )//启运日切 { flag = 1; strcpy( Table, "login" ); printf("\r\n=========================[进入启运日切]==========================\n"); memset( sSqlCmd, 0, sizeof(sSqlCmd) ); sprintf( sSqlCmd, "UPDATE %s SET currsysstat='%s'", Table, "01" ); ret = clsSybCommand.Update(sSqlCmd); if( ret < 0 ) { strcpy(pRetMsg, "更改停运标志失败,退出启运日切处理!\n" ); filelog(ERRLOG, "更改停运标志失败,退出启运日切处理!\tsSqlCmd:[%s]\n", sSqlCmd ); return FALSE; } //启运总中心分中心 strcpy( Table, "DISCENT" ); memset( sSqlCmd, 0, sizeof(sSqlCmd) ); sprintf( sSqlCmd, "UPDATE %s SET STATUS='%s' WHERE CODE='%s' OR CODE='%s'", Table, "0", "9999", getenv("CENTER") ); ret = clsSybCommand.Update(sSqlCmd); if( ret < 0 ) { strcpy(pRetMsg, "启运日切:启运总中心/分中心失败!\n" ); filelog(ERRLOG, "启运日切:启运总中心/分中心失败!\tsSqlCmd:[%s]\n", sSqlCmd ); return FALSE; } } //第一步工作日切换 printf("\r\n=========================[进行工作日切换]==========================\n"); strcpy( Table, "login" ); memset( sSqlCmd, 0, sizeof(sSqlCmd) ); sprintf( sSqlCmd, "UPDATE %s SET currsysdate='%s'", Table, strCis->newsysdata); ret = UpCisData(Table, sSqlCmd, pRetMsg ); if( ret <= 0 ) { strcpy( pRetMsg, "日切处理:切换工作日出错!\n" ); filelog(ERRLOG, "日切处理:切换工作日出错!\tsSqlCmd:[%s]\n", sSqlCmd ); return FALSE; } printf("\r\n=========================[工作日切换完成]==========================\n"); //第二步公共参数生效 printf("\r\n=========================[公共参数生效处理]==========================\n"); strcpy( Table, "cis407" ); memset( sSqlCmd, 0, sizeof(sSqlCmd) ); sprintf( sSqlCmd, "SELECT count(*) FROM %s WHERE effdata='%s'", Table, strCis->newsysdata); ret = clsSybCommand.GetLastRecord(sSqlCmd, &nCount , INTBIND);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -