📄 dispensecache.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 + -