AgentManager/TabDlg.cpp
2025-01-22 15:45:17 +08:00

632 lines
15 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.

// TabDlg.cpp : implementation file
//
#include "stdafx.h"
#include "smsmanager.h"
#include "TabDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTabDlg dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
CTabDlg::CTabDlg(CWnd* pParent /*=NULL*/)
: CDialog(CTabDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CTabDlg)
m_lCorp = -1;
m_tBegin = COleDateTime::GetCurrentTime();
m_tEnd = COleDateTime::GetCurrentTime();
m_lMobileType = -1;
m_bOld = FALSE;
//}}AFX_DATA_INIT
m_bInit = false;
m_bRefresh = false;
m_bQueryAll = false;
m_lQueryCurCorpID = 0;
lSmsCount=0;
lSmsCountIndex=0;
lMmsSmsCount=0;
lMmsSmsCountIndex=0;
}
void CTabDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTabDlg)
DDX_Control(pDX, IDC_TAB_CORPID, m_E_CorpID);
DDX_Control(pDX, IDC_TAB_OLD, m_B_Old);
DDX_Control(pDX, IDC_TAB_CORP, m_L_Corp);
DDX_Control(pDX, IDC_TAB_S1, m_S_S1);
DDX_Control(pDX, IDC_TAB_LIST, m_wndList);
DDX_CBIndex(pDX, IDC_TAB_CORP, m_lCorp);
DDX_DateTimeCtrl(pDX, IDC_TAB_TBEGIN, m_tBegin);
DDX_DateTimeCtrl(pDX, IDC_TAB_TEND, m_tEnd);
DDX_CBIndex(pDX, IDC_TAB_MOBILETYPE, m_lMobileType);
DDX_Check(pDX, IDC_TAB_OLD, m_bOld);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTabDlg, CDialog)
//{{AFX_MSG_MAP(CTabDlg)
ON_WM_SIZE()
ON_BN_CLICKED(IDC_TAB_QUERY, OnTabQuery)
ON_BN_CLICKED(IDC_TAB_OLD, OnTabOld)
ON_BN_CLICKED(IDC_TAB_QUERY2, OnTabQuery2)
ON_NOTIFY(NM_RCLICK, IDC_TAB_LIST, OnRclickTabList)
//}}AFX_MSG_MAP
ON_COMMAND(MENU_TAB_COPY , On_User_Copy )
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTabDlg message handlers
BOOL CTabDlg::ReShow(BOOL bRefresh)
{
ShowWindow( SW_SHOW );
if ( bRefresh || !m_bRefresh )
{
RefreshInfo();
}
return true;
}
BOOL CTabDlg::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;
//³õʼ»¯List
m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5);
// m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_TAB) );
m_wndList.SubClassWindow2();
m_wndList.SetHeadings(_T("ÐòºÅ,50;ÆóÒµID,80;ÆóÒµÃû³Æ,250; ¶ÌÐÅÊýÁ¿,100;²ÊÐÅÊýÁ¿,100;"));
m_wndList.SetGridLines(true);
m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
m_bInit = true;
/*
//ĬÈÏÈ¡ÉÏÔµÄÄÚÈÝ
SYSTEMTIME t; ::GetLocalTime(&t);
t.wDay = 1;//´Ó1ºÅÆð
t.wMonth = t.wMonth-1;
if ( t.wMonth <=0 )
{
t.wMonth = 12;
t.wYear = t.wYear-1;
}
m_tBegin.SetDate( t.wYear,t.wMonth,t.wDay ); //Æðʼ
if ( t.wMonth == 1 ||
t.wMonth == 3 ||
t.wMonth == 5 ||
t.wMonth == 7 ||
t.wMonth == 8 ||
t.wMonth == 10 ||
t.wMonth == 12 )
{
t.wDay = 31;
}
else
if (t.wMonth == 2 )
t.wDay = 28;
else
t.wDay = 30;
m_tEnd.SetDate( t.wYear,t.wMonth,t.wDay );//½áÊø
*/
COleDateTime t = COleDateTime::GetCurrentTime();
COleDateTimeSpan tSpan2(1,0,0,0);
t = t-tSpan2;
m_tBegin.SetDate( t.GetYear(),t.GetMonth(),1 ); //Æðʼ
m_tEnd.SetDate( t.GetYear(),t.GetMonth(),t.GetDay() );//½áÊø
m_lMobileType = 0; //ĬÈϲ鿴ËùÓÐÊÖ»úÀàÐÍ
UpdateData(false);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CTabDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if ( m_bInit )
{
CRect rect;
m_S_S1.GetWindowRect(&rect);
m_wndList.MoveWindow( 0 , 0+rect.Height()+5 , cx,cy-rect.Height()-5);
}
}
BOOL CTabDlg::ReHide()
{
ShowWindow( SW_HIDE );
return true;
}
BOOL CTabDlg::RefreshInfo()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
{
return false;
}
m_pMainFrame->SendFrame(SMSFUNC_CORP_NAME,NULL,0);
return true;
}
BOOL CTabDlg::ProcessSocket(Socket_Head *pHead)
{
CString strTemp;
//È¡¹ýÂËÐÅÏ¢
if (pHead->lFuncType == SMSFUNC_CORP_NAME)
{
m_bRefresh = true; //ÒѾ­Ë¢Ð¹ý
ANS_Corp_Name * pCorp = (ANS_Corp_Name *)pHead->pFrame;
ANS_Corp_NameData * pData = (ANS_Corp_NameData *)(pHead->pFrame+sizeof(ANS_Corp_Name));
m_L_Corp.ResetContent(); //ɾ³ýÔ­ÒÑÓÐµÄÆóÒµ
m_L_Corp.AddString(_T("ËùÓÐÆóÒµ"));
m_L_Corp.SetItemData(0,-1);
//m_L_Corp.AddString( _T("ËùÓÐÆóÒµ") );
this->Close(); //¹Ø±ÕÔ­¶ÓÁÐ
for ( int i=0;i<pCorp->lCount;i++ )
{
//if ( pData->lAgentID == m_pMainFrame->m_lUserID &&
// pData->bAgentModify ) //ÊÇÎ񵀮óÒµ
BOOL bShow = false;
#ifdef MANAGER_VER_YWY
if ( pData->lYWYID == m_pMainFrame->m_lUserID )
{
bShow = true;
}
#else
if ( pData->lAgentID == m_pMainFrame->m_lUserID ) //ÊÇÎ񵀮óÒµ
{
bShow = true;
}
#endif
if ( bShow )
{
ANS_Corp_NameData * pNewData = new ANS_Corp_NameData;
*pNewData = *pData;
POSITION pos = m_Corp.AddTail(pNewData);
strTemp.Format( _T("%d-%s"),pData->lCorpID,pData->szCorpName);
long lItem = m_L_Corp.AddString( strTemp );
m_L_Corp.SetItemData( lItem , (DWORD)pos);
}
pData ++;
}
if ( m_L_Corp.GetCount()>1 )
m_L_Corp.SetCurSel(1);
return true;
}
if ( pHead->lFuncType == SMSFUNC_TAB )
{
ANS_Tab * pTab = (ANS_Tab *)pHead->pFrame;
ANS_TabData * pData = (ANS_TabData *)(pHead->pFrame+sizeof(ANS_Tab));
TCHAR Buf[32];
long lCount;
if ( m_bQueryAll )
{
//_T("ÐòºÅ,50;ÆóÒµID,80;ÆóÒµÃû³Æ,150; ·¢ËÍÊýÁ¿,100;½ÓÊÕÊýÁ¿,100;"));
lCount = m_wndList.GetItemCount();
m_wndList.InsertItem( lCount , _itot(lCount+1,Buf,10),0); //ÐòºÅ
_stprintf(Buf , _T("%d") , m_lCurCorpID);
m_wndList.SetItemText(lCount,1,Buf);
m_wndList.SetItemText(lCount,2,m_strCurName);
long lSendCount=0;
long lRecvCount=0;
for ( int i=0;i<pTab->lCount;i++)
{
switch( pData->lSmsType )
{
case SMSTYPE_RECV:
lRecvCount += pData->lCount;
break;
default:
lSendCount += pData->lSFCount;
break;
}
pData++;
}
m_lAllSend +=lSendCount;
m_lAllRecv +=lRecvCount;
m_wndList.SetItemText( lCount ,3 , _itot(lSendCount,Buf,10)); //ÊýÁ¿
m_wndList.SetItemText( lCount ,4 , _itot(lRecvCount,Buf,10)); //ÊýÁ¿
QueryNext();
}
else
{
long lSmsCount = 0;
long lSmsSFCount=0;
for ( int i=0;i<pTab->lCount;i++)
{
lCount = m_wndList.GetItemCount();
m_wndList.InsertItem( lCount , _itot(i+1,Buf,10),0); //ÐòºÅ
_tcscpy( Buf , _T("δ֪") );
switch( pData->lSmsType )
{
case SMSTYPE_SEND:
_tcscpy(Buf , _T("·¢ ËÍ") );
break;
case SMSTYPE_ZF:
_tcscpy(Buf , _T("ת ·¢") );
break;
case SMSTYPE_ALARM:
_tcscpy(Buf , _T("ÈÕ³ÌÌáÐÑ") );
break;
case SMSTYPE_EMAIL:
_tcscpy(Buf , _T("¶ÌÐÅÓʲî") );
break;
case SMSTYPE_RECV:
_tcscpy(Buf , _T("½Ó ÊÕ") );
break;
case SMSTYPE_SP:
_tcscpy(Buf , _T("ÓéÀÖ¶ÌÐÅ") );
break;
case SMSTYPE_SWT:
_tcscpy(Buf , _T("¶ÌÐÅÉÌÎñͨ") );
break;
#ifdef SMSCENTER_ADC
case SMSTYPE_ADC:
_tcscpy(Buf , _T("ADCÒµÎñ") );
break;
#endif
}
m_wndList.SetItemText( lCount ,1 , Buf ); //ÀàÐÍ
m_wndList.SetItemText( lCount ,2 , _itot(pData->lCount,Buf,10)); //ÊýÁ¿
m_wndList.SetItemText( lCount ,3 , _itot(pData->lSFCount,Buf,10)); //ÊýÁ¿
lSmsCount += pData->lCount;
lSmsSFCount += pData->lSFCount;
pData++;
}
lCount = m_wndList.GetItemCount();
m_wndList.InsertItem( lCount , _T(""),0); //ºÏ¼Æ
m_wndList.SetItemText( lCount,1, _T("ºÏ ¼Æ")); //ºÏ¼Æ
m_wndList.SetItemText( lCount,2, _itot(lSmsCount,Buf,10)); //ºÏ¼Æ
m_wndList.SetItemText( lCount,3, _itot(lSmsSFCount,Buf,10)); //ºÏ¼Æ
}
return true;
}
return false;
}
void CTabDlg::Close()
{
//Çå³ý¶ÓÁÐÖеÄÄÚÈÝ
while (!m_Corp.IsEmpty())
{
ANS_Corp_NameData * pData = m_Corp.GetHead();
m_Corp.RemoveHead();
delete pData;
}
}
BOOL CTabDlg::SetRefresh(BOOL bRefresh)
{
m_bRefresh = bRefresh;
return m_bRefresh;
}
void CTabDlg::OnTabQuery()
{
UpdateData(true);
if ( m_tEnd < m_tBegin )
{
MessageBox( _T("²éѯ½áÊøÈÕÆÚ²»ÄÜСÓÚÆðʼÈÕÆÚ£¬Çë¸ÄÕý!") , _T("´íÎó") , MB_ICONWARNING );
return ;
}
/*
COleDateTime tNow = COleDateTime::GetCurrentTime();
COleDateTimeSpan tSpan2(3,0,0,0);
if ( tNow - m_tEnd < tSpan2 )
{
MessageBox( _T("ÒòΪ״̬±¨¸æ»Ø¸´Ê±¼äÓÐÑÓ³Ù£¬Õʵ¥Ö»Äܲéѯµ½Ç°ÈýÌìµÄ£¡") ,_T("Ìáʾ"), MB_ICONWARNING);
return ;
}
*/
if ( COleDateTime::GetCurrentTime() - m_tBegin > COleDateTimeSpan(400,0,0,0) )
{
MessageBox( _T("²éѯÈÕÆÚ¿ç¶È²»ÄÜ´óÓÚ13¸öÔ£¬Çë¸ÄÕý!") , _T("´íÎó") , MB_ICONWARNING );
return ;
}
if ( m_tEnd - m_tBegin > COleDateTimeSpan(400,0,0,0) )
{
MessageBox( _T("²éѯÈÕÆÚ¿ç¶È²»ÄÜ´óÓÚ13¸öÔ£¬Çë¸ÄÕý!") , _T("´íÎó") , MB_ICONWARNING );
return ;
}
if ( m_lCorp < 0 )
{
MessageBox( _T("ûÓпɹ©²éѯµÄÆóÒµ£¬Çë¸ÄÕý!") , _T("´íÎó") , MB_ICONWARNING );
return ;
}
lSmsCount=0;
lSmsCountIndex=0;
lMmsSmsCount=0;
lMmsSmsCountIndex=0;
m_tBegin.GetAsSystemTime(m_tQueryBegin);
m_tEnd.GetAsSystemTime(m_tQueryEnd);
m_tQueryEnd.wHour=23;
m_tQueryEnd.wMinute=59;
m_tQueryEnd.wSecond=59;
POSITION pos = (POSITION)m_L_Corp.GetItemData(m_lCorp);
if ( (long)pos == -1 ) //²éѯËùÓÐÆóÒµ
{
m_wndList.DeleteAllItems();
m_wndList.DeleteAllColumns();
m_wndList.SetHeadings(_T("ÐòºÅ,50;ÆóÒµID,80;ÆóÒµÃû³Æ,250; ¶ÌÐÅÊýÁ¿,100;²ÊÐÅÊýÁ¿,100;"));
m_bQueryAll = true;
m_lAllSend = 0;
m_lAllRecv = 0;
m_lQueryCurCorpID=0;
QueryNext();
}
else
{
m_wndList.DeleteAllItems();
m_wndList.DeleteAllColumns();
m_wndList.SetHeadings(_T("ÐòºÅ,50;ÆóÒµID,80;ÆóÒµÃû³Æ,250; ¶ÌÐÅÊýÁ¿,100;²ÊÐÅÊýÁ¿,100;"));
//m_wndList.SetHeadings(_T("ÐòºÅ,50; ¶ÌÐÅÀàÐÍ,100;¶ÌÐÅÊýÁ¿,100;¼Æ·ÑÊýÁ¿,100;"));
long lCorpID = 0;
POSITION pos2 = pos;
ANS_Corp_NameData * pData = m_Corp.GetNext( pos );
if (pData)
{
lCorpID = pData->lCorpID;
}
else
{
return;
}
m_bQueryAll = false;
REQ_Bill4 * pBill = new REQ_Bill4;memset(pBill,0,sizeof(REQ_Bill4));
pBill->lUserID = -1; //²éѯÓû§ID
m_tBegin.GetAsSystemTime(pBill->tBegin);
m_tEnd.GetAsSystemTime(pBill->tEnd);
pBill->lCorpID = lCorpID;
pBill->tEnd.wHour=23;
pBill->tEnd.wMinute=59;
pBill->tEnd.wSecond=59;
pBill->bJCB = false; //²»²éѯ½á´æ±í
m_pMainFrame->SendFrame(SMSFUNC_BILL4,(BYTE*)pBill,sizeof(REQ_Bill4));
/*
REQ_Tab * pTab = new REQ_Tab;memset(pTab,0,sizeof(REQ_Tab));
m_tBegin.GetAsSystemTime( pTab->tBegin );
m_tEnd.GetAsSystemTime( pTab->tEnd );
pTab->lMobileType = m_lMobileType-1; //ÊÖ»úÀàÐÍ
pTab->bOld = m_bOld; //ÊÇ·ñ²éѯ¾ÉÊý¾Ý
m_pMainFrame->SendFrame(SMSFUNC_TAB,(BYTE*)pTab,sizeof(REQ_Tab));
m_bQueryAll = false;
*/
}
return ;
}
void CTabDlg::OnTabOld()
{
if ( m_B_Old.GetCheck() )
{
GetDlgItem(IDC_TAB_MOBILETYPE)->EnableWindow(true);
}
else
{
GetDlgItem(IDC_TAB_MOBILETYPE)->EnableWindow(false);
}
}
void CTabDlg::OnTabQuery2()
{
CString strTemp;
CString strFind;
m_E_CorpID.GetWindowText(strFind);
if ( strFind.GetLength()<=0 )
return ;
long lSel = m_L_Corp.GetCurSel();
long lCount = m_L_Corp.GetCount();
for ( int i=lSel+1 ; i<lCount ; i++ )
{
m_L_Corp.GetLBText(i,strTemp);
if ( strTemp.Find(strFind)>=0 )
{
m_L_Corp.SetCurSel(i);
return ;
}
}
for ( i=0 ; i<lSel ; i++ )
{
m_L_Corp.GetLBText(i,strTemp);
if ( strTemp.Find(strFind)>=0 )
{
m_L_Corp.SetCurSel(i);
return ;
}
}
}
void CTabDlg::OnRclickTabList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
ShowRMenu();
}
void CTabDlg::ShowRMenu()
{
if (!m_pMainFrame->GetUserPurview(PURVIEW_TAB,false)) //ûÓв鿴ȨÏÞ
return ;
CMenu menu;
menu.CreatePopupMenu();
//¸´ÖÆ
menu.AppendMenu(MF_STRING , MENU_TAB_COPY, _T(" ¸´ÖÆÊý¾Ý ") );
//ÏÔʾ²Ëµ¥
POINT pt ;
::GetCursorPos( &pt );
//this->ClientToScreen( &pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
menu.DestroyMenu();
}
void CTabDlg::On_User_Copy()
{
m_wndList.CopyToClipboard();
MessageBox(_T("Êý¾ÝÒѸ´ÖÆ£¬½¨Òé´ò¿ªExcelÕ³Ìù½øÈ¥") , _T("Ìáʾ") , MB_ICONINFORMATION);
}
void CTabDlg::QueryNext()
{
if ( m_lQueryCurCorpID>=m_L_Corp.GetCount()-1 ) //²éѯÍê±Ï
{
long lItem=m_wndList.GetItemCount();
m_wndList.InsertItem(lItem,_T(""),0);
m_wndList.InsertItem(lItem,_T("ºÏ¼Æ"),0);
CString str;
str.Format(_T("%d") , lSmsCount );
m_wndList.SetItemText(lItem,lSmsCountIndex,str);
str.Format(_T("%d") , lMmsSmsCount );
m_wndList.SetItemText(lItem,lMmsSmsCountIndex,str);
return;
}
m_lQueryCurCorpID ++ ;
m_L_Corp.SetCurSel(m_lQueryCurCorpID);
POSITION pos = (POSITION)m_L_Corp.GetItemData(m_lQueryCurCorpID);
POSITION pos2 = pos;
ANS_Corp_NameData * pData = m_Corp.GetNext( pos );
if (pData)
{
REQ_Bill4 * pBill = new REQ_Bill4;memset(pBill,0,sizeof(REQ_Bill4));
pBill->lUserID = -1; //²éѯÓû§ID
pBill->tBegin = m_tQueryBegin;
pBill->tEnd = m_tQueryEnd;
pBill->bJCB = false;
pBill->lCorpID = pData->lCorpID;
m_lCurCorpID = pData->lCorpID;
m_strCurName = pData->szCorpName;
m_pMainFrame->SendFrame(SMSFUNC_BILL4,(BYTE*)pBill,sizeof(REQ_Bill4));
}
else
{
return;
}
/*
long lCur=m_L_Corp.GetCurSel();
if ( lCur>=m_L_Corp.GetCount()-1 ) //²éѯÍê±Ï
{
TCHAR Buf[32]={0};
long lCount = m_wndList.GetItemCount();
m_wndList.InsertItem( lCount , _itot(lCount+1,Buf,10),0); //ÐòºÅ
_tcscpy(Buf , _T("ºÏ ¼Æ"));
m_wndList.SetItemText(lCount,1,Buf);
m_wndList.SetItemText( lCount ,3 , _itot(m_lAllSend,Buf,10)); //ÊýÁ¿
m_wndList.SetItemText( lCount ,4 , _itot(m_lAllRecv,Buf,10)); //ÊýÁ¿
return;
}
lCur++;
m_L_Corp.SetCurSel(lCur);
POSITION pos = (POSITION)m_L_Corp.GetItemData(lCur);
REQ_Tab * pTab = new REQ_Tab;memset(pTab,0,sizeof(REQ_Tab));
POSITION pos2 = pos;
ANS_Corp_NameData * pData = m_Corp.GetNext( pos );
if (pData)
{
pTab->lCorpID = pData->lCorpID;
m_lCurCorpID = pData->lCorpID;
m_strCurName = pData->szCorpName;
}
else
{
return;
}
m_tBegin.GetAsSystemTime( pTab->tBegin );
m_tEnd.GetAsSystemTime( pTab->tEnd );
pTab->lMobileType = m_lMobileType-1; //ÊÖ»úÀàÐÍ
pTab->bOld = m_bOld; //ÊÇ·ñ²éѯ¾ÉÊý¾Ý
m_pMainFrame->SendFrame(SMSFUNC_TAB,(BYTE*)pTab,sizeof(REQ_Tab));
*/
}
BOOL CTabDlg::ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame)
{
CString str;
if ( pHead->lFuncType == SMSFUNC_BILL4 )
{
ANS_Bill4 * pBill = (ANS_Bill4 *)pFrame;
ANS_BillData4 * pData = (ANS_BillData4 *)(pFrame+sizeof(ANS_Bill4));
if ( pBill->lCount ==2 )
{
long lItem = m_wndList.GetItemCount();
str.Format(_T("%d") , lItem+1);
m_wndList.InsertItem(lItem,str,0);
long lTemp=1;
str.Format(_T("%d") , pBill->lCorpID);
m_wndList.SetItemText(lItem,lTemp++,str);
m_wndList.SetItemText(lItem,lTemp++,pBill->szCorpName);
str.Format(_T("%d") , pData[0].lSendCount );
lSmsCount += pData[0].lSendCount;
lSmsCountIndex = lTemp;
m_wndList.SetItemText(lItem,lTemp++,str);
str.Format(_T("%d") , pData[1].lSendCount );
lMmsSmsCount += pData[1].lSendCount;
lMmsSmsCountIndex = lTemp;
m_wndList.SetItemText(lItem,lTemp++,str);
}
if ( m_bQueryAll )
QueryNext();
return true;
}
return false;
}