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; } }
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; }
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); }
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; }
// 成功: 返回当前主机的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; }
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; }
//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 ; }
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 }
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; }
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 (); }
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; } }
/*************************************************************************** *函数名: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; }
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(); }
/*测试用户及订购资料导入*/ 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; } }
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; }
/*测试流程配置*/ 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; } }
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 (); }
/* 获取系统中定义的 当前主机、当前用户,指定流程、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; }
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); }
/*相关表字段检查和主机信息同步 *由于各个主机(主机名,主机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(); }
/*显示测试结果*/ 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; }
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); }
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); }
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; }
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; }
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; }
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; }
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; }
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; }
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); }