cisproc.cpp
来自「液晶电视完整代码可实现人机界面」· C++ 代码 · 共 2,145 行 · 第 1/5 页
CPP
2,145 行
strcpy( RetMsg, "Can't find TAG:[:30A:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":CJA:", strCis->orgpredate)) { strcpy( RetMsg, "Can't find TAG:[:CJA:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":01C:", strCis->orgquerybankno)) { strcpy( RetMsg, "Can't find TAG:[:01C:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":0BB:", strCis->orgmessageno)) { strcpy( RetMsg, "Can't find TAG:[:0BB:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":02D:", strCis->orgmsgtype)) { strcpy( RetMsg, "Can't find TAG:[:02D:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":051:", strCis->orgsrcpredate)) { strcpy( RetMsg, "Can't find TAG:[:051:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":005:", strCis->orgbusinessno)) { strcpy( RetMsg, "Can't find TAG:[:005:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":D73:", strCis->osubacceptime)) { strcpy( RetMsg, "Can't find TAG:[:D73:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":D74:", strCis->osubtransmitst)) { strcpy( RetMsg, "Can't find TAG:[:D74:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":DB1:", strCis->osubtradestat)) { strcpy( RetMsg, "Can't find TAG:[:DB1:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":DB4:", strCis->osubreturnstat)) { strcpy( RetMsg, "Can't find TAG:[:DB4:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":D75:", strCis->centeraccepttime)) { strcpy( RetMsg, "Can't find TAG:[:D75:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":D76:", strCis->centertransmitst)) { strcpy( RetMsg, "Can't find TAG:[:D76:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":DB2:", strCis->centertradestat)) { strcpy( RetMsg, "Can't find TAG:[:DB2:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":DB5:", strCis->centerreturnstat)) { strcpy( RetMsg, "Can't find TAG:[:DB5:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":D77:", strCis->isubaccepttime)) { strcpy( RetMsg, "Can't find TAG:[:D77:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":D78:", strCis->isubtransmitst)) { strcpy( RetMsg, "Can't find TAG:[:D78:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":DB3:", strCis->isubtradestat)) { strcpy( RetMsg, "Can't find TAG:[:DB3:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":DB6:", strCis->isubreturnstat)) { strcpy( RetMsg, "Can't find TAG:[:DB6:]!\n" ); return FALSE; } strcpy( Table, "cis304305" ); sprintf( sSqlCmd, "SELECT count(*) FROM %s WHERE precativedate='%s' and querybankno='%s' and messageno='%08s'", Table, strCis->orgpredate, strCis->orgquerybankno, strCis->orgmessageno); ret = sCis.FindCisData( Table, sSqlCmd, &nFlag, RetMsg ); if( ret != 1 || nFlag != 1 ) { printf("匹配查询报文失败!\n"); filelog(CISPROLOG, "匹配查询报文失败!\n" ); filelog(CISPROLOG, "sSqlCmd:[%s]\n", sSqlCmd ); return FALSE; } memset(sSqlCmd, 0, sizeof(sSqlCmd) ); sprintf( sSqlCmd, "UPDATE %s SET status='%s', osubacceptime='%s', osubtransmitst='%s', osubtradestat='%s', osubreturnstat='%s', centeraccepttime='%s', centertransmitst='%s',centertradestat='%s',centerreturnstat='%s',isubaccepttime='%s',isubtransmitst='%s',isubtradestat='%s',isubreturnstat='%s',message='%s' WHERE precativedate='%s' and querybankno='%s' and messageno='%08s'", Table, CISDATASTATE_RE, strCis->osubacceptime, strCis->osubtransmitst, strCis->osubtradestat, strCis->osubreturnstat, strCis->centeraccepttime, strCis->centertransmitst, strCis->centertradestat, strCis->centerreturnstat, strCis->isubaccepttime, strCis->isubtransmitst, strCis->isubtradestat, strCis->isubreturnstat, pRecvData->msgcontent, strCis->orgpredate, strCis->orgquerybankno, strCis->orgmessageno); sCis.BeginTrans(); //保存入库 ret = sCis.UpCisData ( Table, sSqlCmd, RetMsg ); if( ret <= 0 ) { printf("保存报文失败!\n"); filelog(CISPROLOG, "保存报文失败!\n" ); filelog(CISPROLOG, "sSqlCmd:[%s]\n", sSqlCmd ); sCis.RollbackTrans(); return FALSE; } sCis.CommitTrans();//[改]根据配置进行发送行内处理 ret = SendtoMb(); return TRUE;}//解析CIS307支票(通用)业务回执信息通知报文int Parse307( TCnapsTagMML *pTagMML, RECVDATA *pRecvData, char *RetMsg ){ int ret; char Table[20]; char sSqlCmd[1024*10]; CIS307 *strCis; CIS307 TmpCis; strCis = &TmpCis; memset( Table, 0, sizeof(Table) ); memset( sSqlCmd, 0, sizeof(sSqlCmd) ); memset( &TmpCis, 0, sizeof(TmpCis) ); pTagMML->mmlInfo = pRecvData->msgcontent; pTagMML->mmlInfoLen = strlen( pRecvData->msgcontent ); if(FALSE == pTagMML->parserMmlcmd()) { filelog( ERRLOG, "Parser file content failed\n"); return FALSE; } //得到委托日期 if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":30A:", strCis->precativedate)) { strcpy( RetMsg, "Can't find TAG:[:30A:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":C30:", strCis->sendnodeno)) { strcpy( RetMsg, "Can't find TAG:[:C30:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":C39:", strCis->recvnodeno)) { strcpy( RetMsg, "Can't find TAG:[:C39:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":D79:", strCis->returndate)) { strcpy( RetMsg, "Can't find TAG:[:D79:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":B63:", strCis->listtotalnum)) { strcpy( RetMsg, "Can't find TAG:[:B63:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":32B:", strCis->listtotalsum)) { strcpy( RetMsg, "Can't find TAG:[:32B:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":D99:", strCis->returnlist)) { strcpy( RetMsg, "Can't find TAG:[:D99:]!\n" ); return FALSE; } strcpy( Table, "cis307" ); sprintf( sSqlCmd, "INSERT INTO %s VALUES('%s',%s,%s,'%s',%s,'%s','%s','%s')", Table, strCis->precativedate, strCis->sendnodeno, strCis->recvnodeno, strCis->returndate, strCis->listtotalnum, strCis->listtotalsum, strCis->returnlist, pRecvData->msgcontent ); //printf("here sqlcmd=[%s]",pRecvData); sCis.BeginTrans(); //保存入库 ret = sCis.SaveCisData ( Table, sSqlCmd, RetMsg ); if( ret <= 0 ) { printf("保存报文失败!\n"); filelog(CISPROLOG, "保存报文失败!\n" ); filelog(CISPROLOG, "sSqlCmd:[%s]\n", sSqlCmd ); sCis.RollbackTrans(); return FALSE; } //更新100/101报文回执状态 sCis.CommitTrans();//[改]根据配置进行发送行内处理 ret = SendtoMb(); return TRUE;}//解析CIS308业务状态更新通知报文int Parse308( TCnapsTagMML *pTagMML, RECVDATA *pRecvData, char *RetMsg ){ int ret; char Table[20]; char Tmpbuf[102+1]; char sSqlCmd[1024*200]; CIS308 *strCis = NULL; CIS308 TmpCis; LIS308 *lisCis = NULL; LIS308 Tmplist; strCis = &TmpCis; lisCis = &Tmplist; memset( Table, 0, sizeof(Table) ); memset( sSqlCmd, 0, sizeof(sSqlCmd) ); memset( Tmpbuf, 0, sizeof(Tmpbuf) ); memset( &TmpCis, 0, sizeof(TmpCis) ); memset( &Tmplist, 0, sizeof(Tmplist) ); pTagMML->mmlInfo = pRecvData->msgcontent; pTagMML->mmlInfoLen = strlen( pRecvData->msgcontent ); if(FALSE == pTagMML->parserMmlcmd()) { filelog( ERRLOG, "Parser file content failed\n"); return FALSE; } //得到委托日期 if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":C36:", strCis->sendcode)) { strcpy( RetMsg, "Can't find TAG:[:C36:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":C37:", strCis->recvcode)) { strcpy( RetMsg, "Can't find TAG:[:C37:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":D79:", strCis->canceldate)) { strcpy( RetMsg, "Can't find TAG:[:D79:]!\n" ); return FALSE; } if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":B63:", strCis->count)) { strcpy( RetMsg, "Can't find TAG:[:B63:]!\n" ); return FALSE; } //modify by limh 0519 报文解析问题 D80获取不到 if(FALSE == pTagMML->getParaValue(MML_CONTTYPE_CONT, ":D80:", strCis->list)) { strcpy( RetMsg, "Can't find TAG:[:D80:]!\n" ); printf( "Can't find TAG:[:D80:]!\n" ); char *Begin = NULL, *End = NULL; Begin = strstr(pRecvData->msgcontent,":D80:"); End = strstr(Begin,"}"); memcpy( strCis->list, Begin + 5 , End - Begin - 5 );// printf(" Have get D80 = [%s]\n", strCis->list); //return FALSE; } strcpy( Table, "cis308" ); sCis.BeginTrans(); sprintf( sSqlCmd, "INSERT INTO %s VALUES('%s','%s','%s','%s','%s')", Table, strCis->sendcode, strCis->recvcode, strCis->canceldate, strCis->count, strCis->list); ret = sCis.SaveCisData( Table, sSqlCmd, RetMsg); if( ret <= 0 ) { printf("保存报文失败!\n"); filelog(CISPROLOG, "保存报文失败!\n" ); filelog(CISPROLOG, "sSqlCmd:[%s]\n", sSqlCmd ); sCis.RollbackTrans(); return FALSE; } for( int i=0; i<atoi(strCis->count); i++ ) { memset( sSqlCmd, 0, sizeof(sSqlCmd) ); memcpy( lisCis->cantime, strCis->list + i*102 + 0, 14 ); memcpy( lisCis->opestate, strCis->list + i*102 + 14, 2 ); memcpy( lisCis->orgopetype, strCis->list + i*102 + 16, 3 ); memcpy( lisCis->orgpredate, strCis->list + i*102 + 19, 8 ); memcpy( lisCis->orgbusinessno, strCis->list + i*102 + 27, 8 ); memcpy( lisCis->orgsendcode, strCis->list + i*102 + 35, 12 ); memcpy( lisCis->retterm, strCis->list + i*102 + 47, 8 ); memcpy( lisCis->retpredate, strCis->list + i*102 + 55, 8 ); memcpy( lisCis->retbusinessno, strCis->list + i*102 + 63, 8 ); memcpy( lisCis->retsendcode, strCis->list + i*102 + 71, 12 ); memcpy( lisCis->castdate, strCis->list + i*102 + 83, 8 ); memcpy( lisCis->retreason, strCis->list + i*102 + 91, 10 ); memcpy( lisCis->lwfalg, strCis->list + i*102 + 101, 1 ); if( strncmp( lisCis->orgopetype, "100", 3 ) == 0 ) strcpy( Table, "cis100" ); else if( strncmp( lisCis->orgopetype, "101", 3 ) == 0 ) { strcpy( Table, "cis101" ); } else { printf("\r\n 原业务类型号错误[%s]", lisCis->orgopetype); filelog(CISPROLOG, "原业务类型号错误[%s]!\n",lisCis->orgopetype ); } char flag[2]; memset(flag , 0 ,sizeof(flag)); if( strncmp( lisCis->lwfalg , "2" , 1 ) == 0 ) strcpy( flag , "1"); else strcpy( flag , "0"); //modify by limh 0524 业务状态(status->resstatus) sprintf( sSqlCmd, "UPDATE %s SET resstatus='%s' WHERE precativedate='%s' and businessno=%d and recvbankno='%s' and msgtype='%s'", Table, lisCis->opestate, lisCis->orgpredate, atoi(lisCis->orgbusinessno), lisCis->orgsendcode, flag); printf("\r\n sSqlCmd=[%s]",sSqlCmd); ret = sCis.UpCisData( Table, sSqlCmd, RetMsg); if( ret <= 0 ) { printf("保存报文失败!\n"); filelog(CISPROLOG, "保存报文失败!\n" ); filelog(CISPROLOG, "sSqlCmd:[%s]\n", sSqlCmd ); //delete by limh 0519 //sCis.RollbackTrans(); //return FALSE; } memset( sSqlCmd, 0, sizeof(sSqlCmd) ); sprintf(sSqlCmd, "insert into cis_beps values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')", strCis->canceldate, lisCis->cantime, lisCis->opestate, lisCis->orgopetype, lisCis->lwfalg, lisCis->orgpredate, lisCis->orgbusinessno, lisCis->orgsendcode, lisCis->retterm, lisCis->retpredate, lisCis->retbusinessno, lisCis->retsendcode, lisCis->castdate, lisCis->retreason ); ret = sCis.SaveCisData ( "cis_beps", sSqlCmd, RetMsg ); if( ret <= 0 ) { printf("保存报文失败!\n %s",sSqlCmd); filelog(CISPROLOG, "保存CIS308报文失败!\n");// sCis.RollbackTrans(); return FALSE; } } sCis.CommitTrans();//[改]根据配置进行发送行内处理 ret = SendtoMb(); return TRUE;}//解析CIS309支票(通用)业务止付申请报文int Parse309( TCnapsTagMML *pTagMML, RECVDATA *pRecvData, char *RetMsg ){ int ret; char Table[20]; char sSqlCmd[1024*10]; CIS309 *strCis; CIS309 TmpCis; char *pDataid; long Dataid; strCis = &TmpCis; memset( Table, 0, sizeof(Table) ); memset( sSqlCmd, 0, sizeof(sSqlCmd) ); memset( &TmpCis, 0, sizeof(TmpCis) ); pTagMML->mmlInfo = pRecvData->msgcontent; pTagMML->mmlInfoLen = strlen( pRecvData->msgcontent ); if(FALSE == pTagMML->parserMmlcmd())
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?