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

338 lines
8.1 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.

// DLG_Bill.cpp : implementation file
//
#include "stdafx.h"
#include "smsmanager.h"
#include "DLG_Bill.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// DLG_Bill dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
DLG_Bill::DLG_Bill(CWnd* pParent /*=NULL*/)
: CDialog(DLG_Bill::IDD, pParent)
{
//{{AFX_DATA_INIT(DLG_Bill)
m_tBegin = COleDateTime::GetCurrentTime();
m_tEnd = COleDateTime::GetCurrentTime();
m_lUser = -1;
//}}AFX_DATA_INIT
m_pCUser = (CC_User*)pParent;
memset(&m_User,0,sizeof(m_User));
m_bQueryAll = false;
}
void DLG_Bill::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(DLG_Bill)
DDX_Control(pDX, IDC_BILL_USERID, m_E_UserID);
DDX_Control(pDX, IDC_BILL_USER, m_L_User);
DDX_Control(pDX, IDC_BILL_LIST, m_wndList);
DDX_DateTimeCtrl(pDX, IDC_BILL_TBEGIN, m_tBegin);
DDX_DateTimeCtrl(pDX, IDC_BILL_TEND, m_tEnd);
DDX_CBIndex(pDX, IDC_BILL_USER, m_lUser);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(DLG_Bill, CDialog)
//{{AFX_MSG_MAP(DLG_Bill)
ON_BN_CLICKED(IDC_BILL_QUERY, OnBillQuery)
ON_NOTIFY(NM_RCLICK, IDC_BILL_LIST, OnRclickBillList)
ON_BN_CLICKED(IDC_BILL_QUERY2, OnBillQuery2)
//}}AFX_MSG_MAP
ON_COMMAND(MENU_BILL_COPY , On_User_Copy)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// DLG_Bill message handlers
BOOL DLG_Bill::OnInitDialog()
{
CDialog::OnInitDialog();
//初始化List
m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5);
// m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SMSDF) );
m_wndList.SubClassWindow2();
m_wndList.SetHeadings(_T("序号,50;用户名称,200; 短信数量,100;彩信数量,100;"));
m_wndList.SetGridLines(true);
m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
COleDateTime t = COleDateTime::GetCurrentTime();
COleDateTimeSpan tSpan2(3,0,0,0);
t = t-tSpan2;
m_tBegin.SetDate( t.GetYear(),t.GetMonth(),1 ); //起始
m_tEnd.SetDate( t.GetYear(),t.GetMonth(),t.GetDay() );//结束
UpdateData(false);
//添加用户
CString str;
m_L_User.AddString(_T("所有用户"));
m_L_User.SetItemData(0,-1);
int iSel=0;
POSITION pos = m_pCUser->m_User.GetHeadPosition();
POSITION pos2;
while (pos)
{
pos2 = pos;
ANS_Corp_UserData * pData = m_pCUser->m_User.GetNext( pos );
if ( pData )
{
str.Format( _T("%s-%s") , pData->szLoginName , pData->szName );
long lItem = m_L_User.AddString( str );
m_L_User.SetItemData( lItem , (DWORD)pos2);
if ( pData->lUserID == m_User.lUserID )
iSel = lItem;
}
}
if ( m_L_User.GetCount()>0 )
m_L_User.SetCurSel(iSel);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void DLG_Bill::SetParam(ANS_Corp_UserData user)
{
m_User = user;
}
BOOL DLG_Bill::ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame)
{
if ( pHead->lFuncType == SMSFUNC_BILL4 )
{
ANS_Bill4 * pBill = (ANS_Bill4 *)pFrame;
ANS_BillData4 * pData = (ANS_BillData4 *)(pFrame+sizeof(ANS_Bill4));
TCHAR Buf[64]={0};
long lCount;
//_T("序号,50;企业ID,80;企业名称,150; 发送数量,100;接收数量,100;"));
lCount = m_wndList.GetItemCount();
m_wndList.InsertItem( lCount , _itot(lCount+1,Buf,10),0); //序号
_stprintf(Buf, _T("%s-%s") , m_strLoginName , m_strCurName );
m_wndList.SetItemText(lCount,1,Buf);
long lSendCount=0;
long lSendMmsCount=0;
/*
for ( int i=0;i<pBill->lCount;i++)
{
if ( i==0 )
lSendCount += pData->lSendCount;
if ( i==1 )
lSendMmsCount += pData->lSendCount;
pData++;
}
*/
lSendCount = pData->lSendCount;
if ( pBill->lCount>1 )
lSendMmsCount = pData[1].lSendCount;
m_lAllSend +=lSendCount;
m_lAllMmsSend +=lSendMmsCount;
m_wndList.SetItemText( lCount ,2 , _itot(lSendCount,Buf,10)); //数量
m_wndList.SetItemText( lCount ,3 , _itot(lSendMmsCount,Buf,10)); //数量
if ( m_bQueryAll )
QueryNext();
return true;
}
return false;
}
void DLG_Bill::OnBillQuery()
{
if ( !UpdateData(true) )
return ;
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 ;
}
*/
#ifndef _DEBUG
if ( COleDateTime::GetCurrentTime() - m_tBegin > COleDateTimeSpan(400,0,0,0) )
{
MessageBox( _T("查询日期跨度不能大于3个月请改正!") , _T("错误") , MB_ICONWARNING );
return ;
}
if ( m_tEnd - m_tBegin > COleDateTimeSpan(400,0,0,0) )
{
MessageBox( _T("查询日期跨度不能大于3个月请改正!") , _T("错误") , MB_ICONWARNING );
return ;
}
#endif
long lCorpID=0;
long lUserID=0;
POSITION pos = (POSITION)m_L_User.GetItemData(m_lUser);
if ( (long)pos == -1 ) //查询所有企业
{
m_wndList.DeleteAllColumns();
m_wndList.SetHeadings(_T("序号,50;用户名称,200; 短信数量,100;彩信数量,100;"));
m_wndList.DeleteAllItems();
m_bQueryAll = true;
m_lAllSend = 0;
m_lAllMmsSend = 0;
QueryNext();
}
else
{
m_wndList.DeleteAllColumns();
m_wndList.SetHeadings(_T("序号,50;用户名称,200; 短信数量,100;彩信数量,100;"));
m_wndList.DeleteAllItems();
m_bQueryAll = false;
ANS_Corp_UserData * pData = m_pCUser->m_User.GetNext( pos );
if (pData)
{
lCorpID = pData->lCorpID;
lUserID = pData->lUserID;
m_strCurName = pData->szName;
m_strLoginName= pData->szLoginName;
}
else
{
return;
}
REQ_Bill4 * pBill = new REQ_Bill4;memset(pBill,0,sizeof(REQ_Bill4));
pBill->lCorpID = lCorpID; //企业ID
pBill->lUserID = lUserID; //查询用户ID
m_tBegin.GetAsSystemTime( pBill->tBegin );
m_tEnd.GetAsSystemTime( pBill->tEnd );
pBill->bJCB=false; //不查结存表
this->m_pCUser->m_pMainFrame->SendFrame(SMSFUNC_BILL4,(BYTE*)pBill,sizeof(REQ_Bill4));
}
return ;
}
void DLG_Bill::OnRclickBillList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
ShowRMenu();
}
void DLG_Bill::ShowRMenu()
{
CMenu menu;
menu.CreatePopupMenu();
//复制
menu.AppendMenu(MF_STRING , MENU_BILL_COPY, _T(" 复 制 ") );
//显示菜单
POINT pt ;
::GetCursorPos( &pt );
//this->ClientToScreen( &pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
menu.DestroyMenu();
}
void DLG_Bill::On_User_Copy()
{
m_wndList.CopyToClipboard();
}
void DLG_Bill::OnBillQuery2()
{
CString strTemp;
CString strFind;
m_E_UserID.GetWindowText(strFind);
if ( strFind.GetLength()<=0 )
return ;
long lSel = m_L_User.GetCurSel();
long lCount = m_L_User.GetCount();
for ( int i=lSel+1 ; i<lCount ; i++ )
{
m_L_User.GetLBText(i,strTemp);
if ( strTemp.Find(strFind)>=0 )
{
m_L_User.SetCurSel(i);
return ;
}
}
for ( i=0 ; i<lSel ; i++ )
{
m_L_User.GetLBText(i,strTemp);
if ( strTemp.Find(strFind)>=0 )
{
m_L_User.SetCurSel(i);
return ;
}
}
}
void DLG_Bill::QueryNext()
{
long lCur=m_L_User.GetCurSel();
if ( lCur>=m_L_User.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 ,2 , _itot(m_lAllSend,Buf,10)); //数量
m_wndList.SetItemText( lCount ,3 , _itot(m_lAllMmsSend,Buf,10)); //数量
return;
}
lCur++;
m_L_User.SetCurSel(lCur);
long lCorpID=0;
long lUserID=0;
POSITION pos = (POSITION)m_L_User.GetItemData(lCur);
ANS_Corp_UserData * pData = m_pCUser->m_User.GetNext( pos );
if (pData)
{
lCorpID = pData->lCorpID;
lUserID = pData->lUserID;
m_lCurCorpID = pData->lCorpID;
m_strCurName = pData->szName;
m_strLoginName= pData->szLoginName;
}
else
{
return;
}
REQ_Bill4 * pBill = new REQ_Bill4;memset(pBill,0,sizeof(REQ_Bill4));
pBill->lCorpID = lCorpID; //企业ID
pBill->lUserID = lUserID; //查询用户ID
m_tBegin.GetAsSystemTime( pBill->tBegin );
m_tEnd.GetAsSystemTime( pBill->tEnd );
pBill->bJCB=false; //不查结存表
this->m_pCUser->m_pMainFrame->SendFrame(SMSFUNC_BILL4,(BYTE*)pBill,sizeof(REQ_Bill4));
}