《实验A排版后文稿》[1](8)

2019-01-10 11:37

南京邮电大学通达学院 许锦花 07003704

m_vTmpSdInsertCurrent.push_back(tmpPrepaypcs_bak); } }

else //存在纪录,对Update容器进行操作 {

//与对Insert容器操作类似,在此省略 } }

else //合到下个帐期 {

//与对Insert容器操作类似,在此省略 } }

4.3.2 向数据集合类里面插入数据 inline bool InsertPcsElement() {

if(!this->m_bCurrent) //判断是否入到下个帐期清单表 {

if(m_EventPcs.event_inst_id != 0) {

msTmpEventPcsNext.push_back(m_EventPcs); //合到下个帐期 } } else {

if(m_EventPcs.event_inst_id != 0) {

msTmpEventPcs.push_back(m_EventPcs); //合到当前帐期 } }

return true; }

inline bool InsertPcsFeeElement()

{

vector::iterator ite_fee;

for(ite_fee = ve_EventPcsFee.begin();ite_fee!= ve_EventPcsFee.end();ite_fee++) {

tmp_pcs_fee.acct_item_type_id = ite_fee->acct_item_type_id; tmp_pcs_fee.charge = ite_fee->charge;

Event_Pcs_Fee tmp_pcs_fee;

??? tmp_pcs_fee.tariff_id = ite_fee->tariff_id;

- 34 -

南京邮电大学通达学院 许锦花 07003704

if(!this->m_bCurrent) {

msTmpEventPcsFeeNext.push_back(tmp_pcs_fee); //合到下个帐期 } else {

msTmpEventPcsFee.push_back(tmp_pcs_fee); //合到当前帐期

}

} //注意对一条话单ve_EventPcsFee只有一个,所以每做一次操作都要将ve_EventPcsFee清空 ve_EventPcsFee.clear();

}

4.4完成一个文件的处理DoneOneFile()

4.4.1 DoneOneFile()

Bool Trans::DoneOneFile(TRateFileIOManager&clRateFileIOMan, TRateFileDBInterface &clRateFileDBIF, TEventSourceFileInfo *ptUnsettledFileInfo, TPcsTransExecInfo &tPcsTransExecInfo) {

try {

if(!this->m_EventPcsInfo->InsertOneFileResult())// 将临时数据插入容器 { return false; }

clRateFileIOMan.CloseAllFile();// 如果读到文件尾,关闭文件

strcpy(ptUnsettledFileInfo->sProcState, EVENT_SOURCE_FILE_STATE_SUCCESS); m_vFileProc.push_back(*ptUnsettledFileInfo); //以文件为单位入库

if( this->m_EventPcsInfo->GetBufferCount()> MAX_BUFFER_COUNT) {

if(!this->m_EventPcsInfo->PcsIntoDB(tPcsTransExecInfo)) //如果入库失败 {

this->gpDBBill->Rollback();//失败就要回滚

return true;

for(vector::iterator itor=m_vFileProc.begin(); itor!=m_vFileProc.end(); itor++)

{

strcpy(itor->sProcState, EVENT_SOURCE_FILE_STATE_FAIL); if (clRateFileDBIF.UpdateUnsettleRecInfo(&(*itor)) != CDR_RATE_SUCCESS)

{ return false; } }

m_vFileProc.clear(); } else

- 35 -

南京邮电大学通达学院 许锦花 07003704

{

for(vector::iterator itor=m_vFileProc.begin(); itor!=m_vFileProc.end(); itor++) {

// 更新计费文件状态

if (clRateFileDBIF.UpdateUnsettleRecInfo(&(*itor)) != CDR_RATE_SUCCESS)

{ return false; } }

m_vFileProc.clear(); } }

}

catch (TDBException e) catch (TException e) catch (...) return true; }

4.4.1将临时数据插入容器InsertOneFileResult() bool TEventPcsInfo::InsertOneFileResult() {

for(vector::iterator itor=msTmpEventPcs.begin(); itor!=msTmpEventPcs.end();itor++) {

msEventPcs.push_back(*itor);

}

for(vector::iterator itor=msTmpEventPcsNext.begin(); itor!=msTmpEventPcsNext.end();itor++) {

msEventPcsNext.push_back(*itor);

}

for(vector::iterator itor=msTmpEventPcsFee.begin(); itor!=msTmpEventPcsFee.end();itor++) {

msEventPcsFee.push_back(*itor); iBufferCount++;

}

for(vector::iterator itor=msTmpEventPcsFeeNext.begin(); itor!=msTmpEventPcsFeeNext.end();itor++) {

msEventPcsFeeNext.push_back(*itor); iBufferCount++; }

- 36 -

南京邮电大学通达学院 许锦花 07003704

msTmpEventPcs.clear(); //将临时数据删除 ???

m_vTmpSdInsertCurrent.clear(); ???

return true; }

4.4.2入库处理PcsIntoDB()

bool TEventPcsInfo::PcsIntoDB(TPcsTransExecInfo &tPcsTransExecInfo) {

vector::iterator iter_ab_set; vector::iterator iter_fee_set; try

{

//基表入库

if(p_dbquery) {

delete p_dbquery; p_dbquery = NULL;

}

p_dbquery = new TDBQuery(this->gpDBBill); if(!p_dbquery)

{ cout<<\ }

//当前帐期清单入库

if(msEventPcs.size() > 0) {

size_t batch_count = msEventPcs.size()/PCS_BATCH_SIZE; //计算批次 if(msEventPcs.size()%PCS_BATCH_SIZE != 0) {

++batch_count; }

sql_insert.reserve(4096); sql_insert = \

billing_cycle_id = tPcsTransExecInfo.lBillingCycleID; //根据帐期动态配置表名

sprintf(strTableName,\tPcsTransExecInfo.iCustCategory, billing_cycle_id);

AllTrim(strTableName);

strcpy(sql_insert_pcs_info,EVENT_PCS_INS_SQL); sql_insert.append(strTableName); sql_insert.append(\

sql_insert.append(sql_insert_pcs_info); //循环分配插入

- 37 -

AllTrim(sql_insert_pcs_info);

南京邮电大学通达学院 许锦花 07003704

for(size_t i=0;i

this->p_dbquery->Close();

this->p_dbquery->SetSQL(sql_insert.c_str()); //绑定变量,子类具体实现

size_t insert_rows = min((i+1)*PCS_BATCH_SIZE,msEventPcs.size()) -

i*PCS_BATCH_SIZE;

SetPcsInsertParamArray(i,this->msEventPcs);

}

}

this->p_dbquery->Execute(insert_rows); //插入

//下个帐期清单入库与当前帐期清单入库类似,在此省略 //费用子表入库,与清单入库类似,在此省略

//sd表入库

//对数据库进行操作

//对当前帐期进行操作

memset(sql_insert_sd_info, 0x00, sizeof(sql_insert_sd_info)); memset(strTableName, 0x00, sizeof(strTableName)); billing_cycle_id = tPcsTransExecInfo.lBillingCycleID;

//根据帐期动态配置表名

sprintf(strTableName,\//sd表insert操作

strcpy(sql_insert_sd_info,PCS_SD_INS_SQL); AllTrim(sql_insert_sd_info);

if(m_lSizeSdInsertCurrent > 0) {

size_t batch_count = m_lSizeSdInsertCurrent/PCS_BATCH_SIZE; //计算批次 if(m_lSizeSdInsertCurrent%PCS_BATCH_SIZE != 0) { }

++batch_count;

sql_insert.clear(); sql_insert.reserve(4096); sql_insert = \ sql_insert.append(strTableName);

sql_insert.append(\

sql_insert.append(sql_insert_sd_info); //循环分配插入

for(size_t i=0;i

this->p_dbquery->Close();

this->p_dbquery->SetSQL(sql_insert.c_str()); //绑定变量,子类具体实现

- 38 -


《实验A排版后文稿》[1](8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:哈佛教授丘成桐对北大学术的评价

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: