1047 lines
34 KiB
C++
1047 lines
34 KiB
C++
// DLG_GZMsg_JL.cpp: 实现文件
|
||
//
|
||
|
||
#include "stdafx.h"
|
||
#include "SmsManager.h"
|
||
#include "DLG_GZMsg_JL.h"
|
||
#include "afxdialogex.h"
|
||
#include "MainFrm.h"
|
||
|
||
// DLG_GZMsg_JL 对话框
|
||
|
||
IMPLEMENT_DYNAMIC(DLG_GZMsg_JL, CDialogEx)
|
||
|
||
DLG_GZMsg_JL::DLG_GZMsg_JL(CWnd* pParent /*=nullptr*/)
|
||
: CDialogEx(IDD_K_GZMSG_JL, pParent)
|
||
{
|
||
m_pMainFrame=NULL;
|
||
m_lYWYID=0;
|
||
m_pYWYData = NULL;
|
||
m_lShowType = 0;
|
||
}
|
||
|
||
DLG_GZMsg_JL::~DLG_GZMsg_JL()
|
||
{
|
||
}
|
||
|
||
void DLG_GZMsg_JL::DoDataExchange(CDataExchange* pDX)
|
||
{
|
||
CDialogEx::DoDataExchange(pDX);
|
||
DDX_Control(pDX, IDC_GZMSG_JL_LIST, m_wndList);
|
||
DDX_Control(pDX, IDD_K_GZMSG_JL_MON, m_wndMon);
|
||
DDX_Control(pDX, IDD_K_GZMSG_JL_PK1, m_wndPK1);
|
||
DDX_Control(pDX, IDD_K_GZMSG_JL_PK2, m_wndPK2);
|
||
DDX_Control(pDX, IDD_K_GZMSG_JL_PKRATIO, m_wndPKRatio);
|
||
DDX_Control(pDX, IDD_K_GZMSG_JL_TYPE, m_wndType);
|
||
DDX_Control(pDX, IDD_K_GZMSG_JL_ADDLIST, m_B_AddList);
|
||
}
|
||
|
||
|
||
BEGIN_MESSAGE_MAP(DLG_GZMsg_JL, CDialogEx)
|
||
ON_BN_CLICKED(IDD_K_GZMSG_JL_QUERY, &DLG_GZMsg_JL::OnBnClickedKGzmsgJlQuery)
|
||
ON_NOTIFY(NM_RCLICK, IDC_GZMSG_JL_LIST, &DLG_GZMsg_JL::OnRclickGzmsgJlList)
|
||
ON_COMMAND(MENU_GZMSG_JL_COPY, On_GZMsg_Copy)
|
||
ON_COMMAND(MENU_GZMSG_JL_DEL, On_GZMsg_Del)
|
||
ON_CBN_SELCHANGE(IDD_K_GZMSG_JL_TYPE, &DLG_GZMsg_JL::OnSelchangeIddKGzmsgJlType)
|
||
ON_BN_CLICKED(IDD_K_GZMSG_JL_INPORTMMDCOUNT, &DLG_GZMsg_JL::OnBnClickedKGzmsgJlInportmmdcount)
|
||
END_MESSAGE_MAP()
|
||
|
||
|
||
// DLG_GZMsg_JL 消息处理程序
|
||
|
||
|
||
void DLG_GZMsg_JL::OnBnClickedKGzmsgJlQuery()
|
||
{
|
||
REQ_GZMsg_JL * pJL = new REQ_GZMsg_JL; memset(pJL, 0, sizeof(REQ_GZMsg_JL));
|
||
pJL->lType = m_wndType.GetCurSel();
|
||
CString strMon;
|
||
m_wndMon.GetWindowText(strMon);
|
||
_tcscpy(pJL->szMon, strMon);
|
||
pJL->lPKRatio = m_wndPKRatio.GetCurSel();
|
||
pJL->lPK1 = m_wndPK1.GetItemData(m_wndPK1.GetCurSel());
|
||
pJL->lPK2 = m_wndPK2.GetItemData(m_wndPK2.GetCurSel());
|
||
|
||
if (pJL->lType == 1) //PK
|
||
{
|
||
if (pJL->lPK1 == pJL->lPK2)
|
||
{
|
||
MessageBox(_T("挑战者与应战者不能相同!"), _T("错误"), MB_ICONWARNING);
|
||
m_wndPK1.SetFocus();
|
||
return;
|
||
}
|
||
if (pJL->lPK1>= 500000 && pJL->lPK2< 500000)
|
||
{
|
||
MessageBox(_T("部门与个人不能互相挑战!"), _T("错误"), MB_ICONWARNING);
|
||
m_wndPK1.SetFocus();
|
||
return;
|
||
}
|
||
if (pJL->lPK1 < 500000 && pJL->lPK2 >= 500000)
|
||
{
|
||
MessageBox(_T("部门与个人不能互相挑战!"), _T("错误"), MB_ICONWARNING);
|
||
m_wndPK1.SetFocus();
|
||
return;
|
||
}
|
||
|
||
long lColumeCount = m_wndList.GetColumnCount();
|
||
if (m_B_AddList.GetCheck() && m_wndList.GetColumnCount() != 8)
|
||
{
|
||
|
||
m_wndList.DeleteAllItems();
|
||
m_wndList.DeleteAllColumns();
|
||
m_wndList.SetHeadings(_T("序号,50; 挑战者,150;被挑战者,150;挑战目标,100;挑战结果,150; 赢方,150;挑战者-业绩差,200;被挑战者-业绩差,200;"));
|
||
}
|
||
|
||
}
|
||
|
||
m_pMainFrame->SendFrame(SMSFUNC_GZMSG_JL, (BYTE*)pJL, sizeof(REQ_GZMsg_JL));
|
||
|
||
}
|
||
|
||
BOOL DLG_GZMsg_JL::ProcessSocket(Socket_Head_Add *pHead, BYTE* pFrame)
|
||
{
|
||
|
||
CString str;
|
||
if (pHead->lFuncType == SMSFUNC_GZMSG_JL_PARA)
|
||
{
|
||
|
||
return true;
|
||
}
|
||
if (pHead->lFuncType == SMSFUNC_GZMSG_JL)
|
||
{
|
||
ANS_GZMsg_JL * pJL = (ANS_GZMsg_JL *)pFrame;
|
||
ANS_GZMsg_JL_Data * pJLData = (ANS_GZMsg_JL_Data *)(pFrame + sizeof(ANS_GZMsg_JL));
|
||
ANS_GZMsg_JL_Data2 * pJLData2 = (ANS_GZMsg_JL_Data2 *)(pFrame + sizeof(ANS_GZMsg_JL));
|
||
|
||
if (!pJL->bOK) //权限不足,返回错误
|
||
{
|
||
return true;
|
||
}
|
||
|
||
if (pJL->lType == 0)
|
||
{
|
||
CString str;
|
||
m_wndList.DeleteAllItems();
|
||
m_wndList.DeleteAllColumns();
|
||
//2025年新的评比规则
|
||
if (m_lShowType == 1)
|
||
m_wndList.SetHeadings(_T("序号,50; 部门,100; 客户经理,100; 月份,100; 么么哒,80; A值,80; B值,80;本月得分,100; 备注,120;"));
|
||
else
|
||
m_wndList.SetHeadings(_T("序号,50; 部门,100; 客户经理,100; 月份,100; 业绩,100; 么么哒,80; A值,80; B值,80;本月得分,100; 备注,120;"));
|
||
|
||
for (int i = 0; i < pJL->lCount; i++)
|
||
{
|
||
str.Format(_T("%d"), i + 1);
|
||
m_wndList.InsertItem(i, str, 0);
|
||
int iTemp = 1;
|
||
m_wndList.SetItemText(i, iTemp++, pJLData->szGroupName);
|
||
m_wndList.SetItemText(i, iTemp++, pJLData->szYWYName);
|
||
str.Format(_T("%04d年%02d月"), pJLData->tMon1.wYear, pJLData->tMon1.wMonth);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
|
||
if (m_lShowType != 1)
|
||
{
|
||
str.Format(_T("%10.2f"), pJLData->fYZ1);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
}
|
||
str.Format(_T("%8d"), pJLData->lMMDCount);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
|
||
str.Format(_T("%8.2f"), pJLData->fA1);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
str.Format(_T("%8.2f"), pJLData->fB1);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
|
||
str.Format(_T("%9.2f"), pJLData->fAvg);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
|
||
if (pJLData->bUnconfirmed)
|
||
{
|
||
m_wndList.SetItemText(i, iTemp++, _T("含未确认业绩"));
|
||
}
|
||
else
|
||
{
|
||
if (pJLData->fAvg < 50.0f)
|
||
{
|
||
m_wndList.SetItemText(i, iTemp++, _T("进步空间巨大"));
|
||
}
|
||
|
||
}
|
||
pJLData++;
|
||
}
|
||
}
|
||
if (pJL->lType == 1)
|
||
{
|
||
|
||
if (m_B_AddList.GetCheck())
|
||
{
|
||
CString str;
|
||
long lItem = m_wndList.GetItemCount();
|
||
|
||
str.Format(_T("%d"), lItem + 1);
|
||
m_wndList.InsertItem(lItem, str, 0);
|
||
int iTemp = 1;
|
||
//m_wndList.SetHeadings(_T("序号,50; 挑战者,150;被挑战者,150;挑战目标,100;挑战结果,150; 赢方,150;挑战者-业绩差,200;被挑战者-业绩差,200;"));
|
||
m_wndList.SetItemText(lItem, iTemp++, pJLData2->szPK1);
|
||
m_wndList.SetItemText(lItem, iTemp++, pJLData2->szPK2);
|
||
str.Format(_T("%10.0f%%"), pJLData2->fAddRatio * 100.0f);
|
||
m_wndList.SetItemText(lItem, iTemp++, str);
|
||
CString strResult;
|
||
CString strWinner;
|
||
if (pJLData2->bWin)
|
||
{
|
||
strResult = _T("挑战成功!!");
|
||
strWinner = pJLData2->szPK1;
|
||
}
|
||
else
|
||
{
|
||
strResult = _T("挑战失败!!");
|
||
strWinner = pJLData2->szPK2;
|
||
}
|
||
m_wndList.SetItemText(lItem, iTemp++, strResult);
|
||
m_wndList.SetItemText(lItem, iTemp++, strWinner);
|
||
|
||
str.Format(_T("%10.2f"), pJLData2->fWin1YZ);
|
||
m_wndList.SetItemText(lItem, iTemp++, str);
|
||
str.Format(_T("%10.2f"), pJLData2->fWin2YZ);
|
||
m_wndList.SetItemText(lItem, iTemp++, str);
|
||
}
|
||
else
|
||
{
|
||
m_wndList.DeleteAllItems();
|
||
m_wndList.DeleteAllColumns();
|
||
m_wndList.SetHeadings(_T("项目,200; 内容,450;"));
|
||
|
||
CString str;
|
||
int iTemp = 0;
|
||
m_wndList.InsertItem(iTemp++, _T(""), 1);
|
||
str.Format(_T(" %s PK结果"), pJL->szMon);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
m_wndList.InsertItem(iTemp++, _T(""), 1);
|
||
m_wndList.InsertItem(iTemp++, _T(""), 1);
|
||
|
||
if (pJLData2->bPK1Unconfirmed)
|
||
m_wndList.InsertItem(iTemp++, _T("挑战队(含未确认业绩)"), 1);
|
||
else
|
||
m_wndList.InsertItem(iTemp++, _T("挑战队"), 1);
|
||
m_wndList.SetItemText(iTemp - 1, 1, pJLData2->szPK1);
|
||
if (pJLData2->bPK1Unconfirmed)
|
||
m_wndList.InsertItem(iTemp++, _T("应战队(含未确认业绩)"), 1);
|
||
else
|
||
m_wndList.InsertItem(iTemp++, _T("应战队"), 1);
|
||
m_wndList.SetItemText(iTemp - 1, 1, pJLData2->szPK2);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T(""), 1); //空行
|
||
m_wndList.InsertItem(iTemp++, _T("挑战目标"), 1);
|
||
str.Format(_T("%10.0f%%"), pJLData2->fAddRatio * 100.0f);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
m_wndList.InsertItem(iTemp++, _T(""), 1); //空行
|
||
|
||
if (m_lShowType != 1)
|
||
{
|
||
m_wndList.InsertItem(iTemp++, _T("挑战队平均业绩"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fPK1Pre3);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("应战队平均业绩"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fPK2Pre3);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
m_wndList.InsertItem(iTemp++, _T(""), 1); //空行
|
||
m_wndList.InsertItem(iTemp++, _T("挑战队平均么么哒"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fPK1MMDCount);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("应战队平均么么哒"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fPK2MMDCount);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
m_wndList.InsertItem(iTemp++, _T(""), 1); //空行
|
||
|
||
}
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("挑战队平均得分"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fPK1Now);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("应战队平均得分"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fPK2Now);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
m_wndList.InsertItem(iTemp++, _T(""), 1); //空行
|
||
|
||
if (m_lShowType != 1)
|
||
{
|
||
m_wndList.InsertItem(iTemp++, _T("挑战队-分数差"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fWin1Score);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("应战队-分数差"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fWin2Score);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
m_wndList.InsertItem(iTemp++, _T(""), 1); //空行
|
||
}
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("挑战队-业绩差"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fWin1YZ);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("应战队-业绩差"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fWin2YZ);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
m_wndList.InsertItem(iTemp++, _T(""), 1); //空行
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("挑战队-么么哒差"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fWin1MMDCount);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("应战队-么么哒差"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fWin2MMDCount);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
m_wndList.InsertItem(iTemp++, _T(""), 1); //空行
|
||
|
||
m_wndList.InsertItem(iTemp++, _T(""), 1); //空行
|
||
|
||
|
||
if (pJLData2->bWin)
|
||
{
|
||
m_wndList.InsertItem(iTemp++, _T("挑战成功!!"), 0);
|
||
str.Format(_T("赢方:%s"), pJLData2->szPK1);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
}
|
||
else
|
||
{
|
||
m_wndList.InsertItem(iTemp++, _T("挑战失败!!"), 1);
|
||
m_wndList.SetItemText(iTemp - 1, 1, _T("挑战失败!!"));
|
||
str.Format(_T("赢方:%s"), pJLData2->szPK2);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
}
|
||
}
|
||
|
||
//旧模式,分列表显示与表格显示。
|
||
//2025年因为只有战队PK,统一改成只用表格显示
|
||
/*
|
||
if (m_lShowType == 1)
|
||
{
|
||
CString str;
|
||
long lItem = m_wndList.GetItemCount();
|
||
|
||
str.Format(_T("%d"), lItem + 1);
|
||
m_wndList.InsertItem(lItem, str, 0);
|
||
int iTemp = 1;
|
||
//m_wndList.SetHeadings(_T("序号,50;月份,100; 挑战队,150; 应战队,150;挑战目标,80;挑战结果,120; 赢方,150;挑战队分数,100;应战队分数,100;挑战业绩差,100;应战业绩差,100;挑战么么哒差,100;应战么么哒差,100;"));
|
||
m_wndList.SetItemText(lItem, iTemp++, pJL->szMon);
|
||
m_wndList.SetItemText(lItem, iTemp++, pJLData2->szPK1);
|
||
m_wndList.SetItemText(lItem, iTemp++, pJLData2->szPK2);
|
||
str.Format(_T("%6.0f%%"), pJLData2->fAddRatio*100.0f);
|
||
m_wndList.SetItemText(lItem, iTemp++, str);
|
||
CString strResult;
|
||
CString strWinner;
|
||
if (pJLData2->bWin)
|
||
{
|
||
strResult = _T("挑战成功!!");
|
||
strWinner = pJLData2->szPK1;
|
||
}
|
||
else
|
||
{
|
||
strResult = _T("挑战失败!!");
|
||
strWinner = pJLData2->szPK2;
|
||
}
|
||
m_wndList.SetItemText(lItem, iTemp++, strResult);
|
||
m_wndList.SetItemText(lItem, iTemp++, strWinner);
|
||
|
||
str.Format(_T("%10.2f"), pJLData2->fWin1Score);
|
||
m_wndList.SetItemText(lItem, iTemp++, str);
|
||
str.Format(_T("%10.2f"), pJLData2->fWin2Score);
|
||
m_wndList.SetItemText(lItem, iTemp++, str);
|
||
|
||
str.Format(_T("%10.2f"), pJLData2->fWin1YZ);
|
||
m_wndList.SetItemText(lItem, iTemp++, str);
|
||
str.Format(_T("%10.2f"), pJLData2->fWin2YZ);
|
||
m_wndList.SetItemText(lItem, iTemp++, str);
|
||
|
||
str.Format(_T("%10.2f"), pJLData2->fWin1MMDCount);
|
||
m_wndList.SetItemText(lItem, iTemp++, str);
|
||
str.Format(_T("%10.2f"), pJLData2->fWin2MMDCount);
|
||
m_wndList.SetItemText(lItem, iTemp++, str);
|
||
}
|
||
else
|
||
{
|
||
m_wndList.DeleteAllItems();
|
||
m_wndList.DeleteAllColumns();
|
||
m_wndList.SetHeadings(_T("项目,250; 内容,450;"));
|
||
|
||
CString str;
|
||
int iTemp = 0;
|
||
m_wndList.InsertItem(iTemp++, _T(""), 1);
|
||
str.Format(_T(" %s PK结果"), pJL->szMon);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
m_wndList.InsertItem(iTemp++, _T(""), 1);
|
||
m_wndList.InsertItem(iTemp++, _T(""), 1);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("挑战队"), 1);
|
||
m_wndList.SetItemText(iTemp - 1, 1, pJLData2->szPK1);
|
||
m_wndList.InsertItem(iTemp++, _T("应战队"), 1);
|
||
m_wndList.SetItemText(iTemp - 1, 1, pJLData2->szPK2);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("挑战目标"), 1);
|
||
str.Format(_T("%10.0f%%"), pJLData2->fAddRatio*100.0f);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("挑战队平均业绩"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fPK1Pre3);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("应战队平均业绩"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fPK2Pre3);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("挑战队平均么么哒"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fPK1MMDCount);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("应战队平均么么哒"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fPK2MMDCount);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("挑战队平均得分"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fPK1Now);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("应战队平均得分"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fPK2Now);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("挑战队-分数差"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fWin1Score);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("应战队-分数差"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fWin2Score);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("挑战队-业绩差"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fWin1YZ);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("应战队-业绩差"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fWin2YZ);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("挑战队-么么哒差"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fWin1MMDCount);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("应战队-么么哒差"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fWin2MMDCount);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
|
||
if (pJLData2->bWin)
|
||
{
|
||
m_wndList.InsertItem(iTemp++, _T("挑战成功!!"), 0);
|
||
str.Format(_T("赢方:%s"), pJLData2->szPK1);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
}
|
||
else
|
||
{
|
||
m_wndList.InsertItem(iTemp++, _T("挑战失败!!"), 1);
|
||
m_wndList.SetItemText(iTemp - 1, 1, _T("挑战失败!!"));
|
||
str.Format(_T("赢方:%s"), pJLData2->szPK2);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
}
|
||
}
|
||
*/
|
||
}
|
||
|
||
/* 2024年前旧的评比规则
|
||
if (pJL->lType == 0)
|
||
{
|
||
CString str;
|
||
m_wndList.DeleteAllItems();
|
||
m_wndList.DeleteAllColumns();
|
||
if (m_lShowType == 1)
|
||
m_wndList.SetHeadings(_T("序号,50; 部门,100; 客户经理,100; 上月,100;上月得分,100; 本月,100; 本月A,100; 本月B,100; 本月C,100;本月总分,100; 平均分,100;"));
|
||
else
|
||
m_wndList.SetHeadings(_T("序号,50; 部门,100; 客户经理,100; 上月,100;平均业绩,100;平均客户,80;上月业绩,100;上月客户,80; 上月A,100; 上月B,100; 上月C,100;上月总分,100; 本月,100;平均业绩,100;平均客户,80;本月业绩,100;本月客户,80; 本月A,100; 本月B,100; 本月C,100;本月总分,100; 平均分,100;"));
|
||
for (int i = 0; i < pJL->lCount; i++)
|
||
{
|
||
str.Format(_T("%d"), i + 1);
|
||
m_wndList.InsertItem(i, str, 0);
|
||
int iTemp = 1;
|
||
m_wndList.SetItemText(i, iTemp++, pJLData->szGroupName);
|
||
m_wndList.SetItemText(i, iTemp++, pJLData->szYWYName);
|
||
str.Format(_T("%04d年%02d月"), pJLData->tMon2.wYear, pJLData->tMon2.wMonth);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
|
||
if (m_lShowType != 1)
|
||
{
|
||
str.Format(_T("%10.2f"), pJLData->fAvegYZ2);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
str.Format(_T("%10.2f"), pJLData->fAvegKH2);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
str.Format(_T("%10.2f"), pJLData->fYZ2);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
str.Format(_T("%6d"), (long)pJLData->fKH2);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
str.Format(_T("%10.2f"), pJLData->fA2);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
str.Format(_T("%10.2f"), pJLData->fB2);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
str.Format(_T("%10.2f"), pJLData->fC2);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
}
|
||
str.Format(_T("%10.2f"), pJLData->fT2);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
|
||
str.Format(_T("%04d年%02d月"), pJLData->tMon1.wYear, pJLData->tMon1.wMonth);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
if (m_lShowType != 1)
|
||
{
|
||
str.Format(_T("%10.2f"), pJLData->fAvegYZ1);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
str.Format(_T("%10.2f"), pJLData->fAvegKH1);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
str.Format(_T("%10.2f"), pJLData->fYZ1);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
str.Format(_T("%6d"), (long)pJLData->fKH1);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
}
|
||
str.Format(_T("%10.2f"), pJLData->fA1);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
str.Format(_T("%10.2f"), pJLData->fB1);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
str.Format(_T("%10.2f"), pJLData->fC1);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
str.Format(_T("%10.2f"), pJLData->fT1);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
|
||
str.Format(_T("%10.2f"), pJLData->fAvg);
|
||
m_wndList.SetItemText(i, iTemp++, str);
|
||
|
||
pJLData++;
|
||
}
|
||
}
|
||
if (pJL->lType == 1)
|
||
{
|
||
if (m_lShowType == 1)
|
||
{
|
||
CString str;
|
||
long lItem = m_wndList.GetItemCount();
|
||
|
||
str.Format(_T("%d"), lItem + 1);
|
||
m_wndList.InsertItem(lItem, str, 0);
|
||
int iTemp = 1;
|
||
//m_wndList.SetHeadings(_T("序号,50; 挑战者,150;被挑战者,150;挑战目标,100;挑战结果,150; 赢方,150;挑战者-业绩差,200;被挑战者-业绩差,200;"));
|
||
m_wndList.SetItemText(lItem, iTemp++, pJLData2->szPK1);
|
||
m_wndList.SetItemText(lItem, iTemp++, pJLData2->szPK2);
|
||
str.Format(_T("%10.0f%%"), pJLData2->fAddRatio*100.0f);
|
||
m_wndList.SetItemText(lItem, iTemp++, str);
|
||
CString strResult;
|
||
CString strWinner;
|
||
if (pJLData2->bWin)
|
||
{
|
||
strResult = _T("挑战成功!!");
|
||
strWinner = pJLData2->szPK1;
|
||
}
|
||
else
|
||
{
|
||
strResult = _T("挑战失败!!");
|
||
strWinner = pJLData2->szPK2;
|
||
}
|
||
m_wndList.SetItemText(lItem, iTemp++, strResult);
|
||
m_wndList.SetItemText(lItem, iTemp++, strWinner);
|
||
|
||
str.Format(_T("%10.2f"), pJLData2->fWin1YZ);
|
||
m_wndList.SetItemText(lItem, iTemp++, str);
|
||
str.Format(_T("%10.2f"), pJLData2->fWin2YZ);
|
||
m_wndList.SetItemText(lItem, iTemp++, str);
|
||
}
|
||
else
|
||
{
|
||
m_wndList.DeleteAllItems();
|
||
m_wndList.DeleteAllColumns();
|
||
m_wndList.SetHeadings(_T("项目,250; 内容,450;"));
|
||
|
||
CString str;
|
||
int iTemp = 0;
|
||
m_wndList.InsertItem(iTemp++, _T(""), 1);
|
||
str.Format(_T(" %s PK结果"), pJL->szMon);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
m_wndList.InsertItem(iTemp++, _T(""), 1);
|
||
m_wndList.InsertItem(iTemp++, _T(""), 1);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("挑战者"), 1);
|
||
m_wndList.SetItemText(iTemp - 1, 1, pJLData2->szPK1);
|
||
m_wndList.InsertItem(iTemp++, _T("被挑战者"), 1);
|
||
m_wndList.SetItemText(iTemp - 1, 1, pJLData2->szPK2);
|
||
m_wndList.InsertItem(iTemp++, _T("挑战者-前三月平均业绩"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fPK1Pre3);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
m_wndList.InsertItem(iTemp++, _T("被挑战者-前三月平均业绩"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fPK2Pre3);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("挑战目标"), 1);
|
||
str.Format(_T("%10.0f%%"), pJLData2->fAddRatio*100.0f);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("挑战者-当月业绩"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fPK1Now);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("被挑战者-当月业绩"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fPK2Now);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("挑战系数"), 1);
|
||
str.Format(_T("%10.2f%%"), pJLData2->fPKXS*100.0f);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("挑战者-折算业绩"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fPKYZ);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("挑战者-获胜业绩"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fPKWinYZ);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("挑战者-业绩差"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fWin1YZ);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
m_wndList.InsertItem(iTemp++, _T("被挑战者-业绩差"), 1);
|
||
str.Format(_T("%10.2f"), pJLData2->fWin2YZ);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
|
||
if (pJLData2->bWin)
|
||
{
|
||
m_wndList.InsertItem(iTemp++, _T("挑战成功!!"), 0);
|
||
str.Format(_T("赢方:%s"), pJLData2->szPK1);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
}
|
||
else
|
||
{
|
||
m_wndList.InsertItem(iTemp++, _T("挑战失败!!"), 1);
|
||
m_wndList.SetItemText(iTemp - 1, 1, _T("挑战失败!!"));
|
||
str.Format(_T("赢方:%s"), pJLData2->szPK2);
|
||
m_wndList.SetItemText(iTemp - 1, 1, str);
|
||
}
|
||
}
|
||
}
|
||
*/
|
||
return true;
|
||
}
|
||
|
||
if (pHead->lFuncType == SMSFUNC_GZMSG_JL_MMDCOUNT)
|
||
{
|
||
ANS_GZMsg_JL_MMDCount* pRet = (ANS_GZMsg_JL_MMDCount*)pFrame;
|
||
ANS_GZMsg_JL_MMDCount_Data* pRetData = (ANS_GZMsg_JL_MMDCount_Data*)(pFrame + sizeof(ANS_GZMsg_JL_MMDCount));
|
||
|
||
if (pRet->lErrCode !=0 )
|
||
{
|
||
str.Format(_T("设置么么哒数据失败:%d - %s"), pRet->lErrCode,pRet->szErrMsg);
|
||
MessageBox(str, _T("错误"), MB_ICONERROR);
|
||
return true;
|
||
}
|
||
//生成显示的数据
|
||
CString strShowText;
|
||
long lShowTextCount = 0;
|
||
for (int i = 0; i < pRet->lCount && i<16; i++)
|
||
{
|
||
str.Format(_T("%-10s%6d"), pRetData[i].szYWYName, pRetData[i].lMMDCount);
|
||
if (lShowTextCount <= 0)
|
||
{
|
||
strShowText += str;
|
||
lShowTextCount++;
|
||
}
|
||
else
|
||
{
|
||
if (lShowTextCount >= 2)
|
||
{
|
||
strShowText = strShowText + _T(" | ") + str;
|
||
strShowText.Append(_T("\r\n"));
|
||
lShowTextCount = 0;
|
||
}
|
||
else
|
||
{
|
||
strShowText = strShowText + _T(" | ") + str;
|
||
lShowTextCount++;
|
||
}
|
||
}
|
||
}
|
||
|
||
str.Format(_T("已导入%s的么么哒数据,共导入%d个数据:\r\n\r\n%s"), pRet->szMon, pRet->lCount,strShowText);
|
||
MessageBox(str, _T("信息"), MB_ICONINFORMATION);
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
|
||
void DLG_GZMsg_JL::SetParam(CMainFrame * pFrame, long lYWYID, CString strName,BYTE * pYWYData,long lShowType)
|
||
{
|
||
|
||
m_lYWYID = lYWYID;
|
||
m_strName = strName;
|
||
m_pMainFrame = pFrame;
|
||
m_pYWYData = pYWYData;
|
||
m_lShowType = lShowType;
|
||
}
|
||
|
||
|
||
BOOL DLG_GZMsg_JL::OnInitDialog()
|
||
{
|
||
CDialogEx::OnInitDialog();
|
||
|
||
if (!m_pYWYData)
|
||
return true;
|
||
|
||
|
||
//初始化List
|
||
m_Image.Create(16, 16, ILC_COLOR16 | ILC_MASK, 5, 5);
|
||
//m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CORP));
|
||
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SWTSQ));
|
||
|
||
m_wndList.SubClassWindow2();
|
||
//2025年新的评比规则
|
||
if (m_lShowType == 1)
|
||
m_wndList.SetHeadings(_T("序号,50; 部门,100; 客户经理,100; 月份,100;么么哒,80; A值,100; B值,100; 本月得分,100;"));
|
||
else
|
||
m_wndList.SetHeadings(_T("序号,50; 部门,100; 客户经理,100; 月份,100; 业绩,100;么么哒,80; A值,100; B值,100; 本月得分,100;"));
|
||
|
||
/* 2024年前旧的评比规则
|
||
if (m_lShowType == 1)
|
||
m_wndList.SetHeadings(_T("序号,50; 挑战者,150;被挑战者,150;挑战目标,100;挑战结果,150; 赢方,150;挑战者-业绩差,200;被挑战者-业绩差,200;"));
|
||
else
|
||
m_wndList.SetHeadings(_T("序号,50; 部门,100; 客户经理,100; 上月,100; 上月A,100; 上月B,100; 上月C,100;上月总分,100; 本月,100; 本月A,100; 本月B,100; 本月C,100;本月总分,100; 平均分,100;"));
|
||
*/
|
||
m_wndList.SetGridLines(true);
|
||
m_wndList.SetImageList(&m_Image, LVSIL_SMALL);
|
||
|
||
|
||
ANS_GZMsg_JL_PARA * pPara = (ANS_GZMsg_JL_PARA *)m_pYWYData;
|
||
ANS_GZMsg_JL_PARA_DATE * pData = (ANS_GZMsg_JL_PARA_DATE *)(m_pYWYData + sizeof(ANS_GZMsg_JL_PARA));
|
||
if (pPara->lErrCode != 0) //权限不足,返回错误
|
||
{
|
||
return true;
|
||
}
|
||
|
||
if (m_lShowType == 1)
|
||
m_wndType.SetCurSel(1);
|
||
else
|
||
m_wndType.SetCurSel(0);
|
||
|
||
ANS_GZMsg_JL_PARA_DATE * pMon = pData;
|
||
for (int i = 0; i < pPara->lMonCount; i++)
|
||
{
|
||
m_wndMon.AddString(pMon[i].szName);
|
||
}
|
||
m_wndMon.SetCurSel(0);
|
||
pData += pPara->lMonCount;
|
||
|
||
ANS_GZMsg_JL_PARA_DATE * pPkRatio = pData;
|
||
for (int i = 0; i < pPara->lPKRatioCount; i++)
|
||
{
|
||
m_wndPKRatio.AddString(pPkRatio[i].szName);
|
||
}
|
||
m_wndPKRatio.SetCurSel(0);
|
||
pData += pPara->lPKRatioCount;
|
||
|
||
//以下为添加PK的队员信息,并且自动匹配选择对手
|
||
ANS_GZMsg_JL_PARA_DATE * pYWY = pData;
|
||
int iPK1Sel = 0;
|
||
int iPK2Sel = 0;
|
||
int iPK1SelID = 0;
|
||
int iPK2SelID = 0;
|
||
for (int i = 0; i < pPara->lYWYCount; i++)
|
||
{
|
||
int iItem = m_wndPK1.AddString(pYWY[i].szName);
|
||
m_wndPK1.SetItemData(iItem, pYWY[i].lYWYID);
|
||
iItem = m_wndPK2.AddString(pYWY[i].szName);
|
||
m_wndPK2.SetItemData(iItem, pYWY[i].lYWYID);
|
||
|
||
if (i == 0)
|
||
{
|
||
iPK1SelID = pYWY[i].lYWYID;
|
||
iPK1Sel = 0;
|
||
}
|
||
else
|
||
{
|
||
if (iPK2Sel<=0 && iPK1SelID < 500000 && pYWY[i].lYWYID< 500000) //同类型的
|
||
{
|
||
iPK2Sel = i;
|
||
}
|
||
if (iPK2Sel <= 0 && iPK1SelID >= 500000 && pYWY[i].lYWYID >= 500000) //同类型的
|
||
{
|
||
iPK2Sel = i;
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
m_wndPK1.SetCurSel(iPK1Sel);
|
||
m_wndPK2.SetCurSel(iPK2Sel);
|
||
|
||
|
||
OnSelchangeIddKGzmsgJlType();
|
||
|
||
/*
|
||
if (m_lShowType != 1)
|
||
{
|
||
//默认为查询月度之星,隐藏相关参数
|
||
m_wndPK1.ShowWindow(SW_HIDE);
|
||
m_wndPK2.ShowWindow(SW_HIDE);
|
||
m_wndPKRatio.ShowWindow(SW_HIDE);
|
||
m_B_AddList.ShowWindow(SW_HIDE);
|
||
GetDlgItem(IDD_K_GZMSG_JL_PK1_S)->ShowWindow(SW_HIDE);
|
||
GetDlgItem(IDD_K_GZMSG_JL_PK2_S)->ShowWindow(SW_HIDE);
|
||
GetDlgItem(IDD_K_GZMSG_JL_PKRATIO_S)->ShowWindow(SW_HIDE);
|
||
}
|
||
*/
|
||
|
||
return TRUE; // return TRUE unless you set the focus to a control
|
||
// 异常: OCX 属性页应返回 FALSE
|
||
}
|
||
|
||
|
||
void DLG_GZMsg_JL::OnRclickGzmsgJlList(NMHDR *pNMHDR, LRESULT *pResult)
|
||
{
|
||
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
|
||
// TODO: 在此添加控件通知处理程序代码
|
||
*pResult = 0;
|
||
|
||
ShowRMenu();
|
||
}
|
||
|
||
|
||
void DLG_GZMsg_JL::ShowRMenu()
|
||
{
|
||
CMenu menu;
|
||
menu.CreatePopupMenu();
|
||
|
||
menu.AppendMenu(MF_STRING, MENU_GZMSG_JL_COPY, _T(" 复 制 "));
|
||
menu.AppendMenu(MF_STRING, MENU_GZMSG_JL_DEL, _T(" 删 除 "));
|
||
//显示菜单
|
||
POINT pt;
|
||
::GetCursorPos(&pt);
|
||
//this->ClientToScreen( &pt);
|
||
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON, pt.x, pt.y, this, NULL);
|
||
menu.DestroyMenu();
|
||
}
|
||
|
||
void DLG_GZMsg_JL::On_GZMsg_Copy()
|
||
{
|
||
m_wndList.CopyToClipboard();
|
||
}
|
||
|
||
void DLG_GZMsg_JL::On_GZMsg_Del()
|
||
{
|
||
int iItem = m_wndList.GetFirstSelectedItem();
|
||
if (iItem >= 0)
|
||
m_wndList.DeleteItem(iItem);
|
||
}
|
||
|
||
void DLG_GZMsg_JL::OnSelchangeIddKGzmsgJlType()
|
||
{
|
||
if (m_wndType.GetCurSel() == 0)
|
||
{
|
||
m_wndPK1.ShowWindow(SW_HIDE);
|
||
m_wndPK2.ShowWindow(SW_HIDE);
|
||
m_wndPKRatio.ShowWindow(SW_HIDE);
|
||
m_B_AddList.ShowWindow(SW_HIDE);
|
||
|
||
GetDlgItem(IDD_K_GZMSG_JL_PK1_S)->ShowWindow(SW_HIDE);
|
||
GetDlgItem(IDD_K_GZMSG_JL_PK2_S)->ShowWindow(SW_HIDE);
|
||
GetDlgItem(IDD_K_GZMSG_JL_PKRATIO_S)->ShowWindow(SW_HIDE);
|
||
|
||
m_wndList.DeleteAllItems();
|
||
m_wndList.DeleteAllColumns();
|
||
|
||
//2025年新的评比规则
|
||
if (m_lShowType == 1)
|
||
m_wndList.SetHeadings(_T("序号,50; 部门,100; 客户经理,100; 月份,100;么么哒,80; A值,100; B值,100; 本月得分,100;"));
|
||
else
|
||
m_wndList.SetHeadings(_T("序号,50; 部门,100; 客户经理,100; 月份,100; 业绩,100;么么哒,80; A值,100; B值,100; 本月得分,100;"));
|
||
|
||
|
||
/* 2024年前旧的评比规则
|
||
if (m_lShowType == 1)
|
||
m_wndList.SetHeadings(_T("序号,50; 部门,100; 客户经理,100; 上月,100;上月得分,100; 本月,100; 本月A,100; 本月B,100; 本月C,100;本月总分,100; 平均分,100;"));
|
||
else
|
||
m_wndList.SetHeadings(_T("序号,50; 部门,100; 客户经理,100; 上月,100;平均业绩,100;平均客户,80;上月业绩,100;上月客户,80; 上月A,100; 上月B,100; 上月C,100;上月总分,100; 本月,100;平均业绩,100;平均客户,80;本月业绩,100;本月客户,80; 本月A,100; 本月B,100; 本月C,100;本月总分,100; 平均分,100;"));
|
||
*/
|
||
|
||
}
|
||
else
|
||
{
|
||
m_wndPK1.ShowWindow(SW_SHOW);
|
||
m_wndPK2.ShowWindow(SW_SHOW);
|
||
m_wndPKRatio.ShowWindow(SW_SHOW);
|
||
m_B_AddList.ShowWindow(SW_SHOW);
|
||
|
||
GetDlgItem(IDD_K_GZMSG_JL_PK1_S)->ShowWindow(SW_SHOW);
|
||
GetDlgItem(IDD_K_GZMSG_JL_PK2_S)->ShowWindow(SW_SHOW);
|
||
GetDlgItem(IDD_K_GZMSG_JL_PKRATIO_S)->ShowWindow(SW_SHOW);
|
||
|
||
m_wndList.DeleteAllItems();
|
||
m_wndList.DeleteAllColumns();
|
||
if (m_lShowType == 1)
|
||
m_wndList.SetHeadings(_T("序号,50; 月份,100; 挑战队,150; 应战队,150;挑战目标,80;挑战结果,120; 赢方,150;挑战队分数,100;应战队分数,100;挑战业绩差,120;应战业绩差,120;挑战么么哒差,120;应战么么哒差,120;"));
|
||
else
|
||
m_wndList.SetHeadings(_T("项目,250; 内容,450;"));
|
||
|
||
}
|
||
}
|
||
|
||
|
||
void DLG_GZMsg_JL::OnBnClickedKGzmsgJlInportmmdcount()
|
||
{
|
||
if (!m_pMainFrame->GetUserPurview(PURVIEW_LIST)) //需要查询清单权限才能导入MMD
|
||
{
|
||
return;
|
||
}
|
||
CString str;
|
||
CString strExcelFileName;
|
||
|
||
// 设置文件过滤器,支持.xls、.xlsx、.xlsm
|
||
LPCTSTR lpszFilter =
|
||
_T("Excel Files (*.xls; *.xlsx;)|*.xls;*.xlsx;|")
|
||
_T("所有文件 (*.*)|*.*||");
|
||
|
||
// 创建文件对话框对象(TRUE表示打开文件,FALSE表示保存文件)
|
||
CFileDialog fileDlg(TRUE, _T("xlsx"), NULL, OFN_HIDEREADONLY | OFN_FILEMUSTEXIST, lpszFilter, this, 0, TRUE);
|
||
|
||
// 设置对话框标题
|
||
fileDlg.m_ofn.lpstrTitle = _T("选择么么哒数据文件");
|
||
|
||
// 显示对话框
|
||
if (fileDlg.DoModal() == IDOK)
|
||
{
|
||
// 获取用户选择的完整文件路径
|
||
strExcelFileName = fileDlg.GetPathName();
|
||
}
|
||
else
|
||
{
|
||
return;
|
||
}
|
||
|
||
//打开文件
|
||
//第一步,连接到Excel数据库
|
||
CAdoConnection adoConnectX;
|
||
CAdoRecordSet adoRSX;
|
||
if (!adoConnectX.ConnectExcel(strExcelFileName))
|
||
{
|
||
str.Format(_T("打开文件失败:%s"), strExcelFileName);
|
||
MessageBox(str, _T("错误"), MB_ICONWARNING);
|
||
return;
|
||
}
|
||
|
||
//临时生成保存空间
|
||
long lMaxYWYCount = 128;
|
||
ANS_GZMsg_JL_MMDCount_Data* pMMDCount = new ANS_GZMsg_JL_MMDCount_Data[lMaxYWYCount];
|
||
memset((BYTE*)pMMDCount, 0, sizeof(ANS_GZMsg_JL_MMDCount_Data) * lMaxYWYCount);
|
||
|
||
|
||
adoRSX.SetAdoConnection(&adoConnectX);
|
||
adoRSX.Open(_T("select * from [Sheet1$A1:IV65536]"));
|
||
int lYWYCount = 0;
|
||
int lIndex = 0;
|
||
|
||
CString strShowText; //用于显示姓名及么么哒数量
|
||
int lShowTextCount = 0;
|
||
while (!adoRSX.IsEOF() && lIndex < lMaxYWYCount)
|
||
{
|
||
CString strYWYName;
|
||
CString strMMD;
|
||
long lMMDCount = 0;
|
||
adoRSX.GetCollect(_T("客户经理"), strYWYName); strYWYName.Trim(); strYWYName.Replace(_T("\r"), _T(""));; strYWYName.Replace(_T("\n"), _T(""));; strYWYName.Replace(_T("\t"), _T(""));
|
||
adoRSX.GetCollect(_T("么么哒"), strMMD); strMMD.Trim(); strMMD.Replace(_T("\r"), _T(""));; strMMD.Replace(_T("\n"), _T(""));; strMMD.Replace(_T("\t"), _T(""));
|
||
|
||
//判断姓名是否有效
|
||
if (strYWYName.GetLength() > 1 && strYWYName.GetLength() < 8 && strYWYName != _T("客户经理") || strYWYName != _T("姓名"))
|
||
{
|
||
//判断数量是否有效
|
||
BOOL bVaildMMDCount = true;
|
||
if (strMMD.GetLength() > 0)
|
||
{
|
||
for (int i = 0; i < strMMD.GetLength(); i++)
|
||
{
|
||
const TCHAR ch = strMMD[i];
|
||
if (!_istdigit(ch) && ch != _T('.'))
|
||
{
|
||
bVaildMMDCount = false;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
if (bVaildMMDCount)
|
||
{
|
||
lMMDCount = _ttol(strMMD);
|
||
_tcscpy(pMMDCount[lYWYCount].szYWYName, strYWYName);
|
||
pMMDCount[lYWYCount].lMMDCount = lMMDCount;
|
||
lYWYCount++;
|
||
|
||
//用于显示
|
||
if (lYWYCount <= 16)
|
||
{
|
||
str.Format(_T("%-10s%6d"), strYWYName, lMMDCount);
|
||
if (lShowTextCount <= 0)
|
||
{
|
||
strShowText += str;
|
||
lShowTextCount++;
|
||
}
|
||
else
|
||
{
|
||
if (lShowTextCount >= 2)
|
||
{
|
||
strShowText = strShowText + _T(" | ") + str;
|
||
strShowText.Append(_T("\r\n"));
|
||
lShowTextCount = 0;
|
||
}
|
||
else
|
||
{
|
||
strShowText = strShowText + _T(" | ") + str;
|
||
lShowTextCount++;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
adoRSX.MoveNext();
|
||
lIndex++;
|
||
}
|
||
|
||
if (lYWYCount <= 0)
|
||
{
|
||
MessageBox(_T("导入的文件没找到么么哒信息"), _T("错误"), MB_ICONWARNING);
|
||
delete[] pMMDCount;
|
||
return;
|
||
}
|
||
|
||
CString strMon; //取导入月份
|
||
m_wndMon.GetWindowText(strMon);
|
||
|
||
str.Format(_T("将要导入%s的么么哒数据,请确认!\r\n\r\n%s"), strMon, strShowText);
|
||
int iRet = MessageBox(str, _T("请确认"), MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON1);
|
||
|
||
if (iRet != IDYES)
|
||
{
|
||
delete[] pMMDCount;
|
||
return;
|
||
}
|
||
|
||
long lSize = sizeof(REQ_GZMsg_JL_MMDCount) + sizeof(ANS_GZMsg_JL_MMDCount_Data) * lYWYCount;
|
||
BYTE* pData = new BYTE[lSize];
|
||
memset(pData, 0, lSize);
|
||
|
||
REQ_GZMsg_JL_MMDCount* pReq = (REQ_GZMsg_JL_MMDCount*)pData;
|
||
ANS_GZMsg_JL_MMDCount_Data* pReqData = (ANS_GZMsg_JL_MMDCount_Data*)(pData + sizeof(REQ_GZMsg_JL_MMDCount));
|
||
|
||
pReq->lType = 1; //导入么么哒数据
|
||
pReq->lCount = lYWYCount; //客户经理数量
|
||
_tcscpy(pReq->szMon, strMon); //导入月份
|
||
//复制么么哒数据
|
||
memcpy((BYTE*)pReqData, (BYTE*)pMMDCount, sizeof(ANS_GZMsg_JL_MMDCount_Data) * lYWYCount);
|
||
|
||
m_pMainFrame->SendFrame(SMSFUNC_GZMSG_JL_MMDCOUNT, (BYTE*)pData, lSize);
|
||
|
||
delete [] pMMDCount;
|
||
}
|