CorpSms/DLG_SMSJS_Export.cpp

438 lines
11 KiB
C++
Raw Normal View History

2025-02-27 16:58:16 +08:00
// DLG_SMSJS_Export.cpp : implementation file
//
#include "stdafx.h"
#include "corpsms.h"
#include "DLG_SMSJS_Export.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// DLG_SMSJS_Export dialog
DLG_SMSJS_Export::DLG_SMSJS_Export(CWnd* pParent /*=NULL*/)
: CDialog(DLG_SMSJS_Export::IDD, pParent)
{
//{{AFX_DATA_INIT(DLG_SMSJS_Export)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_pAdo = NULL;
m_pList = NULL;
}
void DLG_SMSJS_Export::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(DLG_SMSJS_Export)
DDX_Control(pDX, IDD_SMSJS_EXPORT_SEL, m_B_OnlySel);
DDX_Control(pDX, IDD_SMSJS_EXPORT_HEAD, m_B_AddHead);
DDX_Control(pDX, IDD_SMSJS_EXPORT_LIST, m_L_List);
DDX_Control(pDX, IDD_SMSJS_EXPORT_FILENAME, m_E_FileName);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(DLG_SMSJS_Export, CDialog)
//{{AFX_MSG_MAP(DLG_SMSJS_Export)
ON_BN_CLICKED(IDD_SMSJS_EXPORT_CLEAR, OnSmsjsExportClear)
ON_BN_CLICKED(IDD_SMSJS_EXPORT_SELALL, OnSmsjsExportSelall)
ON_BN_CLICKED(IDD_SMSJS_EXPORT_GETFILE, OnSmsjsExportGetfile)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// DLG_SMSJS_Export message handlers
BOOL DLG_SMSJS_Export::OnInitDialog()
{
CDialog::OnInitDialog();
InitList();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void DLG_SMSJS_Export::InitList()
{
m_L_List.Init(true,-1,-1,-1);
m_L_List.InsertColumn( 0 , _T("˳<EFBFBD><EFBFBD>") , LVCFMT_LEFT , 40 , 0);
m_L_List.InsertColumn( 1 , _T(" <20>ֶ<EFBFBD><D6B6><EFBFBD>") , LVCFMT_LEFT , 120 , 1);
m_L_List.SetTextColor( RGB(0,0,255) );
TCHAR * pItem[] =
{
_T("<EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>"),
_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),
_T("<EFBFBD><EFBFBD><EFBFBD>պ<EFBFBD><EFBFBD><EFBFBD>"),
_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>"),
_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),
_T("<EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
#ifdef MOBSET_OEM_SNLD
_T("<EFBFBD>dz<EFBFBD>"),
_T("<EFBFBD>Ա<EFBFBD>"),
_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),
_T("<EFBFBD><EFBFBD>˾"),
_T("ְ<EFBFBD><EFBFBD>"),
_T("<EFBFBD>"),
_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),
_T("Email"),
_T("QQ"),
_T("<EFBFBD><EFBFBD>ע"),
#endif
#ifdef YQ_VER
_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),
_T("<EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
#endif
};
TCHAR Buf[256];
int lCount=6;
#ifdef MOBSET_OEM_SNLD
lCount += 10;
#endif
for ( int i = 0 ; i<lCount ; i++ )
{
m_L_List.InsertItem( i , _itot(i+1,Buf,10) );
m_L_List.SetItemText(i , 1 , pItem[i] );
m_L_List.SetItemData(i , i ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>
}
#ifdef YQ_VER
lCount += 2;
int j=0;
for ( ; i<lCount ; i++ )
{
m_L_List.InsertItem( i , _itot(i+1,Buf,10) );
m_L_List.SetItemText(i , 1 , pItem[i] );
m_L_List.SetItemData(i , 20+j ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>
j++;
}
#endif
m_L_List.CheckAll();
m_L_List.NoverCheck();
m_L_List.ReShowSort();
}
void DLG_SMSJS_Export::OnSmsjsExportClear()
{
m_L_List.ClearAll();
}
void DLG_SMSJS_Export::OnSmsjsExportSelall()
{
m_L_List.CheckAll();
}
void DLG_SMSJS_Export::OnOK()
{
long lItemCount = m_L_List.GetItemCount();
long lExPortItem[50];memset(&lExPortItem,0,sizeof(lExPortItem));
for ( int j=0 ; j < 50 ; j++ ) lExPortItem[j] = -1;
long lCheckCount = 0;
for ( int i=0 ; i<lItemCount ; i++ )
{
if ( m_L_List.GetCheck(i) )
{
lExPortItem[lCheckCount] = m_L_List.GetItemData(i) ;
lCheckCount ++;
}
}
if ( lCheckCount <=0 )
{
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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶΡ<EFBFBD>") , _T("ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , MB_OK|MB_ICONWARNING );
return;
}
TCHAR szFileName[512];
m_E_FileName.GetWindowText( szFileName , sizeof(szFileName) );
if ( _tcslen(AllTrim(szFileName)) <=0 )
{
MessageBox( _T("<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_OK|MB_ICONWARNING );
m_E_FileName.SetFocus();
return;
}
CFile fTalk;
if ( !fTalk.Open( szFileName , CFile::modeReadWrite|CFile::modeCreate ) )
{
TCHAR Buf[512];
_stprintf( Buf , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>:%s\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!") , szFileName );
MessageBox( Buf , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , MB_ICONWARNING|MB_OK );
return;
}
CString str;
CString strTemp,strTemp2;
long lAdrCount = m_pList->GetItemCount();
TCHAR Buf[1024];
TCHAR Buf2[1024];
TCHAR Buf3[1024];
#ifdef UNICODE
char szTempA[4096];
#endif
long lRecnCount= 0; //<2F>ܼ<EFBFBD>¼<EFBFBD><C2BC>
long lFileSize = 0; //<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
long lBufLen = 0;
COleDateTime t;
if ( m_B_AddHead.GetCheck() )//<2F><><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>ͷ
{
_tcscpy(Buf,_T(";"));
for ( int j = 0; j<lCheckCount ; j++ )
{
switch( lExPortItem[j] )
{
case 0: //<2F><><EFBFBD>ź<EFBFBD><C5BA><EFBFBD>
_tcscat(Buf , _T("<EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>"));
break;
case 1: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
_tcscat(Buf , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
break;
case 2: //<2F><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD>
_tcscat(Buf , _T("<EFBFBD><EFBFBD><EFBFBD>պ<EFBFBD><EFBFBD><EFBFBD>"));
break;
case 3: //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
_tcscat(Buf , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>"));
break;
case 4: //<2F><><EFBFBD><EFBFBD>
_tcscat(Buf , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
break;
case 5: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
_tcscat(Buf , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
break;
case 6: //<2F>dz<EFBFBD>
_tcscat(Buf , _T("<EFBFBD>dz<EFBFBD>"));
break;
case 7: //<2F>Ա<EFBFBD>
_tcscat(Buf , _T("<EFBFBD>Ա<EFBFBD>"));
break;
case 8: //<2F><><EFBFBD><EFBFBD>
_tcscat(Buf , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
break;
case 9: //<2F><>˾
_tcscat(Buf , _T("<EFBFBD><EFBFBD>˾"));
break;
case 10: //ְ<><D6B0>
_tcscat(Buf , _T("ְ<EFBFBD><EFBFBD>"));
break;
case 11: //<2F>
_tcscat(Buf , _T("<EFBFBD>"));
break;
case 12: //<2F><><EFBFBD><EFBFBD>
_tcscat(Buf , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
break;
case 13: //Email
_tcscat(Buf , _T("Email"));
break;
case 14: //QQ
_tcscat(Buf , _T("QQ"));
break;
case 15: //<2F><>ע
_tcscat(Buf , _T("<EFBFBD><EFBFBD>ע"));
break;
case 20: //<2F><><EFBFBD><EFBFBD>
_tcscat(Buf , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
break;
case 21: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
_tcscat(Buf , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
break;
}
if ( j < lCheckCount-1 ) //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD>","<22><>
_tcscat(Buf , _T(",") );
}
_tcscat(Buf , _T("\r\n") ); //<2F><><EFBFBD><EFBFBD>
#ifdef UNICODE
CAdoRecordSet::Ado_W2A(Buf,szTempA);
lBufLen = strlen(szTempA);
fTalk.Write( szTempA , lBufLen );
#else
lBufLen = _tcslen(Buf);
fTalk.Write( Buf , lBufLen );
#endif
lFileSize = lFileSize + lBufLen ; //ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
}
for ( i = 0; i<lAdrCount ; i++ )
{
memset(Buf , 0 , sizeof(Buf) );
BOOL bExport=true;
if ( m_B_OnlySel.GetCheck() )
{
UINT uStatus= m_pList->GetItemState(i,LVIS_SELECTED);
if ( uStatus&LVIS_SELECTED )
bExport = true;
else
bExport = false;
}
long lSmsID = m_pList->GetItemData(i);
CString str;
str.Format( _T("select * from smsrecv where RecvID=%d") , lSmsID );
if ( bExport && m_pAdo->Open(str) && m_pAdo->GetRecordCount()>0 )
{
m_pAdo->MoveFirst();
for( int j = 0 ; j< lCheckCount ; j++ ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD>е<EFBFBD><D0B5>ֶΣ<D6B6>ȡͨѶ¼<D1B6><C2BC><EFBFBD>ݽ<EFBFBD><DDBD>б<EFBFBD><D0B1>
{
memset(Buf2 , 0 , sizeof(Buf2) );
memset(Buf3 , 0 , sizeof(Buf3) );
switch( lExPortItem[j] )
{
case 0: //<2F><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
m_pAdo->GetCollect( _T("SendNum") , Buf2 );
break;
case 1: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pAdo->GetCollect( _T("Sender") , Buf2 );
break;
case 2: //<2F><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD>
m_pAdo->GetCollect( _T("Recvnum") , Buf2 );
break;
case 3: //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
m_pAdo->GetCollect( _T("RecvTime") , t );
if (t.GetStatus()==COleDateTime::valid)
_stprintf(Buf2,_T("%04d.%02d.%02d %02d:%02d") , t.GetYear(),t.GetMonth(),t.GetDay(),t.GetHour(),t.GetMinute());
else
memset(Buf2,0,sizeof(Buf2));
break;
case 4: //<2F><><EFBFBD><EFBFBD>
m_pAdo->GetCollect( _T("Msg") , Buf2 );
ExChar(Buf2 , _T("\r") );
ExChar(Buf2 , _T("\n") );
str=Buf2;
str.Replace( _T(",") , _T("<EFBFBD><EFBFBD>") );
_tcscpy(Buf2 , str );
break;
case 5: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pAdo->GetCollect( _T("Province") , strTemp );
m_pAdo->GetCollect( _T("City") , strTemp2 );
if ( strTemp2.GetLength()>0 )
_stprintf(Buf2 , _T("%s-%s") ,strTemp,strTemp2 );
else
_tcscpy(Buf2 , strTemp );
break;
case 6: //<2F>dz<EFBFBD>
m_pAdo->GetCollect( _T("NickName") , Buf2 );
break;
case 7: //<2F>Ա<EFBFBD>
m_pAdo->GetCollect( _T("Sex") , Buf2 );
break;
case 8: //<2F><><EFBFBD><EFBFBD>
m_pAdo->GetCollect( _T("Birthday") , t );
if (t.GetStatus()==COleDateTime::valid)
_stprintf(Buf2,_T("%04d.%02d.%02d") , t.GetYear(),t.GetMonth(),t.GetDay());
else
memset(Buf2,0,sizeof(Buf2));
break;
case 9: //<2F><>˾
m_pAdo->GetCollect( _T("Ltd") , Buf2 );
break;
case 10: //ְ<><D6B0>
m_pAdo->GetCollect( _T("Job") , Buf2 );
break;
case 11: //<2F>
m_pAdo->GetCollect( _T("Tel") , Buf2 );
break;
case 12: //<2F><><EFBFBD><EFBFBD>
m_pAdo->GetCollect( _T("Fax") , Buf2 );
break;
case 13: //Email
m_pAdo->GetCollect( _T("Email") , Buf2 );
break;
case 14: //QQ
m_pAdo->GetCollect( _T("QQ") , Buf2 );
break;
case 15: //<2F><>ע
m_pAdo->GetCollect( _T("BZ") , Buf2 );
ExChar(Buf2 , _T("\r") );
ExChar(Buf2 , _T("\n") );
break;
case 20: //<2F><><EFBFBD><EFBFBD>
m_pAdo->GetCollect( _T("Type1") , Buf2 );
m_pAdo->GetCollect( _T("Type2") , Buf3 );
if ( _tcslen(Buf3)>0 )
{
_tcscat( Buf2 , _T("-") );
_tcscat( Buf2 , Buf3 );
}
break;
case 21: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pAdo->GetCollect( _T("Province") , Buf2 );
m_pAdo->GetCollect( _T("City") , Buf3 );
if ( _tcslen(Buf3)>0 )
{
_tcscat( Buf2 , _T("-") );
_tcscat( Buf2 , Buf3 );
}
break;
}
_tcscat(Buf , Buf2 );
if ( j < lCheckCount-1 ) //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD>","<22><>
_tcscat(Buf , _T(",") );
}
_tcscat(Buf , _T("\r\n") ); //<2F><><EFBFBD><EFBFBD>
#ifdef UNICODE
CAdoRecordSet::Ado_W2A(Buf,szTempA);
lBufLen = strlen(szTempA);
fTalk.Write( szTempA , lBufLen );
#else
lBufLen = _tcslen(Buf);
fTalk.Write( Buf , lBufLen );
#endif
lRecnCount++; //ȡ<><C8A1><EFBFBD>ܼ<EFBFBD>¼<EFBFBD><C2BC>
lFileSize = lFileSize + lBufLen ; //ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
}
}
fTalk.Close();
this->EndWaitCursor();
_stprintf(Buf , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:TXT\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD>:%d\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD>:%d\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>:%s") , lRecnCount , lFileSize , szFileName);
MessageBox( Buf , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>"),MB_OK|MB_ICONINFORMATION );
CDialog::OnOK();
}
void DLG_SMSJS_Export::OnSmsjsExportGetfile()
{
#define FILE_FILTER_TEXT \
TEXT("txt<EFBFBD>ı<EFBFBD><EFBFBD>ļ<EFBFBD> (*.txt)\0*.txt\0")\
TEXT("Excel csv <20>ļ<EFBFBD> (*.csv)\0*.csv\0")\
TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> (*.*)\0*.*;\0\0")
TCHAR szFile[ 256 ];
TCHAR szFileB[ 256 ];
*szFileB = NULL;
_stprintf( szFile , _T("SmsRecv") );
OPENFILENAME sOpen;
sOpen.lStructSize = sizeof( sOpen );
sOpen.hwndOwner = this->m_hWnd ;
sOpen.Flags = OFN_EXPLORER|OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY;
sOpen.lpstrFilter = FILE_FILTER_TEXT;
sOpen.lpstrDefExt = _T("txt");
sOpen.lpstrCustomFilter = NULL;
sOpen.nMaxCustFilter = 0;
sOpen.lpstrFile = szFile;
sOpen.nMaxFile = sizeof( szFile );
sOpen.lpstrFileTitle = szFileB;
sOpen.nMaxFileTitle = sizeof( szFileB );
sOpen.lpstrInitialDir = NULL;
sOpen.lpstrTitle = _T("ѡ<EFBFBD>񵼳<EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>");
if ( ::GetSaveFileName( &sOpen ) )
{
m_E_FileName.SetWindowText(sOpen.lpstrFile);
}
}
void DLG_SMSJS_Export::SetParam(CAdoRecordSet *pAdo, CReportCtrl *pList)
{
m_pAdo = pAdo;
m_pList = pList;
}