SmsManager/C_DataTJErr.cpp
2025-01-14 10:46:18 +08:00

545 lines
14 KiB
C++

// C_DataTJErr.cpp : implementation file
//
#include "stdafx.h"
#include "smsmanager.h"
#include "C_DataTJErr.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CC_DataTJErr dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_Back_Add.h"
#include "DLG_C_DataTJErr_Modify.h"
CC_DataTJErr::CC_DataTJErr(CWnd* pParent /*=NULL*/)
: CDialog(CC_DataTJErr::IDD, pParent)
{
//{{AFX_DATA_INIT(CC_DataTJErr)
m_lCorp = -1;
m_lStatus = -1;
//}}AFX_DATA_INIT
m_bInit = false;
m_bRefresh = false;
m_lQueryWhiteType = 0; //用户白名单
m_lInportStatus = 0; //导入白名单状态
m_lInportCorpID = 100000; //导入白名单企业ID
m_strType = _T("");
}
void CC_DataTJErr::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CC_DataTJErr)
DDX_Control(pDX, IDC_DATATJERR_CORPID, m_E_CorpID);
DDX_Control(pDX, IDC_DATATJERR_S1, m_S_S1);
DDX_Control(pDX, IDC_DATATJERR_LIST, m_wndList);
DDX_Control(pDX, IDC_DATATJERR_CORP, m_L_Corp);
DDX_CBIndex(pDX, IDC_DATATJERR_CORP, m_lCorp);
DDX_CBIndex(pDX, IDC_DATATJERR_STATUS, m_lStatus);
//}}AFX_DATA_MAP
DDX_Text(pDX, IDC_DATATJERR_TYPE, m_strType);
DDV_MaxChars(pDX, m_strType, 30);
}
BEGIN_MESSAGE_MAP(CC_DataTJErr, CDialog)
//{{AFX_MSG_MAP(CC_DataTJErr)
ON_WM_SIZE()
ON_BN_CLICKED(IDC_DATATJERR_QUERY, OnWhiteQuery)
ON_BN_CLICKED(IDC_DATATJERR_QUERY2, OnWhiteQuery2)
ON_NOTIFY(NM_DBLCLK, IDC_DATATJERR_LIST, OnDblclkWhiteList)
ON_NOTIFY(NM_RCLICK, IDC_DATATJERR_LIST, OnRclickWhiteList)
//}}AFX_MSG_MAP
ON_COMMAND( MENU_DATATJERR_SEE , On_DataTJErr_See )
ON_COMMAND( MENU_DATATJERR_COPY , On_DataTJErr_Copy )
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CC_DataTJErr message handlers
BOOL CC_DataTJErr::OnInitDialog()
{
CDialog::OnInitDialog();
//取得共用参数
//CMainFrame * pFrame = static_cast <CMainFrame *>((CMainFrame *)AfxGetMainWnd());
this->GetParent()->GetParentFrame();
m_pMainFrame = (CMainFrame *)this->GetParent()->GetParentFrame();
m_pSocket = &m_pMainFrame->m_Socket;
//初始化List
m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5);
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_WHITE) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LOCK) );
m_wndList.SubClassWindow2();
m_wndList.SetHeadings(_T("序号,50; 状态,60; 生成时间,120; 企业ID,60; 类型,200; 差误1 ,100; 差误2 ,100; 备注,200; 处理人,100;处理备注,200;"));
m_wndList.SetGridLines(true);
m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
m_bInit = true;
m_lStatus = 1; //默认查询未处理的
UpdateData(false);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CC_DataTJErr::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if ( m_bInit )
{
CRect rect;
m_S_S1.GetWindowRect(&rect);
m_wndList.MoveWindow( 0 , 0+rect.Height()+5 , cx,cy-rect.Height()-5);
}
}
void CC_DataTJErr::Close()
{
Close_Corp();
Close_DataTJErr();
adoConnect.Close();
adoRS.Close();
}
void CC_DataTJErr::Close_Corp()
{
//清除队列中的内容
while (!m_Corp.IsEmpty())
{
ANS_Corp_NameData * pData = m_Corp.GetHead();
m_Corp.RemoveHead();
delete pData;
}
}
void CC_DataTJErr::Close_DataTJErr()
{
//清除队列中的内容
while (!m_DataTJErr.IsEmpty())
{
ANS_DataTJErr_GetData * pData = m_DataTJErr.GetHead();
m_DataTJErr.RemoveHead();
delete pData;
}
}
long CC_DataTJErr::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
BOOL CC_DataTJErr::isLockItem(long lItem, BOOL bShowWarning)
{
BOOL b = (m_wndList.GetIconIndex(lItem) == 1);
if ( b && bShowWarning )
{
MessageBox( _T("正录被锁定,请等待服务器返回后再操作!") , _T("锁定中") , MB_ICONINFORMATION );
}
return b;
}
void CC_DataTJErr::SetLockItem(long lItem, BOOL bLock)
{
if ( bLock )
m_wndList.SetIconIndex( lItem , 1 );
else
m_wndList.SetIconIndex( lItem , 0 );
}
void CC_DataTJErr::ShowRMenu()
{
if (!m_pMainFrame->GetUserPurview(PURVIEW_TAB,false)) //没有查看权限
return ;
CMenu menu;
menu.CreatePopupMenu();
BOOL bLock = false;
long lItem = this->GetCurrentSelected();
if ( lItem >= 0 )
bLock = isLockItem( lItem , false ); //取得是否正在锁定
if ( lItem >=0 && !bLock )
{
menu.AppendMenu(MF_STRING , MENU_DATATJERR_SEE, _T(" 查看/处理 ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_DATATJERR_SEE , _T(" 查看/处理 ") );
}
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING , MENU_DATATJERR_COPY, _T(" 复 制 ") );
//显示菜单
POINT pt ;
::GetCursorPos( &pt );
//this->ClientToScreen( &pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
menu.DestroyMenu();
}
BOOL CC_DataTJErr::ProcessSocket(Socket_Head_Add *pHead,BYTE* pFrame)
{
//取管理员信息
if (pHead->lFuncType == SMSFUNC_DATATJERR_GET)
{
ANS_DataTJErr_Get * pGet = (ANS_DataTJErr_Get *)pFrame;
ANS_DataTJErr_GetData * pData = (ANS_DataTJErr_GetData *)(pFrame+sizeof(ANS_DataTJErr_Get));
m_wndList.DeleteAllItems(); //删除原有的内容
this->Close_DataTJErr(); //关闭原队列
for ( int i=0;i<pGet->lCount;i++ )
{
ANS_DataTJErr_GetData * pNewData = new ANS_DataTJErr_GetData;
*pNewData = *pData;
POSITION pos = m_DataTJErr.AddTail(pNewData);
ShowInList(pNewData,-1,pos);
pData ++;
}
return true;
}
//修改管理员信息
if (pHead->lFuncType == SMSFUNC_DATATJERR_PROCESS)
{
ANS_DataTJErr_Process * pModify = (ANS_DataTJErr_Process *)pFrame;
ANS_DataTJErr_GetData * pData = (ANS_DataTJErr_GetData *)(pFrame+sizeof(ANS_DataTJErr_Process));
SetLockItem( pModify->lItem , false ); //解锁
if ( pModify->lErrCode == 1 ) //等于1时表示修改成功
{
POSITION pos = (POSITION)m_wndList.GetItemData(pModify->lItem);
ANS_DataTJErr_GetData * pData2 = m_DataTJErr.GetNext( pos );
if ( pData2 )
{
*pData2 = *pData; //取到新的数据
ShowInList(pData2,pModify->lItem,pos);
}
}
return true;
}
return false;
}
BOOL CC_DataTJErr::ProcessSocket(Socket_Head *pHead)
{
CString strTemp;
//取过滤信息
if (pHead->lFuncType == SMSFUNC_CORP_NAME)
{
m_bRefresh = true; //已经刷新过
ANS_Corp_Name * pCorp = (ANS_Corp_Name *)pHead->pFrame;
ANS_Corp_NameData * pData = (ANS_Corp_NameData *)(pHead->pFrame+sizeof(ANS_Corp_Name));
m_L_Corp.ResetContent(); //删除原已有的企业
m_L_Corp.AddString( _T("所有企业") );
this->Close_Corp(); //关闭原队列
for ( int i=0;i<pCorp->lCount;i++ )
{
ANS_Corp_NameData * pNewData = new ANS_Corp_NameData;
*pNewData = *pData;
POSITION pos = m_Corp.AddTail(pNewData);
strTemp.Format( _T("%d-%s"),pData->lCorpID,pData->szCorpName);
long lItem = m_L_Corp.AddString( strTemp );
m_L_Corp.SetItemData( lItem , (DWORD)pos);
pData ++;
}
m_L_Corp.SetCurSel(0);
return true;
}
/*
//取清单
if (pHead->lFuncType == SMSFUNC_DATATJERR)
{
ANS_White * pList = (ANS_White *)pHead->pFrame;
ANS_WhiteData * pData = (ANS_WhiteData *)(pHead->pFrame+sizeof(ANS_White));
m_lQueryWhiteType = pList->lWhiteType; //记录返回类型
//添加到List
m_wndList.ShowWindow( SW_HIDE );
m_wndList.DeleteAllItems();
long lCount = m_wndList.GetItemCount();
TCHAR szBuf[32];
for ( int i = 0 ; i< pList->lCount;i++)
{
//m_wndList.SetHeadings(_T("序号,50; 企业ID,100; 用户ID,100;手机号码,100;禁用原因,200;"));
m_wndList.InsertItem( i,_itot(i+1,szBuf,10),0);
m_wndList.SetItemData( i,pData->lWhiteID );
_stprintf(szBuf , _T("%d") , pData->lCorpID );
m_wndList.SetItemText(i,1,szBuf);
_stprintf(szBuf , _T("%d") , pData->lUserID );
m_wndList.SetItemText(i,2,szBuf);
m_wndList.SetItemText(i,3,pData->szMobile);
_stprintf(szBuf , _T("%04d.%02d.%02d %02d:%02d") , pData->tAdd.wYear,pData->tAdd.wMonth,pData->tAdd.wDay,pData->tAdd.wHour,pData->tAdd.wMinute);
m_wndList.SetItemText(i,4,szBuf);
m_wndList.SetItemText(i,5,pData->szBZ);
pData++;
}
m_wndList.ShowWindow( SW_SHOW );
return true;
}
//添加企业用户
if (pHead->lFuncType == SMSFUNC_DATATJERR_ADD)
{
ANS_White_Add * pAdd = (ANS_White_Add *)pHead->pFrame;
if ( pAdd->bOK == 1 ) //等于1时表示修改成功
{
long lCount = m_wndList.GetItemCount();
TCHAR szBuf[32];
_stprintf( szBuf, _T("%d") , lCount +1 );
//设置新的数据
m_wndList.InsertItem( lCount , szBuf);
m_wndList.SetItemData( lCount, (DWORD)pAdd->lWhiteID );
_stprintf(szBuf , _T("%d") , pAdd->lCorpID );
m_wndList.SetItemText(lCount,1,szBuf);
_stprintf(szBuf , _T("%d") , pAdd->lUserID );
m_wndList.SetItemText(lCount,2,szBuf);
m_wndList.SetItemText(lCount,3,pAdd->szMobile);
m_wndList.SetItemText(lCount,5,pAdd->szBZ);
if ( pAdd->lWhiteType ==3 )//批量上传白名单
{
m_lInportCount += pAdd->lWhiteCount;
Inport_Next();
}
}
return true;
}
//删除企业用户
if (pHead->lFuncType == SMSFUNC_DATATJERR_DEL)
{
ANS_White_Del * pDel = (ANS_White_Del *)pHead->pFrame;
ANS_White_DelData * pDelData = (ANS_White_DelData *)(pHead->pFrame+sizeof(ANS_White_Del));
for ( int i = pDel->lCount-1 ; i>=0 ; i-- )
{
if ( pDelData[i].lWhiteID ) //删除成功
{
switch( pDelData[i].lWhiteType )
{
case 1:
m_wndList.SetItemText(pDelData[i].lItem,5 , _T("审核通过"));
break;
case 2:
m_wndList.SetItemText(pDelData[i].lItem,5 , _T("审核拒绝"));
break;
case 10: //删除企业白名单
m_wndList.DeleteItem(pDelData[i].lItem); //从ListCtrl中删除
break;
default:
m_wndList.DeleteItem(pDelData[i].lItem); //从ListCtrl中删除
break;
}
}
}
}
*/
return false;
}
BOOL CC_DataTJErr::RefreshInfo()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
{
return false;
}
m_pMainFrame->SendFrame(SMSFUNC_CORP_NAME,NULL,0);
return true;
}
BOOL CC_DataTJErr::ReHide()
{
ShowWindow( SW_HIDE );
return true;
}
BOOL CC_DataTJErr::ReShow(BOOL bRefresh)
{
ShowWindow( SW_SHOW );
if ( bRefresh || !m_bRefresh )
{
RefreshInfo();
}
return true;
}
void CC_DataTJErr::OnWhiteQuery()
{
if ( !UpdateData(true) )
return ;
REQ_DataTJErr_Get * pErrGet = new REQ_DataTJErr_Get;
memset(pErrGet,0,sizeof(REQ_DataTJErr_Get));
if ( m_lCorp <= 0 ) //选了所有企业
{
pErrGet->lCorpID = -1;
}
else
{
POSITION pos = (POSITION)m_L_Corp.GetItemData(m_lCorp);
POSITION pos2 = pos;
ANS_Corp_NameData * pData = m_Corp.GetNext( pos );
if (pData)
{
pErrGet->lCorpID = pData->lCorpID;
}
else
{
return;
}
}
pErrGet->lStatus = m_lStatus;
_tcscpy(pErrGet->szTJType , m_strType);
m_pMainFrame->SendFrame(SMSFUNC_DATATJERR_GET,(BYTE*)pErrGet,sizeof(REQ_DataTJErr_Get));
return ;
}
void CC_DataTJErr::OnWhiteQuery2()
{
CString strTemp;
CString strFind;
m_E_CorpID.GetWindowText(strFind);
if ( strFind.GetLength()<=0 )
return ;
long lSel = m_L_Corp.GetCurSel();
long lCount = m_L_Corp.GetCount();
for ( int i=lSel+1 ; i<lCount ; i++ )
{
m_L_Corp.GetLBText(i,strTemp);
if ( strTemp.Find(strFind)>=0 )
{
m_L_Corp.SetCurSel(i);
return ;
}
}
for ( i=0 ; i<lSel ; i++ )
{
m_L_Corp.GetLBText(i,strTemp);
if ( strTemp.Find(strFind)>=0 )
{
m_L_Corp.SetCurSel(i);
return ;
}
}
}
void CC_DataTJErr::OnDblclkWhiteList(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
*pResult = 0;
On_DataTJErr_See();
}
void CC_DataTJErr::OnRclickWhiteList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
ShowRMenu();
}
void CC_DataTJErr::On_DataTJErr_See()
{
long lItem = GetCurrentSelected();
if ( lItem < 0 )
return ;
if (isLockItem(lItem))
{
return ;
}
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
POSITION pos2 = pos;
ANS_DataTJErr_GetData * pData = m_DataTJErr.GetNext( pos );
if (pData)
{
DLG_C_DataTJErr_Modify dlg(this);
dlg.Setparam( *pData);
if ( dlg.DoModal() == IDOK )
{
SetLockItem( lItem ,true);
long lSize = sizeof(REQ_DataTJErr_Process)+sizeof(ANS_DataTJErr_GetData);
BYTE * pModifyData = new BYTE[lSize];memset(pModifyData,0,lSize);
REQ_DataTJErr_Process * pModify = (REQ_DataTJErr_Process *)pModifyData; //头
ANS_DataTJErr_GetData * pTD2Data = (ANS_DataTJErr_GetData *)(pModifyData+sizeof(REQ_DataTJErr_Process));
*pTD2Data = dlg.GetParam();
pModify->lDataErrTJID = pData->lDataTJErrID;
pModify->lStatus = pTD2Data->lStatus;
_tcscpy(pModify->szProcessMemo , pTD2Data->szProcessMemo);
pModify->lItem = lItem;
m_pMainFrame->SendFrame( SMSFUNC_DATATJERR_PROCESS , pModifyData , lSize );
}
}
}
void CC_DataTJErr::On_DataTJErr_Copy()
{
m_wndList.CopyToClipboard();
}
BOOL CC_DataTJErr::ShowInList(ANS_DataTJErr_GetData * pData,long lItem2,POSITION pos)
{
CString str;
long lItem =lItem2;
if ( lItem<0 ) //新增
{
lItem = m_wndList.GetItemCount();
str.Format(_T("%d") , lItem+1 );
m_wndList.InsertItem( lItem , str , 0 );
m_wndList.SetItemData( lItem , (DWORD)pos ); //存Pos
}
//m_wndList.SetHeadings(_T("序号,50; 状态,60; 企业ID,100; 类型,160; 差误1 ,100; 差误2 ,100; 备注,200; 处理人,100;处理时间,120;处理备注,200;"));
long lTemp11=1;
str = _T("");
if ( pData->lStatus==0 )
str = _T("未处理");
m_wndList.SetItemText( lItem , lTemp11++ , str ) ;
str.Format(_T("%04d%02d%02d %02d:%02d") , pData->tCreateTime.wYear,pData->tCreateTime.wMonth,pData->tCreateTime.wDay,pData->tCreateTime.wHour,pData->tCreateTime.wMinute);
m_wndList.SetItemText( lItem , lTemp11++ , str ) ;
str.Format(_T("%d") , pData->lCorpID);
m_wndList.SetItemText( lItem , lTemp11++ , str ) ;
m_wndList.SetItemText( lItem , lTemp11++ , pData->szTJType ) ;
str.Format(_T("%.2f") , pData->fErrCount1);
m_wndList.SetItemText( lItem , lTemp11++ , str ) ;
str.Format(_T("%.2f") , pData->fErrCount2);
m_wndList.SetItemText( lItem , lTemp11++ , str ) ;
m_wndList.SetItemText( lItem , lTemp11++ , pData->szMemo ) ;
m_wndList.SetItemText( lItem , lTemp11++ , pData->szProcessUser ) ;
m_wndList.SetItemText( lItem , lTemp11++ , pData->szProcessMemo ) ;
return true;
}