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

759 lines
49 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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_Corp_Analyse.cpp: 实现文件
//
#include "stdafx.h"
#include "SmsManager.h"
#include "DLG_Corp_Analyse.h"
#include "afxdialogex.h"
#include "MainFrm.h"
// DLG_Corp_Analyse 对话框
IMPLEMENT_DYNAMIC(DLG_Corp_Analyse, CDialogEx)
DLG_Corp_Analyse::DLG_Corp_Analyse(CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_CORP_ANALYSE, pParent)
, m_bShowValue(FALSE)
{
m_tBegin = COleDateTime::GetCurrentTime()-COleDateTimeSpan(60,0,0,0);
m_tEnd = COleDateTime::GetCurrentTime();
m_lAbility = 0;
m_lDataType = 0;
m_lGap = 0;
m_lGraph = 0;
m_lQueryAll = 0;
m_lCorpID = 0;
m_lType = 0; //0企业1代理商
m_lItem = 0;
m_strName=_T("");
m_pMainFrame = NULL;
m_pAnalyse = NULL;
m_pSmsData = NULL;
m_pMoneyData = NULL;
}
DLG_Corp_Analyse::~DLG_Corp_Analyse()
{
CloseData();
}
void DLG_Corp_Analyse::CloseData()
{
if (m_pAnalyse)
{
delete m_pAnalyse;
m_pAnalyse = NULL;
}
if (m_pSmsData)
{
delete m_pSmsData;
m_pSmsData = NULL;
}
if (m_pMoneyData)
{
delete m_pMoneyData;
m_pMoneyData = NULL;
}
}
void DLG_Corp_Analyse::SetParam(CMainFrame * pFrame, long lCorpID, long lType, long lItem, CString strName)
{
m_lCorpID = lCorpID;
m_lType = lType; //0企业1代理商
m_lItem = lItem;
m_strName = strName;
m_pMainFrame = pFrame;
}
void DLG_Corp_Analyse::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_CORP_ANALYSE_CHART, m_Chart);
DDX_DateTimeCtrl(pDX, IDC_CORP_ANALYSE_TBEGIN, m_tBegin);
DDX_DateTimeCtrl(pDX, IDC_CORP_ANALYSE_TEND, m_tEnd);
DDX_CBIndex(pDX, IDC_CORP_ANALYSE_SMSTYPE, m_lAbility);
DDX_CBIndex(pDX, IDC_CORP_ANALYSE_DATATYPE, m_lDataType);
DDX_CBIndex(pDX, IDC_CORP_ANALYSE_GAP, m_lGap);
DDX_CBIndex(pDX, IDC_CORP_ANALYSE_GRAPH, m_lGraph);
DDX_CBIndex(pDX, IDC_CORP_ANALYSE_QUERYALL, m_lQueryAll);
DDX_Control(pDX, IDC_CORP_ANALYSE_QUERYALL, m_L_QueryAll);
DDX_Control(pDX, IDC_CORP_ANALYSE_SHOWVALUE, m_B_ShowValue);
DDX_Check(pDX, IDC_CORP_ANALYSE_SHOWVALUE, m_bShowValue);
}
BEGIN_MESSAGE_MAP(DLG_Corp_Analyse, CDialogEx)
ON_BN_CLICKED(IDC_C_PAY_QUERY, &DLG_Corp_Analyse::OnBnClickedCPayQuery)
ON_WM_SIZE()
ON_CBN_SELCHANGE(IDC_CORP_ANALYSE_GRAPH, &DLG_Corp_Analyse::OnCbnSelchangeCorpAnalyseGraph)
ON_CBN_SELCHANGE(IDC_CORP_ANALYSE_DATATYPE, &DLG_Corp_Analyse::OnCbnSelchangeCorpAnalyseDatatype)
ON_BN_CLICKED(IDC_CORP_ANALYSE_SHOWVALUE, &DLG_Corp_Analyse::OnClickedCorpAnalyseShowvalue)
END_MESSAGE_MAP()
// DLG_Corp_Analyse 消息处理程序
void DLG_Corp_Analyse::OnBnClickedCPayQuery()
{
UpdateData(true);
if (m_tEnd < m_tBegin)
{
MessageBox(_T("查询结束日期不能小于起始日期,请改正!"), _T("错误"), MB_ICONWARNING);
GetDlgItem(IDC_CORP_ANALYSE_TBEGIN)->SetFocus();
return;
}
REQ_Corp_Analyse * pAnalyse = new REQ_Corp_Analyse; memset(pAnalyse, 0, sizeof(REQ_Corp_Analyse));
m_tBegin.GetAsSystemTime(pAnalyse->tBegin); //起始时间
m_tEnd.GetAsSystemTime(pAnalyse->tEnd); //结束时间
pAnalyse->lItem = m_lItem; //列表记录位置
pAnalyse->lType = m_lType; //0企业数据1代理商数据
pAnalyse->lCorpID = m_lCorpID; //企业ID或代理商 ID
if (m_lQueryAll > 0) //选择了其它内容
{
switch (m_lQueryAll)
{
case 1: //查询所有
pAnalyse->lCorpID = -1;
break;
case 2: //查询自有企业
pAnalyse->lCorpID = -2;
break;
case 3: //查询代理商企业
pAnalyse->lCorpID = -3;
break;
}
}
_tcscpy(pAnalyse->szName, m_strName); //企业名称或代理商名称
pAnalyse->lAbility = m_lAbility; //能力0-短信1-彩信
pAnalyse->lGap = m_lGap; //间隔0-日1-月2-年
pAnalyse->lDataType = m_lDataType; //数据类型0-充值金额1-短信量2-金额+短信量
pAnalyse->lAbility = m_lAbility;
//pAnalyse->lCorpID = -3;
m_pMainFrame->SendFrame(SMSFUNC_CORP_ANALYSE, (BYTE*)pAnalyse, sizeof(REQ_Corp_Analyse));
}
BOOL DLG_Corp_Analyse::OnInitDialog()
{
CDialogEx::OnInitDialog();
// TODO: 在此添加额外的初始化
if (m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_ADD, false))
{
GetDlgItem(IDC_CORP_ANALYSE_QUERYALL)->ShowWindow(true);
}
if (m_lType == 1) //代理商
{
m_L_QueryAll.ResetContent();
m_L_QueryAll.InsertString(0,_T("指定代理商"));
m_L_QueryAll.InsertString(1,_T("所有代理商"));
m_L_QueryAll.SetCurSel(0);
}
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
void DLG_Corp_Analyse::OnSize(UINT nType, int cx, int cy)
{
CDialogEx::OnSize(nType, cx, cy);
if (m_Chart.GetSafeHwnd())
{
m_Chart.MoveWindow(12, 150, cx - 12 - 12, cy - 150 - 12);
/*
RECT rect,rect2;
m_Chart.GetWindowRect(&rect);
m_Chart.GetClientRect(&rect2);
RECT rect3, rect4;
this->GetWindowRect(&rect3);
this->GetClientRect(&rect4);
m_Chart.MoveWindow((rect3.left - rect.left), (rect3.top - rect.top), cx-(rect3.right-rect.right), cy-(rect3.bottom - rect.bottom));
int b = 10;
*/
}
}
BOOL DLG_Corp_Analyse::ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame)
{
//查看支付记录
if (pHead->lFuncType == SMSFUNC_CORP_ANALYSE )
{
ANS_Corp_Analyse * pAnalyse = (ANS_Corp_Analyse *)pFrame;
ANS_Corp_Analyse_SmsData * pSmsData = (ANS_Corp_Analyse_SmsData *)(pFrame + sizeof(ANS_Corp_Analyse));
ANS_Corp_Analyse_MoneyData * pMoneyData = (ANS_Corp_Analyse_MoneyData *)(pFrame + sizeof(ANS_Corp_Analyse) + sizeof(ANS_Corp_Analyse_SmsData)*pAnalyse->lSmsCount);
if (!pAnalyse->bOK) //权限不足,返回错误
{
//没数据返回,清空统计图
return true;
}
CloseData();
m_pAnalyse = new ANS_Corp_Analyse;
*m_pAnalyse = *pAnalyse;
if (m_pAnalyse->lSmsCount > 0)
{
m_pSmsData = new ANS_Corp_Analyse_SmsData[m_pAnalyse->lSmsCount];
memcpy((BYTE*)m_pSmsData, (BYTE*)pSmsData, sizeof(ANS_Corp_Analyse_SmsData)*m_pAnalyse->lSmsCount);
}
if (m_pAnalyse->lMoneyCount > 0)
{
m_pMoneyData = new ANS_Corp_Analyse_MoneyData[m_pAnalyse->lMoneyCount];
memcpy((BYTE*)m_pMoneyData, (BYTE*)pMoneyData, sizeof(ANS_Corp_Analyse_MoneyData)*m_pAnalyse->lMoneyCount);
}
ReDrawGraph();
}
return false;
}
void DLG_Corp_Analyse::ReDrawGraph()
{
if (m_lGraph == 0)
{
m_Chart.put_chartType(1 | 0); //2D柱状图
}
if (m_lGraph == 1)
{
m_Chart.put_chartType(1 | 2); //2D线条型
}
GetDlgItem(IDC_CORP_ANALYSE_SHOWDATE)->SetWindowText(_T(""));
CString strTitle;
m_Chart.put_Stacking(FALSE); //设置栈模式
m_Chart.put_ColumnCount(1); //清空数据
m_Chart.put_RowCount(1); //清空数据
if (m_lType == 0) //企业客户
{
switch (m_lDataType)
{
case 0:
default:
m_Chart.put_ShowLegend(FALSE);
m_Chart.put_ColumnCount(1); //设置列数
m_Chart.put_Column(1);
m_Chart.put_ColumnLabel(_T("充值金额"));
//strTitle.Format(_T("%d-%s 充值金额对比图"),m_lCorpID,m_strName);
strTitle.Format(_T("ID%d 充值金额对比图"), m_lCorpID);
break;
case 1:
m_Chart.put_ShowLegend(FALSE);
m_Chart.put_ColumnCount(1); //设置列数
m_Chart.put_Column(1);
m_Chart.put_ColumnLabel(_T("发送量"));
//strTitle.Format(_T("%d-%s 发送量对比图"), m_lCorpID, m_strName);
strTitle.Format(_T("ID%d 发送量对比图"), m_lCorpID);
break;
case 2:
m_Chart.put_ShowLegend(TRUE);
m_Chart.put_ColumnCount(2); //设置列数
m_Chart.put_Column(1);
m_Chart.put_ColumnLabel(_T("充值量"));
m_Chart.put_Column(2);
m_Chart.put_ColumnLabel(_T("发送量"));
//strTitle.Format(_T("%d-%s 充值量+发送量对比图"), m_lCorpID, m_strName);
strTitle.Format(_T("ID%d 充值量+发送量对比图"), m_lCorpID);
break;
}
}
else
{
switch (m_lDataType)
{
case 0:
default:
m_Chart.put_ShowLegend(FALSE);
m_Chart.put_ColumnCount(1); //设置列数
m_Chart.put_Column(1);
m_Chart.put_ColumnLabel(_T("充值金额"));
//strTitle.Format(_T("%d-%s 充值金额对比图"), m_lCorpID, m_strName);
strTitle.Format(_T("ID%d 充值金额对比图"), m_lCorpID);
break;
case 1:
m_Chart.put_ShowLegend(FALSE);
m_Chart.put_ColumnCount(1); //设置列数
m_Chart.put_Column(1);
m_Chart.put_ColumnLabel(_T("充值量"));
//strTitle.Format(_T("%d-%s 充值量对比图"), m_lCorpID, m_strName);
strTitle.Format(_T("ID%d 充值量对比图"), m_lCorpID);
break;
}
}
m_Chart.put_TitleText(strTitle);
if (!m_pAnalyse) //没有数据,不画图
return;
VARIANT var;
//((CVcFill)((CVcBackdrop)m_Chart.get_Backdrop()).get_Fill()).put_Style(1);
//((CVcColor)((CVcBrush)((CVcFill)((CVcBackdrop)m_Chart.get_Backdrop()).get_Fill()).get_Brush()).get_FillColor()).Set(255, 255, 255);
//((CVcValueScale)((CVcAxis)((CVcPlot)m_Chart.get_Plot()).get_Axis(0, var)).get_ValueScale()).put_Auto(false);//不自动标注Y轴刻度
//((CVcValueScale)((CVcAxis)((CVcPlot)m_Chart.get_Plot()).get_Axis(0, var)).get_ValueScale()).put_Maximum(1000);// Y轴最大刻度
//((CVcValueScale)((CVcAxis)((CVcPlot)m_Chart.get_Plot()).get_Axis(0, var)).get_ValueScale()).put_Minimum(0);// Y轴最小刻度
//((CVcValueScale)((CVcAxis)((CVcPlot)m_Chart.get_Plot()).get_Axis(0, var)).get_ValueScale()).put_MajorDivision(0);//Y轴刻度5等分
//((CVcValueScale)((CVcAxis)((CVcPlot)m_Chart.get_Plot()).get_Axis(0, var)).get_ValueScale()).put_MinorDivision(0);//每刻度一个刻度线
//((CVcAxisTitle)((CVcAxis)((CVcPlot)m_Chart.get_Plot()).get_Axis(0, var)).get_AxisTitle()).put_Text(_T("短信量")); //Y轴名称
//不要与x轴垂直的表格线
((CVcPen)((CVcAxisGrid)((CVcAxis)((CVcPlot)m_Chart.get_Plot()).get_Axis(0, var)).get_AxisGrid()).get_MajorPen()).put_Style(0);
//((CVcPen)((CVcAxisGrid)((CVcAxis)((CVcPlot)m_Chart.get_Plot()).get_Axis(1, var)).get_AxisGrid()).get_MajorPen()).put_Style(0);
//隐藏第二y轴即右边的y轴
((CVcAxisScale)((CVcAxis)((CVcPlot)m_Chart.get_Plot()).get_Axis(2, var)).get_AxisScale()).put_Hide(TRUE);
//设置x轴及y轴的标题。xTitle和yTitle为CString型
//m_Chart.GetPlot().GetAxis(0, var).GetAxisTitle().SetText(xTitle); //x轴
//m_Chart.GetPlot().GetAxis(1, var).GetAxisTitle().SetText(yTitle); //y轴
//m_Chart.put_RowCount(iRow);//设置曲线点数(画曲线一定要设置)
//((CVcColor)((CVcPen)((CVcSeries)((CVcSeriesCollection)((CVcPlot)m_Chart.get_Plot()).get_SeriesCollection()).get_Item(1)).get_Pen()).get_VtColor()).Set(0, 0, 255);
// 线宽(对点线图有效)
//((CVcPen)((CVcSeries)((CVcSeriesCollection)((CVcPlot)m_Chart.get_Plot()).get_SeriesCollection()).get_Item(1)).get_Pen()).put_Width(50);
//m_Chart.GetPlot().GetSeriesCollection().GetItem(1).GetPen().SetWidth(50);
//m_Chart.GetPlot().GetSeriesCollection().GetItem(2).GetPen().SetWidth(100);
//m_Chart.GetPlot().GetSeriesCollection().GetItem(3).GetPen().SetWidth(2);
// 数据点类型显示数据值的模式(对柱柱状图和点线图有效)
// 0: 不显示 1: 显示在柱状图外
// 2: 显示在柱状图内上方 3: 显示在柱状图内中间 4: 显示在柱状图内下方
long lShowType = 0;
if (m_B_ShowValue.GetCheck())
lShowType = 1;
((CVcDataPointLabel)((CVcDataPoint)((CVcDataPoints)((CVcSeries)((CVcSeriesCollection)((CVcPlot)m_Chart.get_Plot()).get_SeriesCollection()).get_Item(1)).get_DataPoints()).get_Item(-1)).get_DataPointLabel()).put_LocationType(lShowType);
((CVcDataPointLabel)((CVcDataPoint)((CVcDataPoints)((CVcSeries)((CVcSeriesCollection)((CVcPlot)m_Chart.get_Plot()).get_SeriesCollection()).get_Item(1)).get_DataPoints()).get_Item(-1)).get_DataPointLabel()).put_ValueFormat(_T("0,0"));
if (m_Chart.get_ColumnCount() >= 2)
{
((CVcDataPointLabel)((CVcDataPoint)((CVcDataPoints)((CVcSeries)((CVcSeriesCollection)((CVcPlot)m_Chart.get_Plot()).get_SeriesCollection()).get_Item(2)).get_DataPoints()).get_Item(-1)).get_DataPointLabel()).put_LocationType(lShowType);
((CVcDataPointLabel)((CVcDataPoint)((CVcDataPoints)((CVcSeries)((CVcSeriesCollection)((CVcPlot)m_Chart.get_Plot()).get_SeriesCollection()).get_Item(2)).get_DataPoints()).get_Item(-1)).get_DataPointLabel()).put_ValueFormat(_T("0,0"));
}
//图形上数值的显示设置
//MSChart1.Plot.SeriesCollection(AIndex).DataPoints(-1).DataPointLabel.Component = 2 '1 普通数值 2 百分比
//MSChart1.Plot.SeriesCollection(AIndex).DataPoints(-1).DataPointLabel.PercentFormat = "0%" '百分比显示格式
//普通数值显示格式 为空时将以科学计数法显示 为0时按实际显示
//MSChart1.Plot.SeriesCollection(AIndex).DataPoints(-1).DataPointLabel.ValueFormat = "0"
//m_Chart.GetPlot().GetSeriesCollection().GetItem(1).GetDataPoints().GetItem(-1).GetDataPointLabel().SetLocationType(1);
//m_Chart.GetPlot().GetSeriesCollection().GetItem(2).GetDataPoints().GetItem(-1).GetDataPointLabel().SetLocationType(1);
//m_Chart.GetPlot().GetSeriesCollection().GetItem(3).GetDataPoints().GetItem(-1).GetDataPointLabel().SetLocationType(1);
//m_Chart.GetPlot().GetAxis(0, var).GetCategoryScale().SetAuto(FALSE);//不自动标注x轴刻度
//m_Chart.GetPlot().GetAxis(0, var).GetCategoryScale().SetDivisionsPerLabel(1);
int nRowCount = 1;
switch (m_lGap)
{
case 0: //日
default:
nRowCount = (m_tEnd - m_tBegin).GetTotalDays()+1;
break;
case 1: //月
{
long lYear = m_tEnd.GetYear() - m_tBegin.GetYear();
long lMon = m_tEnd.GetMonth() - m_tBegin.GetMonth()+1;
if (lMon <= 0)
{
lMon = 12 + lMon;
lYear = lYear - 1;
}
nRowCount = lYear * 12 + lMon;
}
break;
case 2: //年
nRowCount = m_tEnd.GetYear() - m_tBegin.GetYear()+1;
break;
case 3: //半年
nRowCount = (m_tEnd.GetYear() - m_tBegin.GetYear() + 1) * 2;
break;
case 4: //同比-上半年
case 5: //同比-下半年
case 6: //同比-1季度
case 7: //同比-2季度
case 8: //同比-3季度
case 9: //同比-4季度
case 10: //同比-1月份
case 11: //同比-2月份
case 12: //同比-3月份
case 13: //同比-4月份
case 14: //同比-5月份
case 15: //同比-6月份
case 16: //同比-7月份
case 17: //同比-8月份
case 18: //同比-9月份
case 19: //同比-10月份
case 20: //同比-11月份
case 21: //同比-12月份
nRowCount = m_tEnd.GetYear() - m_tBegin.GetYear() + 1;
break;
}
if (nRowCount < 1) nRowCount = 1;
if (nRowCount > 500) nRowCount = 500;
m_Chart.put_RowCount(nRowCount);
//VARIANT var;
//((CVcCategoryScale)((CVcAxis)((CVcPlot)m_Chart.get_Plot()).get_Axis(0, var)).get_CategoryScale()).put_Auto(FALSE);// 不自动标注X轴刻度
//((CVcCategoryScale)((CVcAxis)((CVcPlot)m_Chart.get_Plot()).get_Axis(0, var)).get_CategoryScale()).put_DivisionsPerLabel(0);//每刻度一个标注
//((CVcCategoryScale)((CVcAxis)((CVcPlot)m_Chart.get_Plot()).get_Axis(0, var)).get_CategoryScale()).put_DivisionsPerTick(0);//每刻度一个刻度线
//((CVcAxisTitle)((CVcAxis)((CVcPlot)m_Chart.get_Plot()).get_Axis(0, var)).get_AxisTitle()).put_Text(_T("日期")); // X轴名称
CString strRow;
srand((unsigned)time(NULL));
int iSmsDataIndex = 0;
int iMoneyDataIndex = 0;
COleDateTime tDrawDate = m_tBegin;
int iDarwYear = m_tBegin.GetYear();
int iDrawMon = m_tBegin.GetMonth();
for (int row = 1; row <= nRowCount; ++row)
{
CString strDate; //画日期
long lSmsValue=0; //画短信数据
double fMoneyValue=0.0f; //金额数据
long lSmsPrepare = 0; //预充金额
switch (m_lGap)
{
case 0: //日
default:
{
strDate.Format(_T("%04d.%02d.%02d"), tDrawDate.GetYear(), tDrawDate.GetMonth(), tDrawDate.GetDay());
if (iSmsDataIndex < m_pAnalyse->lSmsCount)
{
if (tDrawDate.GetYear() == m_pSmsData[iSmsDataIndex].tDate.wYear && //时间相同,取数据
tDrawDate.GetMonth() == m_pSmsData[iSmsDataIndex].tDate.wMonth &&
tDrawDate.GetDay() == m_pSmsData[iSmsDataIndex].tDate.wDay)
{
lSmsValue = m_pSmsData[iSmsDataIndex].lSend - m_pSmsData[iSmsDataIndex].lReportFail;
iSmsDataIndex++;
}
}
if (iMoneyDataIndex < m_pAnalyse->lMoneyCount)
{
if (tDrawDate.GetYear() == m_pMoneyData[iMoneyDataIndex].tDate.wYear && //时间相同,取数据
tDrawDate.GetMonth() == m_pMoneyData[iMoneyDataIndex].tDate.wMonth &&
tDrawDate.GetDay() == m_pMoneyData[iMoneyDataIndex].tDate.wDay)
{
fMoneyValue = m_pMoneyData[iMoneyDataIndex].fPrice;
lSmsPrepare = m_pMoneyData[iMoneyDataIndex].lSmsCount;
iMoneyDataIndex++;
}
}
tDrawDate = tDrawDate + COleDateTimeSpan(1, 0, 0, 0);
}
break;
case 1: //月
strDate.Format(_T("%04d.%02d"), iDarwYear, iDrawMon);
if (iSmsDataIndex < m_pAnalyse->lSmsCount)
{
if (iDarwYear == m_pSmsData[iSmsDataIndex].tDate.wYear && //时间相同,取数据
iDrawMon == m_pSmsData[iSmsDataIndex].tDate.wMonth)
{
lSmsValue = m_pSmsData[iSmsDataIndex].lSend - m_pSmsData[iSmsDataIndex].lReportFail;
iSmsDataIndex++;
}
}
if (iMoneyDataIndex < m_pAnalyse->lMoneyCount)
{
if (iDarwYear == m_pMoneyData[iMoneyDataIndex].tDate.wYear && //时间相同,取数据
iDrawMon == m_pMoneyData[iMoneyDataIndex].tDate.wMonth)
{
fMoneyValue = m_pMoneyData[iMoneyDataIndex].fPrice;
lSmsPrepare = m_pMoneyData[iMoneyDataIndex].lSmsCount;
iMoneyDataIndex++;
}
}
iDrawMon = iDrawMon + 1; //月加1
if (iDrawMon > 12)
{
iDrawMon = 1;
iDarwYear += 1;
}
break;
case 2: //年
strDate.Format(_T("%04d年"), iDarwYear);
if (iSmsDataIndex < m_pAnalyse->lSmsCount)
{
if (iDarwYear == m_pSmsData[iSmsDataIndex].tDate.wYear )
{
lSmsValue = m_pSmsData[iSmsDataIndex].lSend - m_pSmsData[iSmsDataIndex].lReportFail;
iSmsDataIndex++;
}
}
if (iMoneyDataIndex < m_pAnalyse->lMoneyCount)
{
if (iDarwYear == m_pMoneyData[iMoneyDataIndex].tDate.wYear )
{
fMoneyValue = m_pMoneyData[iMoneyDataIndex].fPrice;
lSmsPrepare = m_pMoneyData[iMoneyDataIndex].lSmsCount;
iMoneyDataIndex++;
}
}
iDarwYear = iDarwYear + 1; //月加1
break;
case 3: //半年
if (row % 2 == 1)
{
strDate.Format(_T("%04d年上半年"), iDarwYear);
for (int i = 0; i < 6 && iSmsDataIndex < m_pAnalyse->lSmsCount; i++)
{
if (iDarwYear == m_pSmsData[iSmsDataIndex].tDate.wYear && m_pSmsData[iSmsDataIndex].tDate.wMonth <= 6)
{
lSmsValue = lSmsValue + m_pSmsData[iSmsDataIndex].lSend - m_pSmsData[iSmsDataIndex].lReportFail;
iSmsDataIndex++;
}
else
break;
}
for (int i = 0; i < 6 && iMoneyDataIndex < m_pAnalyse->lMoneyCount; i++)
{
if (iDarwYear == m_pMoneyData[iMoneyDataIndex].tDate.wYear && m_pMoneyData[iMoneyDataIndex].tDate.wMonth <= 6)
{
fMoneyValue = fMoneyValue + m_pMoneyData[iMoneyDataIndex].fPrice;
lSmsPrepare = lSmsPrepare + m_pMoneyData[iMoneyDataIndex].lSmsCount;
iMoneyDataIndex++;
}
else
break;
}
}
else
{
strDate.Format(_T("%04d年下半年"), iDarwYear);
for (int i = 0; i < 6 && iSmsDataIndex < m_pAnalyse->lSmsCount; i++)
{
if (iDarwYear == m_pSmsData[iSmsDataIndex].tDate.wYear && m_pSmsData[iSmsDataIndex].tDate.wMonth > 6)
{
lSmsValue = lSmsValue + m_pSmsData[iSmsDataIndex].lSend - m_pSmsData[iSmsDataIndex].lReportFail;
iSmsDataIndex++;
}
}
for (int i = 0; i < 6 && iMoneyDataIndex < m_pAnalyse->lMoneyCount; i++)
{
if (iDarwYear == m_pMoneyData[iMoneyDataIndex].tDate.wYear && m_pMoneyData[iMoneyDataIndex].tDate.wMonth > 6)
{
fMoneyValue = fMoneyValue + m_pMoneyData[iMoneyDataIndex].fPrice;
lSmsPrepare = lSmsPrepare + m_pMoneyData[iMoneyDataIndex].lSmsCount;
iMoneyDataIndex++;
}
}
iDarwYear = iDarwYear + 1; //月加1
}
break;
case 4: //同比-上半年
case 5: //同比-下半年
case 6: //同比-1季度
case 7: //同比-2季度
case 8: //同比-3季度
case 9: //同比-4季度
case 10: //同比-1月份
case 11: //同比-2月份
case 12: //同比-3月份
case 13: //同比-4月份
case 14: //同比-5月份
case 15: //同比-6月份
case 16: //同比-7月份
case 17: //同比-8月份
case 18: //同比-9月份
case 19: //同比-10月份
case 20: //同比-11月份
case 21: //同比-12月份
if (m_pAnalyse->lGap == 4) strDate.Format(_T("%04d年上半年"), iDarwYear);
if (m_pAnalyse->lGap == 5) strDate.Format(_T("%04d年下半年"), iDarwYear);
if (m_pAnalyse->lGap == 6) strDate.Format(_T("%04d年1季度"), iDarwYear);
if (m_pAnalyse->lGap == 7) strDate.Format(_T("%04d年2季度"), iDarwYear);
if (m_pAnalyse->lGap == 8) strDate.Format(_T("%04d年3季度"), iDarwYear);
if (m_pAnalyse->lGap == 9) strDate.Format(_T("%04d年4季度"), iDarwYear);
if (m_pAnalyse->lGap >= 10 && m_pAnalyse->lGap <= 21) strDate.Format(_T("%04d年%d月"), iDarwYear, m_pAnalyse->lGap - 9);
for (int i = 0; i < 12 && iMoneyDataIndex < m_pAnalyse->lMoneyCount; i++)
{
if (iDarwYear == m_pMoneyData[iMoneyDataIndex].tDate.wYear && m_pMoneyData[iMoneyDataIndex].tDate.wMonth <= 12)
{
BOOL bGetData = false;
if (m_pAnalyse->lGap == 4 && m_pMoneyData[iMoneyDataIndex].tDate.wMonth <= 6) //同比-上半年
bGetData = true;
if (m_pAnalyse->lGap == 5 && m_pMoneyData[iMoneyDataIndex].tDate.wMonth > 6 && m_pMoneyData[iMoneyDataIndex].tDate.wMonth <= 12) //同比-下半年
bGetData = true;
if (m_pAnalyse->lGap == 6 && m_pMoneyData[iMoneyDataIndex].tDate.wMonth >= 1 && m_pMoneyData[iMoneyDataIndex].tDate.wMonth <= 3) //同比-1季度
bGetData = true;
if (m_pAnalyse->lGap == 7 && m_pMoneyData[iMoneyDataIndex].tDate.wMonth >= 4 && m_pMoneyData[iMoneyDataIndex].tDate.wMonth <= 6) //同比-2季度
bGetData = true;
if (m_pAnalyse->lGap == 8 && m_pMoneyData[iMoneyDataIndex].tDate.wMonth >= 7 && m_pMoneyData[iMoneyDataIndex].tDate.wMonth <= 9) //同比-3季度
bGetData = true;
if (m_pAnalyse->lGap == 9 && m_pMoneyData[iMoneyDataIndex].tDate.wMonth >= 10 && m_pMoneyData[iMoneyDataIndex].tDate.wMonth <= 12) //同比-4季度
bGetData = true;
if (m_pAnalyse->lGap >= 10 && m_pAnalyse->lGap <= 21 && m_pMoneyData[iMoneyDataIndex].tDate.wMonth == m_pAnalyse->lGap - 9) //同比-月份
bGetData = true;
if (bGetData)
{
fMoneyValue = fMoneyValue + m_pMoneyData[iMoneyDataIndex].fPrice;
lSmsPrepare = lSmsPrepare + m_pMoneyData[iMoneyDataIndex].lSmsCount;
}
iMoneyDataIndex++;
}
else
{
break;
}
}
for (int i = 0; i < 12 && iSmsDataIndex < m_pAnalyse->lSmsCount; i++)
{
if (iDarwYear == m_pSmsData[iSmsDataIndex].tDate.wYear && m_pSmsData[iSmsDataIndex].tDate.wMonth <= 12)
{
BOOL bGetData = false;
if (m_pAnalyse->lGap == 4 && m_pSmsData[iSmsDataIndex].tDate.wMonth <= 6) //同比-上半年
bGetData = true;
if (m_pAnalyse->lGap == 5 && m_pSmsData[iSmsDataIndex].tDate.wMonth > 6 && m_pSmsData[iSmsDataIndex].tDate.wMonth <= 12) //同比-下半年
bGetData = true;
if (m_pAnalyse->lGap == 6 && m_pSmsData[iSmsDataIndex].tDate.wMonth >= 1 && m_pSmsData[iSmsDataIndex].tDate.wMonth <= 3) //同比-1季度
bGetData = true;
if (m_pAnalyse->lGap == 7 && m_pSmsData[iSmsDataIndex].tDate.wMonth >= 4 && m_pSmsData[iSmsDataIndex].tDate.wMonth <= 6) //同比-2季度
bGetData = true;
if (m_pAnalyse->lGap == 8 && m_pSmsData[iSmsDataIndex].tDate.wMonth >= 7 && m_pSmsData[iSmsDataIndex].tDate.wMonth <= 9) //同比-3季度
bGetData = true;
if (m_pAnalyse->lGap == 9 && m_pSmsData[iSmsDataIndex].tDate.wMonth >= 10 && m_pSmsData[iSmsDataIndex].tDate.wMonth <= 12) //同比-4季度
bGetData = true;
if (m_pAnalyse->lGap >= 10 && m_pAnalyse->lGap <= 21 && m_pSmsData[iSmsDataIndex].tDate.wMonth == m_pAnalyse->lGap - 9) //同比-月份
bGetData = true;
if (bGetData)
{
lSmsValue = lSmsValue + m_pSmsData[iSmsDataIndex].lSend - m_pSmsData[iSmsDataIndex].lReportFail;
}
iSmsDataIndex++;
}
else
{
break;
}
}
iDarwYear = iDarwYear + 1; //月加1
break;
}
m_Chart.put_Row(row);
m_Chart.put_RowLabel(strDate);
CString strLable;
if (m_lType == 0) //企业客户
{
switch (m_lDataType)
{
case 0:
default:
((CVcDataGrid)m_Chart.get_DataGrid()).SetData(row, 1, fMoneyValue, 0); //充值金额
//strLable.Format(_T("%.2f"), fMoneyValue);
//((CVcDataGrid)m_Chart.get_DataGrid()).put_RowLabel(row, 1, strLable);
break;
case 1:
((CVcDataGrid)m_Chart.get_DataGrid()).SetData(row, 1, lSmsValue, 0); //发送量
break;
case 2:
((CVcDataGrid)m_Chart.get_DataGrid()).SetData(row, 1, lSmsPrepare, 0); //充值量
((CVcDataGrid)m_Chart.get_DataGrid()).SetData(row, 2, lSmsValue, 0); //发送量
break;
}
}
else
{
switch (m_lDataType)
{
case 0:
default:
((CVcDataGrid)m_Chart.get_DataGrid()).SetData(row, 1, fMoneyValue, 0); //充值金额
break;
case 1:
((CVcDataGrid)m_Chart.get_DataGrid()).SetData(row, 1, lSmsPrepare, 0); //充值量
break;
}
}
}
m_Chart.Refresh();
}BEGIN_EVENTSINK_MAP(DLG_Corp_Analyse, CDialogEx)
ON_EVENT(DLG_Corp_Analyse, IDC_CORP_ANALYSE_CHART, 9, DLG_Corp_Analyse::PointSelectedCorpAnalyseChart, VTS_PI2 VTS_PI2 VTS_PI2 VTS_PI2)
END_EVENTSINK_MAP()
void DLG_Corp_Analyse::PointSelectedCorpAnalyseChart(short* Series, short* DataPoint, short* MouseFlags, short* Cancel)
{
CString strOut;
long lCol = *Series;
long lRow = *DataPoint;
double dData=0;
short sr = 0;
((CVcDataGrid)m_Chart.get_DataGrid()).GetData(lRow, lCol, &dData, &sr);
CString strRowLable = ((CVcDataGrid)m_Chart.get_DataGrid()).get_RowLabel(lRow, 1);
CString strColLable = ((CVcDataGrid)m_Chart.get_DataGrid()).get_ColumnLabel(lCol, 1);
long sData = (long)dData;
strOut.Format(_T("数据:%s,%s : %d"), strRowLable, strColLable, sData);
//AfxMessageBox(strOut);
GetDlgItem(IDC_CORP_ANALYSE_SHOWDATE)->SetWindowText(strOut);
}
void DLG_Corp_Analyse::OnCbnSelchangeCorpAnalyseGraph()
{
UpdateData(true);
ReDrawGraph();
}
void DLG_Corp_Analyse::OnCbnSelchangeCorpAnalyseDatatype()
{
UpdateData(true);
ReDrawGraph();
}
void DLG_Corp_Analyse::OnClickedCorpAnalyseShowvalue()
{
ReDrawGraph();
}