📄 querydlg.cpp
字号:
// QueryDlg.cpp : implementation file
//
#include "stdafx.h"
#include "phonerec.h"
#include "QueryDlg.h"
#include "PhoneRecView.h"
#include "mainfrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CDatabase g_dbCust;
static char g_szaQueryListTitle[query_max][16] =
{
"序号",
"线号",
"主叫",
"去电",
"开始日期",
"开始时间",
"结束时间",
"录音时长",
"文件名"
};
static int g_izQueryListWidth[query_max] = { 65, 43, 90, 90, 100, 80, 80, 80,0 };
extern CPhoneRecView* g_pMgr;
/////////////////////////////////////////////////////////////////////////////
// CQueryDlg dialog
CQueryDlg::CQueryDlg(CWnd* pParent /*=NULL*/)
: CDialog(CQueryDlg::IDD, pParent)
{
m_pChannel = NULL;
//{{AFX_DATA_INIT(CQueryDlg)
m_CTimeStart = 0;
m_CTimeEnd = 0;
m_strLineID = _T("");
m_bCheckTime = FALSE;
m_bCheckPhone = FALSE;
m_bCheckLineID = FALSE;
m_strPhoneNum = _T("");
//}}AFX_DATA_INIT
}
void CQueryDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CQueryDlg)
DDX_Control(pDX, IDC_BUTTON_SELECT_ALL, m_btnSelectAll);
DDX_Control(pDX, IDC_BUTTON_PLAY, m_btnPlay);
DDX_Control(pDX, IDC_BUTTON_STOP_PLAY, m_btnStop);
DDX_Control(pDX, IDOK, m_btnExit);
DDX_Control(pDX, IDC_BUTTON_DELETE, m_btnDel);
DDX_Control(pDX, IDC_BUTTON_QUERY, m_btnQuery);
DDX_Control(pDX, IDC_LIST_QUERY_RESULT, m_listQuery);
DDX_DateTimeCtrl(pDX, IDC_DATE_START, m_CTimeStart);
DDX_DateTimeCtrl(pDX, IDC_DATE_END, m_CTimeEnd);
DDX_Text(pDX, IDC_EDIT_LINEID, m_strLineID);
DDX_Check(pDX, IDC_CHECK_QUERY_TIME, m_bCheckTime);
DDX_Check(pDX, IDC_CHECK_QUERY_PHONE_NUM, m_bCheckPhone);
DDX_Check(pDX, IDC_CHECK_QUERY_LINEID, m_bCheckLineID);
DDX_Text(pDX, IDC_EDIT_CALLER_ID, m_strPhoneNum);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CQueryDlg, CDialog)
//{{AFX_MSG_MAP(CQueryDlg)
ON_BN_CLICKED(IDC_BUTTON_QUERY, OnButtonQuery)
ON_WM_DESTROY()
ON_BN_CLICKED(IDC_BUTTON_DELETE, OnButtonDelete)
ON_BN_CLICKED(IDC_BUTTON_PLAY, OnButtonPlay)
ON_BN_CLICKED(IDC_BUTTON_STOP_PLAY, OnButtonStopPlay)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_BUTTON_SELECT_ALL, OnButtonSelectAll)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CQueryDlg message handlers
BOOL CQueryDlg::OnInitDialog()
{
CDialog::OnInitDialog();
for( int i = 0; i < query_max; i++ )
{
m_listQuery.InsertColumn(i, g_szaQueryListTitle[i], LVCFMT_CENTER, g_izQueryListWidth[i] );
}
m_listQuery.SetExtendedStyle(LVS_EX_CHECKBOXES | LVS_EX_ONECLICKACTIVATE | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
// m_listQuery.SetBkColor(RGB(240,247,233));
// m_listQuery.SetTextBkColor(RGB(240,247,233));
m_btnQuery.SetIcon( IDR_SEARCH );
m_btnExit.SetIcon( IDR_EXIT );
m_btnDel.SetIcon( IDR_DEL );
m_btnSelectAll.SetIcon( IDR_SELECT_ALL );
// m_btnPlay.SetIcon( IDR_PLAY);
//m_btnPlay.SetBitmaps( IDB_PLAY, RGB( 128, 128, 128 ) );
//m_btnStop.SetBitmaps( IDB_STOP, RGB( 128, 128, 128 ) );
CTime curTime = CTime::GetCurrentTime();
m_CTimeStart = curTime - CTimeSpan( 3, 0, 0, 0 );
m_CTimeEnd = curTime;
m_bCheckTime = TRUE;
UpdateData( FALSE );
return TRUE;
}
//录音查询
void CQueryDlg::OnButtonQuery()
{
UpdateData( );
m_listQuery.DeleteAllItems();
if( m_bCheckTime | m_bCheckLineID | m_bCheckPhone )
{
CRecordset rs( &g_dbCust );
CString strSerialNo;
CString strLineID;
CString strCallerID;
CString strDTMF;
CString strDate;
CString strStartTime;
CString strEndTime;
CString strTimeLong;
CString strFileAllPath;
m_iRedataCount = 0;
CTimeSpan OleDateTimeSpan( 1, 0, 0, 0 );
m_CTimeEnd += OleDateTimeSpan;
rs.Open( CRecordset::dynaset, _T( GetQuerySQL( m_bCheckTime, m_bCheckLineID, m_bCheckPhone ) ) );
while( !rs.IsEOF( ) )
{
rs.GetFieldValue( "SerialNo", strSerialNo );
rs.GetFieldValue( "LineID", strLineID );
rs.GetFieldValue( "CallerID", strCallerID );
rs.GetFieldValue( "DTMF", strDTMF );
rs.GetFieldValue( "StartDate", strDate );
rs.GetFieldValue( "StartTime", strStartTime );
rs.GetFieldValue( "EndTime", strEndTime );
rs.GetFieldValue( "TimeLong", strTimeLong );
rs.GetFieldValue( "FileAllPath", strFileAllPath );
strDate = strDate.Left( 10 );
char buffer[8];
sprintf(buffer,"%d",m_iRedataCount);
m_listQuery.InsertItem(m_iRedataCount,buffer);
m_listQuery.SetItem(m_iRedataCount, 0,LVIF_TEXT, strSerialNo, -1,0,0,0);
m_listQuery.SetItem(m_iRedataCount, 1,LVIF_TEXT, strLineID, -1,0,0,0);
m_listQuery.SetItem(m_iRedataCount, 2,LVIF_TEXT, strCallerID, -1,0,0,0);
m_listQuery.SetItem(m_iRedataCount, 3,LVIF_TEXT, strDTMF, -1,0,0,0);
m_listQuery.SetItem(m_iRedataCount, 4,LVIF_TEXT, strDate, -1,0,0,0);
m_listQuery.SetItem(m_iRedataCount, 5,LVIF_TEXT, strStartTime, -1,0,0,0);
m_listQuery.SetItem(m_iRedataCount, 6,LVIF_TEXT, strEndTime, -1,0,0,0);
m_listQuery.SetItem(m_iRedataCount, 7,LVIF_TEXT, strTimeLong, -1,0,0,0);
m_listQuery.SetItem(m_iRedataCount, 8,LVIF_TEXT, strFileAllPath, -1,0,0,0);
m_iRedataCount++;
rs.MoveNext();
}
rs.Close();
}
}
CString CQueryDlg::GetQuerySQL(int ichecktime, int icheckLineID, int icheckPhoneNum)
{
CString strStartDate = m_CTimeStart.Format("%Y-%m-%d");
CString strEndDate = m_CTimeEnd.Format("%Y-%m-%d");
CString strQuerySql = "Select * from RecordData where";
if( ichecktime )
{
strQuerySql = "Select * from RecordData where StartDate >= #" + strStartDate + "# and StartDate <= #"+ strEndDate + "#";
}
if( icheckLineID )
{
if( ichecktime )
{
strQuerySql += " and LineID = '" + m_strLineID + "'";
}
else
{
strQuerySql += " LineID = '" + m_strLineID + "'";
}
}
if( icheckPhoneNum )
{
if( ichecktime| icheckLineID )
{
strQuerySql = strQuerySql +" and CallerID ='" + m_strPhoneNum + "'or DTMF ='" + m_strPhoneNum + "'";
}
else
{
strQuerySql = strQuerySql +" CallerID ='" + m_strPhoneNum + "'or DTMF ='" + m_strPhoneNum + "'";
}
}
strQuerySql += " order by StartDate ASC, StartTime ASC";
return strQuerySql;
}
void CQueryDlg::OnDestroy()
{
if( m_pChannel )
{
m_pChannel->StopPlay();
}
CDialog::OnDestroy();
}
void CQueryDlg::OnButtonDelete()
{
if( ( ( CMainFrame*)( AfxGetMainWnd( ) ) )->m_userTable.m_ibDelRe )
{
CString strSerialNo;
CString strSQLDel;
for ( int i = m_listQuery.GetItemCount() - 1; i >= 0; i-- )
{
if ( m_listQuery.GetCheck( i ) )
{
strSerialNo = m_listQuery.GetItemText( i , 0 );
//删除数据库
strSQLDel = "delete from RecordData Where SerialNo = '"+ strSerialNo +"'";
g_dbCust.ExecuteSQL( strSQLDel);
//删除文件
CString str = m_listQuery.GetItemText( i, query_FileName );
DeleteFile( str );
//删除记录显示
m_listQuery.DeleteItem( i );
}
}
}
else
{
AfxMessageBox("对不起,你没有删除录音数据的权限!");
}
}
void CQueryDlg::OnButtonPlay()
{
CString strPlayTime;
m_iIndex = 0;
//规定17通道为放音通道
m_pChannel = g_pMgr->GetChannelObject( 0 );
if( m_pChannel )
{
m_pChannel->StopPlay();
PlayFile( m_iIndex );
}
}
void CQueryDlg::PlayFile(int iIndex)
{
CString strPlayTime;
if( m_pChannel )
{
m_pChannel->SetVoiceCoder( _DEF_VOICE_CODER );
if( GetPlayFileName( m_iIndex ).GetLength( )!=0 )
{
m_pChannel->PlayFile( m_strFlielName, 0, 0 );
strPlayTime = m_listQuery.GetItemText( m_iIndex-1 , query_TimeLong );
int i = atoi( strPlayTime.Left( 2 ))*3600 + atoi( strPlayTime.Mid( 3,2 ))*60 + atoi( strPlayTime.Right( 2));
SetTimer( 1, i*1000,NULL);
}
}
}
CString CQueryDlg::GetPlayFileName( int iIndex )
{
CString strPlayTime;
m_strFlielName.Empty();
for ( int i = iIndex; i <= m_listQuery.GetItemCount() - 1; i++ )
{
if( m_listQuery.GetCheck( i ) )
{
m_strFlielName = m_listQuery.GetItemText( i , query_FileName );
m_listQuery.SetFocus();
m_listQuery.SetItemState( i , LVIS_ACTIVATING | LVIS_FOCUSED | LVIS_SELECTED, LVIS_SELECTED | LVIS_FOCUSED );
CSize size( 0, 10000 );
m_listQuery.Scroll( size );
m_iIndex = i + 1;
break;
}
}
return m_strFlielName;
}
void CQueryDlg::OnTimer(UINT nIDEvent)
{
KillTimer( 1 );
PlayFile( m_iIndex );
CDialog::OnTimer(nIDEvent);
}
void CQueryDlg::OnButtonStopPlay()
{
if( m_pChannel )
{
m_pChannel->StopPlay();
}
}
//全部选中
void CQueryDlg::OnButtonSelectAll()
{
for( int i = 0 ; i <= m_listQuery.GetItemCount()-1; i++ )
{
m_listQuery.SetCheck( i );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -