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