328 lines
7.9 KiB
C++
328 lines
7.9 KiB
C++
// DLG_QueryFilt_Inport.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "corpsms.h"
|
|
#include "DLG_QueryFilt_Inport.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// DLG_QueryFilt_Inport dialog
|
|
|
|
|
|
DLG_QueryFilt_Inport::DLG_QueryFilt_Inport(CWnd* pParent /*=NULL*/)
|
|
: CDialog(DLG_QueryFilt_Inport::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(DLG_QueryFilt_Inport)
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
|
|
void DLG_QueryFilt_Inport::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(DLG_QueryFilt_Inport)
|
|
DDX_Control(pDX, IDD_SMSJS_EXPORT_S1, m_B_Tips);
|
|
DDX_Control(pDX, IDC_USER_INPORT_RECORD_SPLIT, m_C_RecordSplit);
|
|
DDX_Control(pDX, IDC_USER_INPORT_FIELD_SPLIT, m_C_FieldSplit);
|
|
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_QueryFilt_Inport, CDialog)
|
|
//{{AFX_MSG_MAP(DLG_QueryFilt_Inport)
|
|
ON_BN_CLICKED(IDD_SMSJS_EXPORT_SELALL, OnSmsjsExportSelall)
|
|
ON_BN_CLICKED(IDD_SMSJS_EXPORT_CLEAR, OnSmsjsExportClear)
|
|
ON_BN_CLICKED(IDD_SMSJS_EXPORT_GETFILE, OnSmsjsExportGetfile)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// DLG_QueryFilt_Inport message handlers
|
|
|
|
BOOL DLG_QueryFilt_Inport::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
CButton * pButton=(CButton * )GetDlgItem(IDD_SMSJS_EXPORT_TYPE1);
|
|
pButton->SetCheck(true);
|
|
|
|
m_C_FieldSplit.SetCurSel(0);
|
|
m_C_RecordSplit.SetCurSel(0);
|
|
|
|
InitList();
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void DLG_QueryFilt_Inport::InitList()
|
|
{
|
|
m_L_List.Init(true,-1,1,-1);
|
|
m_L_List.InsertColumn( 0 , _T("˳Ðò") , LVCFMT_LEFT , 40 , 0);
|
|
m_L_List.InsertColumn( 1 , _T(" ×Ö¶ÎÃû") , LVCFMT_LEFT , 120 , 1);
|
|
m_L_List.SetTextColor( RGB(0,0,255) );
|
|
TCHAR * pItem[] =
|
|
{
|
|
_T("ÐÕÃû"),
|
|
_T("ÊÖ»úºÅÂë"),
|
|
_T("±¸×¢"),
|
|
};
|
|
TCHAR Buf[256];
|
|
|
|
for ( int i = 0 ; i<3 ; 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 ); //ÉèÖÃÕâ¸öÊÇΪÁË˳Ðò²»ÖÁÓÚ´òÂÒ
|
|
}
|
|
m_L_List.CheckAll();
|
|
m_L_List.NoverCheck();
|
|
m_L_List.ReShowSort();
|
|
}
|
|
|
|
void DLG_QueryFilt_Inport::OnSmsjsExportSelall()
|
|
{
|
|
m_L_List.CheckAll();
|
|
}
|
|
|
|
void DLG_QueryFilt_Inport::OnSmsjsExportClear()
|
|
{
|
|
m_L_List.ClearAll();
|
|
}
|
|
|
|
void DLG_QueryFilt_Inport::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("Äã±ØÐë´Ó×ó±ßµÄ×Ö¶ÎÁбíÖÐÑ¡ÔñÒ»¸ö»ò¶à¸öµ¼Èë×ֶΡ£") , _T("Ñ¡Ôñ´íÎó") , MB_OK|MB_ICONWARNING );
|
|
|
|
long lQueryType=0;
|
|
CButton * pButton=(CButton * )GetDlgItem(IDD_SMSJS_EXPORT_TYPE1);
|
|
if ( pButton->GetCheck() )
|
|
lQueryType =1;
|
|
|
|
//È¡·Ö¸ô
|
|
TCHAR szFieldSplit[8]={0};
|
|
TCHAR szRecordSplit[8]={0};
|
|
m_C_FieldSplit.GetWindowText( szFieldSplit , sizeof(szFieldSplit));
|
|
m_C_RecordSplit.GetWindowText( szRecordSplit , sizeof(szRecordSplit));
|
|
if ( _tcslen( szRecordSplit )<=0 )
|
|
{
|
|
MessageBox( _T("¼Ç¼·Ö¸ô²»ÄÜΪ¿Õ£¬ÇëÊäÈë!") , _T("´íÎó") , MB_ICONWARNING );
|
|
m_C_RecordSplit.SetFocus();
|
|
return ;
|
|
}
|
|
if ( !_tcsncmp(szRecordSplit,_T("»»ÐÐ"),4) )
|
|
{
|
|
_tcscpy( szRecordSplit,_T("\n") );
|
|
}
|
|
if ( _tcslen( szFieldSplit )<=0 )
|
|
{
|
|
MessageBox( _T("×ֶηָô²»ÄÜΪ¿Õ£¬ÇëÊäÈë!") , _T("´íÎó") , MB_ICONWARNING );
|
|
m_C_FieldSplit.SetFocus();
|
|
return ;
|
|
}
|
|
szFieldSplit[1]=0; //×ֶηָôÖ»ÄÜÊÇÒ»¸ö×Ö·û
|
|
|
|
TCHAR szFileName[512];
|
|
m_E_FileName.GetWindowText( szFileName , sizeof(szFileName) );
|
|
if ( _tcslen(AllTrim(szFileName)) <=0 )
|
|
{
|
|
MessageBox( _T("Äã±ØÐëÊäÈëµ¼ÈëµÄÎļþÃû¡£") , _T("´íÎó") , MB_OK|MB_ICONWARNING );
|
|
m_E_FileName.SetFocus();
|
|
return ;
|
|
}
|
|
|
|
//ÏÈÇå¿ÕÔÒÑÓеļǼ
|
|
Close();
|
|
//´ò¿ªÎļþ¡¡
|
|
CFile fTalk;
|
|
if ( !fTalk.Open( szFileName , CFile::modeRead ) )
|
|
{
|
|
TCHAR Buf[512];
|
|
_stprintf( Buf , _T("´ò¿ªÎļþ:%s\n²úÉú´íÎó!") , szFileName );
|
|
MessageBox( Buf , _T("´íÎó") , MB_ICONWARNING|MB_OK );
|
|
return ;
|
|
}
|
|
TCHAR szPNBuf[512]={0};
|
|
TCHAR szName[512]={0};
|
|
long lLineCount = 0; //¼ÆËãÐÐÊý
|
|
long lNameCount = 0; //¼ÆËãÓû§Êý
|
|
BOOL bShowReMobile = true;
|
|
long lReMobileType = 0;;
|
|
CString str;
|
|
ANS_QueryFilt_Data user;
|
|
#ifdef UNICODE
|
|
TCHAR szTemp[512]={0};
|
|
char szTempA[512]={0};
|
|
char szPNBuf2[512]={0};
|
|
char szRecordSplit2[512]={0};
|
|
strcpy(szRecordSplit2,CAdoRecordSet::Ado_W2A(szRecordSplit,szTempA));
|
|
#endif
|
|
while ( true )
|
|
{
|
|
memset( szPNBuf , 0 , sizeof( szPNBuf ) );
|
|
#ifdef UNICODE
|
|
if ( ReadLine( &fTalk , szRecordSplit2, szPNBuf2 , sizeof( szPNBuf2 )-5 ) )
|
|
{
|
|
_tcscpy(szPNBuf,CAdoRecordSet::Ado_A2W(szPNBuf2,szTemp));
|
|
|
|
#else
|
|
if ( ReadLine( &fTalk , szRecordSplit, szPNBuf , sizeof( szPNBuf )-5 ) )
|
|
{
|
|
#endif
|
|
|
|
ExChar( szPNBuf , _T("\r") );
|
|
ExChar( szPNBuf , _T("\n") );
|
|
ExChar( szPNBuf , szRecordSplit );
|
|
for ( i=0;i<9;i++ )
|
|
{
|
|
_tcscat( szPNBuf , szFieldSplit );
|
|
}
|
|
memset( &user , 0 , sizeof(user) );
|
|
// user.ulPurviewType = PURVIEWTYPE_ADDRESS;
|
|
for ( i=0 ; i<lCheckCount ; i++ )
|
|
{
|
|
memset(szName , 0 , sizeof(user) );
|
|
GetReqMess( szPNBuf , szName , i , szFieldSplit[0] );
|
|
AllTrim(szName);
|
|
ExChar(szName,_T("\r"));
|
|
ExChar(szName,_T("\n"));
|
|
ExChar(szName,_T("\t"));
|
|
switch (lExPortItem[i])
|
|
{
|
|
case 0: //ÐÕÃû
|
|
BreakChar(szName,sizeof(user.szName)-1);
|
|
_tcscpy(user.szName , szName );
|
|
break;
|
|
case 1: //ÊÖ»úºÅÂë
|
|
BreakChar(szName,sizeof(user.szMobile)-1);
|
|
_tcscpy(user.szMobile , szName );
|
|
break;
|
|
case 2: //±¸×¢
|
|
BreakChar(szName,sizeof(user.szBZ)-1);
|
|
_tcscpy( user.szBZ , szName );
|
|
break;
|
|
}
|
|
}
|
|
if (_tcslen(user.szMobile) >0)
|
|
{
|
|
if ( _tcslen(user.szName) <= 0 )
|
|
_stprintf( user.szName , _T("IP%d") , lNameCount );
|
|
//Ìí¼ÓÓû§
|
|
lNameCount ++;
|
|
_stprintf( szName , _T("ÏÖÕý´¦Àí->%d") , lNameCount );
|
|
m_B_Tips.SetWindowText( szName );
|
|
|
|
ANS_QueryFilt_Data * pUser = new ANS_QueryFilt_Data;
|
|
*pUser = user;
|
|
pUser->lType = lQueryType;
|
|
pUser->lStatus=1;
|
|
m_QueryFilt.AddTail( pUser );
|
|
}
|
|
lLineCount ++;
|
|
}
|
|
else
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
fTalk.Close();
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
long DLG_QueryFilt_Inport::ReadLine(CFile *file, char *pSplit, char *szBuf, long lLen)
|
|
{
|
|
int i,j;
|
|
int lLineCount = 0;
|
|
int lSplitLen = strlen(pSplit);
|
|
char c;
|
|
i = 0;
|
|
while ( true )
|
|
{
|
|
j = file->Read( &c , 1 );
|
|
if ( j < 1 )
|
|
{
|
|
szBuf[i]=0;
|
|
return i;
|
|
}
|
|
if ( i >= lLen-1 )
|
|
{
|
|
szBuf[i] = 0;
|
|
return i;
|
|
}
|
|
szBuf[i] = c;
|
|
i++;
|
|
if ( !memcmp( szBuf+i-lSplitLen , pSplit , lSplitLen ) ) //»»ÐбêÖ¾
|
|
{
|
|
szBuf[i] = 0;
|
|
return i;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
void DLG_QueryFilt_Inport::Close()
|
|
{
|
|
//Çå³ý¶ÓÁÐÖеÄÄÚÈÝ
|
|
while (!m_QueryFilt.IsEmpty())
|
|
{
|
|
ANS_QueryFilt_Data * pData = m_QueryFilt.GetHead();
|
|
m_QueryFilt.RemoveHead();
|
|
delete pData;
|
|
}
|
|
}
|
|
|
|
void DLG_QueryFilt_Inport::OnSmsjsExportGetfile()
|
|
{
|
|
#define FILE_FILTER_TEXT \
|
|
TEXT("txtÎı¾Îļþ (*.txt)\0*.txt\0")\
|
|
TEXT("Excel csv Îļþ (*.csv)\0*.csv\0")\
|
|
TEXT("ËùÓÐÎļþ (*.*)\0*.*;\0\0")
|
|
|
|
TCHAR szFile[ 256 ];
|
|
TCHAR szFileB[ 256 ];
|
|
*szFileB = NULL;
|
|
_stprintf( szFile , _T("*.txt") );
|
|
|
|
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("´ò¿ªµ¼Èë·¢ËÍÁбíµÄÎļþ");
|
|
if ( ::GetOpenFileName( &sOpen ) )
|
|
{
|
|
m_E_FileName.SetWindowText(sOpen.lpstrFile);
|
|
return ;
|
|
}
|
|
}
|