📄 querydlg.cpp
字号:
if(m_strRecDTMF[ChannelNo]=="2")// dialed code query
{
m_strDuty[ChannelNo]="2";
m_strRecDTMF[ChannelNo].Empty();
channelstatus[ChannelNo].step++;
m_djcard.PlayFile(ChannelNo,"costtype.voc");
break;
}
if(m_strRecDTMF[ChannelNo]=="3")//change password
{
m_strDuty[ChannelNo]="3";
m_strRecDTMF[ChannelNo].Empty();
channelstatus[ChannelNo].step++;
m_djcard.PlayFile(ChannelNo,"newpassword.voc");
break;
}
if(m_strRecDTMF[ChannelNo]=="4")//record duty
{
m_strDuty[ChannelNo]="4";//this will make record possible;
m_strRecDTMF[ChannelNo].Empty();
channelstatus[ChannelNo].step++;
m_djcard.PlayFile(ChannelNo,"record.voc");
break;
}
if(m_strRecDTMF[ChannelNo]=="*")//play songs
{
m_strDuty[ChannelNo]="*";
m_strRecDTMF[ChannelNo].Empty();
channelstatus[ChannelNo].step++;
m_djcard.PlayFile(ChannelNo,"order.voc");
break;
}
case 4 :
if(m_strDuty[ChannelNo]=="1"||m_strDuty[ChannelNo]=="2"||m_strDuty[ChannelNo]=="*9*")//;
{
this->costtype[ChannelNo]=this->m_strRecDTMF[ChannelNo];
m_strRecDTMF[ChannelNo].Empty();
channelstatus[ChannelNo].step++;
m_djcard.PlayFile(ChannelNo,"startdate.voc");
break;
}
if(m_strDuty[ChannelNo]=="3")//new password;
{
for (j;j<=m_iCallerNumber;j++)
{
if(callerinfoofch[ChannelNo].m_callerid==callerinfo[j].m_callerid)
{
callerinfo[j].m_password=m_strRecDTMF[ChannelNo];
if(UpdateCallerInfo(callerinfo[j].m_callerid,callerinfo[j].m_password))
{
callerinfo[j].m_password=m_strRecDTMF[ChannelNo];
m_djcard.PlayFile(ChannelNo,"success.voc");
}
else
m_djcard.PlayFile(ChannelNo,"falt.voc");
break;
}
}
}
if(m_strDuty[ChannelNo]=="4")//;recording files
{
// this->strFileName[ChannelNo]="c:\\voc\\recordfiles\\track"+this->m_strRecDTMF[ChannelNo];
// strorder+=".voc";
m_strRecDTMF[ChannelNo].Empty();
// channelstatus[ChannelNo].step++;
//do not step up for you can chose another song
// m_dmfax.PlayFile(ChannelNo,strorder);
break;
}
if(m_strDuty[ChannelNo]=="*")// play songs
{
CString strorder="track"+this->m_strRecDTMF[ChannelNo];
strorder+=".voc";
m_strRecDTMF[ChannelNo].Empty();
// channelstatus[ChannelNo].step++;
//do not step up for you can chose another song
m_djcard.PlayFile(ChannelNo,strorder);
break;
}
break;
case 5 :
if(m_strRecDTMF[ChannelNo].GetLength()!=6)
this->ResetChannel(ChannelNo);
this->startdate[ChannelNo]=this->m_strRecDTMF[ChannelNo];
m_strRecDTMF[ChannelNo].Empty();
channelstatus[ChannelNo].step++;
m_djcard.PlayFile(ChannelNo,"enddate.voc");
break;
case 6:
if(m_strRecDTMF[ChannelNo].GetLength()!=6)
this->ResetChannel(ChannelNo);
this->enddate[ChannelNo]=this->m_strRecDTMF[ChannelNo];
m_strRecDTMF[ChannelNo].Empty();
channelstatus[ChannelNo].step++;
m_djcard.StopPlay(ChannelNo);
m_djcard.ResetIndexPlay(ChannelNo);
m_djcard.AddIndexPlay(ChannelNo,"wait.voc");
if(m_strDuty[ChannelNo]=="1")
{
CString str=this->QueryCost(callerinfoofch[ChannelNo].m_callerid,startdate[ChannelNo],enddate[ChannelNo],costtype[ChannelNo],ChannelNo,1);
this->PlayANumber(ChannelNo,str);
m_djcard.AddIndexPlay(ChannelNo,"yuan.voc");
}
if(m_strDuty[ChannelNo]=="2")
QueryCost(callerinfoofch[ChannelNo].m_callerid,startdate[ChannelNo],enddate[ChannelNo],costtype[ChannelNo],ChannelNo,2);
if(m_strDuty[ChannelNo]=="*9*")
QueryCost(callerinfoofch[ChannelNo].m_callerid,startdate[ChannelNo],enddate[ChannelNo],costtype[ChannelNo],ChannelNo,2);
m_djcard.AddIndexPlay(ChannelNo,"hookon.voc");
m_djcard.StartIndexPlay(ChannelNo);
this->m_bIsIndexPlaying[ChannelNo]=TRUE;
break;
case 7:
m_djcard.ResetChannel(ChannelNo);
break;
default :
break;
}
}
//DEL void CQueryDlg::OnOnRingDmfax1(short ChannelNo, LPCTSTR CallerID, short CallerIDCount)
//DEL {
//DEL // TODO: Add your control notification handler code here
//DEL m_dmfax.SetChProCtrl(ChannelNo,1);
//DEL channelstatus[ChannelNo].used=1;
//DEL channelstatus[ChannelNo].step=1;
//DEL m_dmfax.PlayFile(ChannelNo,"c:\\voc\\inputcaller.voc");
//DEL // Sleep(12300);
//DEL
//DEL }
BOOL CQueryDlg::UpdateCallerInfo(CString callerid, CString password)
{
try
{
CDatabase database;
if(!database.Open("TDS"))
return FALSE;
database.ExecuteSQL("update 电话查询 SET 密码='"+ password+"' where 分机号='"+callerid+"'");
database.Close();
}
catch(...)
{
};
return TRUE;
}
BOOL CQueryDlg::ResetChannel(short chan)
{
callerinfoofch[chan].m_callerid.Empty();
callerinfoofch[chan].m_password.Empty();
channelstatus[chan].step=0;
channelstatus[chan].used=0;
m_strRecDTMF[chan].Empty();
m_strDuty[chan].Empty();
startdate[chan].Empty();
enddate[chan].Empty();
costtype[chan].Empty();
m_djcard.ResetChannel(chan);
return TRUE;
//UpdateData(FALSE);
}
BOOL CQueryDlg::ScreenStatus()
{
for(int i=0;i<8;i++)//CHANGE STATUS SHOW ON FORM
{
if(channelstatus[i].used==0)
{
switch(i)
{case 0:
this->m_strStatus0="空闲";
break;
case 1:
this->m_strStatus1="空闲";
break;
case 2:
this->m_strStatus2="空闲";
break;
case 3:
this->m_strStatus3="空闲";
break;
case 4:
this->m_strStatus4="空闲";
break;
case 5:
this->m_strStatus5="空闲";
break;
case 6:
this->m_strStatus6="空闲";
break;
case 7:
this->m_strStatus7="空闲";
break;
default:
break;}
}
else
{
switch(i)
{case 0:
this->m_strStatus0="占用";
break;
case 1:
this->m_strStatus1="占用";
break;
case 2:
this->m_strStatus2="占用";
break;
case 3:
this->m_strStatus3="占用";
break;
case 4:
this->m_strStatus4="占用";
break;
case 5:
this->m_strStatus5="占用";
break;
case 6:
this->m_strStatus6="占用";
break;
case 7:
this->m_strStatus7="占用";
break;
default:
break;}
}
}
this->UpdateData(FALSE);
return TRUE;
}
void CQueryDlg::OnDestroy()
{
this->m_djcard.ReleaseCard();
CDialog::OnDestroy();
// TODO: Add your message handler code here
}
CString CQueryDlg::QueryCost(CString Caller, CString startdt, CString enddt, CString costype, int chan,int duty)
{
try
{
CDatabase db1;
db1.OpenEx(strConnection);
CCallCostSet set;
set.m_pDatabase=&db1;
CString strdel= "主叫号='"+Caller+"' and 日期>='"+startdt+"' and 日期<='"+enddt+"' ";
if(costype!="4")
strdel+=" and 统计类型="+costype;
if(this->m_strDuty[chan]=="*9*")
{
strdel="delete * from 话费表 WHERE "+strdel;
CDatabase db;
db.Open(_T("TDS"),FALSE,FALSE,_T("ODBC;"),TRUE);
db.ExecuteSQL(strdel);
db.Close();
return "0.00";
}
else
set.m_strFilter=strdel;
if(!set.Open(AFX_DB_USE_DEFAULT_TYPE,"SELECT * FROM 话费表"))
{
MessageBox("Open cost table falt!");
return "error";
}
float fcost=0;
if(set.GetRecordCount()==0)
return "0.00";
set.MoveFirst();
while(!set.IsEOF())
{
if(duty==1)
fcost+=set.m_column10+set.m_column8+set.m_column9;
if(duty==2)
{
this->PlayANumber(chan,set.m_column2);
m_djcard.AddIndexPlay(chan,"nextline.voc");
}
set.MoveNext();
}
set.Close();
if(fcost<0)
return "0.00";
return this->FloatToString(fcost);
}
catch(...)
{MessageBox("error!");}
return "error";
}
void CQueryDlg::PlayANumber(short ch,CString Number)
{
int a=Number.GetLength();
CString sa="e:\\leiyong\\query\\";
CString sb=".voc";
for(int i=0;i<a;i++)
{
if(Number.GetAt(i)<='9'&&Number.GetAt(i)>='0')
{
m_djcard.AddIndexPlay(ch,sa+Number.GetAt(i)+sb);
}
else
{
if(Number.GetAt(i)=='.')
m_djcard.AddIndexPlay(ch,sa+"dot.voc");
if(Number.GetAt(i)=='*')
m_djcard.AddIndexPlay(ch,sa+"xing.voc");
if(Number.GetAt(i)=='#')
m_djcard.AddIndexPlay(ch,sa+"jing.voc");
}
}
return;
}
CString CQueryDlg::FloatToString(float fv)
{
int aa,bb;
CString strOut=(CString)::_fcvt(fv,2,&aa,&bb);
if(fv<1)
{
if(fv<0.1)
if(fv<0.01)
strOut="0.00";
else
strOut.Insert(aa,"0.0");
else
strOut.Insert(aa,"0.");
}
else
strOut.Insert(aa,".");
return strOut;
}
void CQueryDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(nIDEvent==2345)//
{
this->m_djcard.ChechState();
for(int i=0;i<8;i++)
{
if(dtmfchar[i].recieve)
{
this->OnOnReceiveDTMFDmfax1(i,dtmfchar[i].dtmf);
}
if(channelstatus[i].used==1&&m_bIsIndexPlaying[i])
{
if(m_djcard.CheckIndexPlay(i))
{
m_djcard.StopIndexPlay(i);
this->m_bIsIndexPlaying[i]=FALSE;
}
}
}
this->ScreenStatus();
}
CDialog::OnTimer(nIDEvent);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -