📄 commucationview.cpp
字号:
for(j=0;j<number;j++)
{
temp="0"+temp;
}
pDC->TextOut(1097,450,temp);
pDC->SelectObject(pOldFont);
for(j=0;j<7;j++)
{
file.Seek(j*35,CFile::begin);
file.Write("0000 00000000 000000.00 000000.00",33);
}
file.Seek(402,CFile::begin);
file.Write("000",3);
file.Close();
}
else if(m_Report==2)
{
//打印房号
str=m_Result.m_Room.Left(2);
str=str+"号话亭";
pDC->TextOut(120,50,str);
pDC->TextOut(905,50,str);
//打印附加费
str=m_Result.m_Add;
str="话单附加费: "+str+"元";
pDC->TextOut(300,50,str);
pDC->TextOut(1085,50,str);
//打印日期
pDC->TextOut(480,0,m_Result.m_Date);
pDC->TextOut(1265,0,m_Result.m_Date);
//打印流水号
pDC->TextOut(80,0,m_Result.m_Serial);
pDC->TextOut(865,0,m_Result.m_Serial);
//打印被叫号
str=m_Result.m_Phone;
str.TrimRight("_");
pDC->TextOut(120,110,str);
pDC->TextOut(905,110,str);
//打印起始时间
pDC->TextOut(120,170,m_Result.m_StTime);
pDC->TextOut(905,170,m_Result.m_StTime);
//打印通话时间
temp=m_Result.m_SpTime;
pDC->TextOut(530,170,temp);
pDC->TextOut(1315,170,temp);
//打印话价
temp=m_Result.m_Price.Left(5);
temp.TrimLeft();
str=temp+"元/";
temp=m_Result.m_Price.Right(3);
temp.TrimLeft();
str=str+temp+"秒";
pDC->TextOut(120,230,str);
pDC->TextOut(905,230,str);
//打印总价
str=m_Result.m_Cost;
pDC->TextOut(500,230,str);
pDC->TextOut(1285,230,str);
//打印工号
str=m_Result.m_Duty+"号";
pDC->TextOut(395,280,str);
pDC->TextOut(1180,280,str);
}
else if(m_Report==3)
{
str="营业员: "+m_Statistic.name+" 工号: "+m_Statistic.gonghao+" 日期: "+m_Statistic.Day;
pDC->TextOut(0,100,str);
pDC->TextOut(0,150,"类别 通话数(次) 金额(元)");
pDC->TextOut(0,200,"本地电话");
str.Format("%4d",m_Statistic.local1);
pDC->TextOut(280,200,str);
str.Format("%6.2f",m_Statistic.local2);
pDC->TextOut(500,200,str);
pDC->TextOut(0,250,"国内长途电话");
str.Format("%4d",m_Statistic.china1);
pDC->TextOut(280,250,str);
str.Format("%6.2f",m_Statistic.china2);
pDC->TextOut(500,250,str);
pDC->TextOut(0,300,"港、澳、台电话");
str.Format("%4d",m_Statistic.hongkong1);
pDC->TextOut(280,300,str);
str.Format("%6.2f",m_Statistic.hongkong2);
pDC->TextOut(500,300,str);
pDC->TextOut(0,350,"国际长途电话");
str.Format("%4d",m_Statistic.inter1);
pDC->TextOut(280,350,str);
str.Format("%6.2f",m_Statistic.inter2);
pDC->TextOut(500,350,str);
pDC->TextOut(0,400,"合计");
int iCount;
double iSum;
iCount=m_Statistic.local1+m_Statistic.china1+m_Statistic.hongkong1+m_Statistic.inter1;
str.Format("%4d",iCount);
pDC->TextOut(280,400,str);
iSum=m_Statistic.local2+m_Statistic.china2+m_Statistic.hongkong2+m_Statistic.inter2;
str.Format("%6.2f",iSum);
pDC->TextOut(500,400,str);
}
else if(m_Report==4)
{
int account;
pDC->TextOut(0,0,m_Statis.dates);
pDC->TextOut(0,70,"营业员 话单数 本地电话 国内长途电话 港澳台电话 国际长途电话");
account=m_Statis.num;
for(int i=1;i<=m_Statis.num;i++)
{
account-=1;
str=m_Statis.name.Left(8);
m_Statis.name=m_Statis.name.Right(account*8);
str.TrimRight();
pDC->TextOut(0,50*i+70,str);
str=m_Statis.huadan.Left(5);
m_Statis.huadan=m_Statis.huadan.Right(account*5);
pDC->TextOut(100,50*i+70,str);
str=m_Statis.local.Left(8);
m_Statis.local=m_Statis.local.Right(account*8);
pDC->TextOut(200,50*i+70,str);
str=m_Statis.china.Left(8);
m_Statis.china=m_Statis.china.Right(account*8);
pDC->TextOut(350,50*i+70,str);
str=m_Statis.gat.Left(8);
m_Statis.gat=m_Statis.gat.Right(account*8);
pDC->TextOut(510,50*i+70,str);
str=m_Statis.internal.Left(8);
m_Statis.internal=m_Statis.internal.Right(account*8);
pDC->TextOut(680,50*i+70,str);
}
}
else
{
//打印房号
int RoomNo;
str=NumFlag.Left(2);
number=NumFlag.GetLength();
NumFlag=NumFlag.Right(number-2);
sscanf(str,"%d",&RoomNo);
str=str+"号话亭";
pDC->TextOut(120,50,str);
pDC->TextOut(905,50,str);
//打印附加费
str.Format("%5.2f",AddFee[RoomNo-1]);
str="话单附加费: "+str+"元";
pDC->TextOut(300,50,str);
pDC->TextOut(1085,50,str);
//打印日期
pDC->TextOut(450,0,PhoneDate[RoomNo-1]);
pDC->TextOut(1235,0,PhoneDate[RoomNo-1]);
//打印流水号
pDC->TextOut(80,0,SerialNo[RoomNo-1]);
pDC->TextOut(865,0,SerialNo[RoomNo-1]);
//打印被叫号
pDC->TextOut(120,110,PhoneNo[RoomNo-1]);
pDC->TextOut(905,110,PhoneNo[RoomNo-1]);
//打印起始时间
pDC->TextOut(120,170,BeginChat[RoomNo-1]);
pDC->TextOut(905,170,BeginChat[RoomNo-1]);
//打印通话时间
temp.Format("%d",timetotal[RoomNo-1]);
for(i=0;i<(5-temp.GetLength());i++)
{
temp=" "+temp;
}
temp+="秒";
pDC->TextOut(530,170,temp);
pDC->TextOut(1315,170,temp);
//打印话价
temp=PhonePrice[RoomNo-1].Left(5);
temp.TrimLeft();
str=temp+"元/";
temp=PhonePrice[RoomNo-1].Right(3);
temp.TrimLeft();
str=str+temp+"秒";
pDC->TextOut(120,230,str);
pDC->TextOut(905,230,str);
//打印总价
str.Format("%5.2f",backup[RoomNo-1]);
str+="元";
pDC->TextOut(500,230,str);
pDC->TextOut(1285,230,str);
//打印工号
str=duty+"号";
pDC->TextOut(395,280,str);
pDC->TextOut(1180,280,str);
}
CView::OnPrint(pDC,pInfo);
}
/////////////////////////////////////////////////////////////////////////////
// CCommucationView diagnostics
#ifdef _DEBUG
void CCommucationView::AssertValid() const
{
CFormView::AssertValid();
}
void CCommucationView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
CCommucationDoc* CCommucationView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CCommucationDoc)));
return (CCommucationDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CCommucationView message handlers
void CCommucationView::OnButton1()
{
// TODO: Add your control notification handler code here
if(info.GetLength()==690)
{
SignalProcess(0);
}
}
void CCommucationView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
int i;
if(ComIsOpen==TRUE)
{
//校验收到的数据是否正确
check_sum=0;
check_addend=1;
if(info.GetLength()==690)
{
for(i=0;i<16;i++)
{
for(j=0;j<14;j++)
{
sscanf(info.Mid(43*i+3*j,2),"%x",&check_addend);
check_sum+=check_addend;
}
}
check_sum=check_sum % 256;
sscanf(info.Mid(688,2),"%x",&check_addend);
}
//察看数据
if(m_IsView)
{
m_IsView=m_IsView-1;
AfxMessageBox(info);
}
//如果是刚启动,则给单片机赋时间
if(m_Initial)
{
CTime t=CTime::GetCurrentTime();
if(t.GetSecond()==0)
{
m_Initial=FALSE;
SendStr[0]='A';
SendStr[1]='T';
SendStr[2]='T';
SendStr[3]=t.GetHour()/10;
SendStr[4]=t.GetHour() % 10;
SendStr[5]=t.GetMinute()/10;
SendStr[6]=t.GetMinute() % 10;
SendStr[7]='\r';
SendStr[8]='\0';
m_serial.Send(
SendStr, // buffer to send
8 // length of buffer to send
);
}
}
else
{
//发送ATF等信号
SendStr[SendLen]='A';
SendStr[SendLen+1]='T';
SendStr[SendLen+2]='F';
SendStr[SendLen+3]='\r';
SendStr[SendLen+4]='\0';
SendLen+=5;
m_serial.Send(
SendStr, // buffer to send
SendLen-1 // length of buffer to send
);
SendLen=0;
//判断收到的数据是否正确
if(check_sum!=check_addend)
m_IsRece=0;
//如果收到的数据正确,开始执行
if(m_IsRece)
{
SetDlgItemText(IDC_STATUS,"状态");
for(i=0;i<16;i++)
{
if(info.Mid(43*i,2)=="00")
{
switch(i)
{
case 0:m_Bitmap1.SetBitmap(hClose);
case 1:m_Bitmap2.SetBitmap(hClose);
case 2:m_Bitmap3.SetBitmap(hClose);
case 3:m_Bitmap4.SetBitmap(hClose);
case 4:m_Bitmap5.SetBitmap(hClose);
case 5:m_Bitmap6.SetBitmap(hClose);
case 6:m_Bitmap7.SetBitmap(hClose);
case 7:m_Bitmap8.SetBitmap(hClose);
case 8:m_Bitmap9.SetBitmap(hClose);
case 9:m_Bitmap10.SetBitmap(hClose);
case 10:m_Bitmap11.SetBitmap(hClose);
case 11:m_Bitmap12.SetBitmap(hClose);
case 12:m_Bitmap13.SetBitmap(hClose);
case 13:m_Bitmap14.SetBitmap(hClose);
case 14:m_Bitmap15.SetBitmap(hClose);
case 15:m_Bitmap16.SetBitmap(hClose);
}
// SetDlgItemText(iButton[i],"断开");
Code[i]="";
}
if(info.Mid(43*i,2)=="01")
{
switch(i)
{
case 0:m_Bitmap1.SetBitmap(hOpen);
case 1:m_Bitmap2.SetBitmap(hOpen);
case 2:m_Bitmap3.SetBitmap(hOpen);
case 3:m_Bitmap4.SetBitmap(hOpen);
case 4:m_Bitmap5.SetBitmap(hOpen);
case 5:m_Bitmap6.SetBitmap(hOpen);
case 6:m_Bitmap7.SetBitmap(hOpen);
case 7:m_Bitmap8.SetBitmap(hOpen);
case 8:m_Bitmap9.SetBitmap(hOpen);
case 9:m_Bitmap10.SetBitmap(hOpen);
case 10:m_Bitmap11.SetBitmap(hOpen);
case 11:m_Bitmap12.SetBitmap(hOpen);
case 12:m_Bitmap13.SetBitmap(hOpen);
case 13:m_Bitmap14.SetBitmap(hOpen);
case 14:m_Bitmap15.SetBitmap(hOpen);
case 15:m_Bitmap16.SetBitmap(hOpen);
}
// SetDlgItemText(iButton[i],"接通");
}
if(info.Mid(43*i,2)=="43")
{
switch(i)
{
case 0:m_Bitmap1.SetBitmap(hDial);
case 1:m_Bitmap2.SetBitmap(hDial);
case 2:m_Bitmap3.SetBitmap(hDial);
case 3:m_Bitmap4.SetBitmap(hDial);
case 4:m_Bitmap5.SetBitmap(hDial);
case 5:m_Bitmap6.SetBitmap(hDial);
case 6:m_Bitmap7.SetBitmap(hDial);
case 7:m_Bitmap8.SetBitmap(hDial);
case 8:m_Bitmap9.SetBitmap(hDial);
case 9:m_Bitmap10.SetBitmap(hDial);
case 10:m_Bitmap11.SetBitmap(hDial);
case 11:m_Bitmap12.SetBitmap(hDial);
case 12:m_Bitmap13.SetBitmap(hDial);
case 13:m_Bitmap14.SetBitmap(hDial);
case 14:m_Bitmap15.SetBitmap(hDial);
case 15:m_Bitmap16.SetBitmap(hDial);
}
Num="";
for(j=1;j<24;j++)
{
if((info.Mid(43*i+2+j,1)!="f")&&(info.Mid(43*i+2+j,1)!=" "))
{
Bit=info.Mid(43*i+2+j,1);
Num+=Bit;
}
}
SetDlgItemText(iTele[i],Num);
Code[i]=Num.Left(11);
m_Retry[i]=TRUE;
m_Rept[i]=FALSE;
}
if(info.Mid(43*i,2)=="63")
{
//重取电话号码
if(m_Retry[i])
{
m_Retry[i]=FALSE;
Num="";
for(j=1;j<24;j++)
{
if((info.Mid(43*i+2+j,1)!="f")&&(info.Mid(43*i+2+j,1)!=" "))
{
Bit=info.Mid(43*i+2+j,1);
Num+=Bit;
}
}
PhoneNo[i]=Num;
SetDlgItemText(iTele[i],Num);
Code[i]=Num.Left(11);
//取出电话号码对应的数据
m_Data[i]=GetFeeInfo(Code[i]);
time1[i]=m_Data[i].time1*m_Data[i].unittime1;
time2[i]=m_Data[i].time2*m_Data[i].unittime2+time1[i];
Clear[i]=TRUE;
//取出统计级
iLevel[i]=m_Data[i].countlevel;
//取出通话起始时间
BeginChat[i]="";
for(j=0;j<8;j++)
{
if(info.Mid(43*i+33+j,1)==" ")
{
Bit=":";
}
else
{
Bit=info.Mid(43*i+33+j,1);
}
BeginChat[i]+=Bit;
}
//将通话起始时间赋给三个变量
sscanf(BeginChat[i].Left(2),"%d",&sHour);
sscanf(BeginChat[i].Mid(3,2),"%d",&sMin);
sscanf(BeginChat[i].Mid(6,2),"%d",&sSec);
//显示通话起始时间
SetDlgItemText(iStart[i],BeginChat[i]);
BeginTime[i]=CTime::GetCurrentTime();
int Year=BeginTime[i].GetYear();
int Month=BeginTime[i].GetMonth();
int Day=BeginTime[i].GetDay();
BeginTime[i]=CTime::CTime(Year,Month,Day,sHour,sMin,sSec);
}
//获取通话时间
timetotal[i]=GetSpendTime(i);
hour=timetotal[i]/3600;
second=timetotal[i] % 60;
minute=(timetotal[i] % 3600)/60;
//显示通话时间
CodeView.Format("%d",hour);
if(CodeView.GetLength()<2)
CodeView="0"+CodeView;
CodeView+=":";
Num.Format("%d",minute);
if(Num.GetLength()<2)
Num="0"+Num;
CodeView+=Num;
CodeView+=":";
Num.Format("%d",second);
if(Num.GetLength()<2)
Num="0"+Num;
CodeView+=Num;
SetDlgItemText(iTime[i],CodeView);
if((m_Rept[i])||(m_Force[i]))
{
m_Force[i]=FALSE;
m_Rept[i]=FALSE;
ProcessTotal(i);
total[i]=backup[i];
}
else
{
//累加通话费用
if((m_Data[i].time1==0)||((timetotal[i]-1)<time1[i]))
{
counter=(timetotal[i]-1)/m_Data[i].unittime1+1;
if(counter>accumulator[i])
{
int pos=GetDiscount(BeginTime[i]+timetotal[i],m_Data[i].location,m_Data[i].ip);
if(m_Data[i].surcharge1!=0)
{
intValue=m_Data[i].unitprice1*pos/100+m_Data[i].surcharge1;
backup[i]+=(float)intValue/100;
}
else
{
intValue=m_Data[i].unitprice1*pos/100;
backup[i]+=(float)intValue/100;
}
accumulator[i]+=1;
}
}
else if((m_Data[i].time2==0)||((timetotal[i]-1)<time2[i]))
{
counter=m_Data[i].time1+(timetotal[i]-1-time1[i])/m_Data[i].unittime2+1;
if(counter>accumulator[i])
{
int pos=GetDiscount(BeginTime[i]+timetotal[i],m_Data[i].location,m_Data[i].ip);
if(m_Data[i].surcharge2!=0)
{
intValue=m_Data[i].unitprice2*pos/100+m_Data[i].surcharge2;
backup[i]+=(float)intValue/100;
}
else
{
intValue=m_Data[i].unitprice2*pos/100;
backup[i]+=(float)intValue/100;
}
accumulator[i]+=1;
}
}
else
{
counter=m_Data[i].time1+m_Data[i].time2+(timetotal[i]-1-time1[i]-time2[i])/m_Data[i].unittime2+1;
if((timetotal[i]-m_Data[i].time2*m_Data[i].unitprice2-m_Data[i].time1*m_Data[i].unittime1-1)/m_Data[i].unittime3==0)
{
int pos=GetDiscount(BeginTime[i]+timetotal[i],m_Data[i].location,m_Data[i].ip);
if(m_Data[i].surcharge3!=0)
{
intValue=m_Data[i].unitprice3*pos/100+m_Data[i].surcharge3;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -