CorpSms/DLG_QueryFilt_Inport.cpp

328 lines
7.9 KiB
C++
Raw Normal View History

2025-02-27 16:58:16 +08:00
// 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("˳<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>"),
_T("<EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),
_T("<EFBFBD><EFBFBD>ע"),
};
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 ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>
}
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("<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 );
long lQueryType=0;
CButton * pButton=(CButton * )GetDlgItem(IDD_SMSJS_EXPORT_TYPE1);
if ( pButton->GetCheck() )
lQueryType =1;
//ȡ<>ָ<EFBFBD>
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("<EFBFBD><EFBFBD>¼<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>գ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!") , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , MB_ICONWARNING );
m_C_RecordSplit.SetFocus();
return ;
}
if ( !_tcsncmp(szRecordSplit,_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),4) )
{
_tcscpy( szRecordSplit,_T("\n") );
}
if ( _tcslen( szFieldSplit )<=0 )
{
MessageBox( _T("<EFBFBD>ֶηָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>գ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!") , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , MB_ICONWARNING );
m_C_FieldSplit.SetFocus();
return ;
}
szFieldSplit[1]=0; //<2F>ֶηָ<CEB7>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ַ<EFBFBD>
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 ;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD>еļ<D0B5>¼
Close();
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
CFile fTalk;
if ( !fTalk.Open( szFileName , CFile::modeRead ) )
{
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 ;
}
TCHAR szPNBuf[512]={0};
TCHAR szName[512]={0};
long lLineCount = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
long lNameCount = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>
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: //<2F><><EFBFBD><EFBFBD>
BreakChar(szName,sizeof(user.szName)-1);
_tcscpy(user.szName , szName );
break;
case 1: //<2F>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>
BreakChar(szName,sizeof(user.szMobile)-1);
_tcscpy(user.szMobile , szName );
break;
case 2: //<2F><>ע
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 );
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
lNameCount ++;
_stprintf( szName , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>->%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 ) ) //<2F><><EFBFBD>б<EFBFBD>־
{
szBuf[i] = 0;
return i;
}
}
return 0;
}
void DLG_QueryFilt_Inport::Close()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
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<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("*.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("<EFBFBD>򿪵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>");
if ( ::GetOpenFileName( &sOpen ) )
{
m_E_FileName.SetWindowText(sOpen.lpstrFile);
return ;
}
}