⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dispensecache.cpp

📁 联通接收发送新程序
💻 CPP
字号:
#include "DispenseCache.h"


int CDispenseCache::GetDispenseCacheEx( vector<StruDispense> &vstDispense,int size , bool bIfCtrl ) 
{
	int nCount = 0 ;
	if ( bIfCtrl )
	{
		oTime.GetLocalTime() ;
		int nHour = oTime.GetHour() ;
		if ((nHour >= 9  && nHour < 12) ||
			(nHour >= 14 && nHour < 21) )
			//(nHour >= 14 && nHour < 17) ||
			//(nHour >= 19 && nHour < 21))
		{
			nCount = GetDispenseCache( vstDispense,size ) ;
		}
	}
	else
		nCount = GetDispenseCache( vstDispense,size ) ;		
	
	return nCount ;
}

int CDispenseCache::GetDispenseCache( vector<StruDispense> &vstDispense,int size ) 
{
	long j = 1 ;
	char sSql[ 256 ] ;
	int  nCount = 0 ;
	long batchsend_id = 0 ;

	oTime.GetLocalTime() ;
	string sTime = oTime.GetDate() ;
    sTime += oTime.GetTime() ;
	
	sprintf( sSql, " SELECT BATCHSEND_ID FROM %s WHERE GATEWAY_STATE = '60W' ORDER BY MSG_PRI ASC ",
			 m_sDispCacheTbName,sTime.c_str() ) ;
	j = p_cRecords->Query( sSql ) ;
	if ( j > 0 )
	{
		//get message
		batchsend_id = (long)p_cRecords->Field(0).Float() ;
		sprintf( sSql," BATCHSEND_ID =%ld ",batchsend_id ) ;
		j = t_batch_msg.Query( sSql ) ;
		if ( j <= 0 )
		{//find no message
			cout << " Find No Message in BATCH_MSG ," << sSql << endl ;
			sprintf( sSql," UPDATE %s SET GATEWAY_STATE='60H' WHERE BATCHSEND_ID = %ld ",
				m_sDispCacheTbName,batchsend_id ) ;
			j = Connect.ExecSql( sSql ) ;
			if ( j > 0 )
				Connect.Commit() ;
			else
				Connect.Rollback() ;
			
			return nCount ;
		}

		StruDispense stDispense ;

		sprintf( sSql, " BATCHSEND_ID = %ld AND GATEWAY_STATE = '60W' ",batchsend_id ) ;
		j = t_dispense_cache.Query( sSql ) ;
		if ( j > 0 )
		{					
			if ( t_batch_msg.INFORMATION_ID.Float() == -1 )
			{//send single
				strcpy( stDispense.send_time,sTime.c_str() ) ; //send_time
				AssignDispenseValues( stDispense ) ;
				vstDispense.push_back( stDispense ) ;
				
				t_del_dispense_cache = t_dispense_cache ;
				j = t_del_dispense_cache.Delete() ;
				if(j > 0) 
					nCount++;
				else
					nCount = -1 ;
			}
		}
		if ( j > 0 && nCount == 0 )
		{//get batch nbr
			while ( j > 0 && nCount < size )
			{
				strcpy( stDispense.send_time,sTime.c_str() ) ; //send_time
				AssignDispenseValues( stDispense ) ;
				vstDispense.push_back( stDispense ) ;
				
				t_del_dispense_cache = t_dispense_cache ;
				j = t_del_dispense_cache.Delete() ;
				if(j > 0) 
				{
					nCount++;
					j = t_dispense_cache.Next() ;
				}
				else
					nCount = -1 ;
			}
		}
	}//end if	
	
	if ( nCount > 0 )
		Connect.Commit() ;
	else
		Connect.Rollback() ; 

	return nCount ;
}

void CDispenseCache::AssignDispenseValues( StruDispense &stDispense )
{
	stDispense.dispense_id = t_dispense_cache.DISPENSE_ID.Float();
	stDispense.information_id = t_dispense_cache.BATCHSEND_ID.Float();
	strcpy(stDispense.acct_nbr, t_dispense_cache.ACCT_NBR.Char());
	strcpy(stDispense.dest_nbr, t_dispense_cache.DEST_NBR.Char());
	strcpy(stDispense.gateway_state,t_dispense_cache.GATEWAY_STATE.Char());
	strcpy(stDispense.sp_code,t_dispense_cache.SP_CODE.Char()) ;
	sprintf(stDispense.msg_pri , "%d",t_dispense_cache.MSG_PRI.Int()) ;			//msg_pri

	//add for batch send
	stDispense.try_times = t_dispense_cache.TRY_TIMES.Int() ;				//resend times
	strcpy( stDispense.area_code,t_dispense_cache.AREA_CODE.Char() ) ;	//area_code

	//strcpy(stDispense.inf_type_id, t_batch_msg.INF_TYPE_ID.Char());
	strcpy(stDispense.msg_content, t_batch_msg.MSG_CONTENT.Char());
	strcpy(stDispense.service_code,t_batch_msg.SERVICE_CODE.Char() ) ; 
    strcpy(stDispense.fee_type , t_batch_msg.FEE_TYPE.Char() );
	strcpy(stDispense.fee_code , t_batch_msg.FEE_CODE.Char() );
}

int CDispenseCache::InsertDispenseLog( vector<StruDispense> &vstDispense )
{
	long j = 1 ;

	for ( int i=0 ; i<vstDispense.size() && j > 0 ; i++ )
	{
		if ( 0 == strcmp( vstDispense[i].gateway_state,"60W" ) )
		{//save to dispense_mobile_cache to send again
			t_dispense_cache.Clear() ;
			t_dispense_cache.DISPENSE_ID = vstDispense[i].dispense_id ;
			t_dispense_cache.BATCHSEND_ID = vstDispense[i].information_id ;
			t_dispense_cache.ACCT_NBR = vstDispense[i].acct_nbr ;
			t_dispense_cache.DEST_NBR = vstDispense[i].dest_nbr ;
			t_dispense_cache.MSG_PRI = atoi(vstDispense[i].msg_pri) ;  
			t_dispense_cache.GATEWAY_STATE = vstDispense[i].gateway_state ;
			t_dispense_cache.TRY_TIMES = vstDispense[i].try_times ;     
			t_dispense_cache.SEND_TIME = vstDispense[i].send_time ;
			t_dispense_cache.AREA_CODE = vstDispense[i].area_code ;
			t_dispense_cache.SP_CODE = vstDispense[i].sp_code ;

			j = t_dispense_cache.Insert() ;
		}
		else
		{//save to dispense_batchsend_cache
			t_dispense_log.Clear() ;
			t_dispense_log.DISPENSE_ID = vstDispense[i].dispense_id ;
			t_dispense_log.BATCHSEND_ID = vstDispense[i].information_id ;
			t_dispense_log.ACCT_NBR = vstDispense[i].acct_nbr ;
			t_dispense_log.DEST_NBR = vstDispense[i].dest_nbr ;
			t_dispense_log.MSG_PRI = atoi(vstDispense[i].msg_pri) ;  
			t_dispense_log.GATEWAY_STATE = vstDispense[i].gateway_state ;
			t_dispense_log.TRY_TIMES = vstDispense[i].try_times ;     
			t_dispense_log.SEND_TIME = vstDispense[i].send_time ;
			t_dispense_log.AREA_CODE = vstDispense[i].area_code ;
			t_dispense_log.SP_CODE = vstDispense[i].sp_code ;

			j = t_dispense_log.Insert() ;
		}
	}

	if ( j > 0 )
		Connect.Commit() ;
	else
		Connect.Rollback() ;
	
	return int(j) ;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -