SmsManager/C_FPQuery.cpp

571 lines
13 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.

//
#include "stdafx.h"
#include "smsmanager.h"
#include "C_FPQuery.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CC_FPQuery dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_Corp_FP.h"
CC_FPQuery::CC_FPQuery(CWnd* pParent /*=NULL*/)
: CDialog(CC_FPQuery::IDD, pParent)
, m_lProductType(0)
, m_lClientType(0)
, m_lFPType(0)
, m_lFPStatus(0)
{
//{{AFX_DATA_INIT(CC_FPQuery)
m_tBegin = COleDateTime::GetCurrentTime();
m_tEnd = COleDateTime::GetCurrentTime();
m_lCorp = -1;
m_lClientType=-1;
m_lProductType = -1;
m_lFPStatus = -1;
m_lFPType = -1;
//}}AFX_DATA_INIT
m_bInit = false;
m_bRefresh = false;
}
void CC_FPQuery::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CC_FPQuery)
DDX_Control(pDX, IDC_C_FPQUERY_CORPID, m_E_CorpID);
DDX_Control(pDX, IDC_C_FPQUERY_S1, m_S_S1);
DDX_Control(pDX, IDC_C_FPQUERY_LIST, m_wndList);
DDX_DateTimeCtrl(pDX, IDC_C_FPQUERY_TBEGIN, m_tBegin);
DDX_DateTimeCtrl(pDX, IDC_C_FPQUERY_TEND, m_tEnd);
DDX_CBIndex(pDX, IDC_C_FPQUERY_CORP, m_lCorp);
DDX_Control(pDX, IDC_C_FPQUERY_CORP, m_L_Corp);
//}}AFX_DATA_MAP
DDX_CBIndex(pDX, IDC_C_FPQUERY_PRODUCT, m_lProductType);
DDX_CBIndex(pDX, IDC_C_FPQUERY_CLIENT, m_lClientType);
DDX_CBIndex(pDX, IDC_C_FPQUERY_FPTYPE, m_lFPType);
DDX_CBIndex(pDX, IDC_C_FPQUERY_FPSTATUS, m_lFPStatus);
}
BEGIN_MESSAGE_MAP(CC_FPQuery, CDialog)
//{{AFX_MSG_MAP(CC_FPQuery)
ON_WM_SIZE()
ON_BN_CLICKED(IDC_C_FPQUERY_QUERY, OnCAgentpayQuery)
ON_NOTIFY(NM_DBLCLK, IDC_C_FPQUERY_LIST, OnDblclkCAgentpayList)
ON_NOTIFY(NM_RCLICK, IDC_C_FPQUERY_LIST, OnRclickCAgentpayList)
ON_BN_CLICKED(IDC_C_FPQUERY_QUERY2, OnCPayQuery2)
ON_CBN_SELCHANGE(IDC_C_FPQUERY_CORP, OnSelchangeCPayCorp)
//}}AFX_MSG_MAP
ON_COMMAND(MENU_FPQUERY_COPY, On_User_Copy)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CC_FPQuery message handlers
void CC_FPQuery::Close()
{
Close_Corp();
Close_PayData();
}
BOOL CC_FPQuery::RefreshInfo()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
{
return false;
}
#ifndef SMSMANAGER_KF
//m_pMainFrame->SendFrame(SMSFUNC_CORP_NAME,NULL,0);
#endif
return true;
}
BOOL CC_FPQuery::ReHide()
{
ShowWindow( SW_HIDE );
return true;
}
BOOL CC_FPQuery::ReShow(BOOL bRefresh)
{
ShowWindow( SW_SHOW );
if ( bRefresh || !m_bRefresh )
{
RefreshInfo();
}
return true;
}
BOOL CC_FPQuery::ProcessSocket(Socket_Head *pHead)
{
CString strTemp;
//ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
if (pHead->lFuncType == SMSFUNC_CORP_NAME)
{
m_bRefresh = true; //<2F>Ѿ<EFBFBD>ˢ<EFBFBD>¹<EFBFBD>
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(); //ɾ<><C9BE>ԭ<EFBFBD><D4AD><EFBFBD>е<EFBFBD><D0B5><EFBFBD>ҵ
m_L_Corp.AddString( _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ") );
this->Close_Corp(); //<2F>ر<EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>
for ( int i=0;i<pCorp->lCount;i++ )
{
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_PTR)pos);
pData ++;
}
m_L_Corp.SetCurSel(0);
return true;
}
return false;
}
BOOL CC_FPQuery::ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame)
{
if (pHead->lFuncType == SMSFUNC_FPQUERY)
{
ANS_FPQuery * pSF = (ANS_FPQuery *)pFrame;
ANS_FPQuery_Data * pData = (ANS_FPQuery_Data *)(pFrame + sizeof(ANS_FPQuery));
for (int i = 0; i < pSF->lCount; i++)
{
ANS_FPQuery_Data * pNewData = new ANS_FPQuery_Data;
*pNewData = *pData;
POSITION pos = m_FPData.AddTail(pNewData);
RefreshMonPayData(pNewData, pos);
pData++;
}
if (pSF->lCount == -100) //<2F><>ѯ<EFBFBD>ѽ<EFBFBD><D1BD><EFBFBD>
{
int i = m_wndList.GetItemCount();
m_wndList.InsertItem(i, _T(""), 0);
i++;
m_wndList.InsertItem(i, _T("<EFBFBD>ϼ<EFBFBD>"), 0);
CString strTotal;
strTotal.Format( _T("%15.2f"), m_fTotal);
m_wndList.SetItemText(i, 5, strTotal);
/*
_stprintf(Buf, _T("%8d"), lSms);
m_wndList.SetItemText(i, 6, Buf);
_stprintf(Buf, _T("%8d"), lPresent);
m_wndList.SetItemText(i, 7, Buf);
_stprintf(Buf, _T("%8d"), lSmsAll);
m_wndList.SetItemText(i, 8, Buf);
_stprintf(Buf, _T("%.2f"), fLPTotal);
m_wndList.SetItemText(i, 19, Buf);
_stprintf(Buf, _T("%d"), fLPTotal);
m_wndList.SetItemText(i, 20, lCommend_VipIntTotal);
*/
m_wndList.ShowWindow(SW_SHOW);
}
return true;
}
return false;
}
BOOL CC_FPQuery::OnInitDialog()
{
CDialog::OnInitDialog();
//ȡ<>ù<EFBFBD><C3B9>ò<EFBFBD><C3B2><EFBFBD>
//CMainFrame * pFrame = static_cast <CMainFrame *>((CMainFrame *)AfxGetMainWnd());
this->GetParent()->GetParentFrame();
m_pMainFrame = (CMainFrame *)this->GetParent()->GetParentFrame();
m_pSocket = &m_pMainFrame->m_Socket;
//<2F><>ʼ<EFBFBD><CABC>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("<22><><EFBFBD><EFBFBD>,50;<3B><>ҵID,80; ״̬,60; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,80;<3B><>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>,80;<3B><><EFBFBD>ʽ,80; <20>µ<EFBFBD>ʱ<EFBFBD><CAB1>,130;<3B>˵<EFBFBD><CBB5><EFBFBD>,120; <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>,120; <20><>ַ,350;"));
m_wndList.SetHeadings(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,60;<3B><>ҵID,90; <20><>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>,300;<3B>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>,100;<3B><>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>,100;<3B><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>,150;<3B><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>,150;Ԥ<><D4A4>Ʊ,90;Ӧ<><D3A6>,80;<3B><><EFBFBD><EFBFBD>,80;<3B><>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD>,150;<3B><>Ʊ״̬,100;<3B><>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD>,150;"));
m_wndList.SetGridLines(true);
// m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
m_bInit = true;
COleDateTime t = COleDateTime::GetCurrentTime();
COleDateTime t2 = t - COleDateTimeSpan(10, 0, 0, 0);
m_tBegin.SetDate(t2.GetYear(), t2.GetMonth(), t2.GetDay()); //<2F><>ʼ
m_tEnd.SetDate(t.GetYear(), t.GetMonth(), t.GetDay());//<2F><><EFBFBD><EFBFBD>
m_lClientType = 0;
m_lProductType = 0;
m_lFPStatus = 0;
m_lFPType = 0;
UpdateData(false);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CC_FPQuery::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 CC_FPQuery::PreTranslateMessage(MSG* pMsg)
{
if ( pMsg->hwnd == m_E_CorpID && pMsg->message == WM_KEYDOWN )
{
if ( pMsg->wParam == 13 ) //<2F>س<EFBFBD><D8B3><EFBFBD>
{
this->OnCPayQuery2();
return true;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
void CC_FPQuery::OnCAgentpayQuery()
{
UpdateData(true);
if ( m_tEnd < m_tBegin )
{
MessageBox( _T("<EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!") , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , MB_ICONWARNING );
return ;
}
if (!m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_SEE,false)) //ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ120<32><30><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
{
if (COleDateTime::GetCurrentTime() - m_tBegin>COleDateTimeSpan(90, 0, 0, 0))
{
MessageBox(_T("ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ3<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"), _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), MB_ICONWARNING);
return;
}
}
m_wndList.ShowWindow(SW_HIDE);
m_wndList.DeleteAllItems(); //ɾ<><C9BE>ԭ<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
Close_PayData();
m_fTotal = 0;
m_fLPTotal = 0;
m_lCommend_VipIntTotal = 0;
m_lSms = 0;
m_lPresent = 0;
m_lSmsAll = 0;
REQ_FPQuery * pSee = new REQ_FPQuery;memset(pSee,0,sizeof(REQ_FPQuery));
//<2F><>ҵ
if ( m_lCorp <= 0 ) //ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ
{
pSee->lCorpID = -1;
}
else
{
POSITION pos = (POSITION)m_L_Corp.GetItemData(m_lCorp);
POSITION pos2 = pos;
ANS_Corp_NameData * pData = m_Corp.GetNext( pos );
if (pData)
{
pSee->lCorpID = pData->lCorpID;
}
else
{
return;
}
}
m_tBegin.GetAsSystemTime(pSee->tBegin );
m_tEnd.GetAsSystemTime(pSee->tEnd );
pSee->lClientType = m_lClientType-1;
pSee->lProductType = m_lProductType-1;
pSee->lFPType = m_lFPType-1;
pSee->lFPStatus = m_lFPStatus-1;
m_pMainFrame->SendFrame(SMSFUNC_FPQUERY,(BYTE*)pSee,sizeof(REQ_FPQuery));
}
void CC_FPQuery::RefreshMonPayData(ANS_FPQuery_Data * pData, POSITION pos)
{
int i=0;
TCHAR Buf[128]={0};
CString str;
if ( pData )
{
// m_wndList.SetHeadings(_T("<22><><EFBFBD><EFBFBD>,60;<3B><>ҵID,90; <20><>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>,200;<3B>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>,100;<3B><>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>,100;<3B><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>,100;<3B><>ֵʱ<D6B5><CAB1>,150;Ԥ<><D4A4>Ʊ,90;Ӧ<><D3A6>,80;<3B><><EFBFBD><EFBFBD>,80;<3B><>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD>,100;<3B><>Ʊ״̬,80;<3B><>Ʊʱ<C6B1><CAB1>,150;"));
i = m_wndList.GetItemCount();
_stprintf(Buf, _T("%d"), i + 1);
m_wndList.InsertItem(i, Buf, 0);
m_wndList.SetItemData(i, (DWORD_PTR)pos);
int iTemp = 1;
if (pData->lClientType == 1)
str.Format(_T("A-%d"), pData->lCorpID);
else
str.Format(_T("%d"), pData->lCorpID);
m_wndList.SetItemText(i, iTemp++, str);
//<2F><>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>
m_wndList.SetItemText(i, iTemp++, pData->szCorpName);
//<2F>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>
str = _T("<EFBFBD>ն˿ͻ<EFBFBD>");
if (pData->lClientType == 1) str = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
m_wndList.SetItemText(i, iTemp++, str);
//<2F><>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>
switch (pData->lProductType)
{
case 0:
default:
str = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
break;
case 1:
str = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
break;
case 2:
str = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
break;
case 3:
str = _T("<EFBFBD>½<EFBFBD>");
break;
case 4:
str = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
break;
}
m_wndList.SetItemText(i, iTemp++, str);
//<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
_stprintf(Buf, _T("%10.2f"), pData->fPrice);
m_wndList.SetItemText(i, iTemp++, Buf);
_stprintf(Buf, _T("%04d.%02d.%02d"), pData->tPayTime.wYear, pData->tPayTime.wMonth, pData->tPayTime.wDay);
m_wndList.SetItemText(i, iTemp++, Buf);
//Ӧ<><D3A6>
switch (pData->lYSType)
{
case 0:
default:
iTemp++;
break;
case 1:
m_wndList.SetItemText(i, iTemp++, _T(" <20><>"));
break;
case 2:
m_wndList.SetItemText(i, iTemp++, _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
break;
}
//Ӧ<><D3A6>
if (pData->bYS)
m_wndList.SetItemText(i, iTemp++, _T(" <20><>"));
else
iTemp++;
//<2F><><EFBFBD><EFBFBD>
if (pData->bTest)
m_wndList.SetItemText(i, iTemp++, _T(" <20><>"));
else
iTemp++;
//<2F><>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD>
if (pData->bFP > 0)
{
CString strType = DLG_Corp_FP::GetFPType2(pData->bFP);
//<2F><>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD>
m_wndList.SetItemText(i, iTemp++, strType);
//<2F><>Ʊ״̬
switch (pData->lFPStatus)
{
case 0:
default:
m_wndList.SetItemText(i, iTemp++, _T("δ<EFBFBD><EFBFBD>Ʊ"));
break;
case 1:
m_wndList.SetItemText(i, iTemp++, _T("<EFBFBD>ѿ<EFBFBD>Ʊ"));
break;
case 2:
m_wndList.SetItemText(i, iTemp++, _T("<EFBFBD>Ѽij<EFBFBD>"));
break;
}
//<2F><>Ʊʱ<C6B1><CAB1>
if (pData->lFPStatus > 0)
{
_stprintf(Buf, _T("%04d.%02d.%02d"), pData->tFPTime.wYear, pData->tFPTime.wMonth, pData->tFPTime.wDay);
m_wndList.SetItemText(i, iTemp++, Buf);
}
else
{
iTemp++;
}
}
else
{
iTemp++; iTemp++; iTemp++;
}
//<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
double l = 0.0f;
if (pData->fPrice != 0 && pData->fPriceOne != 0)
l = pData->fPrice / pData->fPriceOne;
long a = long(l + 0.5f);
if (a < 0)
a = long(l - 0.5f);
m_fTotal += pData->fPrice;
m_lSms += a;
m_lPresent += pData->lPresent;
m_lSmsAll += pData->lSMSCount;
}
}
void CC_FPQuery::OnDblclkCAgentpayList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
On_User_See();
}
void CC_FPQuery::OnRclickCAgentpayList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
ShowRMenu();
}
long CC_FPQuery::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
void CC_FPQuery::On_User_See()
{
long lItem = this->GetCurrentSelected();
if ( lItem <0 )
return ;
ANS_FPQuery_Data * pData = NULL;
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
if ( (LONG_PTR)pos>=0 )
{
pData = m_FPData.GetNext( pos );
}
if (pData)
{
}
}
void CC_FPQuery::Close_PayData()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
while (!m_FPData.IsEmpty())
{
ANS_FPQuery_Data * pData = m_FPData.GetHead();
m_FPData.RemoveHead();
delete pData;
}
}
void CC_FPQuery::Close_Corp()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
while (!m_Corp.IsEmpty())
{
ANS_Corp_NameData * pData = m_Corp.GetHead();
m_Corp.RemoveHead();
delete pData;
}
}
void CC_FPQuery::OnCPayQuery2()
{
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);
OnSelchangeCPayCorp();
return ;
}
}
for ( i=0 ; i<lSel ; i++ )
{
m_L_Corp.GetLBText(i,strTemp);
if ( strTemp.Find(strFind)>=0 )
{
m_L_Corp.SetCurSel(i);
OnSelchangeCPayCorp();
return ;
}
}
}
void CC_FPQuery::OnSelchangeCPayCorp()
{
}
void CC_FPQuery::ShowRMenu()
{
/*
CMenu menu;
menu.CreatePopupMenu();
menu.AppendMenu(MF_STRING, MENU_FPQUERY_COPY, _T(" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "));
//<2F><>ʾ<EFBFBD>˵<EFBFBD>
POINT pt;
::GetCursorPos(&pt);
//this->ClientToScreen( &pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON, pt.x, pt.y, this, NULL);
menu.DestroyMenu();
*/
}
void CC_FPQuery::On_User_Copy()
{
m_wndList.CopyToClipboard();
}