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