SmsManager/C_AgentCJ.cpp

565 lines
14 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

// C_AgentCJ.cpp : implementation file
//
#include "stdafx.h"
#include "smsmanager.h"
#include "C_AgentCJ.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CC_AgentCJ dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_HZB_Export.h"
#include "DLG_Pay_TC.h"
#include "DLG_C_AgentCJ_See.h"
#include "DLG_C_AgentCJ_Pay.h"
CC_AgentCJ::CC_AgentCJ(CWnd* pParent /*=NULL*/)
: CDialog(CC_AgentCJ::IDD, pParent)
{
//{{AFX_DATA_INIT(CC_AgentCJ)
m_tBegin = COleDateTime::GetCurrentTime();
m_tEnd = COleDateTime::GetCurrentTime();
m_lCJType = -1;
//}}AFX_DATA_INIT
m_bInit = false;
m_bRefresh = false;
memset(&m_SeeData , 0 , sizeof(m_SeeData));
}
void CC_AgentCJ::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CC_AgentCJ)
DDX_Control(pDX, IDC_C_AGENTCJ_S1, m_S_S1);
DDX_Control(pDX, IDC_C_AGENTCJ_LIST, m_wndList);
DDX_Control(pDX, IDC_C_AGENTCJ_AGENTID, m_E_AgentID);
DDX_Control(pDX, IDC_C_AGENTCJ_AGENT, m_L_Agent);
DDX_DateTimeCtrl(pDX, IDC_C_AGENTCJ_TBEGIN, m_tBegin);
DDX_DateTimeCtrl(pDX, IDC_C_AGENTCJ_TEND, m_tEnd);
DDX_CBIndex(pDX, IDC_C_AGENTCJ_TYPE, m_lCJType);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CC_AgentCJ, CDialog)
//{{AFX_MSG_MAP(CC_AgentCJ)
ON_WM_SIZE()
ON_BN_CLICKED(IDC_C_AGENTCJ_QUERY3, OnCAgentpayQuery3)
ON_BN_CLICKED(IDC_C_AGENTCJ_QUERY, OnCAgentpayQuery)
ON_NOTIFY(NM_DBLCLK, IDC_C_AGENTCJ_LIST, OnDblclkCAgentpayList)
ON_NOTIFY(NM_RCLICK, IDC_C_AGENTCJ_LIST, OnRclickCAgentpayList)
//}}AFX_MSG_MAP
ON_COMMAND(MENU_AGENTCJ_SEE , On_User_See )
ON_COMMAND(MENU_AGENTCJ_YS , On_User_YS )
ON_COMMAND(MENU_AGENTCJ_EXPORT , On_User_Export )
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CC_AgentCJ message handlers
void CC_AgentCJ::Close()
{
//Çå³ý¶ÓÁÐÖеÄÄÚÈÝ
while (!m_PayData.IsEmpty())
{
ANS_Agent_CJData * pData = m_PayData.GetHead();
m_PayData.RemoveHead();
delete pData;
}
}
BOOL CC_AgentCJ::RefreshInfo()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
{
return false;
}
m_pMainFrame->SendFrame(SMSFUNC_AGENT_NAME,NULL,0); //È¡´úÀíÐÅÏ¢
m_pMainFrame->SendFrame(SMSFUNC_YWY_NAME,NULL,0); //È¡´úÀíÐÅÏ¢
return true;
}
BOOL CC_AgentCJ::ReHide()
{
ShowWindow( SW_HIDE );
return true;
}
BOOL CC_AgentCJ::ReShow(BOOL bRefresh)
{
ShowWindow( SW_SHOW );
if ( bRefresh || !m_bRefresh )
{
RefreshInfo();
}
return true;
}
BOOL CC_AgentCJ::ProcessSocket(Socket_Head *pHead)
{
CString strTemp;
//È¡´úÀíÉÌÐÅÏ¢
if (pHead->lFuncType == SMSFUNC_AGENT_NAME)
{
ANS_Agent_Name * pAgent = (ANS_Agent_Name *)pHead->pFrame;
ANS_Agent_NameData * pData = (ANS_Agent_NameData *)(pHead->pFrame+sizeof(ANS_Agent_Name));
m_L_Agent.ResetContent();
long lItem=0;
CString strTemp;
lItem = m_L_Agent.AddString( _T("ËùÓдúÀíÉÌ") );
m_L_Agent.SetItemData( lItem , (DWORD_PTR)-10);
for ( int i=0;i<pAgent->lCount;i++ )
{
//ANS_Agent_NameData * pNewData = new ANS_Agent_NameData;
//*pNewData = *pData;
//pos = m_Agent.AddTail(pNewData);
strTemp.Format( _T("%d-%s"),pData->lAgentID,pData->szAgentName);
lItem = m_L_Agent.AddString( strTemp );
//m_L_Agent.SetItemData( lItem , (DWORD_PTR)pos);
m_L_Agent.SetItemData( lItem , (DWORD_PTR)pData->lAgentID);
pData ++;
}
m_L_Agent.SetCurSel(0);
return true;
}
if(pHead->lFuncType == SMSFUNC_AGENT_CJ )
{
ANS_Agent_CJ * pPay = (ANS_Agent_CJ *)pHead->pFrame;
ANS_Agent_CJData * pData= (ANS_Agent_CJData *)(pHead->pFrame+sizeof(ANS_Agent_CJ));
Close();
for ( int i=0 ; i<pPay->lCount ; i++ )
{
ANS_Agent_CJData * pNewData = new ANS_Agent_CJData;
*pNewData = *pData;
POSITION pos = m_PayData.AddTail(pNewData);
pData ++;
}
RefreshAgentCJData();
return true;
}
if(pHead->lFuncType == SMSFUNC_AGENT_TC )
{
ANS_Agent_TC * pPay = (ANS_Agent_TC *)pHead->pFrame;
ANS_Agent_TCData * pData= (ANS_Agent_TCData *)(pHead->pFrame+sizeof(ANS_Agent_TC));
DLG_C_AgentCJ_See dlg(this);
dlg.SetParam(&m_SeeData , pPay , pData );
dlg.DoModal();
return true;
}
if(pHead->lFuncType == SMSFUNC_AGENT_CJFF )
{
ANS_Agent_CJFF * pPay = (ANS_Agent_CJFF *)pHead->pFrame;
ANS_Agent_CJFFData * pData= (ANS_Agent_CJFFData *)(pHead->pFrame+sizeof(ANS_Agent_CJFF));
for ( int i=0 ; i< pPay->lCount ; i++ )
{
m_wndList.SetItemText( pData->lItem , 5 , _T(" ÒѸ¶") );
pData ++;
}
CString str;
str.Format( _T("Ö§¸¶´úÀí³ê½ð³É¹¦£¬¹²ÉèÖÃ%dÌõ¼Ç¼£¡") , pPay->lCount );
MessageBox( str , _T("ÐÅÏ¢") , MB_ICONINFORMATION );
return true;
}
return false;
}
BOOL CC_AgentCJ::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_LIST) );
m_wndList.SubClassWindow2();
m_wndList.SetHeadings(_T("ÐòºÅ,50; ´úÀíÃû³Æ,200; ³ê½ðÔ·Ý,80;³ê½ð½ð¶î,80;³ê½ð±ÊÊý,80;ÊÇ·ñÖ§¸¶,80; Ö§¸¶Ê±¼ä,120;³öµ¥ÈË,80; ±¸×¢,120;"));
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 );//½áÊø
*/
SYSTEMTIME t; ::GetLocalTime(&t);
m_tBegin.SetDate( t.wYear,t.wMonth,1 ); //Æðʼ
m_tEnd.SetDate( t.wYear,t.wMonth,t.wDay );//½áÊø
m_lCJType = 0;
UpdateData(false);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CC_AgentCJ::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);
}
}
void CC_AgentCJ::OnCAgentpayQuery3()
{
CString strTemp;
CString strFind;
m_E_AgentID.GetWindowText(strFind);
if ( strFind.GetLength()<=0 )
return ;
long lSel = m_L_Agent.GetCurSel();
long lCount = m_L_Agent.GetCount();
for ( int i=lSel+1 ; i<lCount ; i++ )
{
m_L_Agent.GetLBText(i,strTemp);
if ( strTemp.Find(strFind)>=0 )
{
m_L_Agent.SetCurSel(i);
return ;
}
}
for ( i=0 ; i<lSel ; i++ )
{
m_L_Agent.GetLBText(i,strTemp);
if ( strTemp.Find(strFind)>=0 )
{
m_L_Agent.SetCurSel(i);
return ;
}
}
}
BOOL CC_AgentCJ::PreTranslateMessage(MSG* pMsg)
{
if ( pMsg->hwnd == m_E_AgentID && pMsg->message == WM_KEYDOWN )
{
if ( pMsg->wParam == 13 ) //»Ø³µ¼ü
{
this->OnCAgentpayQuery3();
return true;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
void CC_AgentCJ::OnCAgentpayQuery()
{
UpdateData(true);
if ( m_tEnd < m_tBegin )
{
MessageBox( _T("²éѯ½áÊøÈÕÆÚ²»ÄÜСÓÚÆðʼÈÕÆÚ£¬Çë¸ÄÕý!") , _T("´íÎó") , MB_ICONWARNING );
return ;
}
REQ_Agent_CJ * pCJ = new REQ_Agent_CJ;memset(pCJ,0,sizeof(REQ_Agent_CJ));
//´úÀíÉÌ
pCJ->lAgentID = m_L_Agent.GetItemData(m_L_Agent.GetCurSel());
if (pCJ->lAgentID<=0 ) //Ñ¡ÁËËùÓдúÀíÉÌ
pCJ->lAgentID = -1;
m_tBegin.GetAsSystemTime( pCJ->tBegin );
m_tEnd.GetAsSystemTime( pCJ->tEnd );
pCJ->lType = m_lCJType;
m_pMainFrame->SendFrame(SMSFUNC_AGENT_CJ,(BYTE*)pCJ,sizeof(REQ_Agent_CJ));
}
void CC_AgentCJ::RefreshAgentCJData()
{
long lAgentID = -10; //ÏÔʾËùÓеÄ
m_wndList.ShowWindow(SW_HIDE);
m_wndList.DeleteAllItems(); //ɾ³ýÔ­ÓеÄÄÚÈÝ
POSITION pos = m_PayData.GetHeadPosition();
POSITION pos2=0;
int i=0;
TCHAR Buf[128]={0};
double fTotal=0;
long lCount=0;
while ( pos )
{
pos2 = pos;
ANS_Agent_CJData * pData = m_PayData.GetNext(pos);
if ( pData )
{
/*
if ( (lAgentID == -10) ||
(lAgentID == -11 && pData->lAgentID <=0 ) ||
(lAgentID == -12 && pData->lAgentID >0 ) ||
(lAgentID == pData->lAgentID ) )
*/
{
//m_wndList.SetHeadings(_T("ÐòºÅ,50; ´úÀíÃû³Æ,200; ³ê½ðÔ·Ý,80;³ê½ð½ð¶î,80;³ê½ð±ÊÊý,80;ÊÇ·ñÖ§¸¶,80; Ö§¸¶Ê±¼ä,120; ±¸×¢,120;"));
_stprintf( Buf , _T("%d") , i+1 );
m_wndList.InsertItem( i , Buf , 0 ); //ItemΪ0µÄÔ­ÒòÊǵ¹×ªÏÔʾ
//_stprintf( Buf , _T("%d-%s"),pData->lAgentID,pData->szAgentName);
m_wndList.SetItemText( i , 1 , pData->szAgentName);
_stprintf( Buf , _T("%04d-%02d") , pData->tCJTime.wYear , pData->tCJTime.wMonth );
m_wndList.SetItemText( i , 2 , Buf );
_stprintf( Buf , _T("%8.2f") , pData->fCJTotal);
m_wndList.SetItemText( i , 3 , Buf );
_stprintf( Buf , _T("%7d") , pData->lCJCount );
m_wndList.SetItemText( i , 4 , Buf );
if ( pData->lCJType==1 )
m_wndList.SetItemText( i , 5 , _T(" ÒѸ¶") );
else
m_wndList.SetItemText( i , 5 , _T(" δ¸¶") );
_stprintf( Buf , _T("%04d.%02d.%02d") , pData->lCJFFTime.wYear,pData->lCJFFTime.wMonth,pData->lCJFFTime.wDay);
m_wndList.SetItemText( i , 6 , Buf );
m_wndList.SetItemText( i , 7 , pData->szCJFFUser );
m_wndList.SetItemText( i , 8 , pData->szBZ );
m_wndList.SetItemData(i , (DWORD_PTR)pos2 );
fTotal += pData->fCJTotal;
lCount += pData->lCJCount;
i++;
}
}
}
m_wndList.InsertItem(i,_T(""),0 );
i++;
m_wndList.InsertItem(i,_T("ºÏ¼Æ"),0 );
_stprintf( Buf , _T("%8.2f") , fTotal );
m_wndList.SetItemText( i , 3 , Buf );
_stprintf( Buf , _T("%8d") , lCount);
m_wndList.SetItemText( i , 4 , Buf );
m_wndList.ShowWindow(SW_SHOW);
}
void CC_AgentCJ::OnDblclkCAgentpayList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
On_User_See();
}
void CC_AgentCJ::OnRclickCAgentpayList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
ShowRMenu();
}
void CC_AgentCJ::ShowRMenu()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
{
return ;
}
CMenu menu;
menu.CreatePopupMenu();
BOOL bLock = false;
ANS_Agent_CJData * pData = NULL;
long lItem = this->GetCurrentSelected();
if ( lItem>=0 )
{
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
pData = m_PayData.GetNext( pos );
}
//Ìí¼Ó
if ( lItem>=0 )
{
menu.AppendMenu(MF_STRING , MENU_AGENTCJ_SEE , _T(" ²é ¿´ ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_AGENTCJ_SEE , _T(" ²é ¿´ ") );
}
menu.AppendMenu(MF_SEPARATOR );
if ( lItem>=0 && pData && pData->lCJType==0)
{
menu.AppendMenu(MF_STRING , MENU_AGENTCJ_YS , _T(" Ö§¸¶³ê½ð ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_AGENTCJ_YS , _T(" Ö§¸¶³ê½ð ") );
}
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING , MENU_AGENTCJ_EXPORT , _T(" µ¼ ³ö ") );
//ÏÔʾ²Ëµ¥
POINT pt ;
::GetCursorPos( &pt );
//this->ClientToScreen( &pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
menu.DestroyMenu();
}
long CC_AgentCJ::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
void CC_AgentCJ::On_User_See()
{
long lItem = GetCurrentSelected();
if ( lItem < 0 )
return ;
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
ANS_Agent_CJData * pData = m_PayData.GetNext( pos );
if (pData)
{
m_SeeData = *pData;
REQ_Agent_TC * pTC = new REQ_Agent_TC;memset(pTC,0,sizeof(REQ_Agent_TC));
//´úÀíÉÌ
pTC->lAgentID = m_SeeData.lAgentID;
pTC->tProcessTime=m_SeeData.tCJTime;
m_pMainFrame->SendFrame(SMSFUNC_AGENT_TC,(BYTE*)pTC,sizeof(REQ_Agent_TC));
}
}
void CC_AgentCJ::On_User_YS()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
{
return ;
}
long lItem = this->GetCurrentSelected();
if ( lItem <0 )
return ;
DLG_C_AgentCJ_Pay dlg(this);
if ( dlg.DoModal() != IDOK )
return ;
long lCount = m_wndList.GetItemCount();
ANS_Agent_CJFFData * pData = new ANS_Agent_CJFFData[lCount];
memset(pData , 0 , sizeof(ANS_Agent_CJFFData)*lCount );
long lDataCount=0;
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
ANS_Agent_CJData * pCJData2;
POSITION pos2;
while(pos)
{
long lItem = m_wndList.GetNextSelectedItem(pos);
pos2 = (POSITION)m_wndList.GetItemData(lItem);
pCJData2 = m_PayData.GetNext(pos2); //È¡µÃÁбíÖеÄpos
if ( pCJData2->lCJType==0 )
{
pData[lDataCount].lItem = lItem;
pData[lDataCount].lCJID = pCJData2->lCJID;
pData[lDataCount].lAgentID=pCJData2->lAgentID;
lDataCount++;
}
}
if ( lDataCount >0 )
{
long lSize = sizeof(REQ_Agent_CJFF) + sizeof(ANS_Agent_CJFFData)*lDataCount ;
BYTE * pSendData = new BYTE[lSize];
memset(pSendData,0,lSize);
REQ_Agent_CJFF * pCJFF = (REQ_Agent_CJFF*)pSendData;
ANS_Agent_CJFFData * pCJFFData = (ANS_Agent_CJFFData*)(pSendData+sizeof(REQ_Agent_CJFF));
pCJFF->lCount = lDataCount;
dlg.m_tTime.GetAsSystemTime(pCJFF->tTime);
_tcscpy(pCJFF->szBZ , dlg.m_strBZ );
memcpy(pCJFFData , pData , sizeof(ANS_Agent_CJFFData)*lDataCount );
m_pMainFrame->SendFrame( SMSFUNC_AGENT_CJFF , (BYTE*)pSendData , lSize);
}
delete pData;
}
void CC_AgentCJ::On_User_Export()
{
//m_wndList.SetHeadings(_T("ÐòºÅ,50; ´úÀíÃû³Æ,200; ³ê½ðÔ·Ý,80;³ê½ð½ð¶î,80;³ê½ð±ÊÊý,80;ÊÇ·ñÖ§¸¶,80; Ö§¸¶Ê±¼ä,120;³öµ¥ÈË,80; ±¸×¢,120;"));
SortItem item[32]={0};
_tcscpy(item[0].szItem,_T("´úÀíÃû³Æ"));
_tcscpy(item[1].szItem,_T("³ê½ðÔ·Ý"));
_tcscpy(item[2].szItem,_T("³ê½ð½ð¶î"));
_tcscpy(item[3].szItem,_T("³ê½ð±ÊÊý"));
_tcscpy(item[4].szItem,_T("ÊÇ·ñÖ§¸¶"));
_tcscpy(item[5].szItem,_T("Ö§¸¶Ê±¼ä"));
_tcscpy(item[6].szItem,_T("³öµ¥ÈË"));
_tcscpy(item[7].szItem,_T("±¸×¢"));
DLG_HZB_Export dlg(this);
dlg.SetParam( &m_wndList );
dlg.SetListItem(item,8,-3);
dlg.DoModal();
}