SmsManager/DLG_GZMsg_JL.cpp

1047 lines
34 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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;
}