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

486 lines
11 KiB
C++
Raw Permalink 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.

// FBack.cpp : implementation file
//
#include "stdafx.h"
#include "corpsms.h"
#include "FBack.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFBack dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_Back_Add.h"
#include "DLG_User_InportP2.h"
#include "DLG_Back_Export.h"
CFBack::CFBack(CWnd* pParent /*=NULL*/)
: CDialog(CFBack::IDD, pParent)
{
//{{AFX_DATA_INIT(CFBack)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_bInit = false;
m_bRefresh = false;
m_bRefresh2= false;
}
void CFBack::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFBack)
DDX_Control(pDX, IDC_QUERYFILT_LIST, m_wndList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CFBack, CDialog)
//{{AFX_MSG_MAP(CFBack)
ON_WM_SIZE()
ON_NOTIFY(NM_DBLCLK, IDC_QUERYFILT_LIST, OnDblclkQueryfiltList)
ON_NOTIFY(LVN_KEYDOWN, IDC_QUERYFILT_LIST, OnKeydownQueryfiltList)
ON_NOTIFY(NM_RCLICK, IDC_QUERYFILT_LIST, OnRclickQueryfiltList)
ON_WM_DESTROY()
//}}AFX_MSG_MAP
ON_COMMAND( MENU_BACK_ADD , On_R_Add )
ON_COMMAND( MENU_BACK_MODIFY , On_R_Modify )
ON_COMMAND( MENU_BACK_DELETE , On_R_Delete )
ON_COMMAND( MENU_BACK_INPORT , On_R_Inport )
ON_COMMAND( MENU_BACK_EXPORT , On_R_Export )
ON_COMMAND( MENU_BACK_REFRESH, On_R_Refresh )
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFBack message handlers
BOOL CFBack::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 );
m_AdoRS2.SetAdoConnection( &m_pMainFrame->m_adoConnection );
//³õʼ»¯List
m_Image.Create(16,16,ILC_COLOR32|ILC_MASK,5,5);
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_BACK) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LOCK) );
m_wndList.SubClassWindow2();
m_wndList.SetHeadings(_T("ÐòºÅ,50; ״̬,60; ÊÖ»úºÅÂë,100; ˵Ã÷,250;"));
m_wndList.SetGridLines(true);
//m_wndList.SetCheckboxes(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
}
void CFBack::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if ( m_bInit )
{
m_wndList.MoveWindow( 0 , 0 , cx,cy);
}
}
void CFBack::OnOK()
{
//CDialog::OnOK();
}
void CFBack::OnCancel()
{
//CDialog::OnCancel();
}
BOOL CFBack::ReHide()
{
ShowWindow( SW_HIDE );
return true;
}
BOOL CFBack::ReShow(BOOL bRefresh)
{
ShowWindow( SW_SHOW );
if ( bRefresh || !m_bRefresh )
{
RefreshInfo();
}
return true;
}
BOOL CFBack::RefreshInfo()
{
/*
BOOL bQuery = m_pMainFrame->m_Setup.bSDK & SDK_AUTOQUERY ? true:false;
if ( bQuery )
{
REQ_BACK_See * pSee = new REQ_BACK_See;
pSee->lCorpID = m_pMainFrame->m_lCorpID;
pSee->lUserID = m_pMainFrame->m_lUserID;
m_pMainFrame->SendFrame( SMSFUNC_BACK_SEE , (BYTE*)pSee , sizeof( REQ_BACK_See ) ); //·¢ËÍÈ¡×ÊÁϵÄÇëÇó
}
*/
ShowBack();
return true;
}
BOOL CFBack::ProcessSocket(Socket_Head *pHead)
{
return false;
}
void CFBack::ShowRMenu()
{
CMenu menu;
menu.CreatePopupMenu();
BOOL bLock = false;
long lItem = this->GetCurrentSelected();
//Ìí¼Ó
menu.AppendMenu(MF_STRING , MENU_BACK_ADD, _T(" Ìí¼ÓºÚÃûµ¥ ") );
menu.AppendMenu(MF_SEPARATOR );
//ÐÞ¸Ä
if ( lItem >=0 && !bLock)
{
menu.AppendMenu(MF_STRING , MENU_BACK_MODIFY, _T(" ÐÞ ¸Ä ") );
menu.AppendMenu(MF_STRING , MENU_BACK_DELETE, _T(" ɾ ³ý ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_BACK_MODIFY, _T(" ÐÞ ¸Ä ") );
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_BACK_DELETE, _T(" ɾ ³ý ") );
}
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING , MENU_BACK_INPORT, _T(" µ¼Èë... ") );
menu.AppendMenu(MF_STRING , MENU_BACK_EXPORT, _T(" µ¼³ö... ") );
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING , MENU_BACK_REFRESH, _T(" ˢ Р") );
//ÏÔʾ²Ëµ¥
POINT pt ;
::GetCursorPos( &pt );
//this->ClientToScreen( &pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
menu.DestroyMenu();
}
long CFBack::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
void CFBack::OnDblclkQueryfiltList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
On_R_Modify();
}
void CFBack::OnKeydownQueryfiltList(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;
*pResult = 0;
if ( pLVKeyDow->wVKey == VK_DELETE )
{
On_R_Delete();
}
if ( pLVKeyDow->wVKey == VK_INSERT)
{
On_R_Add();
}
if ( pLVKeyDow->wVKey == VK_SPACE)
{
On_R_Modify();
}
if ( pLVKeyDow->wVKey == 'I' || pLVKeyDow->wVKey == 'i')
{
On_R_Inport();
}
if ( pLVKeyDow->wVKey == 'R' || pLVKeyDow->wVKey == 'r')
{
On_R_Refresh();
}
if ( pLVKeyDow->wVKey == 'A' || pLVKeyDow->wVKey == 'a')
{
m_wndList.SelectAllItems();
}
}
void CFBack::OnRclickQueryfiltList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
ShowRMenu();
}
void CFBack::On_R_Add()
{
Back_Data data={0};
data.lStatus = 1; //ĬÈÏÆô¶¯
DLG_Back_Add dlg(this);
dlg.SetParam(data);
if ( dlg.DoModal()==IDOK )
{
data = dlg.GetParam();
if ( m_AdoRS.Open( _T("Back") , adCmdTable ) )
{
m_AdoRS.AddNew();
m_AdoRS.PutCollect( _T("Status") , data.lStatus );
m_AdoRS.PutCollect( _T("Mobile") , data.szMobile );
m_AdoRS.PutCollect( _T("BZ") , data.szBZ );
m_AdoRS.Update();
m_AdoRS.GetCollect( _T("BackID") , data.lBackID );
m_AdoRS.Close();
//¸üе½ÁбíÖÐ
TCHAR szBuf[32]={0};
long i=m_wndList.GetItemCount();
m_wndList.InsertItem( i , _itot(i+1,szBuf,10) ); //ÐòºÅ
m_wndList.SetItemData( i , data.lBackID );
if ( data.lStatus == 1 )
m_wndList.SetItemText(i,1, _T("ÆôÓÃ") );
else
m_wndList.SetItemText(i,1, _T("") );
m_wndList.SetItemText(i,2, data.szMobile );
m_wndList.SetItemText(i,3, data.szBZ );
}
}
}
void CFBack::On_R_Modify()
{
long lItem = this->GetCurrentSelected();
if ( lItem < 0 )
return ;
Back_Data data=GetQueryFiltData(lItem);
DLG_Back_Add dlg(this);
dlg.SetParam(data);
if ( dlg.DoModal()==IDOK )
{
data = dlg.GetParam();
CString str;
str.Format(_T("select * from back where BackID=%d") , data.lBackID );
if ( m_AdoRS.Open( str) && !m_AdoRS.IsEOF() )
{
m_AdoRS.PutCollect( _T("Status") , data.lStatus );
m_AdoRS.PutCollect( _T("Mobile") , data.szMobile );
m_AdoRS.PutCollect( _T("BZ") , data.szBZ );
m_AdoRS.Update();
m_AdoRS.PutCollect( _T("BackID") , data.lBackID );
m_AdoRS.Close();
//¸üе½ÁбíÖÐ
TCHAR szBuf[32]={0};
long i=lItem;
m_wndList.SetItemData( i , data.lBackID );
if ( data.lStatus == 1 )
m_wndList.SetItemText(i,1, _T("ÆôÓÃ") );
else
m_wndList.SetItemText(i,1, _T("") );
m_wndList.SetItemText(i,2, data.szMobile );
m_wndList.SetItemText(i,3, data.szBZ );
}
}
}
void CFBack::On_R_Delete()
{
CString str;
long lCount = m_wndList.GetSelectedCount();
long * lDel = new long[lCount];
memset(lDel , 0 , sizeof(long)*lCount);
long lIndex=0;
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
while(pos)
{
lDel[lIndex] = m_wndList.GetNextSelectedItem(pos);
lIndex++;
}
m_wndList.ShowWindow( SW_HIDE ); //ΪÁ˼ӿìÏÔʾËÙ¶È
for ( int i = lIndex-1 ; i>=0 ; i-- )
{
long lBackID = m_wndList.GetItemData(lDel[i]);
m_wndList.DeleteItem(lDel[i]); //´ÓListCtrlÖÐɾ³ý
//´ÓÊý¾Ý¿âÖÐɾ³ý
str.Format( _T("delete from back where backid=%d") , lBackID );
m_AdoRS.Open(str);
}
delete lDel;
m_wndList.ShowWindow( SW_SHOW ); //ΪÁ˼ӿìÏÔʾËÙ¶È
}
void CFBack::On_R_Inport()
{
m_wndList.ShowWindow(SW_HIDE); //¼Ó¿ìÏÔʾËÙ¶È
Inport_Field Field[] =
{
{_T("ÊÖ»úºÅÂë"),0,7,-1},
{_T("˵Ã÷"),0,12,-1},
{_T("״̬"),0,13,-1},
};
DLG_User_InportP2 dlg(this);
dlg.SetParam(&Field[0],sizeof(Field)/sizeof(Inport_Field),6);
//DLG_Send_Inport dlg(this);
//dlg.SetInport(true);
dlg.DoModal();
RefreshInfo(); //Ë¢ÐÂ
}
void CFBack::On_R_Export()
{
DLG_Back_Export dlg(this);
dlg.SetParam(&m_AdoRS2,&m_wndList,0);
dlg.DoModal();
}
void CFBack::On_R_Refresh()
{
RefreshInfo();
}
Back_Data CFBack::GetQueryFiltData(long lItem)
{
Back_Data data={0};
long lID = m_wndList.GetItemData(lItem);
if ( lID >= 0 )
{
//m_wndList.SetHeadings(_T("ÐòºÅ,50; ״̬,60; ÀàÐÍ,60; ÐÕ Ãû,100 ÊÖ»úºÅÂë,120; ±¸ ×¢,200;"));
data.lBackID = lID;
CString str;
str = m_wndList.GetItemText( lItem , 1 );
if ( str == _T("ÆôÓÃ") )
data.lStatus = 1;
else
data.lStatus = 0;
m_wndList.GetItemText( lItem , 2 , data.szMobile , sizeof(data.szMobile));
m_wndList.GetItemText( lItem , 3 , data.szBZ , sizeof(data.szBZ));
}
return data;
}
BOOL CFBack::QueryMobile(const TCHAR *pMobile, long lID)
{
long lCount = m_wndList.GetItemCount();
for ( int i=0 ; i<lCount ; i++ )
{
long lID2 = m_wndList.GetItemData(i);
if ( lID2 != lID )
{
CString strMobile;
strMobile = m_wndList.GetItemText(i,4);
if ( strMobile == CString(pMobile) )
{
return true;
}
}
}
return false;
}
void CFBack::OnDestroy()
{
CDialog::OnDestroy();
}
void CFBack::ShowBack()
{
m_wndList.ShowWindow( SW_HIDE ); //ΪÁ˼ӿìÏÔʾËÙ¶È
m_wndList.DeleteAllItems();
CString strWhere;
strWhere = _T("Select * from Back Order by Mobile ");
BOOL b = m_AdoRS.Open( strWhere );
long lCount = m_AdoRS.GetRecordCount();
if ( b && lCount )
{
COleDateTime t;
m_AdoRS.MoveFirst();
for ( int i = 0 ; i< lCount ; i++ )
{
Back_Data data={0};
TCHAR szBuf[32]={0};
COleDateTime t;
m_AdoRS.GetCollect( _T("BackID") , data.lBackID);
m_AdoRS.GetCollect( _T("Status") , data.lStatus);
m_AdoRS.GetCollect( _T("Mobile") , data.szMobile);
m_AdoRS.GetCollect( _T("BZ") , data.szBZ);
m_AdoRS.MoveNext();
//m_wndList.SetHeadings(_T("ÐòºÅ,50; ÐÕÃû,80; µç»°,80;ÊÖ»ú,100; ÉúÈÕ,90; Ê¡·Ý,100; ³µÅÆ,100; ³µÐÍ,100;"));
m_wndList.InsertItem( i , _itot(i+1,szBuf,10) ); //ÐòºÅ
m_wndList.SetItemData( i , data.lBackID );
if ( data.lStatus == 1 )
m_wndList.SetItemText(i,1, _T("ÆôÓÃ") );
else
m_wndList.SetItemText(i,1, _T("") );
m_wndList.SetItemText(i,2, data.szMobile );
m_wndList.SetItemText(i,3, data.szBZ );
}
}
m_wndList.ShowWindow( SW_SHOW ); //ΪÁ˼ӿìÏÔʾËÙ¶È
return ;
}
BOOL CFBack::AddUser(PAddress user, long lItem)
{
Back_Data data = {0};
data.lStatus = 1;
if ( _tcslen(user.szTel) >0 && _ttol(user.szTel)==0 )
data.lStatus = 0;
_tcscpy(data.szMobile , user.szMobile );
_tcscpy(data.szBZ , user.szBZ );
if ( m_AdoRS.Open( _T("Back") , adCmdTable ) )
{
m_AdoRS.AddNew();
m_AdoRS.PutCollect( _T("Status") , data.lStatus );
m_AdoRS.PutCollect( _T("Mobile") , data.szMobile );
m_AdoRS.PutCollect( _T("BZ") , data.szBZ );
m_AdoRS.Update();
m_AdoRS.PutCollect( _T("BackID") , data.lBackID );
m_AdoRS.Close();
}
return true;
}