📄 cdrreadforbill.cpp
字号:
char szTab1[20],szTab2[20]; if(!GetSQL(szTableDate,szTableDate2,szSQLWhere,szSeqId, szTab1, szTab2, SQLmcdr)) return false; CDate date(szTab1, szTab2);// CDate date(szTableDate, szTableDate2); date.Calculate(); int all = date.GetCount(); //[3]读取列表 for(int kk=0;kk<all;kk++) { char dString[20]; string dString2 = date.GetAt(kk); snprintf(dString, 20, "%s", dString2.c_str()); char szTableName[LEN_TABLENAME+1]; snprintf(szTableName, LEN_TABLENAME+1, "OMCDR%s", dString); S_OMCDR_LOAD* pCDR = NULL; memset(&m_Out,0,sizeof(m_Out)); if(DbOMCDRSelect((char*)szTableName, (char*)SQLmcdr, &pCDR, &nOutNumber1, &m_Out)) { return false; } if(nOutNumber1>0) { m_nCdrs.push_back(pCDR); m_nCountCdrs.push_back(nOutNumber1); } for(int i=0;i<nOutNumber1;i++) { S_OMCDR_LOAD* pCDR2 = &pCDR[i]; char *szSeqId = pCDR2->SeqId; pCDR2->pChangeLocation = NULL; pCDR2->nChangeLocation = 0; pCDR2->RecordType = sgsnMMRecord; snprintf(szTableName, LEN_TABLENAME+1, "LCLOC_OM%s", dString); if(DbLCLOCSelect(szTableName, szSeqId, &pCDR->pChangeLocation, &pCDR->nChangeLocation, &m_Out) != 0) { return false; } } } //[4]写上输出结果 //[4-1]计算总长度 int nCdrs = m_nCountCdrs.size(); for(i=0;i<nCdrs;i++) *nOutNumber+= m_nCountCdrs.at(i); //[4-2]分配空间 S_OMCDR_LOAD *ppCDR2 = NULL; if(*nOutNumber>0) ppCDR2 = (S_OMCDR_LOAD*)malloc(*nOutNumber* SIZE_S_OMCDR_LOAD); //[4-3]组装结构 int index=0; for(i=0,index=0;i<nCdrs;i++) { S_OMCDR_LOAD* p = m_nCdrs.at(i); if(p != NULL) { int size = m_nCountCdrs.at(i); memcpy(&ppCDR2[index], p, size* SIZE_S_OMCDR_LOAD); index+=size; if(p->pChangeLocation != NULL) { free(p->pChangeLocation); p->pChangeLocation = NULL; } free(p); p = NULL; } } *ppCDR = ppCDR2; //[4-4]释放空间 m_nCdrs.clear(); //count m_nCountCdrs.clear(); return true;}//数据从原始的表OMOCDR中查询bool C_CDRReadForBill::SelectMOCDR( const char* szTableDate, const char* szTableDate2, const char* szSQLWhere, char *szSeqId,S_OMOCDR** ppCDR, int *nOutNumber){ int i; int result; //List vector<S_OMOCDR*> m_nCdrs; //count vector<int> m_nCountCdrs; int nOutNumber1; int j; //[1]返回值设置为0 *nOutNumber=0; //[2]计算时间段 char szTab1[20],szTab2[20]; if(!GetSQL(szTableDate,szTableDate2,szSQLWhere,szSeqId, szTab1, szTab2, SQLmocdr)) return false; CDate date(szTab1, szTab2);// CDate date(szTableDate, szTableDate2); date.Calculate(); int all = date.GetCount(); //cout << "######" << all << endl; //[3]读取列表 for(int kk=0;kk<all;kk++) { char dString[20]; string dString2 = date.GetAt(kk); snprintf(dString, 20, "%s", dString2.c_str()); char szTableName[LEN_TABLENAME+1]; snprintf(szTableName, LEN_TABLENAME+1, "OMOCDR%s", dString); S_OMOCDR* pCDR = NULL; memset(&m_Out,0,sizeof(m_Out)); if(DbOMOCDRSelect((char*)szTableName, (char*)SQLmocdr, &pCDR, &nOutNumber1, &m_Out)) { return false; } if(nOutNumber1>0) { m_nCdrs.push_back(pCDR); m_nCountCdrs.push_back(nOutNumber1); } } //[4]写上输出结果 //[4-1]计算总长度 int nCdrs = m_nCountCdrs.size(); for(i=0;i<nCdrs;i++) *nOutNumber+= m_nCountCdrs.at(i); //[4-2]分配空间 S_OMOCDR *ppCDR2 = NULL; if(*nOutNumber>0) ppCDR2 = (S_OMOCDR*)malloc(*nOutNumber* SIZE_S_OMOCDR); //[4-3]组装结构 int index=0; for(i=0,index=0;i<nCdrs;i++) { S_OMOCDR* p = m_nCdrs.at(i); if(p != NULL) { int size = m_nCountCdrs.at(i); memcpy(&ppCDR2[index], p, size* SIZE_S_OMOCDR); index+=size; free(p); p = NULL; } } *ppCDR = ppCDR2; //[4-4]释放空间 m_nCdrs.clear(); //count m_nCountCdrs.clear(); return true;}//数据从原始的表OMTCDR中查询bool C_CDRReadForBill::SelectMTCDR( const char* szTableDate, const char* szTableDate2, const char* szSQLWhere, char *szSeqId,S_OMTCDR** ppCDR, int *nOutNumber){ int i; int result; //List vector<S_OMTCDR*> m_nCdrs; //count vector<int> m_nCountCdrs; int nOutNumber1; //int j; //[1]返回值设置为0 *nOutNumber=0; //[2]计算时间段 char szTab1[20],szTab2[20]; if(!GetSQL(szTableDate,szTableDate2,szSQLWhere,szSeqId, szTab1, szTab2, SQLmtcdr)) return false; CDate date(szTab1, szTab2);// CDate date(szTableDate, szTableDate2); date.Calculate(); int all = date.GetCount(); //cout << "######<>#############" << all << endl; //[3]读取列表 int kk; for(kk=0;kk<all;kk++) { char szTableName[LEN_TABLENAME+1]; char dString[20]; string dString2 = date.GetAt(kk); snprintf(dString, 20, "%s", dString2.c_str()); snprintf(szTableName, LEN_TABLENAME+1, "OMTCDR%s", dString); S_OMTCDR* pCDR = NULL; memset(&m_Out,0,sizeof(m_Out)); if(DbOMTCDRSelect((char*)szTableName, (char*)SQLmtcdr, &pCDR, &nOutNumber1, &m_Out)) { cout << "#13333" << endl; return false; } if(nOutNumber1>0) { m_nCdrs.push_back(pCDR); m_nCountCdrs.push_back(nOutNumber1); } for(int i=0;i<nOutNumber1;i++) { S_OMTCDR* pCDR2 = &pCDR[i]; pCDR2->RecordType = sgsnSMTRecord; } } //[4]写上输出结果 //[4-1]计算总长度 int nCdrs = m_nCountCdrs.size(); for(i=0;i<nCdrs;i++) *nOutNumber+= m_nCountCdrs.at(i); //[4-2]分配空间 S_OMTCDR *ppCDR2 = NULL; if(*nOutNumber>0) { ppCDR2 = (S_OMTCDR*)malloc(*nOutNumber* SIZE_S_OMTCDR); } //[4-3]组装结构 int index=0; for(i=0,index=0;i<nCdrs;i++) { S_OMTCDR* p = m_nCdrs.at(i); if(p != NULL) { int size = m_nCountCdrs.at(i); memcpy(&ppCDR2[index], p, size* SIZE_S_OMTCDR); index+=size; free(p); p = NULL; } } *ppCDR = ppCDR2; //[4-4]释放空间 m_nCdrs.clear(); //count m_nCountCdrs.clear(); return true;}void C_CDRReadForBill::Test(){}bool C_CDRReadForBill::BsFileInsert(S_BSFILE* p){ char TableName[LEN_TABLENAME+1]; char szTableDate[20]; snprintf(szTableDate, 20, "%s", GetSysdate()); snprintf(TableName, LEN_TABLENAME+1, "BSFILE%s", szTableDate); snprintf(p->TableName, LEN_TABLENAME+1, "%s",TableName); DbBsFileInsert(p); printf("!Table=%s:Seq=%s!\n", p->TableName, p->SeqId); //Commit(); return true;}bool C_CDRReadForBill::CdrFileInsert(S_CDRFILE* p, int nNumber){ printf("C_CDRReadForBill::CdrFileInsert 1\n"); printf("C_CDRReadForBill::CdrFileInsert 2 '%s'\n", p->FileTable); char TableName[LEN_TABLENAME+1]; char szTableDate[31]; //时间修改成文件对应的表 snprintf(szTableDate, 31, "%s", &p->FileTable[6]);//GetSysdate()); snprintf(TableName, LEN_TABLENAME+1, "LCDRFILE_%s", szTableDate); printf("C_CDRReadForBill::CdrFileInsert 3 '%s' '%s'\n", szTableDate, TableName);// for(int i=0;i<nNumber;i++) { snprintf(p->TableName, LEN_TABLENAME+1, "%s",TableName); printf("C_CDRReadForBill::CdrFileInsert 4 p[0]='%s'\n", p->TableName); DbCdrFileInsert(p); } //#### //Commit(); printf("C_CDRReadForBill::CdrFileInsert 5\n"); return true;}void C_CDRReadForBill::Test2(){ for(int i=0;i<20;i++) { S_BSFILE bs; memset(&bs,0,sizeof(bs)); snprintf(bs.FileLoc,4001,"../bs/bill/CGF.ALCATEL#SGSNCDR-3.20060724-151115.172#21#4#1!"); bs.RuleId[0] = '2'; BsFileInsert(&bs); S_CDRFILE p[2]; memset(&p[0], 0, sizeof(p)); int cc=1; for(int i=0;i<cc;i++) { p[i].CDRType[0]='1'; snprintf(p[i].CDRTable,30,"SCDR02020022%d", i); snprintf(p[i].FileTable,31,"%s", bs.TableName); snprintf(p[i].FileId,21,"%s", bs.SeqId); p[i].SeqId[0]='222'; } CdrFileInsert(&p[0], cc); Commit(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -