Beispiel #1
0
void CheckStatPlan::getNextMonth (char sDate[], const char sTimeInterval[])
{
    char sTemp[15];
    
    DEFINE_QUERY (qry);
    qry.setSQL ("select to_char(Add_months(to_date(:vDate,'YYYYMMDDHH24MISS'),1),'YYYYMMDDHH24MISS') from dual");
    qry.setParameter ("vDate", sDate);
    qry.open();
    qry.next();
    strcpy (sDate, qry.field(0).asString());     
    
    strcpy (sTemp, sDate);
    strncpy(sTemp+6, sTimeInterval, 8);
    sTemp[14] = 0;
    
    try {
        DEFINE_QUERY (qry);
        qry.setSQL ("Select to_char(to_date(:vDate,'YYYYMMDDHH24MISS'),'YYYYMMDDHH24MISS') from dual");
        qry.setParameter ("vDate", sTemp);
        qry.open();
        qry.next();
        strcpy (sDate, qry.field(0).asString()); //使用修正后的时间
    }
    catch (TOCIException &e) {
        return;
    }
}
Beispiel #2
0
bool StatOneTwoGroup::CommitAll(int iOpType)
{
	char psql[SQLLENG] = {0};
	DEFINE_QUERY(qry);
	if((0 == iOpType && m_iCommitCount > 1000) || (1 == iOpType && m_iCommitCount>0))
	{
		sprintf(psql,"%s","INSERT INTO B_STAT_ONE_TWO_GROUP_LOG \
		(ONE_FILE_ID, TWO_FILE_ID, ONE_RECORD_CNT, TWO_RECORD_CNT, \
		ONE_FILE_NAME, TWO_FILE_NAME, ERROR_MSG) \
		VALUES(:ONE_FILE_ID,:TWO_FILE_ID,:ONE_RECORD_CNT,\
		:TWO_RECORD_CNT,:ONE_FILE_NAME,:TWO_FILE_NAME,:ERROR_MSG)");
		
		qry.setSQL(psql);
		qry.setParamArray("ONE_FILE_ID",&(m_vErrorData[0].m_iOneFileID),sizeof(m_vErrorData[0]));
		qry.setParamArray("TWO_FILE_ID",&(m_vErrorData[0].m_iTwoFileID),sizeof(m_vErrorData[0]));
		qry.setParamArray("ONE_RECORD_CNT",&(m_vErrorData[0].m_iOneCount),sizeof(m_vErrorData[0]));
		qry.setParamArray("TWO_RECORD_CNT",&(m_vErrorData[0].m_iTwoCount),sizeof(m_vErrorData[0]));
		qry.setParamArray("ONE_FILE_NAME",(char **)&(m_vErrorData[0].m_sOneFileName),sizeof(m_vErrorData[0]),sizeof(m_vErrorData[0].m_sOneFileName));
		qry.setParamArray("TWO_FILE_NAME",(char **)&(m_vErrorData[0].m_sTwoFileName),sizeof(m_vErrorData[0]),sizeof(m_vErrorData[0].m_sTwoFileName));
		qry.setParamArray("ERROR_MSG",(char **)&(m_vErrorData[0].m_sErrorMsg),sizeof(m_vErrorData[0]),sizeof(m_vErrorData[0].m_sErrorMsg));
		
		try
		{       
		  qry.execute(m_iCommitCount);
	  }
	  catch(TOCIException& e) 
	  {
		  qry.executeDebug(m_iCommitCount);
	  }
	  qry.commit();
	  qry.close();
	  m_vErrorData.clear();
	  m_iCommitCount = 0;
	}
Beispiel #3
0
long ParamDefineMgr::getLongParam(char const *sSegment, char const *sCode)
{
	char sSql[1000];
	memset(sSql,0,1000);

    char sTemp[32];
	
	sprintf(sSql,
		" select trim(param_value) param_value  from b_param_define "
		" where param_segment = '%s' and param_code = '%s' ",
		sSegment, sCode
	);
	
	DEFINE_QUERY(qry); qry.close();
	qry.setSQL(sSql); qry.open();
	
	if (!qry.next()) {
        THROW (999);
    }
	
    
	strcpy(sTemp, qry.field(0).asString());

    
	return strtol (sTemp, 0, 10);
}
Beispiel #4
0
bool ParamDefineMgr::getParam(char const *_sSegment, char const *_sCode, 
char *_sValue)
{
	char sSql[1000];
	memset(sSql,0,1000);
	
	if (!_sValue)
		return false;
	
	sprintf(sSql,
		" select trim(param_value) param_value  from b_param_define "
		" where param_segment = '%s' and param_code = '%s' ",
		_sSegment, _sCode
	);
	
	DEFINE_QUERY(qry);
	qry.close();
	qry.setSQL(sSql);
	qry.open();
	
	if (!qry.next())
		return false;
	
	strcpy(_sValue, qry.field(0).asString());
	
	return true;
}
Beispiel #5
0
// 成功: 返回当前主机的ID, 主机名称_sHostName
// 失败: 返回 -1
int IpcKeyMgr::getHostInfo (char *_sHostName)
{
    char sSql[2048];
    DEFINE_QUERY(qry);
    
//    int iret = gethostname(_sHostName,100);
    
  //  if (iret) {
   //     return -1;
   // }
       int iret = 0;
    char *pp = NULL;
    if ((pp=getenv ("SGW_HOST_NAME")) == NULL)
    {
            cout<<"Please set env value SGW_HOST_NAME. For example  export SGW_HOST_NAME=sgw1"<<endl;
            THROW(-1);
    }
    sprintf (_sHostName, "%s", pp);

    
    sprintf(sSql,"select nvl(max(host_id),-1) host_id "
        " from wf_hostinfo where host_name='%s'",_sHostName);
    qry.close ();
    qry.setSQL (sSql);
    qry.open ();
    qry.next ();
    
    iret = qry.field("host_id").asInteger();
    qry.close ();
    
    return iret;
}
Beispiel #6
0
int SetBillingCycle::UpdateOcsCloseCycle(int OrgId,int BillingCycleId)
{
    char sql[1024];
    memset(sql,0,sizeof(sql));
    
    DEFINE_QUERY (qry);
    sprintf(sql,"select state from ocs_hb_billing_cycle_close where billing_cycle_id=%d"
	            " and org_id=%d",BillingCycleId,OrgId);
    qry.setSQL(sql);
    qry.open();
    if(qry.next())
    {//已经更新过状态
        qry.close();
        return 0;
    }
    qry.close();

    memset(sql,0,sizeof(sql));
    sprintf(sql,"insert into ocs_hb_billing_cycle_close(ORG_ID,BILLING_CYCLE_ID,STATE,HB_CLOSE_TIME,OCS_CLOSE_TIME,TIME_DIFF) "
					 "values(%d,%d,'10A',sysdate,'','')",OrgId,BillingCycleId);
    qry.setSQL(sql);
    qry.execute();
    qry.commit();
    qry.close();
    return 0;
}
Beispiel #7
0
//add by sunjy for 2.8test
void SetBillingCycle::updateCycleStat(int iBillingCycleID,int iFlag)
{
	
	  DEFINE_QUERY(qry);
	  char sSql[1024]={0};
	  int iCount=0;
	  char sStartTime[14+1]={0};
	  sprintf(sSql,"select count(*),to_char(START_TIME,'yyyymmddhh24miss')"
	               " from b_info_capability_cycle where cycle_id= %d group by START_TIME",iBillingCycleID);
	  qry.setSQL(sSql);
	  qry.open();
    if(qry.next())
    	{
        iCount=qry.field(0).asInteger() ;
        strncpy(sStartTime,qry.field(1).asString(),14);
      }
	  
	  qry.close();
	  memset(sSql,0,sizeof(sSql));
	  if(iFlag == 1)  //记录开始时间
	  {
	    if(iCount) 
	    {
	  	  sprintf(sSql,"update b_info_capability_cycle t set  "
	  	             "t.START_TIME=SYSDATE,is_over=0,used_time=0,deal_flag=1 "
	  	             "where t.cycle_id = %d",iBillingCycleID) ;
      }else{
      	sprintf(sSql,"insert into b_info_capability_cycle( "
      	             "log_id,cycle_id,start_time,end_time,  is_over ,used_time,deal_flag ) "
                     "values (seq_info_cycle_id.NEXTVAL , %d,SYSDATE,NULL,0,0,1) ",iBillingCycleID );
       }
	  	  qry.setSQL(sSql);
	  	  qry.execute();
        qry.commit();	  	  
	  	  qry.close(); 
	  	  	       
	  } 
	  if(iFlag == 2)  //记录开始时间
	  {
	    if(iCount) 
	    {
	    	Date dt;
	    	Date dt_s(sStartTime);
	    	long ldiff=dt.diffSec(dt_s);
	  	  sprintf(sSql,"update b_info_capability_cycle t set  "
	  	             "t.end_time=SYSDATE,is_over=1,used_time=%ld,deal_flag=0 "
	  	             "where t.cycle_id = %d",ldiff,iBillingCycleID);
	  	  qry.setSQL(sSql);
	  	  qry.execute();
        qry.commit();	  	  	  	  
	  	  qry.close(); 	  	            
      }else{
        cout<<"账期没经过10B的设置,就做了10E的设置"<<endl;
      } 
        
	  } 
	  
	 return ;  	       
}
Beispiel #8
0
void
Init_gst_query (VALUE mGst)
{
    RGConvertTable table;

    memset(&table, 0, sizeof(table));
    table.type = GST_TYPE_QUERY;
    table.klass = Qnil;
    table.get_superclass = get_superclass;
    table.instance2robj = instance2robj;
    RG_DEF_CONVERSION(&table);

    rb_cGstQuery = G_DEF_CLASS (GST_TYPE_QUERY, "Query", mGst);

#define DEFINE_QUERY(type, lctype, arguments) \
    rb_cGstQuery ## type =                                          \
        rb_define_class_under(mGst, "Query" #type, rb_cGstQuery); \
    rbg_define_method(rb_cGstQuery ## type, "initialize",            \
      lctype ## _initialize, arguments);                            \
    rbg_define_method(rb_cGstQuery ## type, "parse",                 \
      lctype ## _parse, 0)                                          \

    DEFINE_QUERY(Position, position, 1);
    DEFINE_QUERY(Duration, duration, 1);
    DEFINE_QUERY(Latency, latency, 0);
    DEFINE_QUERY(Seeking, seeking, 1);
    DEFINE_QUERY(Segment, segment, 1);
    DEFINE_QUERY(Convert, convert, 2);
    DEFINE_QUERY(Formats, formats, 0);
#undef DEFINE_QUERY
}
Beispiel #9
0
bool CheckStatPlan::checkRun (int iPlanID)
{
    int  iLineCnt = 0;
    
    lockPlan ();
    
    DEFINE_QUERY (qry);
    
    qry.setSQL ("select sys_pid, exec_name, state from B_Check_Stat_Plan "
        " where nvl(sys_pid,0)>0 and plan_id = :vPlanID " 
    );
    qry.setParameter ("vPlanID", iPlanID);
    qry.open ();
    
    while (qry.next ()) {
        
        if (strcmp(qry.field("state").asString(),"RUN"))
            break;
        
        char sCommand[100];
        FILE *fp;
        sprintf (sCommand, "ps -p %ld -f|grep %s|awk '{print $2}'", 
                qry.field(0).asLong(), qry.field(1).asString());        
        fp = popen (sCommand, "r");
        if (fp == NULL) {
            Log::log (0, "popen error!");
            break;
        }        
        while (!feof (fp)) {
            char sPID[10];
            if (fscanf (fp, "%s\n", sPID) == EOF)
                break;
            iLineCnt ++;
        }
        pclose (fp);
        
        if (iPlanID == 0)
            break;
        
        if (iLineCnt == 0) { //进程不存在
            Log::log (0,"子进程(pid=%ld) %s 不存在",
                    qry.field(0).asLong(), qry.field(1).asString());
            updateState (iPlanID, "ERR", "<Alarm> 主进程检测到子进程未能正常退出");
        }
        
        break;
    }
    unlockPlan ();
    qry.close();
    
    if (iLineCnt)
        return true;
    else
        return false;
}
Beispiel #10
0
void CheckStatPlan::openPlan ()
{
    DEFINE_QUERY (qry);
    
    qry.setSQL (" SELECT "
        "  Plan_id,"
        "  app_type,"
        "  stat_name,"
        "  interval_type,"
        "  time_interval,"
        "  nvl(next_run_time, sysdate) next_run_time,"
        "  nvl(run_parameter,'') run_parameter, "
        "  nvl(state,'END') state,"
        "  nvl(debug_flag,0) debug_flag, "
        "  nvl(data_time_offset, 0) offset, "
        "  file_directory "
        " From B_Check_Stat_Plan"
        " where open_state=1 and nvl(state,'END')<>'NUL' and Plan_id>0 "
        " order by plan_id desc"
    );
    
    qry.open();

    if (m_pPlan)
        delete m_pPlan;
    
    while (qry.next ())
    {
        PlanItem *p = new PlanItem ();
        
        p->m_iPlanID = qry.field("Plan_id").asInteger();
        p->m_iAppType = qry.field("app_type").asInteger();
        strcpy (p->m_sStatName, qry.field("stat_name").asString());
        p->m_iIntervalType = qry.field("interval_type").asInteger();
        strcpy (p->m_sTimeInterval, qry.field("time_interval").asString());
        strcpy (p->m_sNextRunTime, qry.field("next_run_time").asString());
        strcpy (p->m_sParameter, qry.field("run_parameter").asString());
        strcpy (p->m_sState, qry.field("state").asString());
        p->m_iDebugFlag = qry.field("debug_flag").asInteger();
        
        p->m_iDataTimeOffset = qry.field("offset").asInteger();
        if (p->m_iDataTimeOffset < 0)
            p->m_iDataTimeOffset = 0;
            
        strncpy(p->m_sDirectory, qry.field("file_directory").asString(), 1000);
        
        parsePlan (p);
        
        p->m_pNext = m_pPlan;
        m_pPlan = p;
    }
    
    qry.close ();
}
Beispiel #11
0
void DataEventMemBase::insMonitorInterface(char *sInfo,char *sRcvAlarmAccNbr)
{
	char sSql[501];
	
	try
	{
		DEFINE_QUERY(qry);
		
		sprintf(sSql,"INSERT INTO ISSU_NOTE_LISTING("
			"		NOTE_ID,"
			"		WORK_ORDER_NBR,"
			"		NOTE,"
			"		OBJ_NBR,"
			"		AREA_CODE,"
			"		STAFF_ID,"
			"		SEND_TIME,"
			"		DEAL_FLAG,"
			"		DEAL_DATE,"
			"		MSGFORMAT,"
			"		MSGLEVEL,"
			"		SERVICEID,"
			"		SMGP_SEND_ID) "
			"VALUES (ISSU_NOTE_LISTING_ID_SEQ.NEXTVAL,"
			"		NULL,"
			"		:TMPINFO,"
			"		:ALARM_ACCNBR,"
			"		'025',"
			"		2,"
			"		sysdate,"
			"		0,"
			"		sysdate,"
			"		15,"
			"		1,"
			"		'025',"
			"		1)");
		
		qry.setSQL(sSql);
		qry.setParameter("TMPINFO",sInfo);
		qry.setParameter("ALARM_ACCNBR",sRcvAlarmAccNbr);
		qry.execute();
		qry.commit();
		qry.close();
	}
	catch (TOCIException &e) {
		printf("e8内存告警插入告警表出错,错误描述:%s\n,sql:%s",e.getErrMsg(),e.getErrSrc());
		throw e;
	}
}
Beispiel #12
0
/***************************************************************************
*函数名:bool dealacct_item_withoutabm();
*功能:处理账单
***************************************************************************/
bool AbmInterfaceManage::dealacct_item_withoutabm(char const *sTable)
{
  char sSQL[4096];
  char sDate[18]={0};
  Date d;
  strcpy(sDate, d.toString());

  sprintf(sSQL, "select acct_item_id, serv_id, acct_id, offer_inst_id,"
                "billing_cycle_id, charge, measure_type, acct_item_type_id,"
                "item_source_id, state_date, nvl(item_class_id, 0) "
                "from %s", sTable);
  DEFINE_QUERY(qry);

  unsigned int i;
  AcctItemData  p;
  int j(0);

  Log::log(0, "开始加载%s,当前时间 %s", sTable, sDate);

  qry.setSQL(sSQL); 
  qry.open();
  while(qry.next()) 
       {        
         p.m_lAcctItemID     = qry.field(0).asLong();
         p.m_lServID         = qry.field(1).asLong();
         p.m_lAcctID         = qry.field(2).asLong();
         p.m_lOfferInstID    = qry.field(3).asLong();
         p.m_iBillingCycleID = qry.field(4).asInteger();
         p.m_lValue          = qry.field(5).asLong();
         p.m_iPayMeasure     = qry.field(6).asInteger();
         p.m_iPayItemTypeID  = qry.field(7).asInteger();
         p.m_iItemSourceID   = qry.field(8).asInteger();
         strcpy (p.m_sStateDate, qry.field(9).asString());
         p.m_iItemClassID = qry.field(10).asInteger();
         j++;
         if (!(j%300000)) {
            Log::log(0, "\t已处理了%d\t条", j);
         }
       }
  qry.close();

  char sDate1[18]={0};
  Date d1;
  strcpy(sDate1, d1.toString());
  Log::log(0, "\t已处理了%d\t条,当前时间是%s", j, sDate1);

  return true;
}
Beispiel #13
0
static long getIpcKey(int i_iBillFlowID,char * i_sIpcName)
{

    //add by yangks 2007.1.15
    return IpcKeyMgr::getIpcKey (i_iBillFlowID, i_sIpcName);

	char sSql[1000];
	DEFINE_QUERY(QueryKey);
	
	sprintf(sSql,"SELECT IPC_KEY FROM B_IPC_CFG WHERE BILLFLOW_ID=%d AND IPC_NAME='%s' ",i_iBillFlowID,i_sIpcName);
	QueryKey.close();
	QueryKey.setSQL(sSql);
	QueryKey.open();
	QueryKey.next();
	return QueryKey.field("IPC_KEY").asInteger();
}
Beispiel #14
0
/*测试用户及订购资料导入*/
bool Hbinstalltest::createInfo()
{
	FILE *fp = NULL;
	char sLine[2048] = {0};
	char sSql[2048] = {0};
	char userLodePath[100] ={0};
	
	//strcpy(userLodePath,h_path);
	strncpy(userLodePath,SQL_USERLOAD,sizeof(userLodePath));
	DEFINE_QUERY (qry);
	fp = fopen(userLodePath,"r");					//打开测试用三户和订购资料文件
	if(fp == NULL){
		Log::log(0,"三户及订购资料信息文件%s打开失败!",userLodePath);
		return false;	
	}else{
			while(fgets(sLine,2048,fp) != NULL){
				if (('\0' == sLine[0]) || ('#' == sLine[0]) || ('-' == sLine[0]) || ('\n' == sLine[0])) //忽略空行和注释行
					continue;
				try
				{
					if(sLine[strlen(sLine)-2] == ';')
						sLine[strlen(sLine)-2] = '\n';
					else if(sLine[strlen(sLine)-3] == ';')
						sLine[strlen(sLine)-3] = '\n';
					strcpy(sSql,sLine);
					qry.setSQL(sSql);
					qry.execute();
					qry.close();
					continue;
				}catch(TOCIException & e){
					Log::log(0,"三户及订购资料上载失败!");
					Log::log(0,e.getErrMsg());
					Log::log(0,e.getErrSrc());
					throw e;
					return false;
				}
			}
		qry.commit();
		qry.close();
		
	return true;
	}
}
Beispiel #15
0
bool BillingCycleMgr::endBillingCycle(int iBillingCycleID, bool changeDB)
{
	BillingCycle * p = getBillingCycle (iBillingCycleID);
	if (!p) return false;

	p->m_sState[2] = 'E';

	if (changeDB) {

		DEFINE_QUERY (qry);
		char sSQL[2048];

		sprintf (sSQL, "update billing_cycle set state='10E', state_date=sysdate "
				" where billing_cycle_id=%d", iBillingCycleID);

		qry.setSQL (sSQL); qry.execute (); qry.close (); qry.commit ();
		
	}
	return true;
}
Beispiel #16
0
/*测试流程配置*/
bool Hbinstalltest::billflowCfg()
{
	FILE *fp = NULL;
	char sLine[2048] = {0};
	char sSql[2048] = {0};
	char billflowCfgPath[100] = {0};

	DEFINE_QUERY (qry);
	//strcpy(billflowCfgPath,h_path);
	strncpy(billflowCfgPath,SQL_BILLFLOWCFG,sizeof(billflowCfgPath));
	fp = fopen(billflowCfgPath,"r");
	if(fp == NULL){
		Log::log(0,"测试流程配置文件%s打开失败!",billflowCfgPath);
		return false;	
	}else{
			while(fgets(sLine,2048,fp) != NULL){
				if (('\0' == sLine[0]) || ('#' == sLine[0]) || ('-' == sLine[0]) || ('\n' == sLine[0])) //忽略空行和注释行
					continue;
				try
				{
					if(sLine[strlen(sLine)-2] == ';')
						sLine[strlen(sLine)-2] = '\n';
					strcpy(sSql,sLine);
					qry.setSQL(sSql);
					qry.execute();
					qry.close();
					continue;
				}catch(TOCIException & e){
					Log::log(0,"测试流程配置出错!");
					Log::log(0,e.getErrMsg());
					Log::log(0,e.getErrSrc());
					throw e;
					return false;
				}
			}
		qry.commit();
		qry.close();
		return true;
	}
}
Beispiel #17
0
void FilterRule::load()
{
	DEFINE_QUERY (qry);
	FilterRuleResult * pResult;

	qry.setSQL ("select switch_long_type,nvl(switch_id,-1),nvl(trunk_in,'*'),nvl(trunk_out,'*'),nvl( gather_pot,-1),"
			"switch_area_code, org_calling_nbr, org_called_nbr, "
			"event_type_id, nvl(eff_date, to_date('19800101', 'yyyymmdd')), "
			"nvl(exp_date, to_date('20500101', 'yyyymmdd')) from b_filter_rule");
	qry.open ();

	while (qry.next ()) {
		pResult = new FilterRuleResult (qry.field (8).asInteger (),
						qry.field (9).asString (),
						qry.field (10).asString ());
		if (!pResult) THROW (MBC_FilterRule + 1);
		m_oCheck.insert (qry.field (0).asInteger (),qry.field (1).asInteger (),  qry.field (2).asString (),qry.field (3).asString (), qry.field (4).asInteger (), 
				qry.field (5).asString (), qry.field(6).asString (),qry.field(7).asString (), pResult);
	}

	qry.close ();
}
Beispiel #18
0
/*
    获取系统中定义的 当前主机、当前用户,指定流程、IPC名称 对应的IPC_KEY 值
    成功, 返回值为获取的 IPC_KEY
    失败, 返回值 小于 0

    xueqt: 作为public下面的, 异常情况, 可能有致命影响的, 暂都改用THROW
*/
long IpcKeyMgr::getIpcKey(int _iBillFlowID, char const * _sIpcName)
{
    char *pUserName;
    char sHostName[200];
    char sSql[2048];
    long lKeyRet;
    DEFINE_QUERY(qry);
    
    pUserName = getenv("LOGNAME");
    int iHostID = getHostInfo(sHostName);
        
    if (!strlen(pUserName) || iHostID==-1) {
        Log::log (0, "获取不到user或host_id, HOST_NAME:%s", sHostName);
        throw (MBC_IpcKey + 1);
        
    }
    
    sprintf(sSql,"SELECT IPC_KEY FROM B_IPC_CFG"
        " WHERE BILLFLOW_ID=%d AND IPC_NAME='%s' "
        " AND host_id=%d"
        " AND sys_username='******'",
        _iBillFlowID, _sIpcName, iHostID, pUserName);
    
    qry.close ();
    qry.setSQL (sSql); qry.open ();

    if (!qry.next ()) {
        Log::log (0, "B_IPC_CFG中没有配置:%s, USER_NAME: %s, HOST_ID:%d", 
                _sIpcName, pUserName, iHostID);
        THROW (MBC_IpcKey + 2);
    }
    
    lKeyRet = qry.field("IPC_KEY").asLong();
    qry.close ();
    
    return lKeyRet;
}
Beispiel #19
0
void CheckStatPlan::waitDebug (PlanItem &oPlan)
{
    DEFINE_QUERY (qry);
    
    static bool bFirst(true);
    
    if (bFirst) {
        qry.setSQL ("update B_Check_Stat_Plan set message = :vMsg where plan_id = :vPlanID");
        qry.setParameter ("vMsg", "[RUN] 等待调试...");
        qry.setParameter ("vPlanID", oPlan.m_iPlanID);
        qry.execute();
        qry.commit();
        bFirst = false;
    }
    
    qry.close();
    qry.setSQL ("select debug_flag from B_Check_Stat_Plan where plan_id=:vPlanID");
    qry.setParameter ("vPlanID", oPlan.m_iPlanID);
    qry.open();
    if (qry.next())
        oPlan.m_iDebugFlag = qry.field(0).asInteger();
    
    sleep (3);
}
Beispiel #20
0
/*相关表字段检查和主机信息同步
*由于各个主机(主机名,主机IP,主机登录名,起始路径)的不同,所以当表插入
*完成后检查特定表的字段中值是否对应现有的主机,若不对应则UPDATE
*/
void Hbinstalltest::checkTableByInfo()
{
	DEFINE_QUERY (qry);
	char sSql[1024]={0};
	char c_path[100]={0};
	char c_despath[100]={0};
	char c_srcpath[100]={0};
	char c_duppath[100]={0};
	char c_dbpath[100]={0};
	char c_hostname[100] = {0};
	int  ihostid = -1;
	char c_EventfileName[1024] = {0};
	
	if(gethostname(c_hostname,100) !=0)
	{
		Log::log(0,"gethostname is err");
		throw -1;
	}
	
	qry.close();
	//更新wf_hostinfo
	sprintf(sSql,"select host_id from wf_hostinfo where host_name='%s'",c_hostname);
	qry.setSQL(sSql);
	qry.open();
	if(qry.next())
	{
		ihostid = qry.field(0).asInteger();
	}
	else
	{	
		Log::log(0,"%s,error",sSql);
		throw -1;
	}
	qry.close();
	
	memset(sSql,0,sizeof(sSql));
	//更新b_gather_task
	sprintf(sSql,"update b_gather_task set SRC_PATH = :SRC_PATH,DES_PATH = :DES_PATH,HOST_ID = :HOST_ID where task_id=3");
	qry.setSQL(sSql);
	strncpy(c_srcpath,GATHER_PART_NODE,sizeof(c_srcpath));
	strncpy(c_despath,GATHER_PART_NODE2,sizeof(c_despath));
	qry.setParameter("SRC_PATH",c_srcpath);
	qry.setParameter("DES_PATH",c_despath);
	qry.setParameter("HOST_ID",ihostid);
	qry.execute();
	qry.close();
	
	memset(sSql,0,sizeof(sSql));
	//更新 b_event_file_list
	sprintf(sSql,"update b_event_file_list set FILE_NAME = :FILE_NAME where FILE_ID=9999");
	qry.setSQL(sSql);
	strncpy(c_srcpath,GATHER_PART_NODE,sizeof(c_srcpath));
	strncpy(c_despath,GATHER_PART_NODE2,sizeof(c_despath));
	sprintf(c_EventfileName,"%s/%s",c_despath,LIST_NAME);
	qry.setParameter("FILE_NAME",c_EventfileName);
	qry.execute();
	qry.close();
	
	memset(sSql,0,sizeof(sSql));
	//更新wf_process
	sprintf(sSql,"update wf_process set EXEC_PATH = :EXEC_PATH,SYS_USERNAME = :SYS_USERNAME ,HOST_ID = :HOST_ID where billflow_id=10");
	qry.setSQL(sSql);
	strcpy(c_path,h_path);
	strcat(c_path,"/bin");
	qry.setParameter("EXEC_PATH",c_path);
	qry.setParameter("SYS_USERNAME",h_user);
	qry.setParameter("HOST_ID",ihostid);
	qry.execute();
	qry.close();
  
  memset(sSql,0,sizeof(sSql));
	//更新b_dup_data_path
	sprintf(sSql,"update b_dup_data_path set DATA_PATH = :DATA_PATH where process_id=54");
	qry.setSQL(sSql);
	
	strncpy(c_duppath,DUPPATH,sizeof(c_duppath));
	qry.setParameter("DATA_PATH",c_duppath);
	qry.execute();
	
	qry.commit();
	qry.close();
	
	//更新 B_IPC_CFG
	memset(sSql,0,sizeof(sSql));
	sprintf(sSql,"update B_IPC_CFG set HOST_ID = :HOST_ID,SYS_USERNAME = :SYS_USERNAME  where billflow_id=10");
	qry.setSQL(sSql);
	qry.setParameter("SYS_USERNAME",h_user);
	qry.setParameter("HOST_ID",ihostid);
	qry.execute();
	qry.close();
	
}
Beispiel #21
0
/*显示测试结果*/
bool Hbinstalltest::printTestinfo()
{	
	char m_serv_id[100] = {0};
	char m_acct_id[100] = {0};
	char m_billing_cycle_id[100] = {0};
	char m_charge[100] = {0};
	
	char m_event_type_id[100] = {0};
	char m_billing_nbr[100]={0};
	char m_billing_org_id[100]={0};
	char m_calling_area_code[100]={0};
	char m_calling_nbr[100]={0};
	char m_called_nbr[100]={0};

	DEFINE_QUERY (qry);
	qry.close();
	char sSql[1024]={0};
	sprintf(sSql,"select serv_id,acct_id,billing_cycle_id,charge from acct_item_aggr_test");
	qry.setSQL(sSql);
	qry.open();
	
	if(qry.next())
	{
		//m_serv_id = qry.field(0).asString();
		strcpy(m_serv_id,qry.field(0).asString());
		//m_acct_id = qry.field(1).asString();
		strcpy(m_acct_id,qry.field(1).asString());
		//m_billing_cycle_id = qry.field(2).asString();
		strcpy(m_billing_cycle_id,qry.field(2).asString());
		//m_charge = qry.field(3).asString();
		strcpy(m_charge,qry.field(3).asString());
	}
	else
	{
		Log::log(0,"总账表中无数据");
		return false;
	}
	qry.close();
	
	memset(sSql,0,sizeof(sSql));
	sprintf(sSql,"select event_type_id,billing_nbr,billing_org_id,calling_area_code,calling_nbr,called_nbr from call_event_test");
	qry.setSQL(sSql);
	qry.open();
	if(qry.next())
	{
		//m_event_type_id = qry.field(0).asString();
		strcpy(m_event_type_id,qry.field(0).asString());
		strcpy(m_billing_nbr,qry.field(1).asString());
		//m_billing_org_id = qry.field(2).asString();
		strcpy(m_billing_org_id,qry.field(2).asString());
		strcpy(m_calling_area_code,qry.field(3).asString());
		strcpy(m_calling_nbr,qry.field(4).asString());
		strcpy(m_called_nbr,qry.field(5).asString());
	}
	else
	{
		Log::log(0,"语音清单表中无数据");
		return false;
	}
	
	qry.close();
		printf("\n总账表信息:\n");
		printf("用户 : %s , 账户 : %s , 账期 : %s , 费用:%s\n",m_serv_id,m_acct_id,m_billing_cycle_id,m_charge);
		printf("\n清单表信息:\n");
		printf("事件类型 : %s, 计费号码 : %s, 计费org : %s, 主叫区号 : %s, 主叫号码 : %s, 被叫号码 : %s\n ",
		m_event_type_id,m_billing_nbr,m_billing_org_id,m_calling_area_code,m_calling_nbr,m_called_nbr);
		printf("\n实际产生话费 : %s分\n",m_charge);
		return true;
}
Beispiel #22
0
void LocalCacheCtl::exportEventPrice(const char *sTableName){

    vector<EventPriceData > res;
    vector<EventPriceData>::iterator itr;
    int count = 0, iRealCount=0, i ;
    int iTotal = 0;
    int iStart = 1;
    char sSQL[1024]={0};

    Log::log(0, "开始导出缓冲定价轨迹信息到表%s...", sTableName );
    count = m_poEventPriceCacheData->getTotal();

    DEFINE_QUERY(qry);
    sprintf(sSQL, " TRUNCATE TABLE %s ", sTableName );
    qry.setSQL(sSQL);
    qry.execute();
    qry.commit();
    qry.close();
    memset(sSQL, 0, sizeof(sSQL) );
    sprintf(sSQL, " INSERT INTO %s( serv_id, acct_id, offer_inst_id, billing_cycle_id,"
            " pay_measure, item_group_id, rule_type, rule_id, value, duration, event_type_id, "
            " operation ,event_id, file_id, event_source_type, org_id"
            //" ,state_date"
            #ifdef ACCT_ITEM_AGGR_OFFER_ID
            ", offer_id"
            #endif
            ") "
            " VALUES( :serv_id, :acct_id, :offer_inst_id, :billing_cycle_id, :pay_measure,"
            " :item_group_id, :rule_type, :rule_id, :value, :duration,"
            " :event_type_id,  "
            " CHR(:operation), :event_id, :file_id, :event_source_type, :org_id "
            //" , DECODE(:state_date, NULL,sysdate, TO_DATE(:state_date, 'yyyy-mm-dd hh24:mi:ss') )"
            #ifdef ACCT_ITEM_AGGR_OFFER_ID
            ",:offer_id"
            #endif
            ") ", 
            sTableName);
    qry.setSQL(sSQL);

    try {
        while (count) {
            i = count > batchnum ? batchnum : count;
            res.clear();
            iRealCount = 0;
            for (int j = iStart; j< iStart + i; ++j ) {
                if ( m_poEventPriceCache[j].m_oData.lServID ) {
                    res.push_back(m_poEventPriceCache[j].m_oData);
                    iRealCount++;
                }
            }
            iStart += i ;

            if ( 0 == iRealCount ) {
                count -= i;
                continue;
            }
            itr = res.begin();

            qry.setParamArray("serv_id", &(itr->lServID), sizeof(EventPriceData));
            qry.setParamArray("acct_id", &(itr->lAcctID), sizeof(EventPriceData));
            qry.setParamArray("offer_inst_id", &(itr->lOfferInstID), sizeof(EventPriceData));
            qry.setParamArray("billing_cycle_id", &(itr->iBillingCycleID), sizeof(EventPriceData));
            qry.setParamArray("pay_measure", &(itr->iPayMeasure), sizeof(EventPriceData));
            qry.setParamArray("item_group_id", &(itr->iPayItemTypeID), sizeof(EventPriceData));
            qry.setParamArray("rule_type", &(itr->iRuleType), sizeof(EventPriceData));
            qry.setParamArray("rule_id", &(itr->iRuleID), sizeof(EventPriceData));
            qry.setParamArray("value", &(itr->lValue), sizeof(EventPriceData));
            qry.setParamArray("duration", &(itr->lDuration), sizeof(EventPriceData));
            qry.setParamArray("event_type_id", &(itr->iEventTypeID), sizeof(EventPriceData));
            //qry.setParamArray("state_date", (char**)&(itr->sStateDate), sizeof(EventPriceData), 
            //                  sizeof(itr->sStateDate));
            qry.setParamArray("operation", &(itr->cOperation), sizeof(EventPriceData));
            qry.setParamArray("event_id", &(itr->lEventID), sizeof(EventPriceData));
            qry.setParamArray("file_id", &(itr->iFileID), sizeof(EventPriceData));
            qry.setParamArray("event_source_type", &(itr->iEventSourceType), sizeof(EventPriceData));
            qry.setParamArray("org_id", &(itr->iOrgID), sizeof(EventPriceData));
            #ifdef ACCT_ITEM_AGGR_OFFER_ID
            qry.setParamArray("offer_id", &(itr->iOfferID), sizeof(EventPriceData));
            #endif

            qry.execute(iRealCount);
            qry.commit();

            count -= i;
            iTotal += iRealCount;
        }
        qry.close();
    } catch (TOCIException &e) {
        qry.close();
        Log::log(0, "\nError Source: %s\nError Message: %s", 
                 e.getErrSrc(), e.getErrMsg() );
    }
    Log::log(0, "共导出缓冲定价轨迹信息 %d 条", iTotal);
}
Beispiel #23
0
void LocalCacheCtl::exportEventAccu(const char *sTableName){

    vector<AccuCacheData > res;
    vector<AccuCacheData>::iterator itr;
    int count = 0, iRealCount=0, i ;
    int iTotal = 0;
    int iStart = 1;
    char sSQL[1024]={0};

    Log::log(0, "开始导出缓冲事件累积量信息到表%s...", sTableName );
    count = m_poAccuCacheData->getTotal();

    DEFINE_QUERY(qry);
    sprintf(sSQL, " TRUNCATE TABLE %s ", sTableName );
    qry.setSQL(sSQL);
    qry.execute();
    qry.commit();
    qry.close();
    memset(sSQL, 0, sizeof(sSQL) );
    sprintf(sSQL, " INSERT INTO %s(accu_inst_id, offer_inst_id, member_id, accu_type_id, serv_id,"
            " billing_cycle_id, cycle_type_id, begin_date, end_date,split_by, cycle_inst_id,"
            " value, add_value, operation, event_id, file_id, event_source_type, org_id, state_date  ) "
            " VALUES( :accu_inst_id,:offer_inst_id, :member_id, :accu_type_id, :serv_id, "
            " :billing_cycle_id, :cycle_type_id, DECODE(:begin_date,0, SYSDATE, TO_DATE(:begin_date,'yyyy-mm-dd hh24:mi:ss') ), "
            " DECODE(:end_date,0, SYSDATE, TO_DATE(:end_date,'yyyy-mm-dd hh24:mi:ss') ), :split_by, :cycle_inst_id ,"
            " :value, :add_value, CHR(:operation), :event_id, "
            " :file_id, :event_source_type, :org_id ,"
            " DECODE(:state_date, NULL, SYSDATE, TO_DATE(:state_date,'yyyy-mm-dd hh24:mi:ss')) ) ", 
            sTableName);
    qry.setSQL(sSQL);

    try {
        while (count) {
            i = count > batchnum ? batchnum : count;
            res.clear();
            iRealCount = 0;
            for (int j = iStart; j< iStart + i; ++j ) {
                if ( m_poAccuCache[j].m_lAccuInstID ) {
                    res.push_back(m_poAccuCache[j]);
                    iRealCount++;
                }
            }
            iStart += i ;

            if ( 0 == iRealCount ) {
                count -= i;
                continue;
            }
            itr = res.begin();

            qry.setParamArray("accu_inst_id", &(itr->m_lAccuInstID), sizeof(AccuCacheData));
            qry.setParamArray("offer_inst_id", &(itr->m_lOfferInstID), sizeof(AccuCacheData));
            qry.setParamArray("member_id", &(itr->m_lMemberID), sizeof(AccuCacheData));
            qry.setParamArray("accu_type_id", &(itr->m_iAccuTypeID), sizeof(AccuCacheData));
            qry.setParamArray("serv_id", &(itr->m_lServID), sizeof(AccuCacheData));
            qry.setParamArray("billing_cycle_id", &(itr->m_iBillingCycleID), sizeof(AccuCacheData));
            qry.setParamArray("cycle_type_id", &(itr->m_lCycleTypeID), sizeof(AccuCacheData));
            qry.setParamArray("begin_date", &(itr->m_lBeginDate), sizeof(AccuCacheData));
            qry.setParamArray("end_date", &(itr->m_lEndDate), sizeof(AccuCacheData));
            qry.setParamArray("split_by", (char**)&(itr->m_sSplitby), sizeof(AccuCacheData),
                              sizeof(itr->m_sSplitby));
            qry.setParamArray("cycle_inst_id", &(itr->m_lCycleInstID), sizeof(AccuCacheData));
            qry.setParamArray("value", &(itr->m_lValue), sizeof(AccuCacheData));
            qry.setParamArray("add_value", &(itr->m_lAddValue), sizeof(AccuCacheData));
            qry.setParamArray("operation", &(itr->m_cOperation), sizeof(AccuCacheData));
            qry.setParamArray("state_date", (char**)&(itr->m_sStateDate), sizeof(AccuCacheData), 
                              sizeof(itr->m_sStateDate) );
            qry.setParamArray("event_id", &(itr->m_lEventID), sizeof(AccuCacheData));
            qry.setParamArray("file_id", &(itr->m_iFileID), sizeof(AccuCacheData));
            qry.setParamArray("event_source_type", &(itr->m_iEventSourceType), sizeof(AccuCacheData));
            qry.setParamArray("org_id", &(itr->m_iOrgID), sizeof(AccuCacheData));

            qry.execute(iRealCount);
            qry.commit();

            count -= i;
            iTotal += iRealCount;
        }
        qry.close();
    } catch (TOCIException &e) {
        qry.close();
        Log::log(0, "\nError Source: %s\nError Message: %s", 
                 e.getErrSrc(), e.getErrMsg() );
    }
    Log::log(0, "共导出缓冲事件累积量信息 %d 条", iTotal);

}
Beispiel #24
0
void LocalCacheCtl::exportMiddleData(const char * sTableName){

    vector<MiddleCacheData > res;
    vector<MiddleCacheData>::iterator itr;
    int count = 0, iRealCount=0, i ;
    int iTotal = 0;
    int iStart = 1;
    char sSQL[1024]={0};

    Log::log(0, "开始导出缓冲中间数据到表%s...", sTableName );
    count = m_poMiddleInfoData->getTotal();

    DEFINE_QUERY(qry);
    sprintf(sSQL, " TRUNCATE TABLE %s ", sTableName );
    qry.setSQL(sSQL);
    qry.execute();
    qry.commit();
    qry.close();
    memset(sSQL, 0, sizeof(sSQL) );
    sprintf(sSQL, " INSERT INTO %s(wait_event_offset , address_offset, next_offset, other_offset, "
            " offset1, other_offset1,) "
            " VALUES( :wait_event_offset , :address_offset, :next_offset, :other_offset, "
            " :offset1, :other_offset1, ) ", 
            sTableName);
    qry.setSQL(sSQL);

    try {
        while (count) {
            i = count > batchnum ? batchnum : count;
            res.clear();
            iRealCount = 0;
            for (int j = iStart; j< iStart + i; ++j ) {
                if ( m_poMiddleCache[j].m_iWaitEventOffset ) {
                    res.push_back(m_poMiddleCache[j]);
                    iRealCount++;
                }
            }
            iStart += i ;

            if ( 0 == iRealCount ) {
                count -= i;
                continue;
            }
            itr = res.begin();

            qry.setParamArray("wait_event_offset", (int*)&(itr->m_iWaitEventOffset), sizeof(MiddleCacheData));
            qry.setParamArray("address_offset", (int*)&(itr->m_iAddressOffset), sizeof(MiddleCacheData));
            qry.setParamArray("next_offset", (int*)&(itr->m_iNextOffset), sizeof(MiddleCacheData));
            qry.setParamArray("other_offset", (int*)&(itr->m_iOtherOffset), sizeof(MiddleCacheData));
            qry.setParamArray("offset1", (int*)&(itr->m_iOffset1), sizeof(MiddleCacheData));
            qry.setParamArray("other_offset1", (int*)&(itr->m_iOtherOffset1), sizeof(MiddleCacheData));

            qry.execute(iRealCount);
            qry.commit();

            count -= i;
            iTotal += iRealCount;
        }
        qry.close();
    } catch (TOCIException &e) {
        qry.close();
        Log::log(0, "\nError Source: %s\nError Message: %s", 
                 e.getErrSrc(), e.getErrMsg() );
    }
    Log::log(0, "共导出缓冲中间数据 %d 条", iTotal);

    return;
}
Beispiel #25
0
void LocalCacheCtl::exportAddress(const char * sTableName){


    vector<AddressCacheData > res;
    vector<AddressCacheData>::iterator itr;
    int count = 0, iRealCount=0, i ;
    int iTotal = 0;
    int iStart = 1;
    char sSQL[1024]={0};

    Log::log(0, "开始导出地址索引信息到表%s...", sTableName );
    count = m_poAddressCacheData->getTotal();

    DEFINE_QUERY(qry);
    sprintf(sSQL, " TRUNCATE TABLE %s ", sTableName );
    qry.setSQL(sSQL);
    qry.execute();
    qry.commit();
    qry.close();
    memset(sSQL, 0, sizeof(sSQL) );
    sprintf(sSQL, " INSERT INTO %s(event_id, event_offset , event_price_offset, event_accu_offset, disct_aggr_offset, "
            " acct_item_offset, lock_key_offset, begin_date, send, type, process_id) "
            " VALUES( :event_id, :event_offset , :event_price_offset, :event_accu_offset, :disct_aggr_offset, "
            " :acct_item_offset, :lock_key_offset, "
            " DECODE(:begin_date,0, SYSDATE, TO_DATE(:begin_date,'yyyy-mm-dd hh24:mi:ss') ), :send, :type, "
            " :process_id) ", 
            sTableName);
    qry.setSQL(sSQL);

    try {
        while (count) {
            i = count > batchnum ? batchnum : count;
            res.clear();
            iRealCount = 0;
            for (int j = iStart; j< iStart + i; ++j ) {
                if ( m_poAddressCache[j].m_lEventID ) {
                    res.push_back(m_poAddressCache[j]);
                    iRealCount++;
                }
            }
            iStart += i ;

            if ( 0 == iRealCount ) {
                count -= i;
                continue;
            }
            itr = res.begin();

            qry.setParamArray("event_id", &(itr->m_lEventID), sizeof(AddressCacheData));
            qry.setParamArray("event_offset", (int*)&(itr->m_iStdEventOffset), sizeof(AddressCacheData));
            qry.setParamArray("event_price_offset", (int*)&(itr->m_iEventPriceOffset), sizeof(AddressCacheData));
            qry.setParamArray("event_accu_offset", (int*)&(itr->m_iEventAccuOffset), sizeof(AddressCacheData));
            qry.setParamArray("disct_aggr_offset", (int*)&(itr->m_iDisctAggrOffset), sizeof(AddressCacheData));
            qry.setParamArray("acct_item_offset", (int*)&(itr->m_iAcctItemOffset), sizeof(AddressCacheData));
            qry.setParamArray("lock_key_offset", (int*)&(itr->m_iLockKeyOffset), sizeof(AddressCacheData));
            qry.setParamArray("begin_date", &(itr->m_lBeginDate), sizeof(AddressCacheData));
            qry.setParamArray("send", (int*)&(itr->m_iSend), sizeof(AddressCacheData));
            qry.setParamArray("type", (int*)&(itr->m_iType), sizeof(AddressCacheData));
            qry.setParamArray("process_id", (int*)&(itr->m_iProcessID), sizeof(AddressCacheData));
            qry.execute(iRealCount);
            qry.commit();

            count -= i;
            iTotal += iRealCount;
        }
        qry.close();
    } catch (TOCIException &e) {
        qry.close();
        Log::log(0, "\nError Source: %s\nError Message: %s", 
                 e.getErrSrc(), e.getErrMsg() );
    }
    Log::log(0, "共导出地址索引信息 %d 条", iTotal);

    return;
}
Beispiel #26
0
void LocalCacheCtl::exportMiddleInfo(const char * sTableName){

    vector<MiddleInfoData > res;
    vector<MiddleInfoData>::iterator itr;
    int count = 0, iRealCount=0, i ;
    int iTotal = 0;
    int iStart = 1;
    char sSQL[1024]={0};

    Log::log(0, "开始导出缓冲中间信息到表%s...", sTableName );
    count = m_poMiddleInfoData->getTotal();

    DEFINE_QUERY(qry);
    sprintf(sSQL, " TRUNCATE TABLE %s ", sTableName );
    qry.setSQL(sSQL);
    qry.execute();
    qry.commit();
    qry.close();
    memset(sSQL, 0, sizeof(sSQL) );
    sprintf(sSQL, " INSERT INTO %s(process_id , data_begin_offset, data_end_offset, wait_offset) "
            " VALUES( :process_id , :data_begin_offset, :data_end_offset, :wait_offset) ", 
            sTableName);
    qry.setSQL(sSQL);

    try {
        while (count) {
            i = count > batchnum ? batchnum : count;
            res.clear();
            iRealCount = 0;
            for (int j = iStart; j< iStart + i; ++j ) {
                if ( m_poMiddleInfo[j].m_iProcessID ) {
                    res.push_back(m_poMiddleInfo[j]);
                    iRealCount++;
                }
            }
            iStart += i ;

            if ( 0 == iRealCount ) {
                count -= i;
                continue;
            }
            itr = res.begin();

            qry.setParamArray("process_id",(int*) &(itr->m_iProcessID), sizeof(MiddleInfoData));
            qry.setParamArray("data_begin_offset",(int*) &(itr->m_iDataBegOffset), sizeof(MiddleInfoData));
            qry.setParamArray("data_end_offset",(int*) &(itr->m_iDataEndOffset), sizeof(MiddleInfoData));
            qry.setParamArray("wait_offset", (int*)&(itr->m_iWaitOffset), sizeof(MiddleInfoData));

            qry.execute(iRealCount);
            qry.commit();

            count -= i;
            iTotal += iRealCount;
        }
        qry.close();
    } catch (TOCIException &e) {
        qry.close();
        Log::log(0, "\nError Source: %s\nError Message: %s", 
                 e.getErrSrc(), e.getErrMsg() );
    }
    Log::log(0, "共导出缓冲中间信息 %d 条", iTotal);


    return;

}
Beispiel #27
0
void LocalCacheCtl::exportAcctItem(const char * sTableName){

    vector<AcctItemAddAggrData > res;
    vector<AcctItemAddAggrData>::iterator itr;
    int count = 0, iRealCount=0, i ;
    int iTotal = 0;
    int iStart = 1;
    char sSQL[1024]={0};

    Log::log(0, "开始导出缓冲总账信息到表%s...", sTableName );
    count = m_poAcctItemCacheData->getTotal();

    DEFINE_QUERY(qry);
    sprintf(sSQL, " TRUNCATE TABLE %s ", sTableName );
    qry.setSQL(sSQL);
    qry.execute();
    qry.commit();
    qry.close();
    memset(sSQL, 0, sizeof(sSQL) );
    sprintf(sSQL, " INSERT INTO %s(acct_item_id, offer_inst_id, serv_id, acct_id, item_source_id, "
            " item_class_id, billing_cycle_id,acct_item_type_id, charge, measure_type, "
            " pricing_combine_id, state_date, operation, event_id, file_id, event_source_type, org_id "
            #ifdef ACCT_ITEM_AGGR_OFFER_ID
            ", offer_id"
            #endif
            #ifdef ORG_BILLINGCYCLE
            ", org_billing_cycle_id"
            #endif
            ") "
            " VALUES( :acct_item_id,:offer_inst_id, :serv_id, :acct_id, :item_source_id, :item_class_id, "
            " :billing_cycle_id, :acct_item_type_id, :charge, :measure_type, :pricing_combine_id,"
            " TO_DATE(NVL(:state_date, SYSDATE), 'yyyy-mm-dd hh24:mi:ss'), CHR(:operation), "
            " :event_id, :file_id, :event_source_type, :org_id "
            #ifdef ACCT_ITEM_AGGR_OFFER_ID
            ",:offer_id"
            #endif
            #ifdef ORG_BILLINGCYCLE
            ", :org_billing_cycle_id"
            #endif
            ") ", 
            sTableName);
    qry.setSQL(sSQL);

    try {
        while (count) {
            i = count > batchnum ? batchnum : count;
            res.clear();
            iRealCount = 0;
            for (int j = iStart; j< iStart + i; ++j ) {
                if ( m_poAcctItemCache[j].m_oData.lAcctItemID ) {
                    res.push_back(m_poAcctItemCache[j].m_oData);
                    iRealCount++;
                }
            }
            iStart += i ;

            if ( 0 == iRealCount ) {
                count -= i;
                continue;
            }
            itr = res.begin();

            qry.setParamArray("acct_item_id", &(itr->lAcctItemID), sizeof(AcctItemAddAggrData));
            qry.setParamArray("offer_inst_id", &(itr->lOfferInstID), sizeof(AcctItemAddAggrData));
            qry.setParamArray("serv_id", &(itr->lServID), sizeof(AcctItemAddAggrData));
            qry.setParamArray("acct_id", &(itr->lAcctID), sizeof(AcctItemAddAggrData));
            qry.setParamArray("item_source_id", &(itr->iItemSourceID), sizeof(AcctItemAddAggrData));
            qry.setParamArray("item_class_id", &(itr->iItemClassID), sizeof(AcctItemAddAggrData));
            qry.setParamArray("billing_cycle_id", &(itr->iBillingCycleID), sizeof(AcctItemAddAggrData));
            qry.setParamArray("acct_item_type_id", &(itr->iPayItemTypeID), sizeof(AcctItemAddAggrData));
            qry.setParamArray("charge", &(itr->lCharge), sizeof(AcctItemAddAggrData));
            qry.setParamArray("measure_type", &(itr->iPayMeasure), sizeof(AcctItemAddAggrData));
            qry.setParamArray("pricing_combine_id", &(itr->iCombineID), sizeof(AcctItemAddAggrData));
            qry.setParamArray("state_date", (char**)&(itr->sStateDate), sizeof(AcctItemAddAggrData), 
                              sizeof((itr->sStateDate)));
            qry.setParamArray("operation", &(itr->cOperation), sizeof(AcctItemAddAggrData));
            qry.setParamArray("event_id", &(itr->lEventID), sizeof(AcctItemAddAggrData));
            qry.setParamArray("file_id", &(itr->iFileID), sizeof(AcctItemAddAggrData));
            qry.setParamArray("event_source_type", &(itr->iEventSourceType), sizeof(AcctItemAddAggrData));
            qry.setParamArray("org_id", &(itr->iOrgID), sizeof(AcctItemAddAggrData));
            #ifdef ACCT_ITEM_AGGR_OFFER_ID
            qry.setParamArray("offer_id", &(itr->iOfferID), sizeof(AcctItemAddAggrData));
            #endif
            #ifdef ORG_BILLINGCYCLE
            qry.setParamArray("org_billing_cycle_id", &(itr->m_iOrgBillingCycleID), sizeof(AcctItemAddAggrData));
            #endif

            qry.execute(iRealCount);
            qry.commit();

            count -= i;
            iTotal += iRealCount;
        }
        qry.close();
    } catch (TOCIException &e) {
        qry.close();
        Log::log(0, "\nError Source: %s\nError Message: %s", 
                 e.getErrSrc(), e.getErrMsg() );
    }
    Log::log(0, "共导出缓冲总账信息 %d 条", iTotal);


    return;

}
Beispiel #28
0
void LocalCacheCtl::exportDisctDetail(const char * sTableName){

    vector<DisctDetailCacheData > res;
    vector<DisctDetailCacheData>::iterator itr;
    int count = 0, iRealCount=0, i ;
    int iTotal = 0;
    int iStart = 1;
    char sSQL[1024]={0};

    Log::log(0, "开始导出缓冲优惠明细信息到表%s...", sTableName );
    count = m_poDisctDetailCacheData->getTotal();

    DEFINE_QUERY(qry);
    sprintf(sSQL, " TRUNCATE TABLE %s ", sTableName );
    qry.setSQL(sSQL);
    qry.execute();
    qry.commit();
    qry.close();
    memset(sSQL, 0, sizeof(sSQL) );
    sprintf(sSQL, " INSERT INTO %s(item_disct_seq,item_detail_seq, serv_id, billing_cycle_id,acct_item_type_id,"
            " value, disct_value, add_value, add_disct_value, operation, "
            " event_id, file_id, event_source_type, org_id  ) "
            " VALUES( :item_disct_seq,:item_detail_seq, :serv_id, :billing_cycle_id, :acct_item_type_id,"
            " :value, :disct_value, :add_value, :add_disct_value, CHR(:operation), "
            " :event_id, :file_id, :event_source_type, :org_id ) ", 
            sTableName);
    qry.setSQL(sSQL);

    try {
        while (count) {
            i = count > batchnum ? batchnum : count;
            res.clear();
            iRealCount = 0;
            for (int j = iStart; j< iStart + i; ++j ) {
                if ( m_poDisctDetailCache[j].m_lItemDisctSeq ) {
                    res.push_back(m_poDisctDetailCache[j]);
                    iRealCount++;
                }
            }
            iStart += i ;

            if ( 0 == iRealCount ) {
                count -= i;
                continue;
            }
            itr = res.begin();

            qry.setParamArray("item_disct_seq", &(itr->m_lItemDisctSeq), sizeof(DisctDetailCacheData));
            qry.setParamArray("item_detail_seq", &(itr->m_lItemDetailSeq), sizeof(DisctDetailCacheData));
            qry.setParamArray("serv_id", &(itr->m_lServID), sizeof(DisctDetailCacheData));
            qry.setParamArray("billing_cycle_id", &(itr->m_iBillingCycleID), sizeof(DisctDetailCacheData));
            qry.setParamArray("acct_item_type_id", &(itr->m_iAcctItemTypeID), sizeof(DisctDetailCacheData));
            qry.setParamArray("value", &(itr->m_lValue), sizeof(DisctDetailCacheData));
            qry.setParamArray("disct_value", &(itr->m_lDisctValue), sizeof(DisctDetailCacheData));
            qry.setParamArray("add_value", &(itr->m_lAddValue), sizeof(DisctDetailCacheData));
            qry.setParamArray("add_disct_value", &(itr->m_lAddDisctValue), sizeof(DisctDetailCacheData));
            qry.setParamArray("operation", &(itr->m_cOperation), sizeof(DisctDetailCacheData));
            qry.setParamArray("event_id", &(itr->m_lEventID), sizeof(DisctDetailCacheData));
            qry.setParamArray("file_id", &(itr->m_iFileID), sizeof(DisctDetailCacheData));
            qry.setParamArray("event_source_type", &(itr->m_iEventSourceType), sizeof(DisctDetailCacheData));
            qry.setParamArray("org_id", &(itr->m_iOrgID), sizeof(DisctDetailCacheData));

            qry.execute(iRealCount);
            qry.commit();

            count -= i;
            iTotal += iRealCount;
        }
        qry.close();
    } catch (TOCIException &e) {
        qry.close();
        Log::log(0, "\nError Source: %s\nError Message: %s", 
                 e.getErrSrc(), e.getErrMsg() );
    }
    Log::log(0, "共导出缓冲优惠明细信息 %d 条", iTotal);


    return;
}
Beispiel #29
0
void LocalCacheCtl::exportDisctAggr(const char * sTableName){

    vector<DisctCacheData > res;
    vector<DisctCacheData>::iterator itr;
    int count = 0, iRealCount=0, i ;
    int iTotal = 0;
    int iStart = 1;
    char sSQL[1024]={0};

    Log::log(0, "开始导出缓冲优惠汇总信息到表%s...", sTableName );
    count = m_poDisctCacheData->getTotal();

    DEFINE_QUERY(qry);
    sprintf(sSQL, " TRUNCATE TABLE %s ", sTableName );
    qry.setSQL(sSQL);
    qry.execute();
    qry.commit();
    qry.close();
    memset(sSQL, 0, sizeof(sSQL) );
    sprintf(sSQL, " INSERT INTO %s(item_disct_seq, offer_inst_id, billing_cycle_id"
            #ifdef ORG_BILLINGCYCLE
            ",org_billing_cycle_id"
            #endif
            " ,pricing_combine_id,measure_seq, item_group_id, owner_type, owner_id, value, disct_value,"
            " add_value, add_disct_value, operation, file_id, event_source_type, org_id  ) "
            " VALUES( :item_disct_seq, :offer_inst_id, :billing_cycle_id"
            #ifdef ORG_BILLINGCYCLE
            ", :org_billing_cycle_id"
            #endif
            " ,:pricing_combine_id,:measure_seq, :item_group_id, :owner_type, :owner_id, :value, :disct_value,"
            " :add_value, :add_disct_value, CHR(:operation), :file_id, :event_source_type, :org_id ) ", 
            sTableName);
    qry.setSQL(sSQL);

    try {
        while (count) {
            i = count > batchnum ? batchnum : count;
            res.clear();
            iRealCount = 0;
            for (int j = iStart; j< iStart + i; ++j ) {
                if ( m_poDisctCache[j].m_lItemDisctSeq ) {
                    res.push_back(m_poDisctCache[j]);
                    iRealCount++;
                }
            }
            iStart += i ;

            if ( 0 == iRealCount ) {
                count -= i;
                continue;
            }
            itr = res.begin();

            qry.setParamArray("item_disct_seq", &(itr->m_lItemDisctSeq), sizeof(DisctCacheData));
            qry.setParamArray("offer_inst_id", &(itr->m_lOfferInstID), sizeof(DisctCacheData));
            qry.setParamArray("billing_cycle_id", &(itr->m_iBillingCycleID), sizeof(DisctCacheData));
            #ifdef ORG_BILLINGCYCLE
            qry.setParamArray("org_billing_cycle_id", &(itr->m_iOrgBillingCycleID), sizeof(DisctCacheData));
            #endif
            qry.setParamArray("pricing_combine_id", &(itr->m_iCombineID), sizeof(DisctCacheData));
            qry.setParamArray("measure_seq", &(itr->m_iMeasureID), sizeof(DisctCacheData));
            qry.setParamArray("item_group_id", &(itr->m_iItemGroupID), sizeof(DisctCacheData));
            qry.setParamArray("owner_type", &(itr->m_iInType), sizeof(DisctCacheData));
            qry.setParamArray("owner_id", &(itr->m_lInValue), sizeof(DisctCacheData));
            qry.setParamArray("value", &(itr->m_lValue), sizeof(DisctCacheData));
            qry.setParamArray("disct_value", &(itr->m_lDisctValue), sizeof(DisctCacheData));
            qry.setParamArray("add_value", &(itr->m_lAddValue), sizeof(DisctCacheData));
            qry.setParamArray("add_disct_value", &(itr->m_lAddDisctValue), sizeof(DisctCacheData));
            qry.setParamArray("operation", &(itr->m_cOperation), sizeof(DisctCacheData));
            qry.setParamArray("file_id", &(itr->m_iFileID), sizeof(DisctCacheData));
            qry.setParamArray("event_source_type", &(itr->m_iEventSourceType), sizeof(DisctCacheData));
            qry.setParamArray("org_id", &(itr->m_iOrgID), sizeof(DisctCacheData));

            qry.execute(iRealCount);
            qry.commit();

            count -= i;
            iTotal += iRealCount;
        }
        qry.close();
    } catch (TOCIException &e) {
        qry.close();
        Log::log(0, "\nError Source: %s\nError Message: %s", 
                 e.getErrSrc(), e.getErrMsg() );
    }
    Log::log(0, "共导出缓冲优惠汇总信息 %d 条", iTotal);


    return;
}
Beispiel #30
0
void LocalCacheCtl::exportEvent(const char *sTableName, const int &iWho){


    vector<StdEvent > res;
    vector<StdEvent>::iterator itr;
    int count = 0, iRealCount=0, i ;
    int iTotal = 0;
    int iStart = 1;
    char sSQL[4096]={0};

    Log::log(0, "开始导出事件信息到表%s...", sTableName );
    if ( 0 == iWho) {
        count = m_poEventWaitData->getTotal();
    } else {
        count = m_poEventCacheData->getTotal();
    }

    DEFINE_QUERY(qry);
    sprintf(sSQL, " TRUNCATE TABLE %s ", sTableName );
    qry.setSQL(sSQL);
    qry.execute();
    qry.commit();
    qry.close();
    memset(sSQL, 0, sizeof(sSQL) );
    sprintf(sSQL, " INSERT INTO %s(event_id, bill_flow_id,file_id, billing_cycle_id, event_type_id, billing_area_code, "
            " billing_nbr,billing_org_id, calling_area_code, calling_nbr, called_area_code, called_nbr,"
            " start_date, end_date, duration, serv_id, cust_id, product_id, serv_product_id,"
            " billing_record, offer_id1, offer_id2, offer_id3, offer_id4, offer_id5, "
            " charge1, acct_item_type_id1, bill_measure1, measure_type1, acct_id1, offer_instance_id1,"
            " charge2, acct_item_type_id2, bill_measure2, measure_type2, acct_id2, offer_instance_id2, "
            " item_source_id1, item_source_id2, accu_record) "
            " VALUES(:event_id, :bill_flow_id,:file_id, :billing_cycle_id, :event_type_id, :billing_area_code, "
            " :billing_nbr,:billing_org_id, :calling_area_code, :calling_nbr, :called_area_code, :called_nbr,"
            " DECODE(:start_date,NULL, SYSDATE, TO_DATE(:start_date,'yyyy-mm-dd hh24:mi:ss')), "
            " DECODE(:end_date,NULL, SYSDATE, TO_DATE(:end_date,'yyyy-mm-dd hh24:mi:ss')), "
            " :duration, :serv_id, :cust_id, :product_id, :serv_product_id,"
            " :billing_record, :offer_id1, :offer_id2, :offer_id3, :offer_id4, :offer_id5, "
            " :charge1, :acct_item_type_id1, :bill_measure1, :measure_type1, :acct_id1, :offer_instance_id1,"
            " :charge2, :acct_item_type_id2, :bill_measure2, :measure_type2, :acct_id2, :offer_instance_id2, "
            " :item_source_id1, :item_source_id2, :accu_record ) ", 
            sTableName);
    qry.setSQL(sSQL);

    try {
        while (count) {
            i = count > batchnum ? batchnum : count;
            res.clear();
            iRealCount = 0;
            for (int j = iStart; j< iStart + i; ++j ) {
                if ( 0 == iWho ) {
                    if ( m_poEventWait[j].m_oData.m_lEventID ) {
                        res.push_back(m_poEventWait[j].m_oData);
                        iRealCount++;
                    }
                } else {
                    if ( m_poEventCache[j].m_lEventID ) {
                        res.push_back(m_poEventCache[j]);
                        iRealCount++;
                    }
                }
            }
            iStart += i ;

            if ( 0 == iRealCount ) {
                count -= i;
                continue;
            }
            itr = res.begin();

            qry.setParamArray("event_id", &(itr->m_lEventID), sizeof(StdEvent));
            qry.setParamArray("bill_flow_id", &(itr->m_iFlowID), sizeof(StdEvent));
            qry.setParamArray("file_id", &(itr->m_iFileID), sizeof(StdEvent));
            qry.setParamArray("billing_cycle_id", &(itr->m_iBillingCycleID), sizeof(StdEvent));
            qry.setParamArray("event_type_id", &(itr->m_iEventTypeID), sizeof(StdEvent));
            qry.setParamArray("billing_area_code", (char**)&(itr->m_sBillingAreaCode), sizeof(StdEvent), 
                              sizeof(itr->m_sBillingAreaCode) );
            qry.setParamArray("billing_nbr", (char**)&(itr->m_sBillingNBR), sizeof(StdEvent), 
                              sizeof(itr->m_sBillingNBR));
            qry.setParamArray("billing_org_id", &(itr->m_iBillingOrgID), sizeof(StdEvent));
            qry.setParamArray("calling_area_code", (char**)&(itr->m_sCallingAreaCode), sizeof(StdEvent),
                              sizeof(itr->m_sCallingAreaCode));
            qry.setParamArray("calling_nbr", (char**)&(itr->m_sCallingNBR), sizeof(StdEvent),
                              sizeof(itr->m_sCallingNBR) );
            qry.setParamArray("called_area_code", (char**)&(itr->m_sCalledAreaCode), sizeof(StdEvent),
                              sizeof(itr->m_sCalledAreaCode) );
            qry.setParamArray("called_nbr", (char**)&(itr->m_sCalledNBR), sizeof(StdEvent), 
                              sizeof(itr->m_sCalledNBR) );
            qry.setParamArray("start_date", (char**)&(itr->m_sStartDate), sizeof(StdEvent),
                              sizeof(itr->m_sStartDate));
            qry.setParamArray("end_date", (char**)&(itr->m_sEndDate), sizeof(StdEvent), 
                              sizeof(itr->m_sEndDate) );
            qry.setParamArray("duration", &(itr->m_lDuration), sizeof(StdEvent));
            qry.setParamArray("serv_id", &(itr->m_iServID), sizeof(StdEvent));
            qry.setParamArray("cust_id", &(itr->m_iFileID), sizeof(StdEvent));
            qry.setParamArray("product_id", &(itr->m_iProdID), sizeof(StdEvent));
            qry.setParamArray("serv_product_id", &(itr->m_iServProdID), sizeof(StdEvent));
            qry.setParamArray("billing_record", (char**)&(itr->m_sBillingRecord), sizeof(StdEvent),
                              sizeof(itr->m_sBillingRecord));
            qry.setParamArray("offer_id1", &(itr->m_lOffers[0]), sizeof(StdEvent));
            qry.setParamArray("offer_id2", &(itr->m_lOffers[1]), sizeof(StdEvent));
            qry.setParamArray("offer_id3", &(itr->m_lOffers[2]), sizeof(StdEvent));
            qry.setParamArray("offer_id4", &(itr->m_lOffers[3]), sizeof(StdEvent));
            qry.setParamArray("offer_id5", &(itr->m_lOffers[4]), sizeof(StdEvent));
            qry.setParamArray("charge1", &(itr->m_oChargeInfo[0].m_lCharge), sizeof(StdEvent));
            qry.setParamArray("acct_item_type_id1", &(itr->m_oChargeInfo[0].m_iAcctItemTypeID), sizeof(StdEvent));
            qry.setParamArray("bill_measure1", &(itr->m_oChargeInfo[0].m_lBillMeasure), sizeof(StdEvent));
            qry.setParamArray("measure_type1", &(itr->m_oChargeInfo[0].m_iMeasureType), sizeof(StdEvent));
            qry.setParamArray("acct_id1", &(itr->m_oChargeInfo[0].m_lAcctID), sizeof(StdEvent));
            qry.setParamArray("offer_instance_id1", &(itr->m_oChargeInfo[0].m_lOfferInstID), sizeof(StdEvent));
            qry.setParamArray("item_source_id1", &(itr->m_oChargeInfo[0].m_iItemSourceID), sizeof(StdEvent));
            qry.setParamArray("charge2", &(itr->m_oChargeInfo[1].m_lCharge), sizeof(StdEvent));
            qry.setParamArray("acct_item_type_id2", &(itr->m_oChargeInfo[1].m_iAcctItemTypeID), sizeof(StdEvent));
            qry.setParamArray("bill_measure2", &(itr->m_oChargeInfo[1].m_lBillMeasure), sizeof(StdEvent));
            qry.setParamArray("measure_type2", &(itr->m_oChargeInfo[1].m_iMeasureType), sizeof(StdEvent));
            qry.setParamArray("acct_id2", &(itr->m_oChargeInfo[1].m_lAcctID), sizeof(StdEvent));
            qry.setParamArray("offer_instance_id2", &(itr->m_oChargeInfo[1].m_lOfferInstID), sizeof(StdEvent));
            qry.setParamArray("item_source_id2", &(itr->m_oChargeInfo[1].m_iItemSourceID), sizeof(StdEvent));
            qry.setParamArray("accu_record", (char**)&(itr->m_sAccuRecord), sizeof(StdEvent), 
                              sizeof(itr->m_sAccuRecord) );

            qry.execute(iRealCount);
            qry.commit();

            count -= i;
            iTotal += iRealCount;
        }
        qry.close();
    } catch (TOCIException &e) {
        qry.close();
        Log::log(0, "\nError Source: %s\nError Message: %s", 
                 e.getErrSrc(), e.getErrMsg() );
    }
    Log::log(0, "共导出事件信息 %d 条", iTotal);

}