CorpSms/FFaxLog.cpp
2025-02-27 16:58:16 +08:00

1003 lines
27 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// FFaxLog.cpp : implementation file
//
#include "stdafx.h"
#include "corpsms.h"
#include "FFaxLog.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFFaxLog dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_BAK.h"
//#include "DLG_Find_Fail.h"
//#include "DLG_Find_FaxLog.h"
//#include "DLG_SMSLog_Export.h"
CFFaxLog::CFFaxLog(CWnd* pParent /*=NULL*/)
: CDialog(CFFaxLog::IDD, pParent)
{
//{{AFX_DATA_INIT(CFFaxLog)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_bInit = false;
m_bRefresh = false;
m_lRefreshStatusIndex = 0;
m_bShowToday = true;
m_bShowAllRecord = false;
m_bNewDB = true;
}
void CFFaxLog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFFaxLog)
DDX_Control(pDX, IDC_FAXLOG_LIST, m_wndList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CFFaxLog, CDialog)
//{{AFX_MSG_MAP(CFFaxLog)
ON_WM_SIZE()
ON_NOTIFY(NM_RCLICK, IDC_FAXLOG_LIST, OnRclickSmslogList)
ON_NOTIFY(NM_DBLCLK, IDC_FAXLOG_LIST, OnDblclkSmslogList)
ON_NOTIFY(LVN_KEYDOWN, IDC_FAXLOG_LIST, OnKeydownSmslogList)
//}}AFX_MSG_MAP
ON_COMMAND( MENU_LOG_DEL , On_User_Del )
ON_COMMAND( MENU_LOG_SEE , On_User_See )
ON_COMMAND( MENU_LOG_SEND , On_User_Send )
ON_COMMAND( MENU_LOG_EXPORT , On_User_Export )
ON_COMMAND( MENU_LOG_REFRESH , On_User_Refresh )
ON_COMMAND( MENU_LOG_REFSTATUS , On_User_RefStatus )
ON_COMMAND( MENU_LOG_FIND , On_User_Find )
ON_COMMAND( MENU_LOG_BAK , On_User_Bak )
ON_COMMAND( MENU_LOG_QUERYFAIL , On_User_QueryFail )
ON_COMMAND( MENU_LOG_SHOWALLRECORD , On_User_Refresh_All)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFFaxLog message handlers
BOOL CFFaxLog::OnInitDialog()
{
CDialog::OnInitDialog();
//È¡µÃ¹²ÓòÎÊý
//CMainFrame * pFrame = static_cast <CMainFrame *>((CMainFrame *)AfxGetMainWnd());
this->GetParent()->GetParentFrame();
m_pMainFrame = (CMainFrame *)this->GetParent()->GetParentFrame();
m_pSocket = &m_pMainFrame->m_Socket;
m_AdoRS.SetAdoConnection( &m_pMainFrame->m_adoConnection );
//³õʼ»¯List
m_Image.Create(16,16,ILC_COLOR32|ILC_MASK,5,5);
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SMSDF) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SMSYF) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SMSJS) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SMSSB) );
m_wndList.SubClassWindow2();
m_wndList.SetHeadings(_T("ÐòºÅ,50; ״̬,70;״̬˵Ã÷,180;´«ÕæÓÃʱ,70;·¢ÐźÅÂë,100;ÊÕÐźÅÂë,150; ´«Õæ±êÌâ,130;Ìύʱ¼ä,130;´¦Àíʱ¼ä,130;"));
m_wndList.SetGridLines(true);
m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
//m_wndList.SetBkColor( RGB(237,191,175) );
//m_wndList.SetTextBkColor( RGB(237,191,175) );
m_bInit = true;
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
BOOL CFFaxLog::ReHide()
{
ShowWindow( SW_HIDE );
return true;
}
BOOL CFFaxLog::ReShow(BOOL bRefresh)
{
USES_CONVERSION;
m_AdoRS.Close();
if ( m_strBakDBName.GetLength()<=0 )
{
m_adoConnection.Close();
m_AdoRS.SetAdoConnection( &m_pMainFrame->m_adoConnection );
}
else
{
//½âÃÜÂë
char szPasswd[64]={0};strcpy(szPasswd , ACCESS_PASSWD );
char szKey[64]={0};strcpy( szKey , ACCESS_KEY );
char szNew2[64]={0};long lOut=sizeof(szNew2);
TCHAR szNew[64]={0};
CDes des;
des.Decrypt( szPasswd , strlen(szPasswd),szNew2,lOut,szKey,8);
#ifdef UNICODE
_tcscpy(szNew,A2W(szNew2));
#else
_tcscpy(szNew,szNew2);
#endif
m_adoConnection.Close();
if ( !m_adoConnection.ConnectAccess(m_strBakDBName,szNew ) ) //Á¬½ÓÊý¾Ý¿â´íÎó,ÐèÒªÖØÐ´´½¨
{
MessageBox( _T("´ò¿ª±¸·ÝÎļþ´íÎó£¬Çë¼ì²é!") , _T("´íÎó") , MB_ICONWARNING );
m_bShowToday = true;
m_AdoRS.SetAdoConnection( &m_pMainFrame->m_adoConnection );
}
else
{
m_bShowToday = false;
m_AdoRS.SetAdoConnection( &m_adoConnection ); //ÉèÖÃÁ¬½Ó
}
}
ShowWindow( SW_SHOW );
if ( bRefresh || !m_bRefresh || m_bNewDB )
{
RefreshInfo();
m_bNewDB = false;
}
return true;
}
BOOL CFFaxLog::RefreshInfo()
{
m_wndList.ShowWindow( SW_HIDE ); //ΪÁ˼ӿìÏÔʾËÙ¶È
m_bRefresh = true;
m_wndList.DeleteAllItems();
TCHAR szSelect[256]={0};
CString strTop;
if ( !m_bShowAllRecord && m_pMainFrame->m_Setup.lTopRecord>0 )
{
strTop.Format(_T(" top %d "),m_pMainFrame->m_Setup.lTopRecord );
}
if ( m_bShowToday )
{
//½ö²éѯµ±ÌìµÄ
SYSTEMTIME t;::GetLocalTime(&t);
if ( m_pMainFrame->m_Setup.bSQLUse )
_stprintf( szSelect , _T("select %s * from faxlog where SubTime>='%04d%02d%02d' %s order by SubTime desc"),strTop,t.wYear,t.wMonth,t.wDay,m_strFindAdd ); //²éѯÒÑ·¢¶ÌÐÅ
else
_stprintf( szSelect , _T("select %s * from faxlog where SubTime>=#%04d-%02d-%02d# %s order by SubTime desc"),strTop,t.wYear,t.wMonth,t.wDay,m_strFindAdd ); //²éѯÒÑ·¢¶ÌÐÅ
}
else
{
if ( m_strFindAdd.GetLength()>0 )
_stprintf( szSelect , _T("select * from faxlog where 1 %s order by SubTime desc"),m_strFindAdd ); //²éѯ½ÓÊռǼ
else
_stprintf( szSelect , _T("select * from faxlog order by SubTime desc") ); //²éѯÈÕÖ¾,ÏÔʾȫ²¿µÄ£¬²»ÓÃÖ»ÏÔʾͷ²¿·Ö
}
BOOL b = m_AdoRS.Open( szSelect );
long lSendID=0;
long lStatus=0;
TCHAR szStatus[24]={0};
TCHAR szSendNum[24]={0};
TCHAR szRecver[64]={0};
TCHAR szRecvNum[64]={0};
TCHAR szMsg[180]={0};
COleDateTime tSub;
COleDateTime tRecv;
CString strSubTime;
CString strRecvTime;
long lCount = m_AdoRS.GetRecordCount();
if ( !m_bShowAllRecord && m_pMainFrame->m_Setup.lTopRecord>0 &&
lCount>m_pMainFrame->m_Setup.lTopRecord )
{
lCount = m_pMainFrame->m_Setup.lTopRecord;
}
m_bShowAllRecord = false; //ÏÔʾÍêÒ»´Îºó£¬²»ÓÃÔÙÈ«²¿ÏÔʾ
if ( b && lCount )
{
CAdoFaxLog adoSms;
m_AdoRS.RecordBinding( adoSms );
m_AdoRS.MoveFirst();
long iItem = 0;
while( !m_AdoRS.IsEOF() && iItem<lCount )
{
// m_wndList.SetHeadings(_T("ÐòºÅ,50; ״̬,70;״̬˵Ã÷,180;´«ÕæÓÃʱ,70;·¢ÐźÅÂë,100;ÊÕÐźÅÂë,150; ´«Õæ±êÌâ,130;Ìύʱ¼ä,130;´¦Àíʱ¼ä,130;"));
long lIcon = GetStatusText( adoSms.m_Status , szStatus );
_tcscpy(szRecvNum,adoSms.m_RecvNum);
if ( _tcslen(adoSms.m_Recver)>0 )
{
_tcscat( szRecvNum , _T("-") );
_tcscat( szRecvNum , adoSms.m_Recver );
}
if ( adoSms.m_SubTime.GetStatus() == COleDateTime::valid )
{
strSubTime.Format(_T("%04d.%02d.%02d %02d:%02d") , adoSms.m_SubTime.GetYear(),adoSms.m_SubTime.GetMonth(),adoSms.m_SubTime.GetDay(),adoSms.m_SubTime.GetHour(),adoSms.m_SubTime.GetMinute() );
}
if ( adoSms.m_RecvTime.GetStatus() == COleDateTime::valid )
{
strRecvTime.Format(_T("%04d.%02d.%02d %02d:%02d") , adoSms.m_RecvTime.GetYear(),adoSms.m_RecvTime.GetMonth(),adoSms.m_RecvTime.GetDay(),adoSms.m_RecvTime.GetHour(),adoSms.m_RecvTime.GetMinute() );
}
CString strTimes;
if ( adoSms.m_Times>0 )
strTimes.Format(_T(" %d") , adoSms.m_Times);
m_wndList.InsertItem( iItem , _itot( lCount-iItem,szSelect,10) , szStatus,adoSms.m_StatusMsg,strTimes,adoSms.m_SendNum,szRecvNum,adoSms.m_Title,strSubTime,strRecvTime );
m_wndList.SetItemData( iItem, adoSms.m_SendID );
m_wndList.SetIconIndex( iItem , lIcon );
iItem++;
memset(&adoSms,0,sizeof(adoSms));
m_AdoRS.MoveNext();
}
}
RefreshStatus();
m_wndList.ShowWindow( SW_SHOW ); //ΪÁ˼ӿìÏÔʾËÙ¶È
if ( strTop.GetLength()>0 && lCount>=m_pMainFrame->m_Setup.lTopRecord) //ÏÔʾÏÔʾ¡°ÏÔʾËùÓмǼ¡±µÄÑ¡Ïî
{
CMenu menu;
menu.CreatePopupMenu();
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING , MENU_LOG_SHOWALLRECORD, _T(" ÏÔʾËùÓмǼ ") );
menu.AppendMenu(MF_SEPARATOR );
CRect rect;
GetWindowRect(&rect);
//ClientToScreen(&rect);
//ÏÔʾ²Ëµ¥
POINT pt ;
pt.x = rect.Width()/2;
pt.y = rect.Height()/3;
ClientToScreen(&pt);
//menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
menu.TrackPopupMenu(TPM_CENTERALIGN,pt.x,pt.y, this, NULL);
menu.DestroyMenu();
}
return true;
}
void CFFaxLog::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if ( m_bInit )
{
m_wndList.MoveWindow( 0 , 0 , cx,cy);
}
}
long CFFaxLog::GetStatusText(long lStatus, TCHAR *pStatus)
{
_tcscpy( pStatus , _T("δ֪״̬") );
long lIcon = 0;
switch(lStatus)
{
case SEND_STATUS_SUB_OK:
_tcscpy( pStatus , _T("Ìá½»³É¹¦") );
break;
case SEND_STATUS_SUB_FILT:
_tcscpy( pStatus , _T("ÉóºËÖÐ") );
break;
case SEND_STATUS_SUB_ERROR:
case SEND_STATUS_SUB_USERNOSMS:
case SEND_STATUS_SUB_CORPNOSMS:
case SEND_STATUS_SUB_CORPOVRDATE:
_tcscpy( pStatus , _T("Ìύʧ°Ü") );
lIcon = 3;
break;
case SEND_STATUS_SUB_NUMNOSUP:
_tcscpy( pStatus , _T("Ä¿±êÓÐÎó") );
lIcon = 3;
break;
case SEND_STATUS_FILT_ERROR:
_tcscpy( pStatus , _T("ÉóºËʧ°Ü") );
lIcon = 3;
break;
case SEND_STATUS_SEND_OK:
_tcscpy( pStatus , _T("·¢Ëͳɹ¦") );
lIcon = 1;
break;
case SEND_STATUS_SEND_ERROR:
_tcscpy( pStatus , _T("·¢ËÍʧ°Ü") );
lIcon = 3;
break;
case SEND_STATUS_RECV_OK:
_tcscpy( pStatus , _T("½ÓÊճɹ¦") );
lIcon = 2;
break;
case SEND_STATUS_RECV_ERROR:
_tcscpy( pStatus , _T("½ÓÊÕʧ°Ü") );
lIcon = 3;
break;
}
return lIcon;
}
void CFFaxLog::OnRclickSmslogList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
ShowRMenu();
}
void CFFaxLog::ShowRMenu()
{
CMenu menu;
menu.CreatePopupMenu();
BOOL bLock = false;
long lItem = this->GetCurrentSelected();
BOOL bNoStatus = m_pMainFrame->m_Setup.bSDK & SDK_NOSTATUS ? true:false;
if ( lItem >= 0 )
{
menu.AppendMenu(MF_STRING , MENU_LOG_SEE , _T(" ²é ¿´ ") );
menu.AppendMenu(MF_STRING , MENU_LOG_SEND, _T(" Ôٴη¢ËÍ ") );
menu.AppendMenu(MF_STRING , MENU_LOG_DEL , _T(" ɾ ³ý ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LOG_SEE , _T(" ²é ¿´ ") );
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LOG_SEND, _T(" Ôٴη¢ËÍ ") );
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LOG_DEL, _T(" ɾ ³ý ") );
}
menu.AppendMenu(MF_SEPARATOR );
//µ¼³ö
menu.AppendMenu(MF_STRING , MENU_LOG_EXPORT, _T(" µ¼³ö... ") );
//Ë¢ÐÂ
menu.AppendMenu(MF_STRING , MENU_LOG_FIND , _T(" ²éÕÒ... ") );
menu.AppendMenu(MF_SEPARATOR );
if ( lItem >= 0 )
menu.AppendMenu(MF_STRING , MENU_LOG_BAK , _T(" ±¸·Ý... ") );
else
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED, MENU_LOG_BAK , _T(" ±¸·Ý... ") );
menu.AppendMenu(MF_SEPARATOR );
BOOL bFindFail = m_pMainFrame->m_Setup.bSDK & SDK_ALLOWFINDFAIL ? true:false;
if ( bFindFail && !bNoStatus )
{
menu.AppendMenu(MF_STRING , MENU_LOG_QUERYFAIL, _T(" ²éʧ°Ü¶ÌÐÅ ") );
menu.AppendMenu(MF_SEPARATOR );
}
//Ë¢ÐÂ
menu.AppendMenu(MF_STRING , MENU_LOG_REFRESH, _T(" ˢ Р") );
if ( !bNoStatus ) //Èç¹ûÎÞÐèҪ״̬£¬Ã»ÓÐË¢ÐÂ״̬µÄ²Ëµ¥
{
//Ë¢ÐÂ
menu.AppendMenu(MF_STRING , MENU_LOG_REFSTATUS, _T(" Ë¢ÐÂ״̬ ") );
}
//ÏÔʾ²Ëµ¥
POINT pt ;
::GetCursorPos( &pt );
//this->ClientToScreen( &pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
menu.DestroyMenu();
}
long CFFaxLog::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
void CFFaxLog::On_User_See()
{
long lItem = GetCurrentSelected();
if ( lItem <0 )
return ;
/*
SMS_See sms = GetSms(lItem);
sms.lType = SMS_SEE_TYPE_LOG;
DLG_FaxLogSee dlg(this);
dlg.SetParam(sms);
dlg.DoModal();
*/
}
void CFFaxLog::On_User_Send()
{
long lItem = GetCurrentSelected();
if ( lItem <0 )
return ;
if ( m_pMainFrame->m_pFuncView->On_User_List_Add() ) //н¨Áбí
{
//Ìí¼ÓÄÚÈÝ
m_pMainFrame->m_pFuncView->m_DLGSend.List_SetMsg( _T("\"%Memo%\"") );
//Ìí¼ÓºÅÂë
long lCount = m_wndList.GetSelectedCount();
if ( lCount <= 0 )
return ;
//·ÖÅäÊý¾Ý
long lSize = sizeof(Send_User)*lCount;
BYTE *pS = new BYTE[lSize];
memset( pS , 0 , lSize );
Send_User * pUser = (Send_User * )pS;
TCHAR szSelect[128]={0};
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
while ( pos )
{
long lItem = m_wndList.GetNextSelectedItem( pos );
long lSendID = m_wndList.GetItemData( lItem );
if ( lSendID > 0 )
{
_stprintf( szSelect , _T("select * from faxlog where SendID=%d"), lSendID );
BOOL b = m_AdoRS.Open( szSelect );
if ( b && m_AdoRS.GetRecordCount() )
{
m_AdoRS.MoveFirst();
m_AdoRS.GetCollect( _T("Recver") , pUser->szName);
m_AdoRS.GetCollect( _T("RecvNum") , pUser->szMobile);
m_AdoRS.GetCollect( _T("Msg") , pUser->szBZ);
}
}
else
{
m_wndList.GetItemText(lItem,3,pUser->szMobile,sizeof(pUser->szMobile));
m_wndList.GetItemText(lItem,4,pUser->szBZ,sizeof(pUser->szBZ));
}
pUser ++;
}
m_pMainFrame->m_pFuncView->On_User_List_AddUser(lCount,(Send_User*)pS);
delete pS;
}
}
void CFFaxLog::On_User_Del()
{
long lCount = m_wndList.GetSelectedCount();
long *lDel = new long[lCount+2];
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
long i = 0;
while(pos)
{
lDel[i]= m_wndList.GetNextSelectedItem(pos);
i ++;
}
long lSendID = 0;
TCHAR szSelect[128];
//µ¹×ªÉ¾³ý
m_wndList.ShowWindow( SW_HIDE ); //¼Ó¿ìÏÔʾµÄËÙ¶È
for ( i = lCount ; i>0 ; i-- )
{
lSendID = m_wndList.GetItemData( lDel[i-1] );
_stprintf( szSelect , _T("delete from faxlog where SendID=%d ") , lSendID );
BOOL b = m_AdoRS.Open( szSelect );
if ( b && m_AdoRS.GetRecordCount() )
{
m_wndList.DeleteItem(lDel[i-1]); //´ÓÁбíÖÐɾ³ý
}
}
m_wndList.ShowWindow( SW_SHOW ); //¼Ó¿ìÏÔʾµÄËÙ¶È
delete lDel;
}
void CFFaxLog::On_User_Export()
{
/*
//ÎÞÐèҪ״̬µÄ¶ÌÐÅͨËùÓж¼·µ»Ø¡°·¢Ëͳɹ¦¡±¡£
BOOL bNoStatus = m_pMainFrame->m_Setup.bSDK & SDK_NOSTATUS ? true:false;
DLG_SMSLog_Export dlg(this);
dlg.SetParam(&m_AdoRS,&m_wndList,bNoStatus);
dlg.DoModal();
*/
}
void CFFaxLog::On_User_Refresh()
{
RefreshInfo();
}
void CFFaxLog::On_User_QueryFail()
{
/*
DLG_Find_Fail dlg(this);
if ( dlg.DoModal() == IDOK )
{
m_wndList.ShowWindow(SW_HIDE ); //¼Ó¿ìÏÔʾËÙ¶È
m_wndList.DeleteAllItems();
m_wndList.ShowWindow(SW_SHOW ); //¼Ó¿ìÏÔʾËÙ¶È
REQ_List * pList = new REQ_List;
memset(pList , 0 , sizeof(REQ_List));
_tcscpy( pList->szMobile , _T("FAIL") );
dlg.m_tQBegin.GetAsSystemTime(pList->tBegin);
dlg.m_tQEnd.GetAsSystemTime(pList->tEnd);
pList->lCorpID = m_pMainFrame->m_lCorpID;
pList->lMobileType = -1;
pList->lMsgType = -1;
pList->lMsgType = -1;
pList->bJF = false;
m_pMainFrame->SendFrame( SMSFUNC_LIST , (BYTE*)pList , sizeof(REQ_List) );
}
*/
}
void CFFaxLog::On_User_Find()
{
/*
CString strTemp;
DLG_Find_FaxLog dlg(this);
BOOL bNoStatus = m_pMainFrame->m_Setup.bSDK & SDK_NOSTATUS ? true:false;
dlg.SetParam(!m_bShowToday , !bNoStatus );
if ( dlg.DoModal() == IDOK )
{
m_strFindAdd = _T("");
if ( !m_bShowToday )
{
strTemp.Format( _T(" AND SubTime>=#%04d-%02d-%02d# AND SubTime<=#%04d-%02d-%02d 23:59:59#"),dlg.m_TBegin.GetYear(),dlg.m_TBegin.GetMonth(),dlg.m_TBegin.GetDay(),dlg.m_TEnd.GetYear(),dlg.m_TEnd.GetMonth(),dlg.m_TEnd.GetDay());
m_strFindAdd = strTemp;
}
if ( dlg.m_lStatus>=0 )
{
strTemp.Format( _T(" AND Status=%d"),dlg.m_lStatus );
m_strFindAdd += strTemp;
}
if ( dlg.m_strSendNum.GetLength()>0 )
{
strTemp.Format( _T(" AND SendNum like '%%%s%%'"),dlg.m_strSendNum );
m_strFindAdd += strTemp;
}
if ( dlg.m_strRecvNum.GetLength()>0 )
{
strTemp.Format( _T(" AND RecvNum like '%%%s%%'"),dlg.m_strRecvNum );
m_strFindAdd += strTemp;
}
if ( dlg.m_strMsg.GetLength()>0 )
{
strTemp.Format( _T(" AND Msg like '%%%s%%'"),dlg.m_strMsg );
m_strFindAdd += strTemp;
}
On_User_Refresh();
m_strFindAdd = _T(""); //ˢк󣬲éѯ½áÊø
}
*/
}
void CFFaxLog::On_User_Bak()
{
USES_CONVERSION;
/*
long lCount = m_wndList.GetSelectedCount();
DLG_BAK dlg(this);
dlg.SetParam(lCount);
if ( dlg.DoModal() == IDOK )
{
//¶ÁÈëÊý¾Ý¿â
TCHAR szPath[512]={0};
TCHAR szBakPath[64]={0};
TCHAR szOldDB[512]={0};
TCHAR szNewDB[512]={0};
this->m_pMainFrame->GetCurrentPath( szPath );
_stprintf(szOldDB , _T("%s%s"),szPath,ACCESS_SOURCE);
_stprintf(szBakPath,_T("Bak_%d_%s"),m_pMainFrame->m_lCorpID,m_pMainFrame->m_pCurUser->szUser);
_tcscat(szPath,szBakPath);
::CreateDirectory(szPath,NULL); //²»¹ÜÓÐÀíûÀí£¬ÏÈ´´½¨ÔÙ˵
_stprintf(szNewDB , _T("%s\\FaxLog_%s.bak"),szPath,dlg.m_strTitle);
if ( !CopyFile( szOldDB , szNewDB , false ) ) //copyÎļþʧ°Ü
{
MessageBox( _T("ϵͳÎļþ¶ªÊ§1£¬ÇëÖØÐ°²×°!") , _T("ÖÂÃü´íÎó") , MB_ICONWARNING );
return ;
}
//´ò¿ªÐµı¸·ÝÊý¾Ý¿â
CAdoConnection bakadoConnection;
CAdoRecordSet bakAdoRS;
//½âÃÜÂë
char szPasswd[64]={0};strcpy(szPasswd , ACCESS_PASSWD );
char szKey[64]={0};strcpy( szKey , ACCESS_KEY );
char szNew2[64]={0};long lOut=sizeof(szNew2);
TCHAR szNew[64]={0};
CDes des;
des.Decrypt( szPasswd , strlen(szPasswd),szNew2,lOut,szKey,8);
#ifdef UNICODE
_tcscpy(szNew , A2W(szNew2));
#else
_tcscpy(szNew , szNew2);
#endif
if ( !bakadoConnection.ConnectAccess(szNewDB,szNew ) ) //Á¬½ÓÊý¾Ý¿â´íÎó,ÐèÒªÖØÐ´´½¨
{
MessageBox( _T("ϵͳÎļþ¶ªÊ§2£¬ÇëÖØÐ°²×°!") , _T("ÖÂÃü´íÎó") , MB_ICONWARNING );
return;
}
bakAdoRS.SetAdoConnection( &bakadoConnection ); //ÉèÖÃÁ¬½Ó
if ( !bakAdoRS.Open(_T("faxlog"),adCmdTable) )
{
MessageBox( _T("ϵͳÎļþ¶ªÊ§3£¬ÇëÖØÐ°²×°!") , _T("ÖÂÃü´íÎó") , MB_ICONWARNING );
return;
}
long *lDel = new long[lCount+2];
int lDelCount=0;
TCHAR szSelect[256]={0};
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
while ( pos )
{
long lItem = m_wndList.GetNextSelectedItem( pos );
long lSendID = m_wndList.GetItemData( lItem );
lDel[lDelCount]=lItem;
if ( lSendID > 0 )
{
_stprintf( szSelect , _T("select * from faxlog where SendID=%d"), lSendID );
BOOL b = m_AdoRS.Open( szSelect );
if ( b && m_AdoRS.GetRecordCount() )
{
CAdoFaxLog adoSms;
m_AdoRS.RecordBinding( adoSms );
m_AdoRS.MoveFirst();
//²åÈëµ½ÁíÒ»¸ö±í
BOOL b = bakAdoRS.RecordBinding( adoSms );
b = bakAdoRS.AddNew(adoSms);
b = bakAdoRS.Update();
}
}
lDelCount ++;
}
//µ¹×ªÉ¾³ý
m_wndList.ShowWindow( SW_HIDE ); //¼Ó¿ìÏÔʾµÄËÙ¶È
for ( int i=lDelCount-1 ; i>=0 ; i-- )
{
long lSendID = m_wndList.GetItemData( lDel[i] );
_stprintf( szSelect , _T("delete from faxlog where SendID=%d ") , lSendID );
BOOL b = m_AdoRS.Open( szSelect );
if ( b && m_AdoRS.GetRecordCount() )
{
m_wndList.DeleteItem(lDel[i]); //´ÓÁбíÖÐɾ³ý
}
}
m_wndList.ShowWindow( SW_SHOW ); //¼Ó¿ìÏÔʾµÄËÙ¶È
delete lDel;
//ÔÚÊ÷ÖÐÌí¼Ó
CString strName;
strName.Format( _T("±¸·Ý_%s") , dlg.m_strTitle );
m_pMainFrame->m_pFuncView->AddBak_FaxLog(strName);
}
*/
}
void CFFaxLog::On_User_RefStatus()
{
RefreshStatus();
}
void CFFaxLog::On_User_Refresh_All()
{
m_bShowAllRecord = true;
On_User_Refresh();
}
void CFFaxLog::RefreshStatus(BOOL bBegin)
{
//µÚÒ»²½£¬²éÕÒ״̬Ϊδ¹Ì¶¨µÄ¶ÌÐÅ
long lCount = m_wndList.GetItemCount();
long * pSendID= new long[STATUS_MAX_QUERY*3+100];
long lCount2=0;
if ( bBegin )
m_lRefreshStatusIndex = 0;
else
m_lRefreshStatusIndex ++;
for ( int i=m_lRefreshStatusIndex*STATUS_MAX_QUERY;i<lCount;i++ ) //ÿ´Î×î¶à²éѯ1000Ìõ¼Ç¼
{
long lStatus = GetItemStatus(i);
if ( lStatus == SEND_STATUS_SUB_OK || //ÒÔÏÂÈýÖÖ£¬ÐèÒªÖØÐÂȡ״̬
lStatus == SEND_STATUS_SUB_FILT ||
lStatus == SEND_STATUS_SEND_OK ||
lStatus == SEND_STATUS_SEND_ERROR)
{
pSendID[lCount2] = i;
lCount2 ++;
pSendID[lCount2] = m_wndList.GetItemData( i ); //È¡µÃSendID
lCount2 ++;
pSendID[lCount2] =lStatus;
lCount2 ++;
}
if ( lCount2 >= STATUS_MAX_QUERY*3 ) //³¬¹ý1000ÌõÁË
break;
}
lCount = lCount2/3; //È¡µÃÐèҪȡ״̬µÄ¸öÊý
if ( lCount > 0 )
{
long lSize = sizeof(REQ_FaxStatus)+sizeof(ANS_FaxStatus_Data2)*lCount;
BYTE * pData = new BYTE[lSize];memset(pData,0,lSize);
REQ_FaxStatus * pStatus = (REQ_FaxStatus *)pData;
ANS_FaxStatus_Data2 * pStatusData = (ANS_FaxStatus_Data2 *)(pData+sizeof(REQ_FaxStatus));
pStatus->lCorpID = m_pMainFrame->m_lCorpID;
pStatus->lCount = lCount;
for ( i=0;i<lCount;i++)
{
pStatusData->lItemID = pSendID[i*3];
pStatusData->lSendID = pSendID[i*3+1];
pStatusData->lStatus = pSendID[i*3+2];
pStatusData++;
}
m_pMainFrame->SendFrame( SMSFUNC_FAXSTATUS , pData , lSize );
}
delete pSendID;
}
long CFFaxLog::GetItemStatus(long iItem)
{
TCHAR szStatus[16]={0};
TCHAR szTime[32]={0};
m_wndList.GetItemText( iItem , 1 , szStatus , sizeof(szStatus) );
m_wndList.GetItemText( iItem , 7 , szTime ,sizeof(szTime));
szTime[4]=0;
szTime[7]=0;
szTime[10]=0;
long lYear=_ttol(szTime);
long lMon =_ttol(szTime+5);
long lDay =_ttol(szTime+8);
CTime t1(lYear,lMon,lDay,0,0,0);
CTime t2 = CTime::GetCurrentTime();
CTime t3 = t1 + CTimeSpan( 10, 0, 0, 0 );
if ( t3 < t2 ) //2ÈÕǰµÄÐÅÏ¢£¬Ìø¹ý
{
return SEND_STATUS_UNKNOW;
}
if ( !_tcscmp( szStatus , _T("Ìá½»³É¹¦") ) )
return SEND_STATUS_SUB_OK;
if ( !_tcscmp( szStatus , _T("ÉóºËÖÐ") ) )
return SEND_STATUS_SUB_FILT;
if ( !_tcscmp( szStatus , _T("Ìύʧ°Ü") ) )
return SEND_STATUS_SUB_ERROR;
if ( !_tcscmp( szStatus , _T("Ä¿±êÓÐÎó") ) )
return SEND_STATUS_SUB_NUMNOSUP;
if ( !_tcscmp( szStatus , _T("ÉóºËʧ°Ü") ) )
return SEND_STATUS_FILT_ERROR;
if ( !_tcscmp( szStatus , _T("·¢Ëͳɹ¦") ) )
return SEND_STATUS_SEND_OK;
if ( !_tcscmp( szStatus , _T("·¢ËÍʧ°Ü") ) )
return SEND_STATUS_SEND_ERROR;
if ( !_tcscmp( szStatus , _T("½ÓÊճɹ¦") ) )
return SEND_STATUS_RECV_OK;
if ( !_tcscmp( szStatus , _T("½ÓÊÕʧ°Ü") ) )
return SEND_STATUS_RECV_ERROR;
// if ( !_tcscmp( szStatus , _T("δ֪״̬") ) )
return SEND_STATUS_UNKNOW;
}
SMS_See CFFaxLog::GetSms(long lItem)
{
SMS_See sms={0};
long lSendID = m_wndList.GetItemData(lItem);
CString strSelect;
long lStatus;
TCHAR szSender[16]={0};
TCHAR szRecver[16]={0};
COleDateTime t;
strSelect.Format( _T("select * from faxlog where SendID=%d") , lSendID );
if ( m_AdoRS.Open( strSelect ) && m_AdoRS.GetRecordCount() )
{
m_AdoRS.MoveFirst();
m_AdoRS.GetCollect( _T("Status") , lStatus );
m_AdoRS.GetCollect( _T("SendNum") , sms.szSender );
m_AdoRS.GetCollect( _T("Recver") , szRecver );
m_AdoRS.GetCollect( _T("RecvNum") , sms.szRecver );
m_AdoRS.GetCollect( _T("Title") , sms.szMsg );
m_AdoRS.GetCollect( _T("SubTime") , t );t.GetAsSystemTime(sms.tSend);
m_AdoRS.GetCollect( _T("RecvTime"), t );t.GetAsSystemTime(sms.tRecv);
GetStatusText( lStatus , sms.szStatus );
if ( _tcslen(szSender)>0 )
{
_tcscat( sms.szSender , _T("-") );
_tcscat( sms.szSender , szSender );
}
if ( _tcslen(szRecver)>0 )
{
_tcscat( sms.szRecver , _T("-") );
_tcscat( sms.szRecver , szRecver );
}
}
return sms;
}
void CFFaxLog::OnDblclkSmslogList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
On_User_See();
}
void CFFaxLog::OnKeydownSmslogList(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;
*pResult = 0;
if ( pLVKeyDow->wVKey == VK_DELETE )
{
On_User_Del();
}
if ( pLVKeyDow->wVKey == VK_SPACE)
{
On_User_See();
}
if ( pLVKeyDow->wVKey == 'S' || pLVKeyDow->wVKey == 's')
{
On_User_Send();
}
if ( pLVKeyDow->wVKey == 'R' || pLVKeyDow->wVKey == 'r')
{
On_User_Refresh();
}
if ( pLVKeyDow->wVKey == 'T' || pLVKeyDow->wVKey == 't')
{
On_User_RefStatus();
}
if ( pLVKeyDow->wVKey == 'F' || pLVKeyDow->wVKey == 'f')
{
On_User_Find();
}
if ( pLVKeyDow->wVKey == 'B' || pLVKeyDow->wVKey == 'b')
{
On_User_Bak();
}
if ( pLVKeyDow->wVKey == 'A' || pLVKeyDow->wVKey == 'a')
{
m_wndList.SelectAllItems();
}
}
long CFFaxLog::GetStatusText2(long lStatus, TCHAR *pStatus)
{
_tcscpy( pStatus , _T("δ֪״̬") );
long lIcon = 0;
switch(lStatus)
{
case SEND_STATUS_SUB_OK:
_tcscpy( pStatus , _T("Ìá½»³É¹¦") );
break;
case SEND_STATUS_SUB_FILT:
_tcscpy( pStatus , _T("ÉóºËÖÐ") );
break;
case SEND_STATUS_SUB_ERROR:
case SEND_STATUS_SUB_USERNOSMS:
case SEND_STATUS_SUB_CORPNOSMS:
case SEND_STATUS_SUB_CORPOVRDATE:
_tcscpy( pStatus , _T("Ìύʧ°Ü") );
lIcon = 3;
break;
case SEND_STATUS_SUB_NUMNOSUP:
_tcscpy( pStatus , _T("Ä¿±êÓÐÎó") );
lIcon = 3;
break;
case SEND_STATUS_FILT_ERROR:
_tcscpy( pStatus , _T("ÉóºËʧ°Ü") );
lIcon = 3;
break;
case SEND_STATUS_SEND_OK:
_tcscpy( pStatus , _T("·¢Ëͳɹ¦") );
lIcon = 1;
break;
case SEND_STATUS_SEND_ERROR:
_tcscpy( pStatus , _T("·¢ËÍʧ°Ü") );
lIcon = 3;
break;
case SEND_STATUS_RECV_OK:
_tcscpy( pStatus , _T("·¢Ëͳɹ¦") );
lIcon = 1;
break;
case SEND_STATUS_RECV_ERROR:
_tcscpy( pStatus , _T("½ÓÊÕʧ°Ü") );
lIcon = 3;
break;
}
return lIcon;
}
void CFFaxLog::OnOK()
{
//CDialog::OnOK();
}
void CFFaxLog::OnCancel()
{
//CDialog::OnCancel();
}
void CFFaxLog::SetToday(BOOL bToday)
{
if ( m_bShowToday != bToday )
{
m_bShowToday = bToday;
m_bRefresh = false;
}
}
void CFFaxLog::SetBakDBName(CString strDBName)
{
m_strBakDBName = strDBName;
m_bNewDB = true;
}
BOOL CFFaxLog::ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame)
{
//Ð޸Ĺ«ÓõØÖ·±¾
if (pHead->lFuncType == SMSFUNC_FAXSTATUS)
{
ANS_FaxStatus * pStatus = (ANS_FaxStatus *)pFrame;
ANS_FaxStatus_Data * pData = (ANS_FaxStatus_Data *)(pFrame+sizeof(ANS_FaxStatus));
for ( int i = 0;i<pStatus->lCount;i++)
{
if ( pData->lStatus != -1 ) //Èç¹ûÆäֵΪ-1,Ö¤Ã÷״̬û±ä£¬ËùÒÔ²»±Ø¸ü¸Ä
{
COleDateTime tSend(pData->tSendTime );
COleDateTime tRecv(pData->tRecvTime );
//½«½á¹ûÏÈÈëÊý¾Ý¿â
TCHAR szBuf[32];
TCHAR szSelect[128]={0};
CString str;
_stprintf( szSelect , _T("select * from faxlog where SendID=%d") , pData->lSendID );
if ( m_AdoRS.Open(szSelect) && !m_AdoRS.IsEOF() )
{
m_AdoRS.PutCollect( _T("Status") , pData->lStatus );
m_AdoRS.PutCollect( _T("Times") , pData->lTimes );
m_AdoRS.PutCollect( _T("StatusMsg") , pData->szStatusMsg );
m_AdoRS.PutCollect( _T("SendTime") , tSend );
m_AdoRS.PutCollect( _T("RecvTime") , tRecv );
m_AdoRS.Update();
m_AdoRS.Close();
}
//¸üÐÂÏÔʾ
if ( pData->lItemID>=0 && pData->lItemID<m_wndList.GetItemCount() )
{
long lSendID = m_wndList.GetItemData(pData->lItemID);
if ( lSendID == pData->lSendID ) //¸üÐÂÏÔʾÄÚÈÝ
{
long lIcon = GetStatusText( pData->lStatus , szBuf );
m_wndList.SetItemText(pData->lItemID,1,szBuf);
m_wndList.SetIconIndex( pData->lItemID , lIcon );
m_wndList.SetItemText(pData->lItemID,2,pData->szStatusMsg);
if ( pData->lTimes >0 )
{
str.Format(_T(" %d") , pData->lTimes );
m_wndList.SetItemText(pData->lItemID,3,str);
}
if ( tRecv.GetStatus() == COleDateTime::valid )
{
_stprintf( szBuf , _T("%04d.%02d.%02d %02d:%02d") , tRecv.GetYear(),tRecv.GetMonth(),tRecv.GetDay(),tRecv.GetHour(),tRecv.GetMinute() );
m_wndList.SetItemText(pData->lItemID,8,szBuf);
}
}
}
}
pData ++; //¼ÌÐø´¦ÀíÏÂÒ»Ìõ
}
RefreshStatus( false ); //²éѯÏÂ1000ÌõµÄ״̬
return true;
}
return false;
}