763 lines
27 KiB
C++
763 lines
27 KiB
C++
// DLG_C_TDSet_Signature_Upload.cpp: 实现文件
|
||
//
|
||
|
||
#include "StdAfx.h"
|
||
#include "SmsManager.h"
|
||
#include "afxdialogex.h"
|
||
#include "DLG_C_TDSet_Signature_Upload.h"
|
||
|
||
#include "MainFrm.h"
|
||
#include "ProcessSocket.h"
|
||
#include "DLG_DoubleConfirm.h"
|
||
// DLG_C_TDSet_Signature_Upload 对话框
|
||
|
||
IMPLEMENT_DYNAMIC(DLG_C_TDSet_Signature_Upload, CDialogEx)
|
||
|
||
DLG_C_TDSet_Signature_Upload::DLG_C_TDSet_Signature_Upload(CWnd* pParent /*=nullptr*/)
|
||
: CDialogEx(IDD_C_TDSET_SIGNATURE_UPLOAD, pParent)
|
||
, m_lConflct(0)
|
||
, m_strFileName(_T(""))
|
||
, m_strInfo(_T(""))
|
||
, m_lType(0)
|
||
{
|
||
|
||
m_pMainFrame = NULL;
|
||
m_pTitleData = NULL;
|
||
m_TitleCurPos = NULL;
|
||
m_bUploading = false;
|
||
m_lNeedUploadCount = 0;
|
||
m_lExcelType = 0;
|
||
m_lExcelDataBegin = 0;
|
||
}
|
||
|
||
DLG_C_TDSet_Signature_Upload::~DLG_C_TDSet_Signature_Upload()
|
||
{
|
||
}
|
||
|
||
void DLG_C_TDSet_Signature_Upload::DoDataExchange(CDataExchange* pDX)
|
||
{
|
||
CDialogEx::DoDataExchange(pDX);
|
||
DDX_Control(pDX, IDD_C_TDSET_SIGNATURE_UPLOAD_TD, m_L_TD);
|
||
DDX_CBIndex(pDX, IDD_C_TDSET_SIGNATURE_UPLOAD_CONFLICT, m_lConflct);
|
||
DDX_Text(pDX, IDD_C_TDSET_SIGNATURE_UPLOAD_FILE, m_strFileName);
|
||
DDX_Text(pDX, IDD_C_TDSET_SIGNATURE_UPLOAD_INFO, m_strInfo);
|
||
DDX_CBIndex(pDX, IDD_C_TDSET_SIGNATURE_UPLOAD_TYPE, m_lType);
|
||
DDX_Control(pDX, IDD_C_TDSET_SIGNATURE_UPLOAD_UPLOAD, m_B_Upload);
|
||
DDX_Control(pDX, IDD_C_TDSET_SIGNATURE_UPLOAD_AUTOPORT, m_B_AutoPort);
|
||
DDX_Control(pDX, IDD_C_TDSET_SIGNATURE_UPLOAD_PROCESS, m_P_GDT);
|
||
}
|
||
|
||
|
||
BEGIN_MESSAGE_MAP(DLG_C_TDSet_Signature_Upload, CDialogEx)
|
||
ON_BN_CLICKED(IDCANCEL, &DLG_C_TDSet_Signature_Upload::OnBnClickedCancel)
|
||
ON_WM_CLOSE()
|
||
ON_BN_CLICKED(IDD_C_TDSET_SIGNATURE_UPLOAD_FILE_SEL, &DLG_C_TDSet_Signature_Upload::OnBnClickedCTdsetSignatureUploadFileSel)
|
||
ON_BN_CLICKED(IDD_C_TDSET_SIGNATURE_UPLOAD_UPLOAD, &DLG_C_TDSet_Signature_Upload::OnBnClickedCTdsetSignatureUploadUpload)
|
||
ON_CBN_SELCHANGE(IDD_C_TDSET_SIGNATURE_UPLOAD_TYPE, &DLG_C_TDSet_Signature_Upload::OnSelchangeIddCTdsetSignatureUploadType)
|
||
ON_CBN_SELCHANGE(IDD_C_TDSET_SIGNATURE_UPLOAD_TD, &DLG_C_TDSet_Signature_Upload::OnSelchangeIddCTdsetSignatureUploadTd)
|
||
ON_CBN_SELCHANGE(IDD_C_TDSET_SIGNATURE_UPLOAD_CONFLICT, &DLG_C_TDSet_Signature_Upload::OnSelchangeIddCTdsetSignatureUploadConflict)
|
||
ON_BN_CLICKED(IDD_C_TDSET_SIGNATURE_UPLOAD_AUTOPORT, &DLG_C_TDSet_Signature_Upload::OnClickedIddCTdsetSignatureUploadAutoport)
|
||
END_MESSAGE_MAP()
|
||
|
||
|
||
// DLG_C_TDSet_Signature_Upload 消息处理程序
|
||
|
||
|
||
void DLG_C_TDSet_Signature_Upload::OnBnClickedCancel()
|
||
{
|
||
// TODO: 在此添加控件通知处理程序代码
|
||
CDialogEx::OnCancel();
|
||
}
|
||
|
||
|
||
void DLG_C_TDSet_Signature_Upload::SetParam(CMainFrame* pFrame, CTD2SignatureTitle_Data * titleData, POSITION TitleCurPos)
|
||
{
|
||
m_pMainFrame = pFrame;
|
||
m_pTitleData = titleData;
|
||
m_TitleCurPos = TitleCurPos;
|
||
}
|
||
|
||
|
||
BOOL DLG_C_TDSet_Signature_Upload::OnInitDialog()
|
||
{
|
||
CDialogEx::OnInitDialog();
|
||
|
||
// TODO: 在此添加额外的初始化
|
||
int iCurSel = -1;
|
||
POSITION pos = m_pTitleData->GetHeadPosition();
|
||
while (pos != NULL )
|
||
{
|
||
POSITION pos2 = pos;
|
||
ANS_TD2SignatureTitle_Data * pTitle = m_pTitleData->GetNext(pos);
|
||
|
||
CString str;
|
||
str.Format(_T("%s - %s"), pTitle->szSignatureTitle, pTitle->szSmsNum);
|
||
int iItem = m_L_TD.AddString(str);
|
||
m_L_TD.SetItemData(iItem, (DWORD_PTR)pos2);
|
||
if (pos2 == m_TitleCurPos)
|
||
{
|
||
iCurSel = iItem;
|
||
}
|
||
}
|
||
m_L_TD.SetCurSel(iCurSel);
|
||
m_B_Upload.EnableWindow(false); //上传按扭不给按
|
||
UpdateData(true);
|
||
|
||
m_lConflct = 0; //冲突处理
|
||
m_lType = 0; //上传类型
|
||
UpdateData(false);
|
||
|
||
return TRUE; // return TRUE unless you set the focus to a control
|
||
// 异常: OCX 属性页应返回 FALSE
|
||
}
|
||
|
||
|
||
void DLG_C_TDSet_Signature_Upload::OnClose()
|
||
{
|
||
// TODO: 在此添加消息处理程序代码和/或调用默认值
|
||
|
||
CDialogEx::OnClose();
|
||
}
|
||
|
||
BOOL DLG_C_TDSet_Signature_Upload::ProcessSocket(Socket_Head_Add* pHead, BYTE* pFrame)
|
||
{
|
||
CString strTemp;
|
||
CString str;
|
||
//查看签名报备信息
|
||
if (pHead->lFuncType == SMSFUNC_TD2SIGNATURE_UPLOAD)
|
||
{
|
||
ANS_TD2Signature_Upload* pUpload = (ANS_TD2Signature_Upload*)pFrame;
|
||
ANS_TD2Signature_Data* pData = (ANS_TD2Signature_Data*)(pFrame + sizeof(ANS_TD2Signature_Upload));
|
||
|
||
UploadNext(pUpload);
|
||
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
|
||
void DLG_C_TDSet_Signature_Upload::OnBnClickedCTdsetSignatureUploadFileSel()
|
||
{
|
||
UpdateData(true);
|
||
|
||
CString str;
|
||
|
||
int iCurSel = m_L_TD.GetCurSel();
|
||
if (iCurSel < 0)
|
||
{
|
||
MessageBox(_T("请先选择一个通道再进行签名上传!"), _T("错误"), MB_ICONERROR);
|
||
return;
|
||
}
|
||
ANS_TD2SignatureTitle_Data* pTitle = NULL;
|
||
POSITION pos = (POSITION)m_L_TD.GetItemData(iCurSel);
|
||
if (pos)
|
||
{
|
||
pTitle = m_pTitleData->GetNext(pos);
|
||
}
|
||
if (!pTitle)
|
||
{
|
||
MessageBox(_T("请先选择一个通道再进行签名上传2!"), _T("错误"), MB_ICONERROR);
|
||
return;
|
||
}
|
||
|
||
m_TDSmsNum = pTitle->szSmsNum;
|
||
m_TDID = pTitle->iTDID;
|
||
m_bAutoPort = m_B_AutoPort.GetCheck();
|
||
if (m_lType == 1) //存量签名
|
||
{
|
||
if (m_lConflct == 3) //换端口号申请
|
||
{
|
||
MessageBox(_T("注意,你选择的是上传存量签名,不能再选择换端口申请选项!"), _T("错误"), MB_ICONERROR);
|
||
return;
|
||
}
|
||
m_bAutoPort = false; //存量签名,不存在自动端口功能
|
||
}
|
||
#define FILE_FILTER_TEXT \
|
||
TEXT("Excel 文件 (*.xls,*.xlsx)\0*.xls\0*.xlsx\0")\
|
||
TEXT("所有文件 (*.*)\0*.*;\0\0")
|
||
|
||
TCHAR szFile[256];
|
||
TCHAR szFileB[256];
|
||
*szFileB = NULL;
|
||
_stprintf(szFile, _T("*.xls"));
|
||
|
||
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("签名文件.xls");
|
||
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))
|
||
{
|
||
CString strFileName = sOpen.lpstrFile;
|
||
|
||
|
||
long lAllCount = 0;
|
||
long lCorpNameError = 0; //企业名称有误数量
|
||
long lSignatureError = 0; //签名有误数量
|
||
long lSmsNumError = 0; //端口号有误数量
|
||
long lSucessCount = 0; //有效数量
|
||
|
||
m_lExcelType = 0; //0-未知类型,1-移动,2-联通
|
||
|
||
//第一步,连接到Excel数据库,判断文件类型
|
||
CAdoRecordSet adoRSX3;
|
||
if (m_AdoConnectX.ConnectExcel(strFileName))
|
||
{
|
||
m_AdoRSX.SetAdoConnection(&m_AdoConnectX);
|
||
m_AdoRSX2.SetAdoConnection(&m_AdoConnectX);
|
||
|
||
//查找第一个工作区
|
||
BOOL bYDExcel = 0;
|
||
CString strTableName = _T("Sheet1$");
|
||
CString strTableName2;
|
||
adoRSX3 = m_AdoConnectX.OpenSchema(adSchemaColumns);
|
||
long lColumnsCount = adoRSX3.GetRecordCount();
|
||
BOOL bFirst = true;
|
||
for (int i = 0; i < lColumnsCount && !adoRSX3.IsEOF(); i++)
|
||
{
|
||
adoRSX3.GetCollect(_T("TABLE_NAME"), strTableName2);
|
||
if (bFirst)
|
||
{
|
||
bFirst = false;
|
||
strTableName = strTableName2;
|
||
}
|
||
if (strTableName2 == _T("真实发送端口报送模板$"))
|
||
{
|
||
strTableName = strTableName2;
|
||
bYDExcel = 1; //疑似移动表格
|
||
break;
|
||
}
|
||
adoRSX3.MoveNext();
|
||
}
|
||
|
||
str.Format(_T("select * from [%sA1:IV65536]"), strTableName);
|
||
//adoRSX.Open(_T("select * from [Sheet1$A1:IV65536]"));
|
||
|
||
m_AdoRSX.Open(str);
|
||
|
||
lAllCount = m_AdoRSX.GetRecordCount();
|
||
m_AdoRSX.MoveFirst();
|
||
|
||
for (int i = 0; i < 10 && !m_AdoRSX.IsEOF(); i++)
|
||
{
|
||
CString strTemp;
|
||
m_AdoRSX.GetCollect(_T("短信子端口号"), strTemp); strTemp.Trim();
|
||
if (strTemp.GetLength() >= 8 && IsAllDigits(strTemp))
|
||
{
|
||
m_lExcelType = 2; //联通
|
||
m_lExcelDataBegin = i; //数据开始的记录
|
||
break;
|
||
}
|
||
m_AdoRSX.MoveNext();
|
||
}
|
||
m_AdoRSX.MoveFirst();
|
||
if (m_lExcelType == 0 && !m_AdoRSX.IsEOF()) //未知类型,继续判断
|
||
{
|
||
for (int i = 0; i < 10 && !m_AdoRSX.IsEOF(); i++)
|
||
{
|
||
CString strTemp;
|
||
//m_AdoRSX.GetCollect(7, strTemp); strTemp.Trim();
|
||
m_AdoRSX.GetCollect(_T("真实发送端口号"), strTemp); strTemp.Trim();
|
||
//if (strTemp == CString(_T("实际使用端口")))
|
||
if (strTemp.GetLength()>3) //能取到内容,说明这个字段存在
|
||
{
|
||
m_lExcelType = 1; //移动
|
||
}
|
||
if (strTemp.GetLength() >= 8 && IsAllDigits(strTemp)) //记录从取到端口号的第一条开始
|
||
{
|
||
strTemp = _T("");
|
||
//m_AdoRSX.GetCollect(8, strTemp); strTemp.Trim();
|
||
m_AdoRSX.GetCollect(_T("真实发送端口号的单位名称"), strTemp); strTemp.Trim();
|
||
if (strTemp.GetLength()>3 && strTemp.Find(_T("XXX")) < 0) //XXX的为样例数据
|
||
{
|
||
m_lExcelDataBegin = i; //数据开始的记录
|
||
break;
|
||
}
|
||
}
|
||
m_AdoRSX.MoveNext();
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
if (m_lExcelType !=0) //找到文件,读取内容
|
||
{
|
||
int iRet = IDYES;
|
||
m_L_TD.GetWindowText(str);
|
||
if (str.Find(_T("联通")) >= 0 && m_lExcelType != 2) //通道是联通,但格式不是联通
|
||
{
|
||
iRet = MessageBox(_T("你选择导入的是联通通道,但文件格式是移动的,请确认是否继续?"), _T("提问"), MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON2);
|
||
}
|
||
if (str.Find(_T("移动")) >= 0 && m_lExcelType != 1) //通道是移动,但格式不是移动
|
||
{
|
||
iRet = MessageBox(_T("你选择导入的是移动通道,但文件格式是联通的,请确认是否继续?"), _T("提问"), MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON2);
|
||
}
|
||
if (iRet != IDYES)
|
||
return;
|
||
|
||
m_AdoRSX.Move(m_lExcelDataBegin); //从第一条有数据开始的记录读
|
||
for (int i = 0; i < lAllCount && !m_AdoRSX.IsEOF(); i++)
|
||
{
|
||
CString strCorpName;
|
||
CString strSignature;
|
||
CString strSmsNum;
|
||
|
||
|
||
if (m_lExcelType == 1) //移动
|
||
{
|
||
//m_AdoRSX.GetCollect(7, strSmsNum); strSmsNum.Trim();
|
||
//m_AdoRSX.GetCollect(8, strCorpName); strCorpName.Trim();
|
||
//m_AdoRSX.GetCollect(12, strSignature); strSignature.Trim();
|
||
m_AdoRSX.GetCollect(_T("真实发送端口号"), strSmsNum); strSmsNum.Trim();
|
||
m_AdoRSX.GetCollect(_T("真实发送端口号的单位名称"), strCorpName); strCorpName.Trim();
|
||
m_AdoRSX.GetCollect(_T("企业签名"), strSignature); strSignature.Trim();
|
||
}
|
||
|
||
if (m_lExcelType == 2) //联通
|
||
{
|
||
m_AdoRSX.GetCollect(_T("企业名称"), strCorpName); strCorpName.Trim();
|
||
m_AdoRSX.GetCollect(_T("短信签名"), strSignature); strSignature.Trim();
|
||
m_AdoRSX.GetCollect(_T("短信子端口号"), strSmsNum); strSmsNum.Trim();
|
||
}
|
||
|
||
if (strCorpName.GetLength() < 4) //企业名称<4认为是失败
|
||
{
|
||
lCorpNameError++;
|
||
}
|
||
else
|
||
{
|
||
if (strSignature.GetLength() < 2) //签名<2认为是失败
|
||
{
|
||
lCorpNameError++;
|
||
}
|
||
else
|
||
{
|
||
if (strSmsNum.GetLength() > 0)
|
||
{
|
||
if (strSmsNum.Find(m_TDSmsNum) == 0) //以主端口号开始的子端口号
|
||
{
|
||
lSucessCount++; //正常的记录
|
||
}
|
||
else
|
||
{
|
||
lSmsNumError++;
|
||
}
|
||
|
||
}
|
||
else
|
||
{
|
||
if (m_bAutoPort) //端口号为空的,可以选择自动生成端口号
|
||
{
|
||
lSucessCount++; //正常的记录
|
||
}
|
||
else
|
||
{
|
||
lSmsNumError++;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
m_AdoRSX.MoveNext();
|
||
}
|
||
|
||
UpdateData(true);
|
||
m_strInfo.Format(_T("%s\r\n总记录数:%d\r\n企业名称有误:%d\r\n签名有误:%d\r\n端口号有误:%d\r\n有效记录数:%d\r\n"), strFileName, lAllCount, lCorpNameError, lSignatureError, lSmsNumError, lSucessCount);
|
||
m_strFileName = strFileName;
|
||
UpdateData(false);
|
||
|
||
if (lSucessCount>0)
|
||
{
|
||
m_bUploading = false;
|
||
m_B_Upload.EnableWindow(true);
|
||
m_lNeedUploadCount = lSucessCount;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
str.Format(_T("打开文件失败或格式不对:%s"), strFileName);
|
||
MessageBox(str, _T("错误"), MB_ICONWARNING);
|
||
return;
|
||
}
|
||
return;
|
||
}
|
||
}
|
||
|
||
|
||
void DLG_C_TDSet_Signature_Upload::OnSelchangeIddCTdsetSignatureUploadType()
|
||
{
|
||
UpdateData(true);
|
||
if (m_lType == 0) //已审核签名,不用新生成端口号
|
||
{
|
||
m_B_AutoPort.EnableWindow(true);
|
||
}
|
||
else
|
||
{
|
||
m_B_AutoPort.EnableWindow(false);
|
||
m_B_AutoPort.SetCheck(false);
|
||
}
|
||
ReSelFile();
|
||
}
|
||
|
||
|
||
void DLG_C_TDSet_Signature_Upload::OnSelchangeIddCTdsetSignatureUploadTd()
|
||
{
|
||
ReSelFile();
|
||
}
|
||
|
||
|
||
void DLG_C_TDSet_Signature_Upload::OnSelchangeIddCTdsetSignatureUploadConflict()
|
||
{
|
||
ReSelFile();
|
||
}
|
||
|
||
|
||
void DLG_C_TDSet_Signature_Upload::OnClickedIddCTdsetSignatureUploadAutoport()
|
||
{
|
||
ReSelFile();
|
||
}
|
||
|
||
void DLG_C_TDSet_Signature_Upload::ReSelFile()
|
||
{
|
||
UpdateData(true);
|
||
m_strInfo = _T("");
|
||
//m_strFileName = _T("");
|
||
UpdateData(false);
|
||
m_B_Upload.EnableWindow(false);
|
||
m_P_GDT.ShowWindow(SW_HIDE);
|
||
|
||
m_TDSmsNum = _T("");
|
||
m_TDID = 0;
|
||
m_bAutoPort = false;
|
||
m_lNeedUploadCount = 0;
|
||
m_bUploading = false;
|
||
}
|
||
|
||
void DLG_C_TDSet_Signature_Upload::EnableSel(BOOL bEnable)
|
||
{
|
||
GetDlgItem(IDD_C_TDSET_SIGNATURE_UPLOAD_TD)->EnableWindow(bEnable);
|
||
GetDlgItem(IDD_C_TDSET_SIGNATURE_UPLOAD_TYPE)->EnableWindow(bEnable);
|
||
GetDlgItem(IDD_C_TDSET_SIGNATURE_UPLOAD_AUTOPORT)->EnableWindow(bEnable);
|
||
GetDlgItem(IDD_C_TDSET_SIGNATURE_UPLOAD_CONFLICT)->EnableWindow(bEnable);
|
||
GetDlgItem(IDD_C_TDSET_SIGNATURE_UPLOAD_FILE_SEL)->EnableWindow(bEnable);
|
||
|
||
}
|
||
|
||
|
||
void DLG_C_TDSet_Signature_Upload::OnBnClickedCTdsetSignatureUploadUpload()
|
||
{
|
||
CString str;
|
||
if (!m_bUploading)
|
||
{
|
||
if (m_lType == 1) //存量签名,无需要审核
|
||
{
|
||
m_L_TD.GetWindowText(str);
|
||
if (str.Find(_T("联通")) >= 0)
|
||
{
|
||
MessageBox(_T("联通已实现自动上传,不再允许上传已审核数据!"), _T("警告"), MB_ICONWARNING);
|
||
return;
|
||
}
|
||
DLG_DoubleConfirm dlg(this);
|
||
CString strConfirmTitle = _T("上传数据状态二次确认");
|
||
CString strConfirmTip = _T("请复核所上传的签名已通过运营商审核,输入以下内容确认:");
|
||
CString strConfirmText = _T("已确认审核通过");
|
||
dlg.SetParam(strConfirmText, strConfirmTip, strConfirmTitle);
|
||
if (dlg.DoModal() != IDOK)
|
||
{
|
||
return;
|
||
}
|
||
}
|
||
if (m_lNeedUploadCount > 0 && m_AdoRSX.GetRecordCount()>= m_lNeedUploadCount )
|
||
{
|
||
m_B_Upload.SetWindowText(_T("取消上传"));
|
||
m_B_Upload.EnableWindow(true);
|
||
EnableSel(false); //正在上传中,不允许更改选项
|
||
m_bUploading = true;
|
||
|
||
m_P_GDT.SetRange(0, m_lNeedUploadCount); //设置滚动条位置
|
||
m_P_GDT.ShowWindow(SW_SHOW);
|
||
ANS_TD2Signature_Upload SignatureUpload = { 0 };
|
||
SignatureUpload.iAllCount = m_lNeedUploadCount;
|
||
SignatureUpload.iCount = 0;
|
||
SignatureUpload.iType = m_lType;
|
||
SignatureUpload.iConflict = m_lConflct;
|
||
SignatureUpload.iAutoPort = m_bAutoPort;
|
||
SignatureUpload.iTDID = m_TDID;
|
||
SignatureUpload.iStatus = 0;
|
||
//m_AdoRSX.MoveFirst();
|
||
m_AdoRSX.Move(m_lExcelDataBegin); //从第一条有数据开始的记录读
|
||
UploadNext(&SignatureUpload);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
//停止
|
||
m_B_Upload.SetWindowText(_T("上传签名"));
|
||
m_B_Upload.EnableWindow(false);
|
||
EnableSel(true); //取消后可以重新选择上传
|
||
ReSelFile(); //可以重新选择文件
|
||
|
||
m_bUploading = false;
|
||
}
|
||
|
||
}
|
||
|
||
void DLG_C_TDSet_Signature_Upload::UploadNext(ANS_TD2Signature_Upload * pAnsUpload)
|
||
{
|
||
CString str;
|
||
if (pAnsUpload->iUpCount >= pAnsUpload->iAllCount || m_AdoRSX.IsEOF() || !m_bUploading || pAnsUpload->iStatus!=0 ) //上传已完成
|
||
{
|
||
//上传已完成
|
||
m_P_GDT.SetPos(pAnsUpload->iUpCount); //设置滚动条位置
|
||
m_B_Upload.SetWindowText(_T("上传签名"));
|
||
m_B_Upload.EnableWindow(false);
|
||
EnableSel(true); //取消后可以重新选择上传
|
||
m_bUploading = false;
|
||
ReSelFile(); //可以重新选择文件
|
||
|
||
|
||
//显示上传记录数
|
||
UpdateData(true);
|
||
m_strInfo.Format(_T("%s\r\n有效总记录数:%d\r\n已上传记录数:%d\r\n覆盖数:%d\r\n新增数:%d\r\n删除数:%d\r\n忽略数:%d\r\n失败数:%d\r\n"), m_strFileName, pAnsUpload->iAllCount, pAnsUpload->iUpCount, pAnsUpload->iCover, pAnsUpload->iAdd, pAnsUpload->iDel,pAnsUpload->iIgnore, pAnsUpload->iFail);
|
||
if (pAnsUpload->iStatus != 0)
|
||
{
|
||
m_strInfo.Append(_T("\r\n上传异常:"));
|
||
m_strInfo.Append(pAnsUpload->szErrMsg);
|
||
}
|
||
UpdateData(false);
|
||
|
||
str.Format(_T("上传%s签名数据成功\r\n共上传%d条记录!"), m_strFileName, pAnsUpload->iUpCount);
|
||
MessageBox(str, _T("信息"), MB_ICONINFORMATION);
|
||
}
|
||
else
|
||
{
|
||
m_P_GDT.SetPos(pAnsUpload->iUpCount); //设置滚动条位置
|
||
|
||
//上传下一个数据包
|
||
//先取20条记录,看能不能取到
|
||
long lMaxCount = 50;
|
||
#ifdef _DEBUG
|
||
lMaxCount = 10;
|
||
#endif
|
||
ANS_TD2Signature_Data* pData = new ANS_TD2Signature_Data[lMaxCount];
|
||
memset(pData, 0, sizeof(ANS_TD2Signature_Data) * lMaxCount);
|
||
|
||
int i = 0;
|
||
while( !m_AdoRSX.IsEOF() && i< lMaxCount)
|
||
{
|
||
CString strCorpName;
|
||
CString strSignature;
|
||
CString strSmsNum;
|
||
BOOL bNeedUpload = false;
|
||
|
||
if (m_lExcelType == 1) //移动
|
||
{
|
||
//m_AdoRSX.GetCollect(7, strSmsNum); strSmsNum.Trim();
|
||
//m_AdoRSX.GetCollect(8, strCorpName); strCorpName.Trim();
|
||
//m_AdoRSX.GetCollect(12, strSignature); strSignature.Trim();
|
||
m_AdoRSX.GetCollect(_T("真实发送端口号"), strSmsNum); strSmsNum.Trim();
|
||
m_AdoRSX.GetCollect(_T("真实发送端口号的单位名称"), strCorpName); strCorpName.Trim();
|
||
m_AdoRSX.GetCollect(_T("企业签名"), strSignature); strSignature.Trim();
|
||
}
|
||
|
||
if (m_lExcelType == 2) //联通
|
||
{
|
||
m_AdoRSX.GetCollect(_T("企业名称"), strCorpName); strCorpName.Trim();
|
||
m_AdoRSX.GetCollect(_T("短信签名"), strSignature); strSignature.Trim();
|
||
m_AdoRSX.GetCollect(_T("短信子端口号"), strSmsNum); strSmsNum.Trim();
|
||
}
|
||
|
||
if (strCorpName.GetLength() < 4) //企业名称<4认为是失败
|
||
{
|
||
//lCorpNameError++;
|
||
}
|
||
else
|
||
{
|
||
if (strSignature.GetLength() < 2) //签名<2认为是失败
|
||
{
|
||
//lCorpNameError++;
|
||
}
|
||
else
|
||
{
|
||
if (strSmsNum.GetLength() > 0)
|
||
{
|
||
if (strSmsNum.Find(m_TDSmsNum) == 0) //以主端口号开始的子端口号
|
||
{
|
||
//lSucessCount++; //正常的记录
|
||
bNeedUpload = true;
|
||
}
|
||
else
|
||
{
|
||
//lSmsNumError++;
|
||
}
|
||
|
||
}
|
||
else
|
||
{
|
||
if (m_bAutoPort) //端口号为空的,可以选择自动生成端口号
|
||
{
|
||
//lSucessCount++; //正常的记录
|
||
bNeedUpload = true;
|
||
}
|
||
else
|
||
{
|
||
//lSmsNumError++;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
if (bNeedUpload)
|
||
{
|
||
pData[i].iTDID = m_TDID;
|
||
strCorpName.Replace(_T("'"), _T(""));
|
||
strSignature.Replace(_T("'"), _T(""));
|
||
strSmsNum.Replace(_T("'"), _T(""));
|
||
_tcscpy(pData[i].szCorpanyName, strCorpName);
|
||
_tcscpy(pData[i].szSignature, strSignature);
|
||
_tcscpy(pData[i].szSmsNum, strSmsNum);
|
||
|
||
if (m_lExcelType == 1) //移动
|
||
{
|
||
//m_AdoRSX.GetCollect(2, str); str.Trim(); str.Replace(_T("'"), _T(""));
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("操作类型"), str); str.Trim(); str.Replace(_T("'"), _T(""));
|
||
pData[i].iOperType = 0; //默认操作类型为新增
|
||
if (str.Find(_T("变更"))>=0 || str.Find(_T("修改")) >= 0) { pData[i].iOperType = 1; } //修改
|
||
if (str.Find(_T("删除")) >= 0) { pData[i].iOperType = 2; } //删除
|
||
|
||
//m_AdoRSX.GetCollect(3, str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("短信主端口号")
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("局数据端口"), str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("短信主端口号")
|
||
_tcscpy(pData[i].szMainSmsNum, str);
|
||
|
||
//m_AdoRSX.GetCollect(5, str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("接入省")
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("接入省"), str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("接入省")
|
||
_tcscpy(pData[i].szProvvince, str);
|
||
//m_AdoRSX.GetCollect(6, str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("接入地市")
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("接入地市"), str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("接入地市")
|
||
_tcscpy(pData[i].szCity, str);
|
||
|
||
//m_AdoRSX.GetCollect(10 , str); str.Trim(); str.Replace(_T("'"), _T(""));//_T("企业统一社会信用代码")
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("真实发送端口号的单位证件号码(统一社会信用代码)"), str); str.Trim(); str.Replace(_T("'"), _T(""));//_T("企业统一社会信用代码")
|
||
_tcscpy(pData[i].szCorpanyNum, str);
|
||
|
||
//m_AdoRSX.GetCollect( 14, str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("法人")
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("法人"), str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("法人")
|
||
_tcscpy(pData[i].szLegalName, str);
|
||
//m_AdoRSX.GetCollect(16, str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("责任人证件类型")
|
||
//_tcscpy(pData[i].szLegalCertType, str);
|
||
//m_AdoRSX.GetCollect(17, str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("责任人证件号码")
|
||
//_tcscpy(pData[i].szLegalCertID, str);
|
||
//m_AdoRSX.GetCollect(19, str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("经办人名称")
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("经办人姓名"), str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("经办人名称")
|
||
_tcscpy(pData[i].szAgencyName, str);
|
||
//m_AdoRSX.GetCollect(20, str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("经办人证件类型")
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("经办人证件名称"), str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("经办人证件类型")
|
||
if ( str== CString(_T("1-营业执照")) )
|
||
str = _T("1-居民身份证");
|
||
_tcscpy(pData[i].szAgencyCertType, str);
|
||
//m_AdoRSX.GetCollect(21, str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("经办人证件号码")
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("经办人证件号码"), str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("经办人证件号码")
|
||
_tcscpy(pData[i].szAgencyCertID, str);
|
||
|
||
//m_AdoRSX.GetCollect(26, str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("端口类型")
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("短信端口服务类型"), str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("端口类型")
|
||
_tcscpy(pData[i].szPortType, str);
|
||
//m_AdoRSX.GetCollect(27, str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("用途类别")
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("广告营销类短信行业类别"), str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("用途类别")
|
||
_tcscpy(pData[i].szPortUsageCategory, str);
|
||
//m_AdoRSX.GetCollect(30, str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("具体用途")
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("短信端口具体用途"), str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("具体用途")
|
||
_tcscpy(pData[i].szPortUsage, str);
|
||
|
||
//m_AdoRSX.GetCollect(32, str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("短信端口企业接入机房及设备")
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("短信端口企业商接入机房位置与设备位置"), str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("短信端口企业接入机房及设备")
|
||
_tcscpy(pData[i].szLocationServerRoom, str);
|
||
|
||
//m_AdoRSX.GetCollect(34, str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("短信模板")
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("内容模板实例"), str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("短信模板")
|
||
_tcscpy(pData[i].szContentTemplate, str);
|
||
}
|
||
|
||
if (m_lExcelType == 2) //联通
|
||
{
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("操作类型"), str); str.Trim(); str.Replace(_T("'"), _T(""));
|
||
pData[i].iOperType = 0; //默认操作类型为新增
|
||
if (str == CString(_T("修改"))) { pData[i].iOperType = 1; } //修改
|
||
if (str == CString(_T("删除"))) { pData[i].iOperType = 2; } //删除
|
||
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("短信主端口号"), str); str.Trim(); str.Replace(_T("'"), _T(""));
|
||
_tcscpy(pData[i].szMainSmsNum, str);
|
||
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("接入省"), str); str.Trim(); str.Replace(_T("'"), _T(""));
|
||
_tcscpy(pData[i].szProvvince, str);
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("接入地市"), str); str.Trim(); str.Replace(_T("'"), _T(""));
|
||
_tcscpy(pData[i].szCity, str);
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("端口类型"), str); str.Trim(); str.Replace(_T("'"), _T(""));
|
||
_tcscpy(pData[i].szPortType, str);
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("用途类别"), str); str.Trim(); str.Replace(_T("'"), _T(""));
|
||
_tcscpy(pData[i].szPortUsageCategory, str);
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("企业统一社会信用代码"), str); str.Trim(); str.Replace(_T("'"), _T(""));
|
||
_tcscpy(pData[i].szCorpanyNum, str);
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("责任人名称"), str); str.Trim(); str.Replace(_T("'"), _T(""));
|
||
_tcscpy(pData[i].szLegalName, str);
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("责任人证件类型"), str); str.Trim(); str.Replace(_T("'"), _T(""));
|
||
_tcscpy(pData[i].szLegalCertType, str);
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("责任人证件号码"), str); str.Trim(); str.Replace(_T("'"), _T(""));
|
||
_tcscpy(pData[i].szLegalCertID, str);
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("经办人名称"), str); str.Trim(); str.Replace(_T("'"), _T(""));
|
||
_tcscpy(pData[i].szAgencyName, str);
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("经办人证件类型"), str); str.Trim(); str.Replace(_T("'"), _T(""));
|
||
_tcscpy(pData[i].szAgencyCertType, str);
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("经办人证件号码"), str); str.Trim(); str.Replace(_T("'"), _T(""));
|
||
_tcscpy(pData[i].szAgencyCertID, str);
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("具体用途"), str); str.Trim(); str.Replace(_T("'"), _T(""));
|
||
_tcscpy(pData[i].szPortUsage, str);
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("签名来源"), str); str.Trim(); str.Replace(_T("'"), _T(""));
|
||
_tcscpy(pData[i].szSignatureSource, str);
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("短信端口企业接入机房及设备"), str); str.Trim(); str.Replace(_T("'"), _T(""));
|
||
_tcscpy(pData[i].szLocationServerRoom, str);
|
||
str = _T(""); m_AdoRSX.GetCollect(_T("短信模板"), str); str.Trim(); str.Replace(_T("'"), _T(""));
|
||
_tcscpy(pData[i].szContentTemplate, str);
|
||
}
|
||
|
||
i++;
|
||
}
|
||
m_AdoRSX.MoveNext();
|
||
}
|
||
|
||
long lSize = sizeof(REQ_TD2Signature_Upload) + sizeof(ANS_TD2Signature_Data) * i;
|
||
BYTE* pDataByte = new BYTE[lSize];
|
||
memset(pDataByte, 0, lSize);
|
||
|
||
REQ_TD2Signature_Upload* pUpload = (REQ_TD2Signature_Upload * )pDataByte;
|
||
ANS_TD2Signature_Data * pUploadData = (ANS_TD2Signature_Data*)(pDataByte+sizeof(REQ_TD2Signature_Upload));
|
||
memcpy((BYTE*)pUploadData, (BYTE*)pData, sizeof(ANS_TD2Signature_Data)* i); //复制数据
|
||
delete [] pData;
|
||
|
||
pUpload->iTDID = pAnsUpload->iTDID;
|
||
pUpload->iType = pAnsUpload->iType;
|
||
pUpload->iConflict = pAnsUpload->iConflict;
|
||
pUpload->iAutoPort = pAnsUpload->iAutoPort;
|
||
pUpload->iAllCount = pAnsUpload->iAllCount;
|
||
pUpload->iCount = i;
|
||
pUpload->iUpCount = pAnsUpload->iUpCount;
|
||
pUpload->iCover = pAnsUpload->iCover;
|
||
pUpload->iAdd = pAnsUpload->iAdd;
|
||
pUpload->iDel = pAnsUpload->iDel;
|
||
pUpload->iIgnore = pAnsUpload->iIgnore;
|
||
pUpload->iFail = pAnsUpload->iFail;
|
||
|
||
m_pMainFrame->SendFrame(SMSFUNC_TD2SIGNATURE_UPLOAD, pDataByte, lSize);
|
||
}
|
||
}
|