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

📄 dispensewait.cpp

📁 联通接收发送新程序
💻 CPP
字号:
// DispenseWait.cpp: implementation of the CDispenseWait class.
//
//////////////////////////////////////////////////////////////////////

#include "DispenseWait.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CDispenseWait::CDispenseWait(XW_Connection &conn/*=DefaultConnect*/) : Connect(conn),
																	   t_dispense_wait(conn),
																	   t_dispense_waitlog(conn),
																	   m_cNbrSeg(conn)
																	        
{

}

CDispenseWait::~CDispenseWait()
{

}

int CDispenseWait::GetDispenseWaitEx( 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) )
		{
			nCount = GetDispenseWait( vstDispense,size ) ;
		}
	}
	else
		nCount = GetDispenseWait( vstDispense,size ) ;		
	
	return nCount ;
}

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

	oTime.GetLocalTime() ;
	string sTime = oTime.GetDate() ;
    sTime += oTime.GetTime() ;
	
	sprintf( sSql, " AT_TIME < '%s' OR AT_TIME IS NULL ORDER BY MSG_PRI " , sTime.c_str() ) ;
	j = t_dispense_wait.Query( sSql ) ;
	if ( j > 0 )   
	{//INFORMATION_ID=-1,-2
		if( t_dispense_wait.INFORMATION_ID.Float() < 0.1 )
		{
			AssignDispenseValues( stDispense ) ;
			vstDispense.push_back( stDispense ) ;
			
			j = t_dispense_wait.Delete();
			if ( j > 0 )
				nCount ++ ;    
			else
				nCount = -1 ;
		}
	}

	if ( j > 0 && nCount == 0 )
	{//INFORMATION_ID > 0 
		sprintf(sSql, " (AT_TIME < '%s' OR AT_TIME IS NULL) AND INFORMATION_ID = %.0f ",
			           sTime.c_str() , t_dispense_wait.INFORMATION_ID.Float() ) ;
		j = t_dispense_wait.Query( sSql ) ; 
		while ( j > 0 && nCount < size )
		{
			AssignDispenseValues( stDispense ) ;
			vstDispense.push_back( stDispense ) ;

			j = t_dispense_wait.Delete();
			if(j > 0) 
			{
				nCount++;
				j = t_dispense_wait.Next() ;
			}
			else
				nCount = -1 ;
		}//while
	}//if

	if( nCount > 0 ) 
		Connect.Commit() ;
	else
		Connect.Rollback() ;
		
	return nCount ;
}
	
void CDispenseWait::AssignDispenseValues( StruDispense &stDispense )
{
	stDispense.dispense_id = t_dispense_wait.DISPENSE_ID.Float();
	stDispense.information_id = t_dispense_wait.INFORMATION_ID.Float() ;
	stDispense.try_times = t_dispense_wait.TRY_TIMES.Int() ;
	strcpy( stDispense.inf_type_id , t_dispense_wait.INF_TYPE_ID.Char() ) ;
    strcpy( stDispense.sp_code , t_dispense_wait.SP_CODE.Char() ) ;
	strcpy( stDispense.acct_nbr, t_dispense_wait.ACCT_NBR.Char() ) ;
	strcpy( stDispense.dest_nbr, t_dispense_wait.DEST_NBR.Char() ) ;
	strcpy( stDispense.reply_type,t_dispense_wait.REPLY_TYPE.Char() ) ;
	strcpy( stDispense.msg_content,t_dispense_wait.MSG_CONTENT.Char() ) ;
	strcpy( stDispense.content_type,t_dispense_wait.CONTENT_TYPE.Char() ) ;
	strcpy( stDispense.mo_time,t_dispense_wait.MO_TIME.Char() ) ;
	strcpy( stDispense.done_time,t_dispense_wait.DONE_TIME.Char() ) ;
	strcpy( stDispense.service_code,t_dispense_wait.SERVICE_CODE.Char() ) ;
	strcpy( stDispense.fee_type,t_dispense_wait.FEE_TYPE.Char() ) ;
	strcpy( stDispense.fee_code,t_dispense_wait.FEE_CODE.Char() ) ;
	strcpy( stDispense.msg_pri,t_dispense_wait.MSG_PRI.Char() ) ;
    strcpy( stDispense.valid_time,t_dispense_wait.VALID_TIME.Char() ) ;
	strcpy( stDispense.at_time,t_dispense_wait.AT_TIME.Char() ) ;
	strcpy( stDispense.region_code,t_dispense_wait.REGION_CODE.Char() ) ;
	strcpy( stDispense.area_code,t_dispense_wait.AREA_CODE.Char() ) ;
	if ( strlen(stDispense.area_code) == 0 )//get area_code
		strcpy( stDispense.area_code,m_cNbrSeg.LookUp(stDispense.dest_nbr) ) ;

	sprintf( stDispense.send_time,"%s%s",oTime.GetDate(),oTime.GetTime() ) ;
}

int CDispenseWait::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_wait to send again
			t_dispense_wait.Clear() ;
			t_dispense_wait.DISPENSE_ID = vstDispense[i].dispense_id ;
			t_dispense_wait.INFORMATION_ID = vstDispense[i].information_id ;
			t_dispense_wait.INF_TYPE_ID = vstDispense[i].inf_type_id ;
			t_dispense_wait.SP_CODE = vstDispense[i].sp_code ;
			t_dispense_wait.ACCT_NBR = vstDispense[i].acct_nbr ;
			t_dispense_wait.DEST_NBR = vstDispense[i].dest_nbr ;
			t_dispense_wait.REPLY_TYPE = vstDispense[i].reply_type ;
			t_dispense_wait.MSG_CONTENT = vstDispense[i].msg_content ;
			t_dispense_wait.CONTENT_TYPE = vstDispense[i].content_type ;
			t_dispense_wait.MO_TIME = vstDispense[i].mo_time ;
			t_dispense_wait.DONE_TIME = vstDispense[i].done_time ;
			t_dispense_wait.TRY_TIMES = vstDispense[i].try_times ;
			t_dispense_wait.SERVICE_CODE = vstDispense[i].service_code ;
			t_dispense_wait.FEE_TYPE = vstDispense[i].fee_type ;
			t_dispense_wait.FEE_CODE = vstDispense[i].fee_code ;
			t_dispense_wait.MSG_PRI = vstDispense[i].msg_pri ;
			t_dispense_wait.VALID_TIME = vstDispense[i].valid_time ;
			t_dispense_wait.AT_TIME = vstDispense[i].at_time ;
			t_dispense_wait.REGION_CODE = vstDispense[i].region_code ;
			t_dispense_wait.AREA_CODE = vstDispense[i].area_code ;

			j = t_dispense_wait.Insert() ;
		}
		else
		{//save to dispense_batchsend_cache
			t_dispense_waitlog.Clear() ;
			t_dispense_waitlog.DISPENSE_ID = vstDispense[i].dispense_id ;
			t_dispense_waitlog.MSG_ID = vstDispense[i].msg_id ;					//log
			t_dispense_waitlog.INF_TYPE_ID = vstDispense[i].inf_type_id ;
			t_dispense_waitlog.INFORMATION_ID = vstDispense[i].information_id ;
			t_dispense_waitlog.SP_CODE = vstDispense[i].sp_code ;
			t_dispense_waitlog.ACCT_NBR = vstDispense[i].acct_nbr ;
			t_dispense_waitlog.DEST_NBR = vstDispense[i].dest_nbr ;
			t_dispense_waitlog.REPLY_TYPE = vstDispense[i].reply_type ;
			t_dispense_waitlog.MSG_CONTENT = vstDispense[i].msg_content ;
			t_dispense_waitlog.CONTENT_TYPE = vstDispense[i].content_type ;
			t_dispense_waitlog.MO_TIME = vstDispense[i].mo_time ;		
			t_dispense_waitlog.DONE_TIME = vstDispense[i].done_time ;		
			t_dispense_waitlog.SEND_TIME = vstDispense[i].send_time ;			//log
			//t_dispense_waitlog.REPLY_TIME = vstDispense[i].reply_time ;		//log
			t_dispense_waitlog.GATEWAY_STATE = vstDispense[i].gateway_state ;	//log
			t_dispense_waitlog.TRY_TIMES = vstDispense[i].try_times ;			//log
			//t_dispense_waitlog.STATE_REPORT = vstDispense[i].state_report ;   //log
			t_dispense_waitlog.SERVICE_CODE = vstDispense[i].service_code ;
			t_dispense_waitlog.FEE_TYPE = vstDispense[i].fee_type ;
			t_dispense_waitlog.FEE_CODE = vstDispense[i].fee_code ;
			t_dispense_waitlog.MSG_PRI = vstDispense[i].msg_pri ;
			t_dispense_waitlog.VALID_TIME = vstDispense[i].valid_time ;
			t_dispense_waitlog.AT_TIME = vstDispense[i].at_time ;
			t_dispense_waitlog.REGION_CODE = vstDispense[i].region_code ;
			t_dispense_waitlog.AREA_CODE = vstDispense[i].area_code ;

			j = t_dispense_waitlog.Insert() ;
		}
	}

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

}

⌨️ 快捷键说明

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