?? dataimport.cpp
字號(hào):
// DataImport.cpp : implementation file
//
#include "stdafx.h"
#include "DataManger.h"
#include "DataImport.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDataImport dialog
extern int bNeed;
extern int System_Status;
extern int System_Import_Data;
extern int System_SmsSqlServer;
extern class CDatabase g_Database; //系統(tǒng)數(shù)據(jù)庫(kù)類查詢對(duì)象
extern class CDatabase g_UpdDatabase; //系統(tǒng)數(shù)據(jù)庫(kù)類修改對(duì)象
extern class CDatabase g_ImportData; //系統(tǒng)數(shù)據(jù)庫(kù)類導(dǎo)入對(duì)象
int System_TestFlag=0; //0為測(cè)試用,其他參數(shù)為正常使用
char System_TestMobileNo[12];
int System_CurrentSmsSendTime=0;
int System_ComNumber=0;
int System_CurrentTimeAdd=0;
int System_HourSendNumber=0; //每個(gè)小時(shí)發(fā)送短信條數(shù)
int System_DealHourFlag=0;
CDataImport::CDataImport(CWnd* pParent /*=NULL*/)
: CDialog(CDataImport::IDD, pParent)
{
//{{AFX_DATA_INIT(CDataImport)
m_areacode = _T("");
i_sendnumber =0;
m_smsconent = _T("");
m_send_status = _T("");
i_comnumber = 0;
//}}AFX_DATA_INIT
}
void CDataImport::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDataImport)
DDX_Control(pDX, IDCANCEL, m_btn_import_cancel);
DDX_Control(pDX, IDOK, m_btn_import_ok);
DDX_Text(pDX, IDC_AREACODE, m_areacode);
DDV_MaxChars(pDX, m_areacode, 4);
DDX_Text(pDX, IDC_NUMBER, i_sendnumber);
DDV_MinMaxInt(pDX, i_sendnumber,1, 30000);
DDX_Text(pDX, IDC_SMSCONENT, m_smsconent);
DDV_MaxChars(pDX, m_smsconent, 160);
DDX_Text(pDX, IDC_STATUS, m_send_status);
DDV_MaxChars(pDX, m_send_status, 2);
DDX_Text(pDX, IDC_COM_NUMBER, i_comnumber);
DDV_MinMaxInt(pDX, i_comnumber, 1, 20);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDataImport, CDialog)
//{{AFX_MSG_MAP(CDataImport)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDataImport message handlers
void CDataImport::OnOK()
{
// TODO: Add extra validation here
CString m_tmpstr;
UpdateData(true);
//0.SQL SERVER服務(wù)器
bNeed =1;
// 檢查短消息內(nèi)容是否空,或者超長(zhǎng)
WCHAR wchar[1024];
int nCount = ::MultiByteToWideChar(CP_ACP, 0, m_smsconent, -1, wchar, 1024);
if(nCount <= 1)
{
AfxMessageBox("請(qǐng)輸入消息內(nèi)容!");
return;
}
else if(nCount >= 70) // 我們決定全部用UCS2編碼,最大70個(gè)字符(半角/全角)
{
AfxMessageBox("消息內(nèi)容太長(zhǎng),無(wú)法發(fā)送!");
return;
}
if (System_Status ==1)
{
m_tmpstr.Format("select MobileCode from t_Ivr_Hnmcc_MobileNo where Area_Code='%s' and Status='%s'",m_areacode, m_send_status);
}
else
{
m_tmpstr.Format("select MobileCode from newlifeivrdb.dbo.t_Ivr_Hnmcc_MobileNo where Area_Code='%s' and Status='%s'",m_areacode, m_send_status);
}
if ( i_comnumber <1 || i_comnumber >10)
{
AfxMessageBox("COM口太多,請(qǐng)重新輸入!");
return;
}
//1.打開(kāi)數(shù)據(jù)記錄集
m_Recordset.m_pDatabase = &g_Database;
m_Recordset.Open(CRecordset::forwardOnly,m_tmpstr,CRecordset::readOnly);
if(m_Recordset.IsEOF())
{
//1.1.
AfxMessageBox("指定數(shù)據(jù)已經(jīng)查詢完畢,請(qǐng)更新其他查詢條件!");
m_Recordset.Close();
return ;
}
// m_pDoc->ShowMsg("指定數(shù)據(jù)已經(jīng)查詢完畢,開(kāi)始分析", bNeed);
//2.設(shè)備初始化設(shè)置
int i_comport =0;
int i_comport_tmpstr = 0;
int i_comportnumber=0;
int i_Current_Time =0; //當(dāng)前次數(shù)
int i_Total_Time=0; //總統(tǒng)計(jì)數(shù)
int i_Current_UseTime=0;//每個(gè)小時(shí)增加N條后,時(shí)間需要自動(dòng)加1
int i_SystemHour=0;
int i_SystemDay=0;
int i_SystemMonth=0;
int i_CurrentSystemHour=0;
int i_SystemCurrnetDay=0;
//3.取出系統(tǒng)時(shí)間
CString m_currenttime;
COleDateTime m_dateTest;
m_dateTest = COleDateTime::GetCurrentTime();
//4.判斷是否取完數(shù)據(jù)包
while (!m_Recordset.IsEOF())
{
//4.0.
CString m_MobileCode;
CString m_InsertSql;
CString m_UpdateSql;
CString m_comport;
CString m_currtime;
CString m_numtype;
//4.1.取一個(gè)數(shù)據(jù)包分析
m_Recordset.GetFieldValue("MobileCode",m_MobileCode);
//4.2.組裝數(shù)據(jù)包
m_numtype = m_MobileCode.Left(3);
//4.3.取出系統(tǒng)開(kāi)始導(dǎo)入時(shí)間
//---:表示為需要間隔(早上1-5)n個(gè)小時(shí)群發(fā),1:表示為不需要間隔24個(gè)小時(shí)群發(fā)
if (System_DealHourFlag ==0)
{
i_CurrentSystemHour = m_dateTest.GetHour() + System_CurrentTimeAdd + i_Current_UseTime;
if ( i_CurrentSystemHour >0)
{
if (i_CurrentSystemHour < System_CurrentSmsSendTime)
{
i_CurrentSystemHour = m_dateTest.GetHour() + System_CurrentTimeAdd + i_Current_UseTime+System_CurrentSmsSendTime;
}
}
}
else
{
i_CurrentSystemHour = m_dateTest.GetHour() + System_CurrentTimeAdd + i_Current_UseTime;
}
//4.4.系統(tǒng)數(shù)據(jù)入庫(kù)時(shí)間(取MOD)
i_SystemHour = i_CurrentSystemHour % 24;
if (System_DealHourFlag == 0)
{
if (i_SystemHour >0)
{
if (i_SystemHour < System_CurrentSmsSendTime)
{
i_SystemHour =+ System_CurrentSmsSendTime;
}
}
}
//4.5.系統(tǒng)數(shù)據(jù)入庫(kù)日期(取整)
i_SystemCurrnetDay = i_CurrentSystemHour/24;
i_SystemDay = m_dateTest.GetDay()+i_SystemCurrnetDay;
if (i_SystemDay >30)
{
i_SystemMonth = m_dateTest.GetMonth()+1;
}
else
{
i_SystemMonth = m_dateTest.GetMonth();
}
//4.6.入庫(kù)日期時(shí)間格式
m_currtime.Format("%04d-%02d-%02d %02d:%02d:%02d", m_dateTest.GetYear(),i_SystemMonth, \
i_SystemDay, i_SystemHour, m_dateTest.GetMinute(),m_dateTest.GetSecond());
//4.7.COM口入庫(kù)
i_comport = i_Total_Time % i_comnumber;
i_comport = i_comport_tmpstr + System_ComNumber;
if ( i_comport > 10)
{
i_comport = i_comport % i_comnumber;
i_comport =+System_ComNumber+1;
i_comport_tmpstr=0;
}
m_comport.Format("COM%d",i_comport);
//4.8.組裝插入數(shù)據(jù)信息
if (System_SmsSqlServer == 1)
{
m_InsertSql.Format("insert into dingshi(num,data,comport,dtime, numtype) \
values('%s','%s', '%s', '%s','%s')",m_MobileCode,m_smsconent,m_comport,\
m_currtime,m_numtype);
}
else
{
m_InsertSql.Format("insert into sms.dbo.dingshi(num,data,comport,dtime, numtype) \
values('%s','%s', '%s', '%s','%s')",m_MobileCode,m_smsconent,m_comport,\
m_currtime,m_numtype);
}
//4.9.修改數(shù)據(jù)庫(kù)操作
if (System_Status ==1)
{
m_UpdateSql.Format("update t_Ivr_Hnmcc_MobileNo set status='1' where MobileCode='%s' ",m_MobileCode);
}
else
{
m_UpdateSql.Format("update newlifeivrdb.dbo.t_Ivr_Hnmcc_MobileNo set status='1' where MobileCode='%s' ",m_MobileCode);
}
//4.10.開(kāi)始事務(wù)處理
g_UpdDatabase.BeginTrans();
//4.11.執(zhí)行SQL操作
g_UpdDatabase.ExecuteSQL(m_UpdateSql);
//4.12.結(jié)束事務(wù)處理
g_UpdDatabase.CommitTrans();
//4.13.插入本地群發(fā)數(shù)據(jù)庫(kù)
g_ImportData.ExecuteSQL(m_InsertSql);
//4.14.判斷相關(guān)參數(shù)
//每個(gè)小時(shí)每個(gè)COM口發(fā)送數(shù)據(jù)條數(shù)n
int i_TotalHourNumber = System_HourSendNumber * i_comnumber;
if (i_Current_Time == i_TotalHourNumber)
{
i_Current_UseTime++;//每個(gè)小時(shí)增加N條后,時(shí)間需要自動(dòng)加1
i_Current_Time=0;
}
//4.15退出當(dāng)次操作系統(tǒng)
if (i_Total_Time == i_sendnumber)
{
m_Recordset.Close();
goto m_End;
}
//4.16.計(jì)數(shù)器加一
i_Current_Time ++; //當(dāng)前次數(shù)
i_Total_Time ++; //總統(tǒng)計(jì)數(shù)
i_comport_tmpstr ++;
//4.17.取下一條記錄
m_Recordset.MoveNext();
}
m_End:
m_Recordset.Close();
AfxMessageBox("導(dǎo)入數(shù)據(jù)文件到數(shù)據(jù)庫(kù)完成!");
CDialog::OnOK();
}
void CDataImport::OnCancel()
{
// TODO: Add extra cleanup here
CDialog::OnCancel();
}
BOOL CDataImport::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
// m_btn_import_ok.SubclassDlgItem(IDOK, this);
m_btn_import_ok.SetIcon(IDI_OK);
m_btn_import_cancel.SetIcon(IDI_CAN);
//1.當(dāng)然也可用MFC函數(shù)來(lái)讀配置文件
if (pCfg.setfilename(CONFIGUREFILE) == -1)
{
AfxMessageBox("讀指定文件出錯(cuò)!");
return false;
}
//2.每個(gè)小時(shí)發(fā)送短信條數(shù)
if (pCfg.readcfgdata("SerCfg", "HourSendNumber", &System_HourSendNumber) == -1)
{
AfxMessageBox("讀每個(gè)小時(shí)發(fā)送短信條數(shù)出錯(cuò)!");
return false;
}
//3.為測(cè)試用,其他參數(shù)為正常使用
if (pCfg.readcfgdata("SerCfg", "TestFlag", &System_TestFlag) == -1)
{
AfxMessageBox("讀測(cè)試標(biāo)志出錯(cuò)!");
return false;
}
//4.測(cè)試號(hào)碼
if (pCfg.readcfgdata("SerCfg", "TestMobileNo", System_TestMobileNo,sizeof(System_TestMobileNo)) == -1)
{
AfxMessageBox("讀測(cè)試號(hào)碼出錯(cuò)!");
return false;
}
//5.取出交易間隔時(shí)間數(shù)據(jù)
if ( pCfg.readcfgdata("SerCfg", "DealHourFlag", &System_DealHourFlag) == -1)
{
AfxMessageBox("讀間隔時(shí)間處理標(biāo)志出錯(cuò)!");
return false;
}
//6.CurrentSmsSendTime
if ( pCfg.readcfgdata("SerCfg", "CurrentSmsSendTime", &System_CurrentSmsSendTime) == -1)
{
AfxMessageBox("讀間隔時(shí)間出錯(cuò)!");
return false;
}
//7.
if ( pCfg.readcfgdata("SerCfg", "ComNumber", &System_ComNumber) == -1)
{
AfxMessageBox("讀COM個(gè)數(shù)失敗出錯(cuò)!");
return false;
}
//8.
if ( pCfg.readcfgdata("SerCfg", "CurrentTimeAdd", &System_CurrentTimeAdd) == -1)
{
AfxMessageBox("讀CurrentTimeAdd失敗出錯(cuò)!");
return false;
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -