// 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); str = _T(""); m_AdoRSX.GetCollect(_T("经办人手机号码"), str); str.Trim(); str.Replace(_T("'"), _T("")); //_T("经办人证件号码") _tcscpy(pData[i].szAgencyMobile, 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].szLegalMobile, 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].szAgencyMobile, 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); } }