📄 datafiletoimport.cpp
字号:
// DataFileToImport.cpp : implementation file
//
#include "stdafx.h"
#include "datamanger.h"
#include "DataFileToImport.h"
#include <stdio.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include <afxdb.h>
/////////////////////////////////////////////////////////////////////////////
// CDataFileToImport dialog
extern int bNeed;
extern int System_Status;
extern int System_Import_Data;
extern int System_SmsSqlServer;
extern int System_LocalRoute;
extern class CDatabase g_ImportData; //系统数据库类导入对象
CDataFileToImport::CDataFileToImport(CWnd* pParent /*=NULL*/)
: CDialog(CDataFileToImport::IDD, pParent)
{
//{{AFX_DATA_INIT(CDataFileToImport)
m_comnumber = 0;
m_Importnumber = 0;
m_filepath = _T("");
m_smsconent = _T("");
m_System_HourSendNumber=0; //每个小时发送短信条数
m_System_DealHourFlag=0;
m_System_CurrentSmsSendTime=0;
m_System_ComNumber=0;
m_System_CurrentTimeAdd=0;
//}}AFX_DATA_INIT
}
void CDataFileToImport::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDataFileToImport)
DDX_Control(pDX, IDOKFILE, m_btn_ok_file);
DDX_Control(pDX, IDCANCEL, m_btn_cancel_file);
DDX_Text(pDX, IDC_COM_FILENUMBER, m_comnumber);
DDV_MinMaxInt(pDX, m_comnumber, 1, 11);
DDX_Text(pDX, IDC_FILENUMBER, m_Importnumber);
DDV_MinMaxInt(pDX, m_Importnumber, 1, 999999);
DDX_Text(pDX, IDC_FILEPATH, m_filepath);
DDV_MaxChars(pDX, m_filepath, 255);
DDX_Text(pDX, IDC_FILESMSCONENT, m_smsconent);
DDV_MaxChars(pDX, m_smsconent, 160);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDataFileToImport, CDialog)
//{{AFX_MSG_MAP(CDataFileToImport)
ON_BN_CLICKED(IDOKFILE, OnOkfile)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDataFileToImport message handlers
BOOL CDataFileToImport::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_btn_ok_file.SetIcon(IDI_OK);
m_btn_cancel_file.SetIcon(IDI_CAN);
//1.当然也可用MFC函数来读配置文件
if (pCfg.setfilename(CONFIGUREFILE) == -1)
{
AfxMessageBox("读指定文件出错!");
return false;
}
//2.每个小时发送短信条数
if (pCfg.readcfgdata("SerCfg", "HourSendNumber", &m_System_HourSendNumber) == -1)
{
AfxMessageBox("读每个小时发送短信条数出错!");
return false;
}
//3.取出交易间隔时间数据
if ( pCfg.readcfgdata("SerCfg", "DealHourFlag", &m_System_DealHourFlag) == -1)
{
AfxMessageBox("读间隔时间处理标志出错!");
return false;
}
//6.CurrentSmsSendTime
if ( pCfg.readcfgdata("SerCfg", "CurrentSmsSendTime", &m_System_CurrentSmsSendTime) == -1)
{
AfxMessageBox("读间隔时间出错!");
return false;
}
//7.
if ( pCfg.readcfgdata("SerCfg", "ComNumber", &m_System_ComNumber) == -1)
{
AfxMessageBox("读COM个数失败出错!");
return false;
}
//8.
if ( pCfg.readcfgdata("SerCfg", "CurrentTimeAdd", &m_System_CurrentTimeAdd) == -1)
{
AfxMessageBox("读CurrentTimeAdd失败出错!");
return false;
}
//9.取出用户名
if ( pCfg.readcfgdata("SerCfg", "SmsUser", &m_SmsUser) == -1)
{
AfxMessageBox("读COM个数失败出错!");
return false;
}
//10.取出用户标识
if ( pCfg.readcfgdata("SerCfg", "SmsDefineNo", &m_SmsDefineNo) == -1)
{
AfxMessageBox("读SmsUser失败出错!");
return false;
}
//11.特殊处理--需要从文件中导入数据
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDataFileToImport::OnOkfile()
{
// TODO: Add your control notification handler code here
FILE *fp;
char getbuf[300];
//0.设备初始化设置
int i_comport =0;
int i_comport_tmpstr = 0;
int i_comportnumber=0;
int i_Current_Time =0; //当前次数
int i_Total_Time=0; //总统计数
int i_Current_UseTime=0;//每个小时增加N条后,时间需要自动加1
int i_SystemHour=0;
int i_SystemDay=0;
int i_SystemMonth=0;
int i_CurrentSystemHour=0;
int i_SystemCurrnetDay=0;
UpdateData(true);
//1.
if (m_filepath.GetLength == 0)
{
AfxMessageBox("重新输入文件路径!");
return;
}
if (System_Status == 3)
{
char tmpfilepath[255];
memset(tmpfilepath,0x00, sizeof(tmpfilepath));
strcpy(tmpfilepath,m_filepath.GetBuffer(m_filepath.GetLength()));
if ((fp = fopen(".\\1.txt", "r" )) == NULL )
{
AfxMessageBox("打开文件失败");
return;
}
}
//2.检查短消息内容是否空,或者超长
WCHAR wchar[1024];
int nCount = ::MultiByteToWideChar(CP_ACP, 0, m_smsconent, -1, wchar, 1024);
if(nCount <= 1)
{
AfxMessageBox("请输入消息内容!");
return;
}
else if(nCount >= 70) // 我们决定全部用UCS2编码,最大70个字符(半角/全角)
{
AfxMessageBox("消息内容太长,无法发送!");
return;
}
//3.取出系统时间
CString m_currenttime;
COleDateTime m_dateTest;
m_dateTest = COleDateTime::GetCurrentTime();
int loop =0;
memset (getbuf,0x00,sizeof(getbuf));
//4.一行只放一个手机号码
while(fgets(getbuf, sizeof(getbuf), fp) != NULL)
{
CString m_MobileCode;
CString m_InsertSql;
CString m_UpdateSql;
CString m_comport;
CString m_currtime;
CString m_numtype;
loop++;
//4.3.取出系统开始导入时间
//---:表示为需要间隔(早上1-5)n个小时群发,1:表示为不需要间隔24个小时群发
if (m_System_DealHourFlag ==0)
{
i_CurrentSystemHour = m_dateTest.GetHour() + m_System_CurrentTimeAdd + i_Current_UseTime;
if ( i_CurrentSystemHour >0)
{
if (i_CurrentSystemHour < m_System_CurrentSmsSendTime)
{
i_CurrentSystemHour = m_dateTest.GetHour() + m_System_CurrentTimeAdd + i_Current_UseTime+m_System_CurrentSmsSendTime;
}
}
}
else
{
i_CurrentSystemHour = m_dateTest.GetHour() + m_System_CurrentTimeAdd + i_Current_UseTime;
}
//4.4.系统数据入库时间(取MOD)
i_SystemHour = i_CurrentSystemHour % 24;
if (m_System_DealHourFlag == 0)
{
if (i_SystemHour >0)
{
if (i_SystemHour < m_System_CurrentSmsSendTime)
{
i_SystemHour =+ m_System_CurrentSmsSendTime;
}
}
}
//4.5.系统数据入库日期(取整)
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.入库日期时间格式
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口入库
i_comport = i_Total_Time % m_comnumber;
i_comport = i_comport_tmpstr + m_System_ComNumber;
if ( i_comport > 10)
{
i_comport = i_comport % m_comnumber;
i_comport =+m_System_ComNumber+1;
i_comport_tmpstr=0;
}
m_comport.Format("COM%d",i_comport);
//4.8.组装SQL语句
//m_InsertSql.Format("insert into WaitToSendSmsTable(SmsTime,Name,PhoneNumber,SmsOperator,SmsConent,Status, \
// SmsDeport,FastSms) values ('%s','%s','%s','%s','%s','%s','%s','%s')", m_currtime,'abc')
//单机版
if (System_LocalRoute == 0)
{
m_InsertSql.Format("insert into WaitToSendSmsTable(SmsTime,PhoneNumber,SmsContent,Status) \
values ('%s','%s','%s','%s')", \
m_currtime,getbuf,m_smsconent.GetBuffer(m_smsconent.GetLength()),"0");
}
//网络版
else
{
m_InsertSql.Format("insert into WaitToSendSmsTable(SmsTime,SmsUser,PhoneNumber,SmsContent,UserDefineNo,NewFlag) \
values ('%s','%s','%s','%s','%s','%s')", \
m_currtime,m_SmsUser,getbuf,m_smsconent,m_SmsDefineNo,"0");
}
//4.10.开始事务处理
g_ImportData.BeginTrans();
//4.13.插入本地群发数据库
g_ImportData.ExecuteSQL(m_InsertSql);
//4.12.结束事务处理
g_ImportData.CommitTrans();
} //end while
AfxMessageBox("导入数据文件到数据库完成!");
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -