using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Security.Permissions;
using System.IO;
using System.Threading;
using System.Windows.Forms.DataVisualization.Charting;
using System.Data.OleDb;
using System.Data.SqlClient;
using LYFZ.Helper;
using System.Text.RegularExpressions;
using System.Collections;
namespace LYFZ.Software.MainBusiness.StatisticalInquiry
{
public partial class FrmFinancialChart : LYFZ.Software.UI.StatisticalInquiry.FrmFinancialChart
{
LYFZ.BLL.BLL_ErpUser userbll = new BLL.BLL_ErpUser();
LYFZ.BLL.BLL_ErpOrder orbll = new LYFZ.BLL.BLL_ErpOrder();
LYFZ.BLL.BLL_ErpSystemCategory scbll = new BLL.BLL_ErpSystemCategory();
public FrmFinancialChart()
{
this.Shown += FrmFinancialChart_Shown;
this.dgv.Click += dgv_Click;
this.numYear.ValueChanged += numYear_ValueChanged;
this.Resize += FrmFinancialChart_Resize;
this.cmbtreevProjectSearch.ComboBoxTree_NodeMouseClick += cmbtreevProjectSearch_ComboBoxTree_NodeMouseClick;
this.cmbtreevSeriesChartType.ComboBoxTree_NodeMouseClick += cmbtreevSeriesChartType_ComboBoxTree_NodeMouseClick;
this.cmbtreevPakName.ComboBoxTree_NodeMouseClick += cmbtreevPakName_ComboBoxTree_NodeMouseClick;
this.cmbtreevTaoXiName.ComboBoxTree_NodeMouseClick += cmbtreevTaoXiName_ComboBoxTree_NodeMouseClick;
this.btnQuery.Click += btnQuery_Click;
this.btnClose.Click += btnColse_Click;
this.panelEx4.Click += panelEx4_Click;
this.labelEx3.Click += labelEx3_Click;
}
DataTable tblUser = new DataTable();
DataTable tblsc = new DataTable();
///
/// 窗体加载事件
///
///
///
void FrmFinancialChart_Shown(object sender, EventArgs e)
{
TreeNode root = null;
string[] StrValues = "Point|点,FastPoint|快速点,Bubble|泡沫,Line|线,Spline|仿样,StepLine|步线,FastLine|快绳,Bar|酒吧,StackedBar|堆叠酒吧,StackedBar100|堆叠酒吧100,Column|柱,StackedColumn|堆积柱形图,StackedColumn100|堆积柱形图100,Area|区,SplineArea|花键区,StackedArea|堆积区,StackedArea100|堆积区100,Pie|馅饼,Doughnut|甜甜圈,Stock|股票,Candlestick|檠,Range|范围,SplineRange|样条范围,RangeBar|范围吧,RangeColumn|范围列,Radar|雷达,Polar|极性,ErrorBar|错误吧,BoxPlot|箱线图,Funnel|漏斗,Pyramid|金字塔".Split(',');
for (int i = 0; i < StrValues.Length; i++)
{
string[] StrArray = StrValues[i].Trim().Split('|');
root = new TreeNode();
root.Text = StrArray[1].Trim();
root.Tag = StrArray[0].Trim();
this.cmbtreevSeriesChartType.Nodes.Add(root);
}
this.cmbtreevSeriesChartType.TagFindText(SeriesChartType.Column.ToString());
LYFZ.Software.MainBusiness.DoorCityProcess.PublicCodeClasses.BindComboxTreeView(this.cmbtreevProjectSearch, StrBindData: "定单,订单收款,业绩,客户来源,平均选片率");
this.cmbtreevProjectSearch.TextFindTag("定单");
this.cmbtreevProjectSearch.SelectedNode = this.cmbtreevProjectSearch.GetNodeItem_TextToTag("定单");
this.numYear.Value = SDateTime.Now.Year;
this.chart1.Focus();
this.chart1.ChartAreas[0].CursorX.IsUserEnabled = true;
this.chart1.ChartAreas[0].CursorX.IsUserSelectionEnabled = true;
this.chart1.ChartAreas[0].AxisX.ScaleView.Zoomable = true;
this.chart1.ChartAreas[0].AxisX.ScrollBar.IsPositionedInside = false;//将滚动内嵌到坐标轴中
this.chart1.ChartAreas["ChartArea1"].AxisX.ScrollBar.Size = 20;// 设置滚动条的大小
this.chart1.ChartAreas["ChartArea1"].AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.All;// 设置滚动条的按钮的风格,下面代码是将所有滚动条上的按钮都显示出来
this.chart1.ChartAreas["ChartArea1"].AxisX.ScaleView.SmallScrollSize = double.NaN;// 设置自动放大与缩小的最小量
this.chart1.ChartAreas["ChartArea1"].AxisX.ScaleView.SmallScrollMinSize = 2;
bool b = LYFZ.Software.MainBusiness.VersionControl.StaticVersion.UIFunctionVersion(VersionControl.VersionFunctionEnum.统计查询订单图表);
if (!b)
{
this.Close();
}
}
///
/// 年变更事件
///
///
///
void numYear_ValueChanged(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(this.numYear.Value.ToString().Trim()))
{
string StrStartTime = this.numYear.Value.ToString().Trim() + "-01-01";
string StrEndTime = Convert.ToDateTime(StrStartTime).AddYears(1).AddSeconds(-1).ToString("yyyy-MM-dd");
string ExecuteSql = "select Ord_PhotographyCategory,Ord_SeriesName from tb_ErpOrder Where " + LYFZ.Software.MainBusiness.DoorCityProcess.PublicCodeClasses.GetDateTime("Ord_SaveOrderDateTime", StrStartTime, StrEndTime, ConnectWord: "") + " Group By Ord_PhotographyCategory,Ord_SeriesName";
DataTable dt = orbll.GetView_Custom(ExecuteSql).Tables[0];
Hashtable htData1 = new Hashtable();
Hashtable htData2 = new Hashtable();
for (int i = 0; i < dt.Rows.Count; i++)
{
htData1[dt.Rows[i]["Ord_PhotographyCategory"].ToString().Trim()] = dt.Rows[i]["Ord_PhotographyCategory"].ToString().Trim();
htData2[dt.Rows[i]["Ord_SeriesName"].ToString().Trim()] = dt.Rows[i]["Ord_SeriesName"].ToString().Trim();
}
this.cmbtreevTaoXiName.SetTextAndTag_ValueNull();
this.cmbtreevTaoXiName.Nodes.Clear();
TreeNode root = null;
root = new TreeNode();
root.Text = "全部";
root.Tag = "";
root.Name = "All";
this.cmbtreevTaoXiName.Nodes.Add(root);
if (htData1.Count > 0)
{
root = new TreeNode();
root.Text = "按套系类别";
root.Tag = "";
root.Name = "CategoryAll";
TreeNode nodes = null;
foreach (DictionaryEntry item in htData1)
{
nodes = new TreeNode();
nodes.Text = item.Key.ToString().Trim();
nodes.Tag = item.Key.ToString().Trim();
nodes.Name = "Category";
root.Nodes.Add(nodes);
}
this.cmbtreevTaoXiName.Nodes.Add(root);
}
if (htData2.Count > 0)
{
root = new TreeNode();
root.Text = "按套系名称";
root.Tag = "";
root.Name = "SeriesNameAll";
TreeNode nodes = null;
foreach (DictionaryEntry item in htData2)
{
nodes = new TreeNode();
nodes.Text = item.Key.ToString().Trim();
nodes.Tag = item.Key.ToString().Trim();
nodes.Name = "SeriesName";
root.Nodes.Add(nodes);
}
this.cmbtreevTaoXiName.Nodes.Add(root);
}
this.cmbtreevTaoXiName.TextFindTag("全部");
this.cmbtreevTaoXiName.SelectedNode = this.cmbtreevTaoXiName.GetNodeItem_TextToTag("全部");
this.cmbtreevProjectSearch_ComboBoxTree_NodeMouseClick(this, null);
}
}
///
/// 项目选择
///
///
///
void cmbtreevProjectSearch_ComboBoxTree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
this.dgv.Visible = true;
this.cmbtreevPakName.Nodes.Clear();
this.cmbtreevPakName.Text = "";
this.panelPakName.Visible = false;
this.dgv.Rows.Clear();
this.dgv.Columns.Clear();
this.panelEx1.Visible = true;
if (this.cmbtreevProjectSearch.Text.Trim() == "定单")
{
#region
string[] strcolumns = "项目名称".Split(',');
for (int i = 0; i < strcolumns.Length; i++)
{
if (!string.IsNullOrEmpty(strcolumns[i].Trim()))
{
DataGridViewColumn column = new DataGridViewColumn();
column.ReadOnly = true;
column.Name = strcolumns[i].Trim();
column.HeaderText = strcolumns[i].Trim();
this.dgv.Columns.Add(column);
}
}
Type type = typeof(LYFZ.EnumPublic.OrderType);
Array Arrays = Enum.GetValues(type);
DataGridViewCell cell = null;
for (int i = 0; i < Arrays.LongLength; i++)
{
DataGridViewRow dgvr = new DataGridViewRow();
cell = new DataGridViewTextBoxCell();
cell.Value = Arrays.GetValue(i);
dgvr.Cells.Add(cell);
this.dgv.Rows.Add(dgvr);
}
#endregion
}
else if (cmbtreevProjectSearch.Text.Trim() == "订单收款")
{
#region
string[] strcolumns = "项目名称".Split(',');
for (int i = 0; i < strcolumns.Length; i++)
{
if (!string.IsNullOrEmpty(strcolumns[i].Trim()))
{
DataGridViewColumn column = new DataGridViewColumn();
column.ReadOnly = true;
column.Name = strcolumns[i].Trim();
column.HeaderText = strcolumns[i].Trim();
this.dgv.Columns.Add(column);
}
}
string[] Arrays = "应付,前期,后期,已付,欠款".Split(',');
DataGridViewCell cell = null;
for (int i = 0; i < Arrays.LongLength; i++)
{
DataGridViewRow dgvr = new DataGridViewRow();
cell = new DataGridViewTextBoxCell();
cell.Value = Arrays.GetValue(i);
dgvr.Cells.Add(cell);
this.dgv.Rows.Add(dgvr);
}
#endregion
}
else if (cmbtreevProjectSearch.Text.Trim() == "客户来源")
{
#region
string[] strcolumns = "项目编号,项目名称".Split(',');
for (int i = 0; i < strcolumns.Length; i++)
{
if (!string.IsNullOrEmpty(strcolumns[i].Trim()))
{
DataGridViewColumn column = new DataGridViewColumn();
column.ReadOnly = true;
column.Name = strcolumns[i].Trim();
column.HeaderText = strcolumns[i].Trim();
this.dgv.Columns.Add(column);
}
}
this.dgv.Columns["项目编号"].Visible = false;
if (tblsc.Rows.Count <= 0)
{
tblsc = orbll.GetView_Custom("tb_ErpSystemCategory", StrWhere: "", ShowColumnName: "ID,Sc_ClassCode,Sc_ClassName,Sc_ClassParentID").Tables[0];
tblsc.PrimaryKey = new DataColumn[] { tblsc.Columns["Sc_ClassCode"] };
}
DataRow dtRow = tblsc.Rows.Find("AAAAAAF");
if (dtRow != null)
{
DataRow[] dtRows = tblsc.Select("Sc_ClassParentID = '" + dtRow["ID"] + "'");
DataGridViewCell cell = null;
for (int i = 0; i < dtRows.Length; i++)
{
DataRow[] dtRows2 = tblsc.Select("Sc_ClassParentID = '" + dtRows[i]["ID"] + "'");
if (dtRows2.Length > 0)
{
for (int j = 0; j < dtRows2.Length; j++)
{
DataGridViewRow dgvr = new DataGridViewRow();
cell = new DataGridViewTextBoxCell();
cell.Value = dtRows2[j]["Sc_ClassCode"];
dgvr.Cells.Add(cell);
cell = new DataGridViewTextBoxCell();
cell.Value = dtRows2[j]["Sc_ClassName"];
dgvr.Cells.Add(cell);
this.dgv.Rows.Add(dgvr);
}
}
else
{
DataGridViewRow dgvr = new DataGridViewRow();
cell = new DataGridViewTextBoxCell();
cell.Value = dtRows[i]["Sc_ClassCode"];
dgvr.Cells.Add(cell);
cell = new DataGridViewTextBoxCell();
cell.Value = dtRows[i]["Sc_ClassName"];
dgvr.Cells.Add(cell);
this.dgv.Rows.Add(dgvr);
}
}
}
#endregion
}
else if (cmbtreevProjectSearch.Text.Trim() == "平均选片率")
{
this.panelEx1.Visible = false;
#region
// DataGridViewRow dgvr = new DataGridViewRow();
// DataGridViewCell cell = null;
// dgvr = new DataGridViewRow();
// cell = new DataGridViewTextBoxCell();
// cell.Value = "";
// dgvr.Cells.Add(cell);
// cell = new DataGridViewTextBoxCell();
// cell.Value = "选片率=选片/拍照";
// dgvr.Cells.Add(cell);
// this.dgv.Rows.Add(dgvr);
// dgvr = new DataGridViewRow();
// cell = new DataGridViewTextBoxCell();
// cell.Value = "";
// dgvr.Cells.Add(cell);
// cell = new DataGridViewTextBoxCell();
// cell.Value = "平均加选(张)";
// dgvr.Cells.Add(cell);
// this.dgv.Rows.Add(dgvr);
// #endregion
// dgv.SelectAll();
#endregion
}
else if (cmbtreevProjectSearch.Text.Trim() == "业绩")
{
#region
panelPakName.Visible = true;
LYFZ.Software.MainBusiness.DoorCityProcess.PublicCodeClasses.BindComboxTreeView(this.cmbtreevPakName, "全部,订单前期,订单后期");
this.cmbtreevPakName.TextFindTag("全部");
string[] strcolumns = "员工编号,项目名称".Split(',');
for (int i = 0; i < strcolumns.Length; i++)
{
if (!string.IsNullOrEmpty(strcolumns[i].Trim()))
{
DataGridViewColumn column = new DataGridViewColumn();
column.ReadOnly = true;
column.Name = strcolumns[i].Trim();
column.HeaderText = strcolumns[i].Trim();
this.dgv.Columns.Add(column);
}
}
this.dgv.Columns["员工编号"].Visible = false;
if (tblUser.Rows.Count <= 0)
{ tblUser = userbll.GetList("User_Status!='离职'").Tables[0]; }
DataGridViewCell cell = null;
for (int i = 0; i < tblUser.Rows.Count; i++)
{
DataGridViewRow dgvr = new DataGridViewRow();
cell = new DataGridViewTextBoxCell();
cell.Value = tblUser.Rows[i]["User_EmployeeID"].ToString();
dgvr.Cells.Add(cell);
cell = new DataGridViewTextBoxCell();
cell.Value = tblUser.Rows[i]["User_Name"].ToString();
dgvr.Cells.Add(cell);
this.dgv.Rows.Add(dgvr);
}
#endregion
}
for (int i = 0; i < this.dgv.Rows.Count; i++)
{
if (i <= 9)
{ this.dgv.Rows[i].Selected = true; }
else
{ break; }
}
this.cmbtreevPakName_ComboBoxTree_NodeMouseClick(this, null);
}
///
/// 列表点击事件
///
///
///
void dgv_Click(object sender, EventArgs e)
{
bool IsTrue = true;
while (IsTrue)
{
if (this.dgv.SelectedRows.Count > 10)
{
this.dgv.Rows[this.dgv.SelectedRows.Count - 1].Selected = false;
}
else
{ IsTrue = false; }
}
this.cmbtreevPakName_ComboBoxTree_NodeMouseClick(this, null);
}
///
/// 选择订单类别
///
///
///
void cmbtreevPakName_ComboBoxTree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
try
{
#region
string StrStartTime = this.numYear.Value.ToString().Trim() + "-01-01";
string StrEndTime = Convert.ToDateTime(StrStartTime).AddYears(1).ToString("yyyy-MM-dd");
string StrWhere = "";
if (this.cmbtreevTaoXiName.Tag != null)
{
this.cmbtreevTaoXiName.SelectedNode = this.cmbtreevTaoXiName.GetNodeItem_TextToTag(this.cmbtreevTaoXiName.Text.Trim());
if (!string.IsNullOrEmpty(this.cmbtreevTaoXiName.Tag.ToString().Trim()))
{
switch (this.cmbtreevTaoXiName.StrGetName.Trim())
{
case "Category":
StrWhere = " And Ord_PhotographyCategory = '" + this.cmbtreevTaoXiName.Tag.ToString().Trim() + "'";
break;
case "SeriesName":
StrWhere = " And Ord_SeriesName = '" + this.cmbtreevTaoXiName.Tag.ToString().Trim() + "'";
break;
}
}
else
{
string StrWh = "";
if (this.cmbtreevTaoXiName.SelectedNode != null)
{
for (int i = 0; i < this.cmbtreevTaoXiName.SelectedNode.Nodes.Count; i++)
{ StrWh += "'" + this.cmbtreevTaoXiName.SelectedNode.Nodes[i].Tag.ToString().Trim() + "',"; }
if (!string.IsNullOrEmpty(StrWh))
{
switch (this.cmbtreevTaoXiName.StrGetName.Trim())
{
case "CategoryAll":
StrWhere = " And Ord_PhotographyCategory in (" + StrWh.TrimEnd(',') + ")";
break;
case "SeriesNameAll":
StrWhere = " And Ord_SeriesName in (" + StrWh.TrimEnd(',') + ")";
break;
}
}
}
}
}
#endregion
Series tempseries = null;
//获取月份
string[] arrayMonths = new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月" };
string[] Months = new string[] { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12" };
//设置颜色
Color[] mycolor = new Color[10] { Color.Red, Color.Blue, Color.Yellow, Color.Green, Color.BlueViolet, Color.Crimson, Color.Fuchsia, Color.DeepPink, Color.LawnGreen, Color.Maroon };
this.chart1.Series.Clear();
this.chart1.ChartAreas["ChartArea1"].AxisX.Interval = 1;//x轴数据显示间隔
if (this.cmbtreevProjectSearch.Text.Trim() == "定单")
{
#region
DataTable tbl = orbll.GetView_Custom("tb_ErpOrder", StrWhere: LYFZ.Software.MainBusiness.DoorCityProcess.PublicCodeClasses.GetDateTime("Ord_SaveOrderDateTime", StrStartTime, StrEndTime, DateAddDays: 0, ConnectWord: "") + StrWhere, ShowColumnName: "count(id) as 数量,Ord_Type As 项目,convert(varchar(7),Ord_SaveOrderDateTime,120) as 日期", GroupBy: "Ord_Type,convert(varchar(7),Ord_SaveOrderDateTime,120)").Tables[0];
for (int i = 0; i < this.dgv.SelectedRows.Count; i++)
{
int TypeCount = Convert.ToInt32(Enum.Parse(typeof(LYFZ.EnumPublic.OrderType), this.dgv.SelectedRows[i].Cells["项目名称"].Value.ToString().Trim()));
//获取Series名称
tempseries = new Series(this.dgv.SelectedRows[i].Cells["项目名称"].Value.ToString().Trim());
tempseries.ChartType = (SeriesChartType)Enum.Parse(typeof(SeriesChartType), this.cmbtreevSeriesChartType.Tag.ToString());
this.chart1.Series.Add(tempseries);
this.chart1.Series[i].Color = mycolor[i];
this.chart1.Series[i].Points.Clear();
this.chart1.Series[i].ToolTip = this.dgv.SelectedRows[i].Cells["项目名称"].Value.ToString().Trim();
//获取月份与月份订单数
for (int y = 0; y < Months.Length; y++)
{
string time = Convert.ToDateTime(this.numYear.Value + "-" + Months[y]).ToString("yyyy-MM");
DataRow[] row = tbl.Select(" 项目 = '" + TypeCount + "' and 日期 = '" + time + "'");
int decCount = 0;
if (row.Length > 0)
{ decCount = Convert.ToInt32(row[0]["数量"]); }
tempseries.Points.AddXY(Months[y], decCount.ToString());
if (decCount > 0)
{ tempseries.Points[y].IsValueShownAsLabel = true; }
}
}
#endregion
}
else if (this.cmbtreevProjectSearch.Text.Trim() == "订单收款")
{
#region
string ExecuteSql = "with t AS " +
"(" +
"select SUM(Ord_SeriesPrice) as 金额, convert(varchar(7),Ord_SaveOrderDateTime,120) as 日期, '订单' AS 模板 " +
"from dbo.tb_ErpOrder " +
"where Ord_Class = 1 " + LYFZ.Software.MainBusiness.DoorCityProcess.PublicCodeClasses.GetDateTime("Ord_SaveOrderDateTime", StrStartTime, StrEndTime, DateAddDays: 0) + StrWhere + " " +
"group by convert(varchar(7),Ord_SaveOrderDateTime,120) " +
"UNION ALL " +
"select " +
"SUM(Plu_Amount) as 金额, convert(varchar(7),Plu_CreateTime,120) as 日期, '二销加挑' AS 模板 " +
"from [dbo].tb_ErpPlusPickItems Left Join tb_ErpOrder on Ord_Number = Plu_OrdNumber " +
"where " + LYFZ.Software.MainBusiness.DoorCityProcess.PublicCodeClasses.GetDateTime("Plu_CreateTime", StrStartTime, StrEndTime, DateAddDays: 0, ConnectWord: "") + StrWhere + " " +
"group by convert(varchar(7),Plu_CreateTime,120) " +
"UNION ALL " +
"select SUM(Pay_AmountOf) as 金额, convert(varchar(7),Pay_CreateDatetime,120) as 日期, '订单收款' AS 模板 " +
"from [dbo].tb_ErpPayment Left Join tb_ErpOrder on Ord_Number = Pay_OrdNumber " +
"where Pay_Type=0 and Pay_PaymentMethod not in ('BEBACCAFEGECFBJFD','BEBCABAJBDFBBJGID') " + LYFZ.Software.MainBusiness.DoorCityProcess.PublicCodeClasses.GetDateTime("Pay_CreateDatetime", StrStartTime, StrEndTime, DateAddDays: 0) + StrWhere + " " +
"group by convert(varchar(7),Pay_CreateDatetime,120) " +
")" +
"select 金额,日期,模板 from t";
DataSet dtSet = orbll.GetView_Custom(ExecuteSql);
DataTable tbl = dtSet.Tables["ds"];
for (int i = 0; i < this.dgv.SelectedRows.Count; i++)
{
//获取Series名称
tempseries = new Series(this.dgv.SelectedRows[i].Cells["项目名称"].Value.ToString().Trim());
tempseries.ChartType = (SeriesChartType)Enum.Parse(typeof(SeriesChartType), this.cmbtreevSeriesChartType.Tag.ToString());
this.chart1.Series.Add(tempseries);
this.chart1.Series[i].Color = mycolor[i];
this.chart1.Series[i].Points.Clear();
this.chart1.Series[i].ToolTip = this.dgv.SelectedRows[i].Cells["项目名称"].Value.ToString().Trim();
for (int y = 0; y < Months.Length; y++)
{
decimal decAoumnt = 0;
string StrTime = Convert.ToDateTime(this.numYear.Value + "-" + Months[y]).ToString("yyyy-MM");
switch (this.dgv.SelectedRows[i].Cells["项目名称"].Value.ToString().Trim())
{
case "应付":
DataRow[] dtRow1 = tbl.Select("模板 = '订单' And 日期 = '" + StrTime + "'");
for (int j = 0; j < dtRow1.Length; j++)
{ decAoumnt += Convert.ToDecimal(dtRow1[j]["金额"]); }
DataRow[] dtRow2 = tbl.Select("模板 = '二销加挑' And 日期 = '" + StrTime + "'");
for (int j = 0; j < dtRow2.Length; j++)
{ decAoumnt += Convert.ToDecimal(dtRow2[j]["金额"]); }
break;
case "前期":
DataRow[] dtRow3 = tbl.Select("模板 = '订单' And 日期 = '" + StrTime + "'");
for (int j = 0; j < dtRow3.Length; j++)
{ decAoumnt += Convert.ToDecimal(dtRow3[j]["金额"]); }
break;
case "后期":
DataRow[] dtRow4 = tbl.Select("模板 = '二销加挑' And 日期='" + StrTime + "'");
for (int j = 0; j < dtRow4.Length; j++)
{ decAoumnt += Convert.ToDecimal(dtRow4[j]["金额"]); }
break;
case "已付":
DataRow[] dtRow5 = tbl.Select("模板 = '订单收款' And 日期='" + StrTime + "'");
for (int j = 0; j < dtRow5.Length; j++)
{ decAoumnt += Convert.ToDecimal(dtRow5[j]["金额"]); }
break;
case "欠款":
DataRow[] dtRow6 = tbl.Select("模板 = '订单' And 日期 = '" + StrTime + "'");
for (int j = 0; j < dtRow6.Length; j++)
{ decAoumnt += Convert.ToDecimal(dtRow6[j]["金额"]); }
DataRow[] dtRow7 = tbl.Select("模板 = '二销加挑' And 日期 = '" + StrTime + "'");
for (int j = 0; j < dtRow7.Length; j++)
{ decAoumnt += Convert.ToDecimal(dtRow7[j]["金额"]); }
DataRow[] dtRow8 = tbl.Select("模板 = '订单收款' And 日期='" + StrTime + "'");
for (int j = 0; j < dtRow8.Length; j++)
{ decAoumnt -= Convert.ToDecimal(dtRow8[j]["金额"]); }
break;
}
tempseries.Points.AddXY(Months[y], decAoumnt.ToString());
if (decAoumnt > 0)
{ tempseries.Points[y].IsValueShownAsLabel = true; }
}
}
#endregion
}
else if (this.cmbtreevProjectSearch.Text.Trim() == "客户来源")
{
#region
DataTable tbl = orbll.GetView_Custom("tb_ErpOrder", StrWhere: LYFZ.Software.MainBusiness.DoorCityProcess.PublicCodeClasses.GetDateTime("Ord_SaveOrderDateTime", StrStartTime, StrEndTime, DateAddDays: 0, ConnectWord: "") + StrWhere, ShowColumnName: "count(id) as 数量,Ord_CustomerSource AS 项目,convert(varchar(7),Ord_SaveOrderDateTime,120) as 日期", GroupBy: " Ord_CustomerSource,convert(varchar(7),Ord_SaveOrderDateTime,120)").Tables[0];
//画柱状图
for (int i = 0; i < this.dgv.SelectedRows.Count; i++)
{
//获取Series名称
tempseries = new Series(this.dgv.SelectedRows[i].Cells["项目名称"].Value.ToString().Trim());
tempseries.ChartType = (SeriesChartType)Enum.Parse(typeof(SeriesChartType), this.cmbtreevSeriesChartType.Tag.ToString());
this.chart1.Series.Add(tempseries);
this.chart1.Series[i].Color = mycolor[i];
this.chart1.Series[i].Points.Clear();
this.chart1.Series[i].ToolTip = this.dgv.SelectedRows[i].Cells["项目名称"].Value.ToString().Trim();
for (int y = 0; y < Months.Length; y++)
{
int decCount = 0;
string time = Convert.ToDateTime(numYear.Value + "-" + Months[y]).ToString("yyyy-MM");
DataRow[] row = tbl.Select("日期 = '" + time + "' and 项目 = '" + this.dgv.SelectedRows[i].Cells["项目名称"].Value.ToString().Trim() + "'");
if (row.Length > 0)
{ decCount = Convert.ToInt32(row[0]["数量"]); }
tempseries.Points.AddXY(Months[y], decCount.ToString());
if (decCount > 0)
{ tempseries.Points[y].IsValueShownAsLabel = true; }
}
}
#endregion
}
else if (this.cmbtreevProjectSearch.Text.Trim() == "业绩")
{
#region
string ExecuteSql = "with t AS " +
"(" +
"select Plu_Amount,convert(varchar(7),Plu_CreateTime,120) as 订单时间,Plu_OpenSingle AS 接单人员编号 " +
"from tb_ErpPlusPickItems " +
"left join tempTB_AggregationCustomer on Plu_OrdNumber=GP_OrderNumber " +
"left join tb_ErpOrder on Plu_OrdNumber=Ord_Number " +
"where " + LYFZ.Software.MainBusiness.DoorCityProcess.PublicCodeClasses.GetDateTime("Plu_CreateTime", StrStartTime, StrEndTime, DateAddDays: 0, ConnectWord: "") + StrWhere + " " +
") " +
"select sum(Plu_Amount) as 金额,接单人员编号,订单时间 from t Group By 订单时间,接单人员编号;" +
"with t AS " +
"(" +
"select Ord_SeriesPrice,convert(varchar(7),Ord_SaveOrderDateTime,120) as 订单时间" +
",(select stuff((select ','+OrdPe_OrdersPerson from tb_ErpOrdersPerson where OrdPe_OrderNumber = Ord_Number for xml path('')),1,1,'')) as 接单人员编号 " +
"from tb_ErpOrder " +
"left join tempTB_AggregationCustomer on Ord_Number=GP_OrderNumber " +
"where " + LYFZ.Software.MainBusiness.DoorCityProcess.PublicCodeClasses.GetDateTime("Ord_SaveOrderDateTime", StrStartTime, StrEndTime, DateAddDays: 0, ConnectWord: "") + StrWhere + " " +
")" +
"select sum(Ord_SeriesPrice) as 金额,接单人员编号,订单时间 from t Group By 订单时间,接单人员编号";
DataSet dtSet = orbll.GetView_Custom(ExecuteSql);
DataTable tblEarly = dtSet.Tables["ds"];
DataTable tblLater = dtSet.Tables["ds1"];
//画柱状图
for (int i = 0; i < this.dgv.SelectedRows.Count; i++)
{
string StrProjectName = this.dgv.SelectedRows[i].Cells["员工编号"].Value.ToString().Trim();
string StrProjectValue = this.dgv.SelectedRows[i].Cells["项目名称"].Value.ToString().Trim();
//获取Series名称
tempseries = new Series(StrProjectValue);
tempseries.ChartType = (SeriesChartType)Enum.Parse(typeof(SeriesChartType), this.cmbtreevSeriesChartType.Tag.ToString());
this.chart1.Series.Add(tempseries);
this.chart1.Series[i].Color = mycolor[i];
this.chart1.Series[i].Points.Clear();
this.chart1.Series[i].ToolTip = StrProjectValue;
for (int y = 0; y < Months.Length; y++)
{
decimal decAoumnt = 0;
string time = Convert.ToDateTime(numYear.Value + "-" + Months[y]).ToString("yyyy-MM");
switch (this.cmbtreevPakName.Text.Trim())
{
case "全部":
DataRow[] dtRow = tblEarly.Select("订单时间 = '" + time + "' and 接单人员编号 like '%" + StrProjectName + "%'");
for (int t = 0; t < dtRow.Length; t++)
{ decAoumnt += Convert.ToInt32(dtRow[t]["金额"]); }
DataRow[] dtRow1 = tblLater.Select("订单时间 = '" + time + "' and 接单人员编号 like '%" + StrProjectName + "%'");
for (int t = 0; t < dtRow1.Length; t++)
{ decAoumnt = Convert.ToInt32(dtRow1[t]["金额"]); }
break;
case "订单前期":
DataRow[] dtRow2 = tblEarly.Select("订单时间 = '" + time + "' and 接单人员编号 like '%" + StrProjectName + "%'");
for (int t = 0; t < dtRow2.Length; t++)
{ decAoumnt += Convert.ToInt32(dtRow2[t]["金额"]); }
break;
case "订单后期":
DataRow[] dtRow3 = tblLater.Select("订单时间 = '" + time + "' and 接单人员编号='" + StrProjectName + "'");
for (int t = 0; t < dtRow3.Length; t++)
{ decAoumnt = Convert.ToInt32(dtRow3[t]["金额"]); }
break;
}
tempseries.Points.AddXY(Months[y], decAoumnt.ToString());
if (decAoumnt > 0)
{ tempseries.Points[y].IsValueShownAsLabel = true; }
}
}
#endregion
}
else if (this.cmbtreevProjectSearch.Text.Trim() == "平均选片率")
{
#region
string ExecuteSql = "select sum(Plu_Amount) as Plu_Amount,convert(varchar(7),Plu_CreateTime,120) as Plu_CreateTime " +
"from tb_ErpPlusPickItems Left Join tb_ErpOrder on Ord_Number = Plu_OrdNumber " +
"where Plu_SourceType = 1 " + LYFZ.Software.MainBusiness.DoorCityProcess.PublicCodeClasses.GetDateTime("Plu_CreateTime", StrStartTime, StrEndTime, DateAddDays: 0) + StrWhere + " " +
"group by convert(varchar(7),Plu_CreateTime,120);" +
"select distinct Plu_OrdNumber,convert(varchar(7),Plu_CreateTime,120) as Plu_CreateTime " +
"from tb_ErpPlusPickItems Left Join tb_ErpOrder on Ord_Number = Plu_OrdNumber " +
"where Plu_SourceType = 1 " + LYFZ.Software.MainBusiness.DoorCityProcess.PublicCodeClasses.GetDateTime("Plu_CreateTime", StrStartTime, StrEndTime, DateAddDays: 0) + StrWhere + ";" +
"select Ordv_IntoRegisterAddPickQuantity,Ordv_IntoBottomAddPickQuantity,convert(varchar(7),Ordv_FilmSelectionTime,120) as Ordv_FilmSelectionTime " +
"from tb_ErpOrder Left Join tb_ErpOrderDigital on Ordv_Number = Ord_Number " +
"where Ordv_FilmSelectionStatus = 1 " + LYFZ.Software.MainBusiness.DoorCityProcess.PublicCodeClasses.GetDateTime("Ordv_FilmSelectionTime", StrStartTime, StrEndTime, DateAddDays: 0) + StrWhere + "";
DataSet dtSet = orbll.GetView_Custom(ExecuteSql);
DataTable tbl = dtSet.Tables["ds"];
DataTable tbl1 = dtSet.Tables["ds1"];
DataTable tbl2 = dtSet.Tables["ds2"];
string[] StrArray = "平均入册加选(张),平均入底加选(张),平均选片加挑金额".Split(',');
//画柱状图
for (int i = 0; i < StrArray.Length; i++)
{
//获取Series名称
tempseries = new Series(StrArray[i]);
tempseries.ChartType = (SeriesChartType)Enum.Parse(typeof(SeriesChartType), this.cmbtreevSeriesChartType.Tag.ToString());
this.chart1.Series.Add(tempseries);
this.chart1.Series[i].Color = mycolor[i];
this.chart1.Series[i].Points.Clear();
this.chart1.Series[i].ToolTip = StrArray[i];
for (int y = 0; y < Months.Length; y++)
{
decimal decAoumnt = 0;
decimal decCount = 0;
string StrTime = Convert.ToDateTime(numYear.Value + "-" + Months[y]).ToString("yyyy-MM");
switch (StrArray[i].ToString().Trim())
{
case "平均入册加选(张)":
DataRow[] dtRow = tbl2.Select("Ordv_FilmSelectionTime = '" + StrTime + "'");
if (dtRow.Length > 0)
{
for (int t = 0; t < dtRow.Length; t++)
{ decCount += Convert.ToDecimal(dtRow[t]["Ordv_IntoRegisterAddPickQuantity"]); }
decAoumnt = decCount / dtRow.Length;
}
break;
case "平均入底加选(张)":
DataRow[] dtRow1 = tbl2.Select("Ordv_FilmSelectionTime = '" + StrTime + "'");
if (dtRow1.Length > 0)
{
for (int t = 0; t < dtRow1.Length; t++)
{ decCount += Convert.ToDecimal(dtRow1[t]["Ordv_IntoBottomAddPickQuantity"]); }
decAoumnt = decCount / dtRow1.Length;
}
break;
case "平均选片加挑金额":
DataRow[] dtRow2 = tbl.Select("Plu_CreateTime = '" + StrTime + "'");
if (dtRow2.Length > 0)
{ decCount = Convert.ToDecimal(dtRow2[0]["Plu_Amount"]); }
DataRow[] dtRow3 = tbl1.Select("Plu_CreateTime = '" + StrTime + "'");
if (dtRow3.Length > 0)
{ decAoumnt = decCount / dtRow3.Length; }
break;
}
tempseries.Points.AddXY(Months[y], decAoumnt.ToString("N2"));
if (decCount > 0)
{ tempseries.Points[y].IsValueShownAsLabel = true; }
}
}
#endregion
}
}
catch (Exception ex)
{ MessageBoxCustom.Show(ex.Message.ToString()); }
}
///
/// 图形选择事件
///
///
///
void cmbtreevSeriesChartType_ComboBoxTree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
this.cmbtreevPakName_ComboBoxTree_NodeMouseClick(this, null);
}
///
/// 套系名称、类别选择
///
///
///
void cmbtreevTaoXiName_ComboBoxTree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
this.cmbtreevPakName_ComboBoxTree_NodeMouseClick(this, null);
}
///
/// 窗体大小发生事件
///
///
///
void FrmFinancialChart_Resize(object sender, EventArgs e)
{
switch (this.panelSeriesChartType.Location.Y)
{
case 3: this.flowLayoutPanel1.Height = 38; break;
case 35: this.flowLayoutPanel1.Height = 68; break;
}
this.labelEx3.Location = new Point(this.labelEx3.Location.X, (this.panelEx4.Height / 2) - this.labelEx3.Height);
}
///
/// 查询
///
///
///
void btnQuery_Click(object sender, EventArgs e)
{
this.cmbtreevPakName_ComboBoxTree_NodeMouseClick(this, null);
}
///
/// 关闭
///
///
///
void btnColse_Click(object sender, EventArgs e)
{
this.Close();
}
///
/// 收缩点击事件
///
///
///
void panelEx4_Click(object sender, EventArgs e)
{
this.labelEx3_Click(this, null);
}
///
/// 收缩点击事件
///
///
///
void labelEx3_Click(object sender, EventArgs e)
{
if (this.labelEx3.Tag.ToString().Trim() == "A")
{
this.panelEx1.Visible = false;
this.labelEx3.Text = " 》";
this.labelEx3.Tag = "B";
}
else
{
this.panelEx1.Visible = true;
this.labelEx3.Text = "《";
this.labelEx3.Tag = "A";
}
}
}
}