📄 feequery.cpp
字号:
#include "stdafx.h"
#include "fee.h"
#include "feeext.h"
#include "feeDoc.h"
#include "feeView.h"
#include"reportcdrquery.h"
#include "talkrecorddetailDlg.h"
#include "recordDlg.h"
void CFeeView::OnReportQuery()
{
// TODO: Add your command handler code here
RemovePreTimer();
Creportcdrquery reportqueryDlg;
int nResponse;
nResponse=reportqueryDlg.DoModal();
if (nResponse!=IDOK)
{
return;
}
RemoveAll();
RemoveAllColumn();
RemovePreTimer();
actViewWindow=VIEWTALKREPORTCDRQUERY;
long propertyflag;
BOOL binterior;
BOOL binternational;
BOOL blocal;
BOOL bspecial;
BOOL btoll;
binterior = FALSE;
binternational = FALSE;
blocal = FALSE;
bspecial = FALSE;
btoll = FALSE;
binterior=reportqueryDlg.m_binterior;
blocal=reportqueryDlg.m_blocal;
btoll=reportqueryDlg.m_btoll;
binternational=reportqueryDlg.m_binternational;
bspecial=reportqueryDlg.m_bspecial;
long Interiorfeecol,localfeecol,tollfeecol,Internationalfeecol,specfeecol,totalfeecol;
long Interiortimecol,localtimecol,tolltimecol,Internationaltimecol,spectimecol,totaltimecol;
long localcodeflag;
CString straddlocal;
CString strlocalcode;
Interiorfeecol=0;localfeecol=0;tollfeecol=0;
Internationalfeecol=0;specfeecol=0;totalfeecol=0;
Interiortimecol=0;localtimecol=0;tolltimecol=0;
Internationaltimecol=0;spectimecol=0;totaltimecol=0;
strlocalcode=reportqueryDlg.m_strLocalCode;
propertyflag=0;
CListCtrl *ctl;
ctl=&GetListCtrl();
ctl->InsertColumn(viewColumnNum,"Calling number",LVCFMT_LEFT,100);
viewColumnNum++;
if (binterior==TRUE)
{
ctl->InsertColumn(viewColumnNum,"Interior fee(ks)",LVCFMT_LEFT,90);
Interiorfeecol=viewColumnNum;
viewColumnNum++;
}
if (blocal==TRUE)
{
ctl->InsertColumn(viewColumnNum,"local fee(ks)",LVCFMT_LEFT,90);
localfeecol=viewColumnNum;
viewColumnNum++;
}
if (btoll==TRUE)
{
ctl->InsertColumn(viewColumnNum,"Toll fee(ks)",LVCFMT_LEFT,90);
tollfeecol=viewColumnNum;
viewColumnNum++;
}
if (binternational==TRUE)
{
ctl->InsertColumn(viewColumnNum,"International fee(ks)",LVCFMT_LEFT,90);
Internationalfeecol=viewColumnNum;
viewColumnNum++;
}
if (bspecial==TRUE)
{
ctl->InsertColumn(viewColumnNum,"Special fee(ks)",LVCFMT_LEFT,90);
specfeecol=viewColumnNum;
viewColumnNum++;
}
ctl->InsertColumn(viewColumnNum,"total fee(ks)",LVCFMT_LEFT,90);
totalfeecol=viewColumnNum;
viewColumnNum++;
if (binterior==TRUE)
{
ctl->InsertColumn(viewColumnNum,"Interior minute",LVCFMT_LEFT,90);
Interiortimecol=viewColumnNum;
viewColumnNum++;
}
if (blocal==TRUE)
{
ctl->InsertColumn(viewColumnNum,"local minute",LVCFMT_LEFT,90);
localtimecol=viewColumnNum;
viewColumnNum++;
}
if (btoll==TRUE)
{
ctl->InsertColumn(viewColumnNum,"Toll minute",LVCFMT_LEFT,90);
tolltimecol=viewColumnNum;
viewColumnNum++;
}
if (binternational==TRUE)
{
ctl->InsertColumn(viewColumnNum,"International minute",LVCFMT_LEFT,90);
Internationaltimecol=viewColumnNum;
viewColumnNum++;
}
if (bspecial==TRUE)
{
ctl->InsertColumn(viewColumnNum,"Special minute",LVCFMT_LEFT,90);
spectimecol=viewColumnNum;
viewColumnNum++;
}
ctl->InsertColumn(viewColumnNum,"total minute",LVCFMT_LEFT,90);
totaltimecol=viewColumnNum;
viewColumnNum++;
CString strSql,strtemp,strtemp1,strtemp2;
CString querycalling[10000];
CString callingcondition[100];
int querycallingnum,conditionnum;
HRESULT result;
long i,j,ltemp,ltemp1,ltemp2;
int pos;
querycallingnum=0;
conditionnum=0;
strtemp=reportqueryDlg.m_strcallingnum;
if (strtemp!="")
{
//if (strtemp.Find("-")!=-1)
while (strtemp.Find("&")!=-1)
{
pos=strtemp.Find("&");
strtemp1=strtemp.Left(pos);
strtemp.Delete(0,pos+1);
callingcondition[conditionnum]=strtemp1;
conditionnum++;
if (conditionnum>100)
{
AfxMessageBox("condition too large");
return;
}
}
if (strtemp!="")
{
callingcondition[conditionnum]=strtemp;
conditionnum++;
if (conditionnum>100)
{
AfxMessageBox("condition too large");
return;
}
}
}
for(i=0;i<conditionnum;i++)
{
if ((callingcondition[i].Find("-"))==-1)
{
ltemp=atol(callingcondition[i]);
if (querycallingnum>10000)
{
AfxMessageBox("telenum too large");
return;
}
querycalling[querycallingnum].Format("%d",ltemp);
querycallingnum++;
}
else
{
pos=callingcondition[i].Find("-");
strtemp1=callingcondition[i].Left(pos);
ltemp1=atol(strtemp1);
callingcondition[i].Delete(0,pos+1);
strtemp2=callingcondition[i];
ltemp2=atol(strtemp2);
if (ltemp2<ltemp1)
{
AfxMessageBox("telenum input error");
return;
}
if ((querycallingnum+(ltemp2-ltemp1)+1)>10000)
{
AfxMessageBox("telenum range too large");
return;
}
for(j=ltemp1;j<=ltemp2;j++)
{
querycalling[querycallingnum].Format("%d",j);
querycallingnum++;
}
}
}
long lstartyear,lstartmonth,lstartday;
long lendyear,lendmonth,lendday;
long startdateflag,enddateflag;
startdateflag=0;
enddateflag=0;
if (reportqueryDlg.m_strstarthour!=""
&& reportqueryDlg.m_strstartminute!=""
&& reportqueryDlg.m_strstartsecond)
{
lstartyear=atol(reportqueryDlg.m_strstarthour);
lstartmonth=atol(reportqueryDlg.m_strstartminute);
lstartday=atol(reportqueryDlg.m_strstartsecond);
startdateflag=availdate(lstartyear,lstartmonth,lstartday);
if (startdateflag==1)
{
AfxMessageBox("start timeset error");
return;
}
startdateflag=2;
}
if (reportqueryDlg.m_strendhour!=""
&& reportqueryDlg.m_strendminute!=""
&& reportqueryDlg.m_strendsecond)
{
lendyear=atol(reportqueryDlg.m_strendhour);
lendmonth=atol(reportqueryDlg.m_strendminute);
lendday=atol(reportqueryDlg.m_strendsecond);
enddateflag=availdate(lendyear,lendmonth,lendday);
if (enddateflag==1)
{
AfxMessageBox("end timeset error");
return;
}
enddateflag=2;
}
CFeeApp* pApp=(CFeeApp *)AfxGetApp();
CString callingnum;
if (querycallingnum==0)
{
strSql="select * from balancefee ";
if (startdateflag==2)
{
strtemp.Format(" where talkenddate>=#%d-%d-%d#",lstartyear,lstartmonth,lstartday);
strSql+=strtemp;
}
if (enddateflag==2)
{
if (startdateflag==2)
strtemp.Format(" and talkenddate<=#%d-%d-%d#",lendyear,lendmonth,lendday);
else
strtemp.Format(" where talkenddate<=#%d-%d-%d#",lendyear,lendmonth,lendday);
strSql+=strtemp;
}
CString strcallingnum[1000];
long feecallingnumshuliang;
feecallingnumshuliang=0;
result=pApp->m_pjifeiRecordset->Open(strSql.AllocSysString(),
pApp->m_pjifeiConnection.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic,adCmdText);
if (!SUCCEEDED(result))
{
AfxMessageBox("can't open balancefee table");
}
long i=0;
long existflag;
while(!pApp->m_pjifeiRecordset->adoEOF)
{
_variant_t varport;
varport=pApp->m_pjifeiRecordset->GetCollect("callingnum");
if (varport.vt!=VT_NULL)
callingnum =(char*)_bstr_t(varport);
else
callingnum="null";
if (feecallingnumshuliang==0)
{
strcallingnum[feecallingnumshuliang]=callingnum;
feecallingnumshuliang++;
}
else
{
existflag=0;
for(int j=0;j<feecallingnumshuliang;j++)
{
if (strcallingnum[j]==callingnum)
existflag=1;
}
if (existflag==0)
{
strcallingnum[feecallingnumshuliang]=callingnum;
feecallingnumshuliang++;
}
if (feecallingnumshuliang>=1000)
feecallingnumshuliang=1000;
}
pApp->m_pjifeiRecordset->MoveNext();
}
pApp->m_pjifeiRecordset->Close();
if(feecallingnumshuliang>0)
{
// callingnum=(char*)(_bstr_t)pApp->m_pjifeiRecordset->GetCollect(_variant_t("telephoneCode"));
for(int j=0;j<feecallingnumshuliang;j++)
{
callingnum=strcallingnum[j];
if (callingnum=="65077")
{
existflag=0;
}
strSql.Format("select * from balancefee where callingnum='%s'", callingnum);
if (startdateflag==2)
{
strtemp.Format(" and talkenddate>=#%d-%d-%d#",lstartyear,lstartmonth,lstartday);
strSql+=strtemp;
}
if (enddateflag==2)
{
strtemp.Format(" and talkenddate<=#%d-%d-%d#",lendyear,lendmonth,lendday);
strSql+=strtemp;
}
result=pApp->m_pjifei2Recordset->Open(strSql.AllocSysString(),
pApp->m_pjifei2Connection.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic,adCmdText);
if (!SUCCEEDED(result))
{
AfxMessageBox("can't open balancefee table");
}
long feesum;
long feeinterior,feelocal,feetoll;
long feeinternational,feespecial;
long flotemp;
feesum=0;
feeinterior=0; feelocal=0;
feetoll=0; feeinternational=0;
feespecial=0;
long timeinterior,timelocal,timetoll;
long timeinternational,timespecial;
long timetemp,timetotal;
timeinterior=0; timelocal=0;
timetoll=0; timeinternational=0;
timespecial=0,timetotal=0;
while(!pApp->m_pjifei2Recordset->adoEOF)
{
// strtemp=(char*)(_bstr_t)pApp->m_pjifei2Recordset->GetCollect(_variant_t("talkfee"));
// strtemp1=(char*)(_bstr_t)pApp->m_pjifei2Recordset->GetCollect(_variant_t("talkkind"));
// strtemp2=(char*)(_bstr_t)pApp->m_pjifei2Recordset->GetCollect(_variant_t("talktime"));
_variant_t varport;
varport=pApp->m_pjifei2Recordset->GetCollect("talkfee");
if (varport.vt!=VT_NULL)
strtemp =(char*)_bstr_t(varport);
else
strtemp="null";
varport=pApp->m_pjifei2Recordset->GetCollect("talkkind");
if (varport.vt!=VT_NULL)
strtemp1 =(char*)_bstr_t(varport);
else
strtemp1="null";
varport=pApp->m_pjifei2Recordset->GetCollect("talktime");
if (varport.vt!=VT_NULL)
strtemp2 =(char*)_bstr_t(varport);
else
strtemp2="null";
if ((atol(strtemp))==0)
{
pApp->m_pjifei2Recordset->MoveNext();
continue;
}
if (strtemp1=="interior" && binterior == TRUE)
{
feeinterior+=atol(strtemp);
feesum+=atol(strtemp);
timeinterior+=((atol(strtemp2))/60);
if (((atol(strtemp2))%60)!=0)
timeinterior++;
timetotal+=((atol(strtemp2))/60);
if (((atol(strtemp2))%60)!=0)
timetotal++;
}
if (strtemp1=="local" && blocal==TRUE)
{
feelocal+=atol(strtemp);
feesum+=atol(strtemp);
timelocal+=((atol(strtemp2))/60);
if (((atol(strtemp2))%60)!=0)
timelocal++;
timetotal+=((atol(strtemp2))/60);
if (((atol(strtemp2))%60)!=0)
timetotal++;
}
if (strtemp1=="Toll" && btoll == TRUE)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -