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 + -
显示快捷键?