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 CoreFS.SA06; using Core.Mes.Client.Comm.Server; using Core.Mes.Client.Comm.Control; using Core.Mes.Client.Comm.Tool; //using Infragistics.Win.UltraWinGrid; using Infragistics.Win.UltraWinTree; using Infragistics.Win.UltraWinChart; using CoreFS.CA06; using System.Net; using Infragistics.UltraChart.Shared.Styles; using Infragistics.UltraChart.Resources.Appearance; using Infragistics.UltraChart.Core.Layers; using System.Collections; namespace Core.StlMes.Client.BuyBillet { public partial class RptProductionVelocity : FrmBase { private string[] columnchartpoint, piechartpoint, columnchartpoint_qj; private bool isnew = false, isnew_qj = false; private DataTable kfdataTable, dtqry1, kfdataTable_qj; private int days; private Dictionary sclsdrcorlorsdictionary = new Dictionary(); private Dictionary mycorlorsdictionary = new Dictionary(); private Dictionary mynamedictionary = new Dictionary(); private int myLineThickness = 3; public RptProductionVelocity() { InitializeData(); InitializeComponent(); } private void RptProductionVelocity_Load(object sender, EventArgs e) { this.rptdate.Value = DateTime.Today; this.todate.Value = DateTime.Today; this.fromdate.Value = DateTime.Today.AddYears(-1); sclskf_month.Value = DateTime.Today; if (DateTime.Today.Day == 1) { scls_fromdate.Value = DateTime.Today.AddDays(-1); } else { scls_fromdate.Value = DateTime.Today.AddDays(-DateTime.Today.Day + 1); } this.scls_todate.Value = DateTime.Today; //getchart(); //getpiechart(); //kfdata = ServerHelper.GetData("com.steering.rpt.scls.SCLS.getSCLS_KF", new object[] {}, this.ob); } public override void ToolBar_Click(object sender, string ToolbarKey) { base.ToolBar_Click(sender, ToolbarKey); switch (ToolbarKey) { case "Query": if (ultraTabControl1.ActiveTab.Key == "scls") { getscls(); } else if (ultraTabControl1.ActiveTab.Key == "scls_qj") { //getcharttest(); getscls_qj(); } else if (ultraTabControl1.ActiveTab.Key == "scls_kf") { getscls_kf(); } else if (ultraTabControl1.ActiveTab.Key == "sczq") { getsczq(); } else if (ultraTabControl1.ActiveTab.Key == "htzq") { gethtzq(); } break; case "Export": Export(); break; case "Close": this.Close(); break; } } private void InitializeData() { mycorlorsdictionary.Add("DC", Color.Aqua); mycorlorsdictionary.Add("QX", Color.Blue); mycorlorsdictionary.Add("DSP", Color.Yellow); mycorlorsdictionary.Add("DPD", Color.Gold); mycorlorsdictionary.Add("LXWT", Color.Fuchsia); mycorlorsdictionary.Add("LXFX", Color.Red); mycorlorsdictionary.Add("FP", Color.Chocolate); mycorlorsdictionary.Add("PJ", Color.Green); mynamedictionary.Add("DC", "待产"); mynamedictionary.Add("QX", "清线"); mynamedictionary.Add("DSP", "待判(未送判)"); mynamedictionary.Add("DPD", "待判(未判定)"); mynamedictionary.Add("LXWT", "离线(未委托)"); mynamedictionary.Add("LXFX", "离线(未返线)"); mynamedictionary.Add("FP", "废品"); mynamedictionary.Add("PJ", "平均"); sclsdrcorlorsdictionary.Add("1", Color.YellowGreen); sclsdrcorlorsdictionary.Add("2", Color.DodgerBlue); sclsdrcorlorsdictionary.Add("3", Color.LightYellow); sclsdrcorlorsdictionary.Add("4", Color.Orange); sclsdrcorlorsdictionary.Add("5", Color.Red); } private void getcharttest() { UltraChart_scls_qj.Visible = true; DataTable dt = new DataTable(); dt.Columns.Add("Date", typeof(string)); dt.Columns.Add("2009-08-03", typeof(double)); dt.Columns.Add("2009-08-04", typeof(double)); dt.Columns.Add("2009-08-05", typeof(double)); dt.Columns.Add("2009-08-06", typeof(double)); dt.Columns.Add("2009-08-07", typeof(double)); // dt.Columns.Add("Rating", typeof(double)); dt.Rows.Add(new object[] { "待产", 100, 80, 90, 70, 117 }); dt.Rows.Add(new object[] { "清线", 0, 40, 50, 100, 60 }); /* dt.Rows.Add(new object[] { "2009-08-04"}); dt.Rows.Add(new object[] { "2009-08-05"}); dt.Rows.Add(new object[] { "2009-08-06"}); dt.Rows.Add(new object[] { "2009-08-07"});*/ /* dt.Rows.Add(new object[] { "2009-08-03", 119, 2 }); dt.Rows.Add(new object[] { "2009-08-04", 118, 3 }); dt.Rows.Add(new object[] { "2009-08-05", 117, 2 }); dt.Rows.Add(new object[] { "2009-08-06", 119, 2 }); dt.Rows.Add(new object[] { "2009-08-07", 117, 3 });*/ UltraChart_scls_qj.ChartType = ChartType.LineChart; ; UltraChart_scls_qj.Data.DataSource = dt; UltraChart_scls_qj.Data.IncludeColumn(0, false); UltraChart_scls_qj.Axis.X.Labels.Orientation = TextOrientation.Custom; UltraChart_scls_qj.Axis.X.Labels.OrientationAngle = 80; UltraChart_scls_qj.Axis.X.Labels.VerticalAlign = StringAlignment.Far; UltraChart_scls_qj.Axis.X2.Visible = false; UltraChart_scls_qj.Data.DataBind(); } private void mytest() { UltraChart_scls_qj.Visible = true; UltraChart_scls_qj.ChartType = ChartType.Composite; NumericSeries stackSeries1 = new NumericSeries(); stackSeries1.Label = "Stack One"; stackSeries1.Points.Add(new NumericDataPoint(1.0, "A", false)); stackSeries1.Points.Add(new NumericDataPoint(2.0, "B", false)); stackSeries1.Points.Add(new NumericDataPoint(3.0, "C", false)); NumericSeries stackSeries2 = new NumericSeries(); stackSeries2.Label = "Stack Two"; stackSeries2.Points.Add(new NumericDataPoint(4.0, "D", false)); stackSeries2.Points.Add(new NumericDataPoint(5.0, "E", false)); stackSeries2.Points.Add(new NumericDataPoint(6.0, "F", false)); NumericSeries lineSeries1 = new NumericSeries(); lineSeries1.Points.Add(new NumericDataPoint(7.0, "G", false)); lineSeries1.Points.Add(new NumericDataPoint(8.0, "H", false)); lineSeries1.Points.Add(new NumericDataPoint(9.0, "I", false)); NumericSeries lineSeries2 = new NumericSeries(); lineSeries2.Points.Add(new NumericDataPoint(8.0, "J", false)); lineSeries2.Points.Add(new NumericDataPoint(7.0, "K", false)); lineSeries2.Points.Add(new NumericDataPoint(6.0, "L", false)); ChartArea area = new ChartArea(); AxisItem xAxisForStackBar = new AxisItem(); xAxisForStackBar.OrientationType = AxisNumber.X_Axis; xAxisForStackBar.DataType = AxisDataType.Numeric; xAxisForStackBar.Extent = 10; xAxisForStackBar.Labels.ItemFormatString = ""; xAxisForStackBar.TickmarkStyle = AxisTickStyle.Smart; AxisItem yAxisForStackBar = new AxisItem(); yAxisForStackBar.OrientationType = AxisNumber.Y_Axis; yAxisForStackBar.DataType = AxisDataType.String; yAxisForStackBar.SetLabelAxisType = SetLabelAxisType.GroupBySeries; yAxisForStackBar.Labels.SeriesLabels.FormatString = ""; AxisItem xAxisForLine = new AxisItem(); xAxisForLine.OrientationType = AxisNumber.X_Axis; xAxisForLine.DataType = AxisDataType.String; xAxisForLine.SetLabelAxisType = SetLabelAxisType.ContinuousData; xAxisForLine.Labels.ItemFormatString = ""; AxisItem yAxisForLine = new AxisItem(); yAxisForLine.OrientationType = AxisNumber.Y_Axis; yAxisForLine.DataType = AxisDataType.Numeric; yAxisForLine.Extent = 10; yAxisForLine.Labels.ItemFormatString = ""; yAxisForLine.TickmarkStyle = AxisTickStyle.Smart; area.Axes.Add(xAxisForStackBar); area.Axes.Add(yAxisForStackBar); area.Axes.Add(xAxisForLine); area.Axes.Add(yAxisForLine); ChartLayerAppearance stackBarLayer = new ChartLayerAppearance(); stackBarLayer.ChartType = ChartType.StackBarChart; stackBarLayer.Series.Add(stackSeries1); stackBarLayer.Series.Add(stackSeries2); stackBarLayer.ChartArea = area; stackBarLayer.AxisX = xAxisForStackBar; stackBarLayer.AxisY = yAxisForStackBar; ChartLayerAppearance lineLayer = new ChartLayerAppearance(); lineLayer.ChartType = ChartType.LineChart; lineLayer.Series.Add(lineSeries1); lineLayer.Series.Add(lineSeries2); lineLayer.ChartArea = area; lineLayer.AxisX = xAxisForLine; lineLayer.AxisY = yAxisForLine; UltraChart_scls_qj.CompositeChart.ChartAreas.Add(area); UltraChart_scls_qj.CompositeChart.ChartLayers.Add(stackBarLayer); UltraChart_scls_qj.CompositeChart.ChartLayers.Add(lineLayer); } private void Export() { if (ultraTabControl1.ActiveTab.Key == "scls") { string title = "生产流速——"; if (rB_dc.Checked) { title += rB_dc.Text; } else if (rB_qx.Checked) { title += rB_qx.Text; } else if (rB_dpsp.Checked) { title += rB_dpsp.Text; } else if (rB_dppd.Checked) { title += rB_dppd.Text; } else if (rB_lxwt.Checked) { title += rB_lxwt.Text; } else if (rB_lxfx.Checked) { title += rB_lxfx.Text; } else if (rB_fp.Checked) { title += rB_fp.Text; } GridHelper.ulGridToExcel(ultraGrid_scls, title); } else if (ultraTabControl1.ActiveTab.Key == "scls_kf") { string title = "生产流速——"; title += "扣分表"; GridHelper.ulGridToExcel(ultraGrid_scls_kf, title); } else if (ultraTabControl1.ActiveTab.Key == "sczq" && ultraTabControl2.ActiveTab.Key == "tab_pz") { GridHelper.ulGridToExcel(ultraGrid_pzwl, "生产周期(品种)"); } else if (ultraTabControl1.ActiveTab.Key == "sczq" && ultraTabControl2.ActiveTab.Key == "tab_wl") { GridHelper.ulGridToExcel(ultraGrid_pzwl, "生产周期(物料)"); } else if (ultraTabControl1.ActiveTab.Key == "sczq" && ultraTabControl2.ActiveTab.Key == "tab_pzwl") { GridHelper.ulGridToExcel(ultraGrid_pzwl, "生产周期(品种+物料)"); } else if (ultraTabControl1.ActiveTab.Key == "htzq") { GridHelper.ulGridToExcel(ultraGrid_htzq, ultraTabControl1.ActiveTab.Text); } else { MessageBox.Show("没有要导出的数据!"); } } private void getsczq() { WaitingForm2 wf = new WaitingForm2("正在加载数据,请稍候...."); try { string mydate1 = ((DateTime)this.fromdate.Value).ToString("yyyy-MM-dd"); string mydate2 = ((DateTime)this.todate.Value).ToString("yyyy-MM-dd"); if (ultraTabControl2.ActiveTab.Key == "tab_pz") { if (dataTable3.Rows.Count > 0) dataTable3.Rows.Clear(); /*ultraGrid_pzwl.Visible = false; ultraGrid_wl.Visible = false; ultraGrid_pz.Dock = DockStyle.Fill; ultraGrid_pz.Visible = true;*/ DataTable dtqry1 = ServerHelper.GetData("com.steering.rpt.scls.SCLS.getSCLS_SCLS_PZ", new object[] { mydate1, mydate2 }, this.ob); GridHelper.CopyDataToDatatable(ref dtqry1, ref dataTable3, true); RefreshSetting(ultraGrid_pz, ((DateTime)this.rptdate.Value).ToString("yyyy年M月d日")); } else if (ultraTabControl2.ActiveTab.Key == "tab_wl") { if (dataTable4.Rows.Count > 0) dataTable4.Rows.Clear(); /*ultraGrid_pz.Visible = false; ultraGrid_pzwl.Visible = false; ultraGrid_wl.Dock = DockStyle.Fill; ultraGrid_wl.Visible = true;*/ DataTable dtqry2 = ServerHelper.GetData("com.steering.rpt.scls.SCLS.getSCLS_SCLS_WL", new object[] { mydate1, mydate2 }, this.ob); GridHelper.CopyDataToDatatable(ref dtqry2, ref this.dataTable4, true); RefreshSetting(ultraGrid_wl, ((DateTime)this.rptdate.Value).ToString("yyyy年M月d日")); } else if (ultraTabControl2.ActiveTab.Key == "tab_pzwl") { if (dataTable2.Rows.Count > 0) dataTable2.Rows.Clear(); if (dataTable1.Rows.Count > 0) dataTable1.Rows.Clear(); /*ultraGrid_pz.Visible = false; ultraGrid_wl.Visible = false; ultraGrid_pzwl.Dock = DockStyle.Fill; ultraGrid_pzwl.Visible = true;*/ DataTable dtqry1 = ServerHelper.GetData("com.steering.rpt.scls.SCLS.getSCLS_SCLS_PZ", new object[] { mydate1, mydate2 }, this.ob); DataTable dtqry2 = ServerHelper.GetData("com.steering.rpt.scls.SCLS.getSCLS_SCLS_WL", new object[] { mydate1, mydate2 }, this.ob); GridHelper.CopyDataToDatatable(ref dtqry1, ref this.dataTable1, true); GridHelper.CopyDataToDatatable(ref dtqry2, ref this.dataTable2, true); RefreshSetting(ultraGrid_pzwl, ((DateTime)this.rptdate.Value).ToString("yyyy年M月d日")); } wf.Close(); } catch (Exception e) { MessageBox.Show(e.Message); } finally { wf.Close(); } } public static void RefreshSetting(Infragistics.Win.UltraWinGrid.UltraGrid ultraGrid, string mydate) { ultraGrid.DataBind(); foreach (Infragistics.Win.UltraWinGrid.UltraGridBand band in ultraGrid.DisplayLayout.Bands) { //band.Header.Caption = "生产周期"; foreach (Infragistics.Win.UltraWinGrid.UltraGridColumn column in band.Columns) { if (column.Key != "material_no" && column.Key != "material_name") column.PerformAutoResize(Infragistics.Win.UltraWinGrid.PerformAutoSizeType.AllRowsInBand); } if (band.Key == "Table2" || band.Key == "Relation1") { foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in band.GetRowEnumerator(Infragistics.Win.UltraWinGrid.GridRowType.DataRow)) { if (row.Cells["material_no"].Text != "") { row.Cells["material_no"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.Button; row.Cells["material_no"].ButtonAppearance.Cursor = Cursors.Hand; row.Cells["material_no"].ToolTipText = "点击查看炉数据!"; } } } } ultraGrid.Refresh(); } private void getscls_kf() { string mydate1 = ((DateTime)this.sclskf_month.Value).ToString("yyyy-MM-") + "01"; days = (DateTime.DaysInMonth(((DateTime)this.sclskf_month.Value).Year, ((DateTime)this.sclskf_month.Value).Month)); string mydate2 = ((DateTime)this.sclskf_month.Value).ToString("yyyy-MM-") + Convert.ToString(100 + days).Substring(1, 2); WaitingForm2 wf = new WaitingForm2("正在加载数据,请稍候...."); try { if (dataTable6.Rows.Count > 0) dataTable6.Rows.Clear(); if (dataTable5.Rows.Count > 0) dataTable5.Rows.Clear(); string mymethodid = "com.steering.rpt.scls.SCLS.getSCLS_TotalKF"; DataTable dtqry1 = new DataTable(); dtqry1 = ServerHelper.GetData(mymethodid, new object[] { mydate1, mydate2 }, this.ob); DataTable dtqry = dtqry1.Clone(); dtqry.Columns["kf"].DataType = typeof(decimal); dtqry.Columns["qz"].DataType = typeof(decimal); dtqry.Columns["kfqz"].DataType = typeof(decimal); foreach (DataRow dr in dtqry1.Rows) { dtqry.ImportRow(dr); } DataTable dtqrytotalkf = dataTable5.Clone(); DataView dvtotalkf = dtqry.DefaultView; dvtotalkf.Sort = "area_code"; DataTable dttotal = dvtotalkf.ToTable(true, "area");//注:其中ToTable()的第一个参数为是否DISTINCT DataTable dtqrydetailkf = dataTable6.Clone(); DataView dvdetail = dtqry.DefaultView; dvdetail.Sort = "area_code,dept,processcode,pline_name"; DataTable dtdetail = dvdetail.ToTable(true, "area", "dept", "processcode", "pline_name");//注:其中ToTable()的第一个参数为是否DISTINCT if (dttotal.Rows.Count == 0) { MessageBox.Show("没有查到数据!"); } else { DataView dvcreatetime = dtqry.DefaultView; dvcreatetime.Sort = "createdate,area,dept,processcode,pline_name"; foreach (DataRow dr in dttotal.Rows) { DataRow myrow = dtqrytotalkf.NewRow(); myrow["area"] = dr["area"]; dvcreatetime.RowFilter = "area='" + dr["area"].ToString() + "'"; DataTable dt = dvcreatetime.ToTable(); foreach (DataColumn col in dtqrytotalkf.Columns) { if (col.Caption.Contains("日")) { string selectstr = "createdate='" + ((DateTime)this.sclskf_month.Value).ToString("yyyy-MM-") + col.ColumnName + "'"; if (!(dt.Compute("sum(kfqz)", selectstr) is System.DBNull)) { decimal kfqz = (decimal)dt.Compute("sum(kfqz)", selectstr); decimal kf = (decimal)dt.Compute("sum(kf)", selectstr); if (kf > 0) { myrow[col.ColumnName] = Math.Round(kfqz / kf, 1); } } } else if (col.Caption.Contains("平均")) { string selectstr = "1=1"; if (!(dt.Compute("sum(kfqz)", selectstr) is System.DBNull)) { decimal kfqz = (decimal)dt.Compute("sum(kfqz)", selectstr); decimal kf = (decimal)dt.Compute("sum(kf)", selectstr); if (kf > 0) { myrow[col.ColumnName] = Math.Round(kfqz / kf, 1); } } } } dtqrytotalkf.Rows.Add(myrow); } foreach (DataRow dr in dtdetail.Rows) { DataRow myrow = dtqrydetailkf.NewRow(); myrow["area"] = dr["area"]; myrow["dept"] = dr["dept"]; myrow["processcode"] = dr["processcode"]; myrow["pline_name"] = dr["pline_name"]; myrow["dept_processcode"] = dr["area"].ToString() + dr["dept"].ToString() + dr["processcode"].ToString(); dvcreatetime.RowFilter = "area='" + dr["area"].ToString() + "' and pline_name='" + dr["pline_name"] + "'"; DataTable dt = dvcreatetime.ToTable(); foreach (DataColumn col in dtqrydetailkf.Columns) { if (col.Caption.Contains("日")) { string selectstr = "createdate='" + ((DateTime)this.sclskf_month.Value).ToString("yyyy-MM-") + col.ColumnName + "'"; if (!(dt.Compute("sum(kfqz)", selectstr) is System.DBNull)) { decimal kfqz = (decimal)dt.Compute("sum(kfqz)", selectstr); decimal kf = (decimal)dt.Compute("sum(kf)", selectstr); if (kf > 0) { myrow[col.ColumnName] = Math.Round(kfqz / kf, 1); } } } else if (col.Caption.Contains("平均")) { string selectstr = "1=1"; if (!(dt.Compute("sum(kfqz)", selectstr) is System.DBNull)) { decimal kfqz = (decimal)dt.Compute("sum(kfqz)", selectstr); decimal kf = (decimal)dt.Compute("sum(kf)", selectstr); if (kf > 0) { myrow[col.ColumnName] = Math.Round(kfqz / kf, 1); } } } } dtqrydetailkf.Rows.Add(myrow); } summarykf(dtqrydetailkf); } GridHelper.CopyDataToDatatable(ref dtqrytotalkf, ref this.dataTable5, true); GridHelper.CopyDataToDatatable(ref dtqrydetailkf, ref this.dataTable6, true); setgridcolunm_kf(ultraGrid_scls_kf); wf.Close(); } catch (Exception e) { MessageBox.Show(e.Message); } finally { wf.Close(); } } private void summarykf(DataTable dtqry) { string area = dtqry.Rows[0]["area"].ToString(); string dept = dtqry.Rows[0]["dept"].ToString(); string processcode = dtqry.Rows[0]["processcode"].ToString(); string pline = dtqry.Rows[0]["pline_name"].ToString(); int row_count = dtqry.Rows.Count; int pline_count = 0, processcode_count = 0; for (int row_index = 0; row_index < row_count; row_index++) { DataRow dr = dtqry.Rows[row_index]; //dr["dept_processcode"] = dr["area"].ToString() + dr["dept"].ToString() + dr["processcode"].ToString(); if (area + dept != dr["area"].ToString() + dr["dept"].ToString()) { if (processcode_count != pline_count && pline_count > 1) { addsummry(dtqry, area, area + dept + processcode, dept, processcode, "小计", row_index); row_index++; row_count++; } if (processcode_count > 1) { addsummry(dtqry, area, area + dept + processcode, dept, "合计", "", row_index); row_index++; row_count++; } pline_count = 0; processcode_count = 0; } else if (area + dept == dr["area"].ToString() + dr["dept"].ToString() && processcode != dr["processcode"].ToString()) { if (pline_count > 1) { addsummry(dtqry, area, area + dept + processcode, dept, processcode, "小计", row_index); row_index++; row_count++; } pline_count = 0; } area = dtqry.Rows[row_index]["area"].ToString(); dept = dtqry.Rows[row_index]["dept"].ToString(); processcode = dtqry.Rows[row_index]["processcode"].ToString(); pline = dtqry.Rows[row_index]["pline_name"].ToString(); pline_count++; processcode_count++; } if (pline_count > 1) { addsummry(dtqry, area, area + dept + processcode, dept, processcode, "小计", -1); } if (processcode_count > 1) { addsummry(dtqry, area, area + dept + processcode, dept, "合计", "", -1); } } private void addsummry(DataTable dt, string area, string dept_processcode, string dept, string processcode, string pline_name, int row_index) { DataRow myrow = dt.NewRow(); myrow["area"] = area; myrow["dept_processcode"] = area + dept + processcode; myrow["dept"] = dept; myrow["processcode"] = processcode; myrow["pline_name"] = pline_name; foreach (DataColumn col in dt.Columns) { string selectstr = ""; if (pline_name == "小计") selectstr = "dept_processcode='" + dept_processcode + "' and pline_name<>'小计' and pline_name<>''"; else if (processcode == "合计") selectstr = "area='" + area + "' and dept='" + dept + "' and pline_name<>'小计' and pline_name<>''"; if (col.Caption.Contains("日") || col.Caption.Contains("平均")) { string sql = "avg([" + col.ColumnName + "])"; if (!(dt.Compute(sql, selectstr) is System.DBNull)) { decimal pjz = (decimal)dt.Compute(sql, selectstr); if (pjz > 0) { myrow[col.ColumnName] = Math.Round(pjz, 1); } } } } if (row_index == -1) dt.Rows.Add(myrow); else dt.Rows.InsertAt(myrow, row_index); } private void setgridcolunm_kf(Infragistics.Win.UltraWinGrid.UltraGrid ultraGrid) { ultraGrid.DisplayLayout.Bands[0].Groups[0].Header.Caption = ((DateTime)this.sclskf_month.Value).ToString("yyyy") + "年" + Convert.ToInt32(((DateTime)this.sclskf_month.Value).ToString("MM")).ToString() + "月扣分"; foreach (Infragistics.Win.UltraWinGrid.UltraGridBand band in ultraGrid.DisplayLayout.Bands) { foreach (Infragistics.Win.UltraWinGrid.UltraGridColumn col in band.Columns) { if (col.Header.Caption.Contains("日") && Convert.ToInt32(col.Key) > days) { col.Hidden = true; } col.Header.Appearance.TextHAlign = Infragistics.Win.HAlign.Center; if (col.Header.Caption.Contains("日") || col.Header.Caption.Contains("平均")) { col.CellAppearance.TextHAlign = Infragistics.Win.HAlign.Right; } col.PerformAutoResize(Infragistics.Win.UltraWinGrid.PerformAutoSizeType.AllRowsInBand); } if (band.Index == 1) { CustomMergedCellEvaluator merge = new CustomMergedCellEvaluator("dept_processcode"); band.Columns["processcode"].MergedCellEvaluator = merge; } int i = 0; decimal min = 0, max = 0; foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in band.GetRowEnumerator(Infragistics.Win.UltraWinGrid.GridRowType.DataRow)) { if (band.Index == 1 && row.Cells["pline_name"].Text == "小计") { row.Cells["pline_name"].Appearance.BackColor = Color.LightYellow; for (int j = 3; j < band.Columns.Count; j++) { row.Cells[i].Appearance.BackColor = Color.LemonChiffon; } } else if (band.Index == 1 && row.Cells["processcode"].Text == "合计") { row.Cells["processcode"].Appearance.BackColor = Color.LemonChiffon; ; row.Cells["pline_name"].Appearance.BackColor = Color.LemonChiffon; ; for (int j = 3; j < band.Columns.Count; j++) { row.Cells[i].Appearance.BackColor = Color.LightYellow; ; } } else { foreach (Infragistics.Win.UltraWinGrid.UltraGridColumn col in band.Columns) { if (col.Header.Caption.Contains("日") && row.Cells[col].Text != "") { decimal myvalue = Convert.ToDecimal(row.Cells[col].Text); if (myvalue > max) { max = myvalue; } if (myvalue < min || min == 0) { min = myvalue; } } } } } if (min < max) { foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in band.GetRowEnumerator(Infragistics.Win.UltraWinGrid.GridRowType.DataRow)) { foreach (Infragistics.Win.UltraWinGrid.UltraGridColumn col in band.Columns) { if (col.Header.Caption.Contains("日") && row.Cells[col].Text == max.ToString()) { row.Cells[col].Appearance.ForeColor = Color.Red; row.Cells[col].Appearance.FontData.Bold = Infragistics.Win.DefaultableBoolean.True; row.Cells[col].Appearance.BackColor = Color.LightGoldenrodYellow; } else if (col.Header.Caption.Contains("日") && row.Cells[col].Text == min.ToString()) { row.Cells[col].Appearance.FontData.Bold = Infragistics.Win.DefaultableBoolean.True; row.Cells[col].Appearance.BackColor = Color.PaleGreen; } } } } } //ultraGrid.Refresh(); } private void getscls() { WaitingForm2 wf = new WaitingForm2("正在加载数据,请稍候...."); try { string mydate = ((DateTime)this.rptdate.Value).ToString("yyyy-MM-dd"); string mymethodid = "", sign = ""; DataTable dtqry = new DataTable(); if (rB_dc.Checked) { mymethodid = "com.steering.rpt.scls.SCLS.getSCLS_DC"; sign = "DC"; isnew = true; } else if (rB_qx.Checked) { mymethodid = "com.steering.rpt.scls.SCLS.getSCLS_QX"; sign = "QX"; isnew = true; } else if (rB_dpsp.Checked) { mymethodid = "com.steering.rpt.scls.SCLS.getSCLS_DPSP"; sign = "DPSP"; isnew = true; } else if (rB_dppd.Checked) { mymethodid = "com.steering.rpt.scls.SCLS.getSCLS_DPPD"; sign = "DPPD"; isnew = true; } else if (rB_lxwt.Checked) { mymethodid = "com.steering.rpt.scls.SCLS.getSCLS_LXWT"; sign = "LXWT"; isnew = true; } else if (rB_lxfx.Checked) { mymethodid = "com.steering.rpt.scls.SCLS.getSCLS_LXFX"; sign = "LXFX"; isnew = true; } else if (rB_fp.Checked) { mymethodid = "com.steering.rpt.scls.SCLS.getSCLS_FP"; sign = "FP"; isnew = true; } if (mymethodid != "") { dtqry = ServerHelper.GetData(mymethodid, new object[] { mydate }, this.ob); wf.Close(); DataTable dtqry1 = dtqry.Clone(); dtqry1.Columns["kf"].DataType = typeof(decimal); dtqry1.Columns["qz"].DataType = typeof(decimal); if (dtqry1.Columns.IndexOf("dc_hours") >= 0) dtqry1.Columns["dc_hours"].DataType = typeof(decimal); if (dtqry1.Columns.IndexOf("dc_days") >= 0) dtqry1.Columns["dc_days"].DataType = typeof(decimal); if (dtqry1.Columns.IndexOf("PLN_OUTSINGLE_NUM") >= 0) dtqry1.Columns["PLN_OUTSINGLE_NUM"].DataType = typeof(decimal); if (dtqry1.Columns.IndexOf("PLN_OUTSINGLE_W") >= 0) dtqry1.Columns["PLN_OUTSINGLE_W"].DataType = typeof(decimal); foreach (DataRow dr in dtqry.Rows) { dtqry1.ImportRow(dr); } if (dtqry1.Rows.Count > 0) { UltraColumnChart_scls.Visible = true; UltraPieChart_scls.Visible = true; ultraGrid_scls.DataSource = dtqry1; setgridcolunmName(ultraGrid_scls, sign); //RefreshAndAutoSize(ultraGrid_scls); DataTable dtqry2 = dtqry1.Copy(); DataView dv = dtqry2.DefaultView; dv.RowFilter = "kf>0"; dtqry2 = dv.ToTable(); getproccestree(ultraTree_scls, dtqry2); setchartpoints(dtqry2); //getcolumnchart_scls("大工序", UltraColumnChart_scls, dtqry, "DGX"); //getpiechart_scls(UltraColumnChart_scls.Series[0].Label, UltraPieChart_scls, dtqry, "DGX"); getcolumnchart_scls(ultraTree_scls.Nodes[0].Text, UltraColumnChart_scls, dtqry2, "DGX"); getpiechart_scls(ultraTree_scls.Nodes[0].Nodes[0].Text, UltraPieChart_scls, dtqry2, "DGX"); ultraTree_scls.Nodes[0].Selected = true; isnew = false; } else { ultraTree_scls.Nodes.Clear(); ultraGrid_scls.DataSource = null; UltraColumnChart_scls.Visible = false; UltraPieChart_scls.Visible = false; this.alert("没有数据!"); } } } catch (Exception e) { MessageBox.Show(e.Message); } finally { wf.Close(); } } private void getscls_qj() { WaitingForm2 wf = new WaitingForm2("正在加载数据,请稍候...."); try { string mydate1 = ((DateTime)this.scls_fromdate.Value).ToString("yyyy-MM-dd"); string mydate2 = ((DateTime)this.scls_todate.Value).ToString("yyyy-MM-dd"); string mymethodid = "com.steering.rpt.scls.SCLS.getSCLS_TotalKF"; DataTable dtqry = new DataTable(); dtqry = ServerHelper.GetData(mymethodid, new object[] { mydate1, mydate2 }, this.ob); string mysql = ""; if (cB_dcqj.Checked == false) mysql += mysql == "" ? "sign<>'DC'" : " and sign<>'DC'"; if (cB_qxqj.Checked == false) mysql += mysql == "" ? "sign<>'QX'" : " and sign<>'QX'"; if (cB_dpspqj.Checked == false) mysql += mysql == "" ? "sign<>'DSP'" : " and sign<>'DSP'"; if (cB_dppdqj.Checked == false) mysql += mysql == "" ? "sign<>'DPD'" : " and sign<>'DPD'"; if (cB_lxwtqj.Checked == false) mysql += mysql == "" ? "sign<>'LXWT'" : " and sign<>'LXWT'"; if (cB_lxfxqj.Checked == false) mysql += mysql == "" ? "sign<>'LXFX'" : " and sign<>'LXFX'"; if (cB_fpqj.Checked == false) mysql += mysql == "" ? "sign<>'FP'" : " and sign<>'FP'"; DataView dv = dtqry.DefaultView; dv.RowFilter = mysql; dtqry = dv.ToTable(); dtqry1 = new DataTable(); dtqry1 = dtqry.Clone(); dtqry1.Columns["kf"].DataType = System.Type.GetType("System.Int32"); DataView dvdetail = dtqry.DefaultView; dvdetail.Sort = "createdate,processcode,dept,pline_name"; foreach (DataRow dr in dtqry.Rows) { dtqry1.ImportRow(dr); } DataView dvtree = dtqry.DefaultView; dvtree.Sort = "processcode,dept,pline_name"; DataTable dttree = dvtree.ToTable(true, "processcode", "dept", "dept_code", "pline_code", "pline_name");//注:其中ToTable()的第一个参数为是否DISTINCT if (dtqry1.Rows.Count > 0) { getproccestree(ultraTree_scls_qj, dttree, "qj"); wf.Close(); isnew_qj = true; ultraTree_scls_qj.Nodes[0].Selected = true; UltraChart_scls_qj.Visible = true; getlinechart_scls_qj(UltraChart_scls_qj, dtqry1, "DGX"); isnew_qj = false; } else { ultraTree_scls_qj.Nodes.Clear(); UltraChart_scls_qj.Visible = false; this.alert("没有数据!"); } } catch (Exception e) { MessageBox.Show(e.Message); } finally { wf.Close(); } } private void setchartpoints(DataTable myData) { DataTable copyData = myData.Copy(); DataView dataView = copyData.DefaultView; //kfdataTable.Rows.Clear(); dataView.Sort = "kf"; kfdataTable = dataView.ToTable(true, "kf"); piechartpoint = new String[kfdataTable.Rows.Count]; columnchartpoint = new String[kfdataTable.Rows.Count]; int i = 0; foreach (DataRow myrow in kfdataTable.Rows) { string selectstr = "kf=" + myrow["kf"].ToString(); if (rB_dc.Checked) { piechartpoint[i] = (myData.Select(selectstr).Length == 0 ? "" : myData.Select(selectstr)[0]["kfsm"].ToString().Replace("流速-待产,", "")); } else if (rB_qx.Checked) { piechartpoint[i] = (myData.Select(selectstr).Length == 0 ? "" : myData.Select(selectstr)[0]["kfsm"].ToString().Replace("流速-清线,", "")); } else if (rB_dpsp.Checked) { piechartpoint[i] = (myData.Select(selectstr).Length == 0 ? "" : myData.Select(selectstr)[0]["kfsm"].ToString().Replace("流速-待判-送判,", "")); } else if (rB_dppd.Checked) { piechartpoint[i] = (myData.Select(selectstr).Length == 0 ? "" : myData.Select(selectstr)[0]["kfsm"].ToString().Replace("流速-送判-判定,", "")); } else if (rB_lxwt.Checked) { piechartpoint[i] = (myData.Select(selectstr).Length == 0 ? "" : myData.Select(selectstr)[0]["kfsm"].ToString().Replace("流速-离线-委托,", "")); } else if (rB_lxfx.Checked) { piechartpoint[i] = (myData.Select(selectstr).Length == 0 ? "" : myData.Select(selectstr)[0]["kfsm"].ToString().Replace("流速-离线-返线(仅除锈),", "").Replace("流速-离线-返线,", "")); } else if (rB_fp.Checked) { piechartpoint[i] = (myData.Select(selectstr).Length == 0 ? "" : myData.Select(selectstr)[0]["kfsm"].ToString().Replace("流速-废品,", "")); } columnchartpoint[i] = piechartpoint[i];//.Replace("不扣分", "").Replace("扣1分", "").Replace("扣2分", ""); i++; } } private void getcolumnchart_scls(string title, UltraChart mychart, DataTable myData, string sign) { string myselectstr = ""; // 在此处放置用户代码以初始化页面 //step1:Change the ChartType property to "Composite." mychart.ChartType = ChartType.Composite; mychart.TitleTop.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold); mychart.TitleTop.Text = title; if (rB_dc.Checked) mychart.TitleBottom.Text = rB_dc.Text + "扣分炉数"; else if (rB_qx.Checked) mychart.TitleBottom.Text = rB_qx.Text + "扣分炉数"; else if (rB_dpsp.Checked) mychart.TitleBottom.Text = rB_dpsp.Text + "扣分炉数"; else if (rB_dppd.Checked) mychart.TitleBottom.Text = rB_dppd.Text + "扣分炉数"; else if (rB_lxwt.Checked) mychart.TitleBottom.Text = rB_lxwt.Text + "扣分炉数"; else if (rB_lxfx.Checked) mychart.TitleBottom.Text = rB_lxfx.Text + "扣分炉数"; else if (rB_fp.Checked) mychart.TitleBottom.Text = rB_fp.Text + "扣分炉数"; //step2:Add a ChartArea to the ChartAreas collection. ChartArea myChartArea = new ChartArea(); myChartArea.BoundsMeasureType = MeasureType.Percentage; myChartArea.Bounds = new Rectangle(0, 10, 100, 80); myChartArea.Border.Thickness = 0; mychart.CompositeChart.ChartAreas.Add(myChartArea); //step3:Add some Axes to the ChartArea. AxisItem axisX = new AxisItem(); axisX.OrientationType = AxisNumber.X_Axis; axisX.DataType = AxisDataType.String; axisX.SetLabelAxisType = SetLabelAxisType.GroupBySeries; axisX.Labels.ItemFormatString = ""; axisX.Labels.Visible = false; axisX.Labels.Orientation = TextOrientation.VerticalLeftFacing; AxisItem axisY = new AxisItem(); axisY.OrientationType = AxisNumber.Y_Axis; axisY.DataType = AxisDataType.Numeric; axisY.Labels.ItemFormatString = ""; axisY.Labels.SeriesLabels.VerticalAlign = System.Drawing.StringAlignment.Near; //axisY.Labels.VerticalAlign = System.Drawing.StringAlignment.Near; /*AisItem axisY1 = new AxisItem(); axisY1.OrientationType = AxisNumber.Y2_Axis; axisY1.DataType = AxisDataType.Numeric; axisY1.TickmarkStyle = AxisTickStyle.Percentage; axisY1.TickmarkPercentage = 10; axisY1.Labels.ItemFormatString = ""; axisY1.Labels.SeriesLabels.VerticalAlign = System.Drawing.StringAlignment.Near; */ myChartArea.Axes.Add(axisX); myChartArea.Axes.Add(axisY); //ChartArea.Axes.Add(axisY1); //step4:Add some data series to the Series collection. string series_Label = "", selectstr, Point_value; DataView mydataview = myData.DefaultView; if (sign == "DGX") { series_Label = getprocess(myData.Rows[0]["processcode"].ToString()); myselectstr = "processcode='" + myData.Rows[0]["processcode"].ToString() + "'"; } else if (sign == "GX-BM") { mydataview.RowFilter = "processcode='" + ultraTree_scls.ActiveNode.Key + "'"; mydataview.Sort = "processcode,dept_code"; myData = mydataview.ToTable(); series_Label = myData.Rows[0]["dept"].ToString(); myselectstr = "dept_code='" + myData.Rows[0]["dept_code"].ToString() + "'"; } else if (sign == "BM-CX") { mydataview.RowFilter = "processcode+dept_code='" + ultraTree_scls.ActiveNode.Key + "'"; mydataview.Sort = "processcode,dept_code,pline_code"; myData = mydataview.ToTable(); series_Label = myData.Rows[0]["pline_name"].ToString(); myselectstr = "pline_code='" + myData.Rows[0]["pline_code"].ToString() + "'"; } NumericSeries series = new NumericSeries(); series.Points.Clear(); int i = 0; Color[] mycorlors = new Color[kfdataTable.Rows.Count]; foreach (DataRow mykfrow in kfdataTable.Rows) { mycorlors[i] = sclsdrcorlorsdictionary[mykfrow["kf"].ToString()]; if (columnchartpoint[i] != "") { selectstr = myselectstr + " and kf=" + mykfrow["kf"].ToString(); Point_value = myData.Compute("count(kf)", selectstr).ToString(); if (Point_value == "") Point_value = "0"; series.Points.Add(new NumericDataPoint(Convert.ToDouble(Point_value), columnchartpoint[i], false)); } i++; } series.Label = series_Label; mychart.Data.MinValue = 0; mychart.CompositeChart.Series.Add(series); //step5:Add a chart layer. ChartLayerAppearance myColumnLayer = new ChartLayerAppearance(); myColumnLayer.ChartType = ChartType.ColumnChart; myColumnLayer.ChartArea = myChartArea; myColumnLayer.AxisX = axisX; myColumnLayer.AxisY = axisY; // myColumnLayer.AxisY2 = axisY1; myColumnLayer.Series.Clear(); myColumnLayer.Series.Add(series); foreach (DataRow myrow in myData.Rows) { if (sign == "DGX") { series_Label = getprocess(myrow["processcode"].ToString()); } else if (sign == "GX-BM") { series_Label = myrow["dept"].ToString(); } else if (sign == "BM-CX") { series_Label = myrow["pline_name"].ToString(); } if (series.Label != series_Label) { series = new NumericSeries(); series.Label = series_Label; if (sign == "DGX") { myselectstr = "processcode='" + myrow["processcode"].ToString() + "'"; } else if (sign == "GX-BM") { myselectstr = "dept_code='" + myrow["dept_code"].ToString() + "'"; } else if (sign == "BM-CX") { myselectstr = "pline_code='" + myrow["pline_code"].ToString() + "'"; } i = 0; foreach (DataRow mykfrow in kfdataTable.Rows) { if (columnchartpoint[i] != "") { selectstr = myselectstr + " and kf=" + mykfrow["kf"].ToString(); Point_value = myData.Compute("count(kf)", selectstr).ToString(); if (Point_value == "") Point_value = "0"; series.Points.Add(new NumericDataPoint(Convert.ToDouble(Point_value), columnchartpoint[i], false)); } i++; } mychart.CompositeChart.Series.Add(series); myColumnLayer.Series.Add(series); } } if (myColumnLayer.Series.Count > 4) { myColumnLayer.AxisX.Labels.SeriesLabels.Orientation = TextOrientation.Custom;//.VerticalLeftFacing; myColumnLayer.AxisX.Labels.SeriesLabels.OrientationAngle = 250; myColumnLayer.AxisX.Labels.SeriesLabels.Flip = true; } mychart.CompositeChart.ChartLayers.Clear(); mychart.ColorModel.ModelStyle = ColorModels.CustomLinear; mychart.ColorModel.CustomPalette = mycorlors; mychart.CompositeChart.ChartLayers.Add(myColumnLayer); //step6:Add a legend to the chart. //CompositeLegend myLegend = new CompositeLegend(); //CompositeLegend a = new CompositeLegend(); Infragistics.UltraChart.Resources.Appearance.CompositeLegend myLegend = new Infragistics.UltraChart.Resources.Appearance.CompositeLegend(); //Infragistics.UltraChart.Resources.Appearance.CompositeLegendAppearance myLegend.ChartLayers.Add(myColumnLayer); myLegend.Bounds = new Rectangle(20, 90, 60, 8); myLegend.BoundsMeasureType = MeasureType.Percentage; myLegend.PE.ElementType = PaintElementType.Gradient; myLegend.PE.FillGradientStyle = GradientStyle.ForwardDiagonal; //myLegend.PE.Fill = Color.CornflowerBlue; myLegend.PE.Fill = Color.FloralWhite; myLegend.PE.FillStopColor = Color.Transparent; myLegend.Border.CornerRadius = 10; myLegend.Border.Thickness = 0; mychart.CompositeChart.Legends.Clear(); mychart.CompositeChart.Legends.Add(myLegend); } private void getlinechart_scls_qj(UltraChart mychart, DataTable myData, string sign) { mychart.TitleBottom.Text = ((DateTime)this.scls_fromdate.Value).ToString("yyyy-MM-dd") + " - " + ((DateTime)this.scls_todate.Value).ToString("yyyy-MM-dd") + "区间生产流速扣分图"; DataView mydataview = myData.DefaultView; if (sign == "DGX") { mydataview.RowFilter = "processcode='" + ultraTree_scls_qj.ActiveNode.Key + "'"; mydataview.Sort = "createdate"; myData = mydataview.ToTable(); mychart.TitleTop.Text = getprocess(myData.Rows[0]["processcode"].ToString()); } else if (sign == "GX-BM") { mydataview.RowFilter = "processcode+dept_code='" + ultraTree_scls_qj.ActiveNode.Key + "'"; mydataview.Sort = "createdate"; myData = mydataview.ToTable(); mychart.TitleTop.Text = getprocess(myData.Rows[0]["processcode"].ToString()) + ":" + myData.Rows[0]["dept"]; } else if (sign == "BM-CX") { mydataview.RowFilter = "pline_code='" + ultraTree_scls_qj.ActiveNode.Key + "'"; mydataview.Sort = "createdate"; myData = mydataview.ToTable(); mychart.TitleTop.Text = getprocess(myData.Rows[0]["processcode"].ToString()) + " - " + myData.Rows[0]["dept"] + ":" + myData.Rows[0]["pline_name"].ToString(); } DataView dvls = myData.DefaultView; dvls.Sort = "signxh"; DataTable dtls = dvls.ToTable(true, "sign");//注:其中ToTable()的第一个参数为是否DISTINCT dtls.Columns["sign"].MaxLength = 50; DataView dvdate = myData.DefaultView; dvdate.Sort = "createdate"; DataTable dtdate = dvls.ToTable(true, "createdate");//注:其中ToTable()的第一个参数为是否DISTINCT foreach (DataRow daterow in dtdate.Rows) { dtls.Columns.Add(daterow["createdate"].ToString(), typeof(decimal)); } Color[] mycorlors = new Color[dtls.Rows.Count + 1]; int i_color = 0; foreach (DataRow myrow in dtls.Rows) { mycorlors[i_color] = mycorlorsdictionary[myrow["sign"].ToString()]; i_color++; string selectstr = "sign='" + myrow["sign"].ToString() + "'"; foreach (DataRow daterow in dtdate.Rows) { string myselectstr = " and createdate='" + daterow["createdate"].ToString() + "'"; string value = myData.Compute("sum(kf)", selectstr + myselectstr).ToString(); myrow[daterow["createdate"].ToString()] = value != "" ? Convert.ToDecimal(value) : 0; } myrow["sign"] = mynamedictionary[myrow["sign"].ToString()]; } if (i_color > 1) { mycorlors[i_color] = mycorlorsdictionary["PJ"]; ; DataRow mynewrow = dtls.NewRow(); mynewrow["sign"] = mynamedictionary["PJ"]; foreach (DataRow daterow in dtdate.Rows) { string value = dtls.Compute("avg([" + daterow["createdate"].ToString() + "])", "").ToString(); mynewrow[daterow["createdate"].ToString()] = value != "" ? Math.Round(Convert.ToDecimal(value), 0) : 0; } dtls.Rows.Add(mynewrow); } if (rB_line.Checked) { mychart.ChartType = ChartType.LineChart; mychart.LineChart.Thickness = 2; } else if (rB_Radar.Checked) { mychart.ChartType = ChartType.RadarChart; mychart.RadarChart.LineThickness = myLineThickness; } //mychart.Axis.Y.LogBase= 10; mychart.Axis.Y.LogZero = -50; mychart.Data.DataSource = dtls; UltraChart_scls_qj.Data.IncludeColumn(0, false); UltraChart_scls_qj.Data.MinValue = 0; UltraChart_scls_qj.Data.UseMinMax = true; UltraChart_scls_qj.Data.ZeroAligned = true; /*foreach (ChartTextAppearance mylinetext in UltraChart_scls_qj.LineChart.ChartText) { mylinetext.ItemFormatString = ""; mylinetext.Visible = true; }*/ UltraChart_scls_qj.ColorModel.ModelStyle = ColorModels.CustomLinear; UltraChart_scls_qj.ColorModel.CustomPalette = mycorlors; mychart.Axis.X.Labels.Orientation = TextOrientation.Custom; mychart.Axis.X.Labels.OrientationAngle = 80; mychart.Axis.X.Labels.VerticalAlign = StringAlignment.Far; //mychart.Axis.X.Labels.Flip = false; mychart.Data.DataBind(); } private void getpiechart_scls(string title, UltraChart mychart, DataTable myData, string sign) { //创建绘图区域 ChartArea myChartArea = new ChartArea(); myChartArea.BoundsMeasureType = MeasureType.Percentage; myChartArea.Bounds = new Rectangle(0, 0, 100, 80); myChartArea.Border.Thickness = 0; //表明ChartArea绘图区域占整个UltraChart的比例:宽100%,高80%,位置呢从左顶点(0,0)起 //创建X轴线 AxisItem xAxis = new AxisItem(); xAxis.axisNumber = AxisNumber.X_Axis; xAxis.Labels.Visible = false; xAxis.Labels.Orientation = TextOrientation.VerticalLeftFacing; xAxis.DataType = AxisDataType.String; xAxis.SetLabelAxisType = SetLabelAxisType.GroupBySeries; xAxis.Labels.ItemFormatString = ""; xAxis.Extent = 10; //此处Extent决定着X轴线偏离绘图区域边界的大小,恰当设置轴线的Extent值可以调整图表区域的大小 //控件默认数据绑定 //Infragistics.UltraChart.Resources.Util.DemoSetup(UltraChart2); //Infragistics的UltraChart为其每个图表类型定制了完美的数据,这可以从其图表向导里看到。 //我们并没有指定图表的数据,但是我们所设置好图表属性后,生成的图表默认就绑定了些数据, //这就是控件所定制而来。 //图表轴向间距:可以按百分比控制设置 string selectstr = ""; if (sign == "DGX") { selectstr = "processcode='" + title.Substring(0, 1) + "'"; } else if (sign == "GX-BM") { selectstr = "processcode='" + UltraColumnChart_scls.TitleTop.Text.Substring(0, 1) + "' and dept='" + title + "'"; } else if (sign == "BM-CX") { selectstr = "pline_name='" + title + "'"; } selectstr += " and kf>0"; NumericSeries series = new NumericSeries(); double total = Convert.ToDouble(myData.Compute("count(kf)",selectstr ).ToString() == "" ? "0" : myData.Compute("count(kf)", selectstr).ToString()); int i = 0,j=0; Color[] mycorlors = new Color[kfdataTable.Rows.Count]; foreach (DataRow mykfrow in kfdataTable.Rows) { mycorlors[i] = sclsdrcorlorsdictionary[mykfrow["kf"].ToString()]; if (columnchartpoint[i] != "") { double P_value = 0,P_valuep = 0; String Point_value = myData.Compute("count(kf)", selectstr + " and kf=" + mykfrow["kf"].ToString()).ToString(); if (Point_value == "") Point_value = "0"; else { P_valuep = Math.Round(Convert.ToDouble(Point_value) / total * 100, 2); P_value = Convert.ToDouble(Point_value); } NumericDataPoint datapoint = new NumericDataPoint(P_value, piechartpoint[i] + "(共:" + Point_value + "炉次,占:" + P_valuep.ToString() + "%)", false); //datapoint.Label = Point_value + "(" + P_value.ToString() + ")"; series.Points.Add(datapoint); } i++; } mychart.CompositeChart.Series.Clear(); mychart.CompositeChart.Series.Add(series); //step5:Add a chart layer. /*ChartLayerAppearance mypieLayer = new ChartLayerAppearance(); mypieLayer.ChartType = ChartType.PieChart; mypieLayer.ChartArea = myChartArea; mypieLayer.Series.Add(series);*/ mychart.TitleTop.Text = title; if (rB_dc.Checked) mychart.TitleBottom.Text = rB_dc.Text; else if (rB_qx.Checked) mychart.TitleBottom.Text = rB_qx.Text; else if (rB_dpsp.Checked) mychart.TitleBottom.Text = rB_dpsp.Text; else if (rB_dppd.Checked) mychart.TitleBottom.Text = rB_dppd.Text; else if (rB_lxwt.Checked) mychart.TitleBottom.Text = rB_lxwt.Text; else if (rB_lxfx.Checked) mychart.TitleBottom.Text = rB_lxfx.Text; else if (rB_fp.Checked) mychart.TitleBottom.Text = rB_fp.Text; mychart.Axis.Y.TickmarkStyle = AxisTickStyle.Percentage; mychart.Axis.Y.TickmarkPercentage = 10; //图表轴向间距:可以按照指定数据间隔设置 mychart.Axis.Y.TickmarkStyle = AxisTickStyle.DataInterval; mychart.Axis.Y.TickmarkInterval = 15; //设置图表轴向标签倾角 mychart.Axis.X.Labels.Orientation = Infragistics.UltraChart.Shared.Styles.TextOrientation.Custom; mychart.Axis.X.Labels.OrientationAngle = 240; mychart.Axis.X.Labels.Flip = true; //在饼图上显示提示信息来代替显示数据百分比值 mychart.PieChart.Labels.Format = Infragistics.UltraChart.Shared.Styles.PieLabelFormat.ItemLabel; mychart.PieChart.Labels.FormatString = ""; mychart.CompositeChart.ChartAreas.Clear(); mychart.ColorModel.ModelStyle = ColorModels.CustomLinear; mychart.ColorModel.CustomPalette = mycorlors; mychart.CompositeChart.ChartAreas.Add(myChartArea); Infragistics.UltraChart.Resources.Appearance.CompositeLegend myLegend = new Infragistics.UltraChart.Resources.Appearance.CompositeLegend(); //Infragistics.UltraChart.Resources.Appearance.CompositeLegendAppearance //myLegend.ChartLayers.Add(mypieLayer); myLegend.Bounds = new Rectangle(2, 90, 36, 6); myLegend.BoundsMeasureType = MeasureType.Percentage; myLegend.PE.ElementType = PaintElementType.Gradient; myLegend.PE.FillGradientStyle = GradientStyle.ForwardDiagonal; myLegend.PE.Fill = Color.CornflowerBlue; myLegend.PE.FillStopColor = Color.Transparent; myLegend.Border.CornerRadius = 10; myLegend.Border.Thickness = 0; mychart.CompositeChart.Legends.Add(myLegend); } private DataTable getprocesssum(DataTable dt) { DataTable dtResult = new DataTable(); dtResult.Columns.Add("processcode", Type.GetType("System.String")); dtResult.Columns.Add("kf", Type.GetType("System.String")); dtResult.Columns.Add("kfsm", Type.GetType("System.String")); DataTable dtName = dt.DefaultView.ToTable(true, "processcode", "kf"); for (int i = 0; i < dtName.Rows.Count; i++) { DataRow[] rows = dt.Select("processcode='" + dtName.Rows[i][0] + "' and kf=" + dtName.Rows[i][1] + ""); //temp用来存储筛选出来的数据 DataTable temp = dtResult.Clone(); foreach (DataRow row in rows) { temp.Rows.Add(row.ItemArray); } DataRow dr = dtResult.NewRow(); dr["processcode"] = dtName.Rows[i]["processcode"].ToString(); dr["kf"] = temp.Compute("sum(kf)", ""); dr["kfsm"] = temp.Compute("max(kfsm)", ""); dtResult.Rows.Add(dr); } return dtResult; } /// /// 刷新Grid数据并根据数据调整Grid列宽 /// /// 需要处理的Grid public static void RefreshAndAutoSize(Infragistics.Win.UltraWinGrid.UltraGrid ultraGrid) { try { ultraGrid.DataBind(); foreach (Infragistics.Win.UltraWinGrid.UltraGridBand band in ultraGrid.DisplayLayout.Bands) { foreach (Infragistics.Win.UltraWinGrid.UltraGridColumn column in band.Columns) { column.PerformAutoResize(Infragistics.Win.UltraWinGrid.PerformAutoSizeType.AllRowsInBand); } } ultraGrid.Refresh(); } catch { } } private string getprocess(string processcode) { switch (processcode) { case "A": return processcode + "-炼钢"; case "B": return processcode + "-铸造"; case "D": return processcode + "-轧管"; case "E": return processcode + "-镦拔扩"; case "F": return processcode + "-热处理"; case "G": return processcode + "-加工"; default: return ""; } } private void getproccestree(UltraTree myultraTree, DataTable mytable, String sign = "") { myultraTree.Nodes.Clear(); myultraTree.NodeConnectorColor = System.Drawing.SystemColors.ControlDark; UltraTreeNode treeNode, processNode, deptNode, plineNode; string processkey, deptkey, plinekey; if (mytable.Rows.Count > 0) { treeNode = new UltraTreeNode(); if (sign == "") { treeNode.Key = "1"; treeNode.Text = "大工序"; AddTreeNode(myultraTree, treeNode, null); } processkey = mytable.Rows[0]["processcode"].ToString(); deptkey = mytable.Rows[0]["processcode"].ToString() + mytable.Rows[0]["dept_code"].ToString(); plinekey = mytable.Rows[0]["pline_code"].ToString(); processNode = new UltraTreeNode(); processNode.Key = processkey; processNode.Text = getprocess(processkey); if (sign == "") { AddTreeNode(myultraTree, processNode, treeNode); } else { AddTreeNode(myultraTree, processNode, null); } deptNode = new UltraTreeNode(); deptNode.Key = deptkey; deptNode.Text = mytable.Rows[0]["dept"].ToString(); AddTreeNode(myultraTree, deptNode, processNode); plineNode = new UltraTreeNode(); plineNode.Key = plinekey; plineNode.Text = mytable.Rows[0]["pline_name"].ToString(); AddTreeNode(myultraTree, plineNode, deptNode); foreach (DataRow myrow in mytable.Rows) { processkey = myrow["processcode"].ToString(); deptkey = myrow["processcode"].ToString() + myrow["dept_code"].ToString(); plinekey = myrow["pline_code"].ToString(); if (plineNode.Key != plinekey && deptNode.Key == deptkey && processNode.Key == processkey) { plineNode = new UltraTreeNode(); plineNode.Key = myrow["pline_code"].ToString(); plineNode.Text = myrow["pline_name"].ToString(); AddTreeNode(myultraTree, plineNode, deptNode); } if (deptNode.Key != deptkey && processNode.Key == processkey) { deptNode = new UltraTreeNode(); deptNode.Key = myrow["processcode"].ToString() + myrow["dept_code"].ToString(); deptNode.Text = myrow["dept"].ToString(); AddTreeNode(myultraTree, deptNode, processNode); plineNode = new UltraTreeNode(); plineNode.Key = myrow["pline_code"].ToString(); plineNode.Text = myrow["pline_name"].ToString(); AddTreeNode(myultraTree, plineNode, deptNode); } if (processNode.Key != processkey) { processNode = new UltraTreeNode(); processNode.Key = myrow["processcode"].ToString(); processNode.Text = getprocess(processNode.Key); if (sign == "") { AddTreeNode(myultraTree, processNode, treeNode); } else { AddTreeNode(myultraTree, processNode, null); } deptNode = new UltraTreeNode(); deptNode.Key = myrow["processcode"].ToString() + myrow["dept_code"].ToString(); deptNode.Text = myrow["dept"].ToString(); AddTreeNode(myultraTree, deptNode, processNode); plineNode = new UltraTreeNode(); plineNode.Key = myrow["pline_code"].ToString(); plineNode.Text = myrow["pline_name"].ToString(); AddTreeNode(myultraTree, plineNode, deptNode); } } } } private void getchart() { // 在此处放置用户代码以初始化页面 //step1:Change the ChartType property to "Composite." UltraColumnChart_scls.Visible = true; this.UltraColumnChart_scls.ChartType = ChartType.Composite; //step2:Add a ChartArea to the ChartAreas collection. ChartArea myChartArea = new ChartArea(); this.UltraColumnChart_scls.CompositeChart.ChartAreas.Add(myChartArea); //step3:Add some Axes to the ChartArea. AxisItem axisX = new AxisItem(); axisX.OrientationType = AxisNumber.X_Axis; axisX.DataType = AxisDataType.String; axisX.SetLabelAxisType = SetLabelAxisType.GroupBySeries; axisX.Labels.ItemFormatString = ""; axisX.Labels.Orientation = TextOrientation.VerticalLeftFacing; AxisItem axisY = new AxisItem(); axisY.OrientationType = AxisNumber.Y_Axis; axisY.DataType = AxisDataType.Numeric; axisY.Labels.ItemFormatString = ""; myChartArea.Axes.Add(axisX); myChartArea.Axes.Add(axisY); //step4:Add some data series to the Series collection. NumericSeries seriesA = GetNumericSeriesBound(); NumericSeries seriesB = GetNumericSeriesUnBound(); this.UltraColumnChart_scls.CompositeChart.Series.Add(seriesA); this.UltraColumnChart_scls.CompositeChart.Series.Add(seriesB); //step5:Add a chart layer. ChartLayerAppearance myColumnLayer = new ChartLayerAppearance(); myColumnLayer.ChartType = ChartType.StackColumnChart;//.ColumnChart; myColumnLayer.ChartArea = myChartArea; myColumnLayer.AxisX = axisX; myColumnLayer.AxisY = axisY; myColumnLayer.Series.Add(seriesA); myColumnLayer.Series.Add(seriesB); this.UltraColumnChart_scls.CompositeChart.ChartLayers.Add(myColumnLayer); //step6:Add a legend to the chart. //CompositeLegend myLegend = new CompositeLegend(); //CompositeLegend a = new CompositeLegend(); Infragistics.UltraChart.Resources.Appearance.CompositeLegend myLegend = new Infragistics.UltraChart.Resources.Appearance.CompositeLegend(); //Infragistics.UltraChart.Resources.Appearance.CompositeLegendAppearance myLegend = new CompositeLegendAppearance(); myLegend.ChartLayers.Add(myColumnLayer); myLegend.Bounds = new Rectangle(0, 75, 20, 25); myLegend.BoundsMeasureType = MeasureType.Percentage; myLegend.PE.ElementType = PaintElementType.Gradient; myLegend.PE.FillGradientStyle = GradientStyle.ForwardDiagonal; myLegend.PE.Fill = Color.CornflowerBlue; myLegend.PE.FillStopColor = Color.Transparent; myLegend.Border.CornerRadius = 10; myLegend.Border.Thickness = 0; this.UltraColumnChart_scls.CompositeChart.Legends.Add(myLegend); } private DataTable GetData() { DataTable table = new DataTable(); table.Columns.Add("Label Column", Type.GetType("System.String")); table.Columns.Add("Value Column", Type.GetType("System.Double")); table.Columns.Add("Another Value Column", Type.GetType("System.Double")); table.Rows.Add(new object[] { "Point A", 1.0, 3.0 }); table.Rows.Add(new object[] { "Point B", 2.0, 2.0 }); table.Rows.Add(new object[] { "Point C", 3.0, 1.0 }); table.Rows.Add(new object[] { "Point D", 4.0, 2.0 }); table.Rows.Add(new object[] { "Point E", 5.0, 3.0 }); return table; } /// /// 绑定数据,数据库 /// private NumericSeries GetNumericSeriesBound() { NumericSeries series = new NumericSeries(); series.Label = "Series A"; DataTable table = GetData(); series.Data.DataSource = table; series.Data.LabelColumn = "Label Column"; series.Data.ValueColumn = "Value Column"; return series; } /// /// 绑定数据 /// private NumericSeries GetNumericSeriesUnBound() { NumericSeries series = new NumericSeries(); series.Label = "Series B"; series.Points.Add(new NumericDataPoint(5.0, "Point A", false)); series.Points.Add(new NumericDataPoint(4.0, "Point B", false)); series.Points.Add(new NumericDataPoint(3.0, "Point C", false)); series.Points.Add(new NumericDataPoint(2.0, "Point D", false)); series.Points.Add(new NumericDataPoint(1.0, "Point E", false)); return series; } private void getpiechart() { UltraPieChart_scls.Visible = true; //创建绘图区域 ChartArea myChartArea = new ChartArea(); myChartArea.BoundsMeasureType = MeasureType.Percentage; myChartArea.Bounds = new Rectangle(0, 0, 100, 80); myChartArea.Border.Thickness = 0; //表明ChartArea绘图区域占整个UltraChart的比例:宽100%,高80%,位置呢从左顶点(0,0)起 //创建X轴线 AxisItem xAxis = new AxisItem(); xAxis.axisNumber = AxisNumber.X_Axis; xAxis.Labels.Orientation = TextOrientation.VerticalLeftFacing; xAxis.DataType = AxisDataType.String; xAxis.SetLabelAxisType = SetLabelAxisType.GroupBySeries; xAxis.Labels.ItemFormatString = ""; xAxis.Extent = 10; //此处Extent决定着X轴线偏离绘图区域边界的大小,恰当设置轴线的Extent值可以调整图表区域的大小 //控件默认数据绑定 //Infragistics.UltraChart.Resources.Util.DemoSetup(UltraChart2); //Infragistics的UltraChart为其每个图表类型定制了完美的数据,这可以从其图表向导里看到。 //我们并没有指定图表的数据,但是我们所设置好图表属性后,生成的图表默认就绑定了些数据, //这就是控件所定制而来。 //图表轴向间距:可以按百分比控制设置 NumericSeries series = new NumericSeries(); /*series.Points.Add(new NumericDataPoint(10, "扣2分", false)); series.Points.Add(new NumericDataPoint(20, "扣1分", false)); series.Points.Add(new NumericDataPoint(70, "正常", false));*/ double total = 62 + 41 + 188; series.Points.Add(new NumericDataPoint(62 / total * 100, "扣2分", false)); series.Points.Add(new NumericDataPoint(41 / total * 100, "扣1分", false)); series.Points.Add(new NumericDataPoint(188 / total * 100, "正常", false)); //series.Points.Add(new NumericDataPoint(10, "Up", false)); //series.Points.Add(new NumericDataPoint(15, "Warning", false)); //series.Points.Add(new NumericDataPoint(20, "Critical", false)); //series.Points.Add(new NumericDataPoint(24, "Down", false)); //series.Points.Add(new NumericDataPoint(15, "Unknown", false)); //series.Points.Add(new NumericDataPoint(1, "Unreachable", false)); UltraPieChart_scls.CompositeChart.Series.Add(series); /*series = new NumericSeries(); total = 77 + 55 + 208; series.Points.Add(new NumericDataPoint(77 / total * 100, "扣2分", false)); series.Points.Add(new NumericDataPoint(55 / total * 100, "扣1分", false)); series.Points.Add(new NumericDataPoint(208 / total * 100, "正常", false)); UltraPieChart_dc.CompositeChart.Series.Add(series);*/ UltraPieChart_scls.TitleTop.Text = "轧管"; UltraPieChart_scls.Axis.Y.Labels.Visible = false; UltraPieChart_scls.Axis.Y.TickmarkStyle = AxisTickStyle.Percentage; UltraPieChart_scls.Axis.Y.TickmarkPercentage = 10; //图表轴向间距:可以按照指定数据间隔设置 UltraPieChart_scls.Axis.Y.TickmarkStyle = AxisTickStyle.DataInterval; UltraPieChart_scls.Axis.Y.TickmarkInterval = 15; //设置图表轴向标签倾角 UltraPieChart_scls.Axis.X.Labels.Orientation = Infragistics.UltraChart.Shared.Styles.TextOrientation.Custom; UltraPieChart_scls.Axis.X.Labels.OrientationAngle = 240; UltraPieChart_scls.Axis.X.Labels.Flip = true; //在饼图上显示提示信息来代替显示数据百分比值 UltraPieChart_scls.PieChart.Labels.Format = Infragistics.UltraChart.Shared.Styles.PieLabelFormat.ItemLabel; UltraPieChart_scls.PieChart.Labels.FormatString = ""; UltraPieChart_scls.PieChart.Labels.Visible = false; UltraPieChart_scls.CompositeChart.ChartAreas.Add(myChartArea); Infragistics.UltraChart.Resources.Appearance.CompositeLegend myLegend = new Infragistics.UltraChart.Resources.Appearance.CompositeLegend(); myLegend.Bounds = new Rectangle(0, 75, 20, 25); myLegend.BoundsMeasureType = MeasureType.Percentage; myLegend.PE.ElementType = PaintElementType.Gradient; myLegend.PE.FillGradientStyle = GradientStyle.ForwardDiagonal; myLegend.PE.Fill = Color.CornflowerBlue; myLegend.PE.FillStopColor = Color.Transparent; myLegend.Border.CornerRadius = 10; myLegend.Border.Thickness = 0; this.UltraPieChart_scls.CompositeChart.Legends.Add(myLegend); } private void AddTreeNode(UltraTree myUltraTree, UltraTreeNode node, UltraTreeNode parentnode) { if (parentnode != null) { parentnode.Nodes.Add(node); } else { myUltraTree.Nodes.Add(node); } } private void setgridcolunmName(Infragistics.Win.UltraWinGrid.UltraGrid ultraGrid, String sign) { Dictionary gridcolunmnames = new Dictionary(); if (sign == "DC") { gridcolunmnames.Add("PROCESSCODE", "大工序"); gridcolunmnames.Add("AREA", "区域"); gridcolunmnames.Add("AREA_CODE", "区域代码"); gridcolunmnames.Add("DEPT", "部门"); gridcolunmnames.Add("DEPT_CODE", "部门代码"); gridcolunmnames.Add("PLINE_NAME", "产线名称"); gridcolunmnames.Add("PLINE_CODE", "产线代码"); gridcolunmnames.Add("HEAT_PLAN_NO", "本工序炉计划ID"); gridcolunmnames.Add("JUDGE_STOVE_NO", "判定炉号"); gridcolunmnames.Add("CREATE_TIME", "炉计划创建时间"); gridcolunmnames.Add("BJ_TIME", "比较时间"); gridcolunmnames.Add("DC_HOURS", "待产小时数"); gridcolunmnames.Add("DC_DAYS", "待产天数"); gridcolunmnames.Add("KF", "扣分"); gridcolunmnames.Add("KFSM", "扣分说明"); gridcolunmnames.Add("PLANSTATUS", "计划状态"); gridcolunmnames.Add("ORDERNO", "合同号"); gridcolunmnames.Add("CREATETIME", "创建时间"); gridcolunmnames.Add("SPEC_NAME", "规格"); gridcolunmnames.Add("STEELNAME", "钢级"); gridcolunmnames.Add("PRODUCNAME", "品种"); gridcolunmnames.Add("MODEL_DESC", "扣型"); gridcolunmnames.Add("PLN_OUTSINGLE_NUM", "支数"); gridcolunmnames.Add("PLN_OUTSINGLE_W", "重量"); gridcolunmnames.Add("QZ", "权重"); gridcolunmnames.Add("cl_status".ToUpper(), "已处理否"); } else if (sign == "QX") { gridcolunmnames.Add("PROCESSCODE", "大工序"); gridcolunmnames.Add("AREA", "区域"); gridcolunmnames.Add("AREA_CODE", "区域代码"); gridcolunmnames.Add("DEPT", "部门"); gridcolunmnames.Add("DEPT_CODE", "部门代码"); gridcolunmnames.Add("PLINE_NAME", "产线名称"); gridcolunmnames.Add("PLINE_CODE", "产线代码"); gridcolunmnames.Add("HEAT_PLAN_NO", "本工序炉计划ID"); gridcolunmnames.Add("JUDGE_STOVE_NO", "判定炉号"); gridcolunmnames.Add("feed_heat_no".ToUpper(), "上料炉号"); gridcolunmnames.Add("feed_time".ToUpper(), "上料时间"); gridcolunmnames.Add("FX_time".ToUpper(), "返线时间"); gridcolunmnames.Add("BJ_TIME", "比较时间"); gridcolunmnames.Add("DC_HOURS", "在线小时数"); gridcolunmnames.Add("DC_DAYS", "在线天数"); gridcolunmnames.Add("KF", "扣分"); gridcolunmnames.Add("KFSM", "扣分说明"); gridcolunmnames.Add("ORDERNO", "合同号"); gridcolunmnames.Add("nowork_times_days".ToUpper(), "某天非工作小时"); gridcolunmnames.Add("nowork_times_days_desc".ToUpper(), "某天非工作小时说明"); gridcolunmnames.Add("nowork_times".ToUpper(), "每天非工作小时说明"); gridcolunmnames.Add("nowork_times_desc".ToUpper(), "每天非工作小时说明"); gridcolunmnames.Add("nowork_days".ToUpper(), "非工作日天数"); gridcolunmnames.Add("nowork_days_desc".ToUpper(), "非工作日说明"); gridcolunmnames.Add("CREATETIME", "创建时间"); gridcolunmnames.Add("QZ", "权重"); gridcolunmnames.Add("cl_status".ToUpper(), "已处理否"); } else if (sign == "DPSP") { gridcolunmnames.Add("PROCESSCODE", "大工序"); gridcolunmnames.Add("AREA", "区域"); gridcolunmnames.Add("AREA_CODE", "区域代码"); gridcolunmnames.Add("DEPT", "部门"); gridcolunmnames.Add("DEPT_CODE", "部门代码"); gridcolunmnames.Add("PLINE_NAME", "产线名称"); gridcolunmnames.Add("PLINE_CODE", "产线代码"); gridcolunmnames.Add("HEAT_PLAN_NO", "本工序炉计划ID"); gridcolunmnames.Add("JUDGE_STOVE_NO", "判定炉号"); gridcolunmnames.Add("batch_no".ToUpper(), "批号"); gridcolunmnames.Add("in_time".ToUpper(), "入库时间"); gridcolunmnames.Add("sp_time".ToUpper(), "送判时间"); gridcolunmnames.Add("BJ_TIME", "比较时间"); gridcolunmnames.Add("DC_HOURS", "待送判小时数"); gridcolunmnames.Add("DC_DAYS", "待送判天数"); gridcolunmnames.Add("KF", "扣分"); gridcolunmnames.Add("KFSM", "扣分说明"); gridcolunmnames.Add("ORDERNO", "合同号"); gridcolunmnames.Add("CREATETIME", "创建时间"); gridcolunmnames.Add("QZ", "权重"); gridcolunmnames.Add("cl_status".ToUpper(), "已处理否"); } else if (sign == "DPPD") { gridcolunmnames.Add("PROCESSCODE", "大工序"); gridcolunmnames.Add("AREA", "区域"); gridcolunmnames.Add("AREA_CODE", "区域代码"); gridcolunmnames.Add("DEPT", "部门"); gridcolunmnames.Add("DEPT_CODE", "部门代码"); gridcolunmnames.Add("PLINE_NAME", "产线名称"); gridcolunmnames.Add("PLINE_CODE", "产线代码"); gridcolunmnames.Add("HEAT_PLAN_NO", "本工序炉计划ID"); gridcolunmnames.Add("JUDGE_STOVE_NO", "判定炉号"); gridcolunmnames.Add("batch_no".ToUpper(), "批号"); gridcolunmnames.Add("sp_time".ToUpper(), "送判时间"); gridcolunmnames.Add("pd_time".ToUpper(), "判定时间"); gridcolunmnames.Add("BJ_TIME", "比较时间"); gridcolunmnames.Add("DC_HOURS", "待判定小时数"); gridcolunmnames.Add("DC_DAYS", "待判定天数"); gridcolunmnames.Add("KF", "扣分"); gridcolunmnames.Add("KFSM", "扣分说明"); gridcolunmnames.Add("ORDERNO", "合同号"); gridcolunmnames.Add("CREATETIME", "创建时间"); gridcolunmnames.Add("QZ", "权重"); gridcolunmnames.Add("cl_status".ToUpper(), "已处理否"); } else if (sign == "LXWT") { gridcolunmnames.Add("PROCESSCODE", "大工序"); gridcolunmnames.Add("AREA", "区域"); gridcolunmnames.Add("AREA_CODE", "区域代码"); gridcolunmnames.Add("DEPT", "部门"); gridcolunmnames.Add("DEPT_CODE", "部门代码"); gridcolunmnames.Add("PLINE_NAME", "产线名称"); gridcolunmnames.Add("PLINE_CODE", "产线代码"); gridcolunmnames.Add("HEAT_PLAN_NO", "本工序炉计划ID"); gridcolunmnames.Add("JUDGE_STOVE_NO", "判定炉号"); gridcolunmnames.Add("batch_no".ToUpper(), "批号"); gridcolunmnames.Add("offline_time".ToUpper(), "离线时间"); gridcolunmnames.Add("BJ_TIME", "比较时间"); gridcolunmnames.Add("DC_HOURS", "待委托小时数"); gridcolunmnames.Add("DC_DAYS", "待委托天数"); gridcolunmnames.Add("KF", "扣分"); gridcolunmnames.Add("KFSM", "扣分说明"); gridcolunmnames.Add("ORDERNO", "合同号"); gridcolunmnames.Add("CREATETIME", "创建时间"); gridcolunmnames.Add("QZ", "权重"); gridcolunmnames.Add("cl_status".ToUpper(), "已处理否"); } else if (sign == "LXFX") { gridcolunmnames.Add("PROCESSCODE", "大工序"); gridcolunmnames.Add("AREA", "区域"); gridcolunmnames.Add("AREA_CODE", "区域代码"); gridcolunmnames.Add("DEPT", "部门"); gridcolunmnames.Add("DEPT_CODE", "部门代码"); gridcolunmnames.Add("PLINE_NAME", "产线名称"); gridcolunmnames.Add("PLINE_CODE", "产线代码"); gridcolunmnames.Add("HEAT_PLAN_NO", "本工序炉计划ID"); gridcolunmnames.Add("JUDGE_STOVE_NO", "判定炉号"); gridcolunmnames.Add("batch_no".ToUpper(), "批号"); gridcolunmnames.Add("wg_time".ToUpper(), "委托完工时间"); gridcolunmnames.Add("BJ_TIME", "比较时间"); gridcolunmnames.Add("DC_HOURS", "待上线小时数"); gridcolunmnames.Add("DC_DAYS", "待上线天数"); gridcolunmnames.Add("KF", "扣分"); gridcolunmnames.Add("KFSM", "扣分说明"); gridcolunmnames.Add("ORDERNO", "合同号"); gridcolunmnames.Add("CREATETIME", "创建时间"); gridcolunmnames.Add("QZ", "权重"); gridcolunmnames.Add("cl_status".ToUpper(), "已处理否"); } else if (sign == "FP") { gridcolunmnames.Add("PROCESSCODE", "大工序"); gridcolunmnames.Add("AREA", "区域"); gridcolunmnames.Add("AREA_CODE", "区域代码"); gridcolunmnames.Add("DEPT", "部门"); gridcolunmnames.Add("DEPT_CODE", "部门代码"); gridcolunmnames.Add("PLINE_NAME", "产线名称"); gridcolunmnames.Add("PLINE_CODE", "产线代码"); gridcolunmnames.Add("HEAT_PLAN_NO", "本工序炉计划ID"); gridcolunmnames.Add("JUDGE_STOVE_NO", "判定炉号"); gridcolunmnames.Add("batch_no".ToUpper(), "批号"); gridcolunmnames.Add("in_time".ToUpper(), "废品入库时间"); gridcolunmnames.Add("BJ_TIME", "比较时间"); gridcolunmnames.Add("DC_HOURS", "待返废小时数"); gridcolunmnames.Add("DC_DAYS", "待返废天数"); gridcolunmnames.Add("KF", "扣分"); gridcolunmnames.Add("KFSM", "扣分说明"); gridcolunmnames.Add("ORDERNO", "合同号"); gridcolunmnames.Add("CREATETIME", "创建时间"); gridcolunmnames.Add("QZ", "权重"); gridcolunmnames.Add("cl_status".ToUpper(), "已处理否"); } else if (sign == "SCZQ_PZ") { gridcolunmnames.Add("produccode", "品种代码"); gridcolunmnames.Add("producname", "品种名称"); gridcolunmnames.Add("minwhole_backlog", "最短全工序流程码"); gridcolunmnames.Add("maxwhole_backlog", "最长全工序流程码"); gridcolunmnames.Add("countmaterial_no", "记录数"); gridcolunmnames.Add("minworkhours", "最短生产周期"); gridcolunmnames.Add("maxworkhours", "最长生产周期"); gridcolunmnames.Add("avgworkhours", "平均生产周期"); gridcolunmnames.Add("STDDEVworkhours", "生产周期标准差"); gridcolunmnames.Add("STDDEV_SAMPworkhours", "生产周期样本标准差"); gridcolunmnames.Add("VAR_POPworkhours", "生产周期方差"); gridcolunmnames.Add("VAR_SAMPworkhours", "生产周期样本方差"); } else if (sign == "SCZQ_WL") { gridcolunmnames.Add("produccode", "品种代码"); gridcolunmnames.Add("producname", "品种名称"); gridcolunmnames.Add("material_no", "物料码"); gridcolunmnames.Add("material_name", "物料名"); gridcolunmnames.Add("minwhole_backlog", "最短全工序流程码"); gridcolunmnames.Add("maxwhole_backlog", "最长全工序流程码"); gridcolunmnames.Add("countmaterial_no", "记录数"); gridcolunmnames.Add("minworkhours", "最短生产周期"); gridcolunmnames.Add("maxworkhours", "最长生产周期"); gridcolunmnames.Add("avgworkhours", "平均生产周期"); gridcolunmnames.Add("STDDEVworkhours", "生产周期标准差"); gridcolunmnames.Add("STDDEV_SAMPworkhours", "生产周期样本标准差"); gridcolunmnames.Add("VAR_POPworkhours", "生产周期方差"); gridcolunmnames.Add("VAR_SAMPworkhours", "生产周期样本方差"); } ultraGrid.DataBind(); ultraGrid.DisplayLayout.Bands[0].Header.Appearance.TextHAlign = Infragistics.Win.HAlign.Center; ultraGrid.DisplayLayout.Bands[0].Header.Appearance.FontData.Name = "宋体"; ultraGrid.DisplayLayout.Bands[0].Header.Appearance.FontData.SizeInPoints = 18; if (rB_dc.Checked) { ultraGrid.DisplayLayout.Bands[0].Header.Caption = rB_dc.Text; } else if (rB_qx.Checked) { ultraGrid.DisplayLayout.Bands[0].Header.Caption = rB_qx.Text; } else if (rB_dpsp.Checked) { ultraGrid.DisplayLayout.Bands[0].Header.Caption = rB_dpsp.Text; } else if (rB_dppd.Checked) { ultraGrid.DisplayLayout.Bands[0].Header.Caption = rB_dppd.Text; } else if (rB_lxwt.Checked) { ultraGrid.DisplayLayout.Bands[0].Header.Caption = rB_lxwt.Text; } else if (rB_lxfx.Checked) { ultraGrid.DisplayLayout.Bands[0].Header.Caption = rB_lxfx.Text; } else if (rB_fp.Checked) { ultraGrid.DisplayLayout.Bands[0].Header.Caption = rB_fp.Text; } if (gridcolunmnames != null && (sign == "DC" || sign == "QX" || sign == "DPSP" || sign == "DPPD" || sign == "LXWT" || sign == "LXFX" || sign == "FP" || sign == "SCZQ_PZ" || sign == "SCZQ_WL")) { ultraGrid.DisplayLayout.UseFixedHeaders = true; foreach (Infragistics.Win.UltraWinGrid.UltraGridBand band in ultraGrid.DisplayLayout.Bands) { foreach (Infragistics.Win.UltraWinGrid.UltraGridColumn column in band.Columns) { column.Header.Caption = gridcolunmnames[column.Key].ToString(); if (column.Key == "AREA_CODE" || column.Key == "DEPT_CODE" || column.Key == "PLINE_CODE") { column.Hidden = true; } if (column.Key == "JUDGE_STOVE_NO") { for (int i = column.Index; i >= 0; i--) { band.Columns[i].Header.Fixed = true; } } column.PerformAutoResize(Infragistics.Win.UltraWinGrid.PerformAutoSizeType.AllRowsInBand); } } } ultraGrid.Refresh(); } private void ultraTree_scls_AfterSelect(object sender, SelectEventArgs e) { if (ultraTree_scls.ActiveNode != null && isnew == false) { DataTable dtqry2 = ((DataTable)ultraGrid_scls.DataSource).Copy(); DataView dv = dtqry2.DefaultView; dv.RowFilter = "kf>0"; dtqry2 = dv.ToTable(); UltraTreeNode mynode = ultraTree_scls.ActiveNode; string columncharttitle = mynode.Text, piecharttitle = ""; if (rB_dc.Checked) { columncharttitle += "(" + rB_dc.Text + ")"; piecharttitle = rB_dc.Text; } else if (rB_qx.Checked) { columncharttitle += "(" + rB_qx.Text + ")"; piecharttitle = rB_qx.Text; } else if (rB_dpsp.Checked) { columncharttitle += "(" + rB_dpsp.Text + ")"; piecharttitle = rB_dpsp.Text; } else if (rB_dppd.Checked) { columncharttitle += "(" + rB_dppd.Text + ")"; piecharttitle = rB_dppd.Text; } else if (rB_lxwt.Checked) { columncharttitle += "(" + rB_lxwt.Text + ")"; piecharttitle = rB_lxwt.Text; } else if (rB_lxfx.Checked) { columncharttitle += "(" + rB_lxfx.Text + ")"; piecharttitle = rB_lxfx.Text; } else if (rB_fp.Checked) { columncharttitle += "(" + rB_fp.Text + ")"; piecharttitle = rB_fp.Text; } if ((UltraColumnChart_scls.TitleTop.Text.ToString() != mynode.Text || UltraColumnChart_scls.TitleBottom.Text.ToString() != piecharttitle) && mynode.Key == "1") { getcolumnchart_scls(mynode.Text, UltraColumnChart_scls, dtqry2, "DGX"); getpiechart_scls(mynode.Nodes[0].Text, UltraPieChart_scls, dtqry2, "DGX"); } else if ((UltraColumnChart_scls.TitleTop.Text.ToString() != mynode.Text || UltraColumnChart_scls.TitleBottom.Text.ToString() != piecharttitle) && (mynode.Key == "A" || mynode.Key == "B" || mynode.Key == "D" || mynode.Key == "E" || mynode.Key == "F" || mynode.Key == "G")) { getcolumnchart_scls(mynode.Text.ToString(), UltraColumnChart_scls, dtqry2, "GX-BM"); getpiechart_scls(mynode.Nodes[0].Text, UltraPieChart_scls, dtqry2, "GX-BM"); } else if ((UltraColumnChart_scls.TitleTop.Text.ToString() != mynode.Text || UltraColumnChart_scls.TitleBottom.Text.ToString() != piecharttitle) && (mynode.Key.Substring(0, 1) == "A" || mynode.Key.Substring(0, 1) == "B" || mynode.Key.Substring(0, 1) == "D" || mynode.Key.Substring(0, 1) == "E" || mynode.Key.Substring(0, 1) == "F" || mynode.Key.Substring(0, 1) == "G")) { getcolumnchart_scls(mynode.Parent.Text + ":" + mynode.Text.ToString(), UltraColumnChart_scls, dtqry2, "BM-CX"); getpiechart_scls(mynode.Nodes[0].Text, UltraPieChart_scls, dtqry2, "BM-CX"); } } } private void UltraColumnChart_scls_DataItemOver(object sender, Infragistics.UltraChart.Shared.Events.ChartDataEventArgs e) { if (e.RowLabel != UltraPieChart_scls.TitleTop.Text) { UltraTreeNode mynode = ultraTree_scls.ActiveNode; DataTable dtqry = ((DataTable)ultraGrid_scls.DataSource).Copy(); //e.RowLabel //getcolumnchart_dc(ultraTree_dc.ActiveNode.ToString(), UltraColumnChart_dc, dtqry, ""); if (UltraColumnChart_scls.TitleTop.Text == "大工序") { getpiechart_scls(e.RowLabel, UltraPieChart_scls, dtqry, "DGX"); } else if (UltraColumnChart_scls.TitleTop.Text == mynode.Text && (UltraColumnChart_scls.TitleTop.Text.Substring(0, 1) == "A" || UltraColumnChart_scls.TitleTop.Text.Substring(0, 1) == "B" || UltraColumnChart_scls.TitleTop.Text.Substring(0, 1) == "D" || UltraColumnChart_scls.TitleTop.Text.Substring(0, 1) == "E" || UltraColumnChart_scls.TitleTop.Text.Substring(0, 1) == "F" || UltraColumnChart_scls.TitleTop.Text.Substring(0, 1) == "G")) { getpiechart_scls(e.RowLabel, UltraPieChart_scls, dtqry, "GX-BM"); } else if (UltraColumnChart_scls.TitleTop.Text != mynode.Text && (UltraColumnChart_scls.TitleTop.Text.Substring(0, 1) == "A" || UltraColumnChart_scls.TitleTop.Text.Substring(0, 1) == "B" || UltraColumnChart_scls.TitleTop.Text.Substring(0, 1) == "D" || UltraColumnChart_scls.TitleTop.Text.Substring(0, 1) == "E" || UltraColumnChart_scls.TitleTop.Text.Substring(0, 1) == "F" || UltraColumnChart_scls.TitleTop.Text.Substring(0, 1) == "G")) { getpiechart_scls(e.RowLabel, UltraPieChart_scls, dtqry, "BM-CX"); } } } private void UltraColumnChart_scls_ChartDataClicked(object sender, Infragistics.UltraChart.Shared.Events.ChartDataEventArgs e) { UltraTreeNode mynode = ultraTree_scls.ActiveNode; if (ultraTree_scls.ActiveNode.Text == "大工序" || ultraTree_scls.ActiveNode.Text.Substring(0, 2) == "A-" || ultraTree_scls.ActiveNode.Text.Substring(0, 2) == "B-" || ultraTree_scls.ActiveNode.Text.Substring(0, 2) == "D-" || ultraTree_scls.ActiveNode.Text.Substring(0, 2) == "E-" || ultraTree_scls.ActiveNode.Text.Substring(0, 2) == "F-" || ultraTree_scls.ActiveNode.Text.Substring(0, 2) == "G-" || ultraTree_scls.ActiveNode.Parent.Text.Substring(0, 2) == "A-" || ultraTree_scls.ActiveNode.Parent.Text.Substring(0, 2) == "B-" || ultraTree_scls.ActiveNode.Parent.Text.Substring(0, 2) == "D-" || ultraTree_scls.ActiveNode.Parent.Text.Substring(0, 2) == "E-" || ultraTree_scls.ActiveNode.Parent.Text.Substring(0, 2) == "F-" || ultraTree_scls.ActiveNode.Parent.Text.Substring(0, 2) == "G-") { foreach (UltraTreeNode childnode in mynode.Nodes) { if (childnode.Text == e.RowLabel) { ultraTree_scls.ActiveNode = childnode; childnode.Selected = true; break; } } } } private void getdata(bool isgetdate) { if (isgetdate) { getscls(); } } private void rB_dc_CheckedChanged(object sender, EventArgs e) { getdata(rB_dc.Checked); } private void rB_qx_CheckedChanged(object sender, EventArgs e) { getdata(rB_qx.Checked); } private void rB_dpsp_CheckedChanged(object sender, EventArgs e) { getdata(rB_dpsp.Checked); } private void rB_dppd_CheckedChanged(object sender, EventArgs e) { getdata(rB_dppd.Checked); } private void rB_lxwt_CheckedChanged(object sender, EventArgs e) { getdata(rB_lxwt.Checked); } private void rB_lxfx_CheckedChanged(object sender, EventArgs e) { getdata(rB_lxfx.Checked); } private void rB_fp_CheckedChanged(object sender, EventArgs e) { getdata(rB_fp.Checked); } private void ultraTree_scls_qj_AfterSelect(object sender, SelectEventArgs e) { if (ultraTree_scls_qj.ActiveNode != null && isnew_qj == false) { UltraTreeNode mynode = ultraTree_scls_qj.ActiveNode; if (UltraChart_scls_qj.TitleTop.Text.ToString() != mynode.Text) { if (mynode.Key.Length == 1) getlinechart_scls_qj(UltraChart_scls_qj, dtqry1, "DGX"); else if (mynode.Parent.Key.Length == 1) getlinechart_scls_qj(UltraChart_scls_qj, dtqry1, "GX-BM"); else getlinechart_scls_qj(UltraChart_scls_qj, dtqry1, "BM-CX"); } } } private void ultraGrid_wl_ClickCellButton(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e) { if (e.Cell.Column.Key == "material_no") { string mydate1 = ((DateTime)this.fromdate.Value).ToString("yyyy-MM-dd"); string mydate2 = ((DateTime)this.todate.Value).ToString("yyyy-MM-dd"); DataTable mytable = ServerHelper.GetData("com.steering.rpt.scls.SCLS.getSCLS_SCLS_L", new object[] { mydate1, mydate2, e.Cell.Text }, this.ob); if (mytable.Rows.Count > 0) { RptProduction_detail mypopup = new RptProduction_detail(mytable, "品名:" + e.Cell.Row.Cells["producname"].Text + ",物料:" + e.Cell.Row.Cells["material_name"].Text, "流程码"); mypopup.ShowDialog(); } } } private void ultraGrid_pzwl_ClickCellButton(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e) { if (e.Cell.Column.Key == "material_no") { string mydate1 = ((DateTime)this.fromdate.Value).ToString("yyyy-MM-dd"); string mydate2 = ((DateTime)this.todate.Value).ToString("yyyy-MM-dd"); DataTable mytable = ServerHelper.GetData("com.steering.rpt.scls.SCLS.getSCLS_SCLS_L", new object[] { mydate1, mydate2, e.Cell.Text }, this.ob); if (mytable.Rows.Count > 0) { RptProduction_detail mypopup = new RptProduction_detail(mytable, "品名:" + e.Cell.Row.Cells["producname"].Text + ",物料:" + e.Cell.Row.Cells["material_name"].Text, "流程码"); mypopup.ShowDialog(); } } } public class CustomMergedCellEvaluator : Infragistics.Win.UltraWinGrid.IMergedCellEvaluator { private string primaryKey; /// /// 获取或设置合并列的主键列的绑定名称 /// public string PrimaryKey { get { return primaryKey; } set { primaryKey = value; } } /// /// CustomMergedCellEvaluator 的构造函数 /// /// 主键列的绑定名称 public CustomMergedCellEvaluator(string primaryKey) { this.primaryKey = primaryKey; } #region IMergedCellEvaluator 成员 public bool ShouldCellsBeMerged(Infragistics.Win.UltraWinGrid.UltraGridRow row1, Infragistics.Win.UltraWinGrid.UltraGridRow row2, Infragistics.Win.UltraWinGrid.UltraGridColumn column) { //确认逻辑:如果是主键列,自动合并,否则通过联合主键来合并 if (column.MergedCellStyle == Infragistics.Win.UltraWinGrid.MergedCellStyle.Always) { if (string.IsNullOrEmpty(this.primaryKey)) { return row1.GetCellText(column) == row2.GetCellText(column); } if ((row1.GetCellValue(row1.Cells[this.primaryKey].Column).ToString() == row2.GetCellValue(row1.Cells[this.primaryKey].Column).ToString()) && (row1.GetCellText(column) == row2.GetCellText(column))) { return true; } } return false; } #endregion } private void getcolumnchart_scls_qj(UltraChart mychart, DataTable myData, string sign) { string myselectstr = ""; // 在此处放置用户代码以初始化页面 //step1:Change the ChartType property to "Composite." mychart.ChartType = ChartType.Composite; mychart.TitleTop.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold); /*if (rB_dc_qj.Checked) mychart.TitleBottom.Text = rB_dc_qj.Text; else if (rB_qx_qj.Checked) mychart.TitleBottom.Text = rB_qx_qj.Text; else if (rB_dpsp_qj.Checked) mychart.TitleBottom.Text = rB_dpsp_qj.Text; else if (rB_dppd_qj.Checked) mychart.TitleBottom.Text = rB_dppd_qj.Text; else if (rB_lxwt_qj.Checked) mychart.TitleBottom.Text = rB_lxwt_qj.Text; else if (rB_lxfx_qj.Checked) mychart.TitleBottom.Text = rB_lxfx_qj.Text; else if (rB_fp_qj.Checked) mychart.TitleBottom.Text = rB_fp_qj.Text;*/ //step2:Add a ChartArea to the ChartAreas collection. ChartArea myChartArea = new ChartArea(); myChartArea.BoundsMeasureType = MeasureType.Percentage; myChartArea.Bounds = new Rectangle(0, 10, 100, 80); myChartArea.Border.Thickness = 0; mychart.CompositeChart.ChartAreas.Add(myChartArea); //step3:Add some Axes to the ChartArea. AxisItem axisX = new AxisItem(); axisX.OrientationType = AxisNumber.X_Axis; axisX.DataType = AxisDataType.String; axisX.StripLines.Interval = 15; axisX.TickmarkStyle = AxisTickStyle.Smart; //axisX.Margin.ResetFar(); axisX.SetLabelAxisType = SetLabelAxisType.GroupBySeries; axisX.Labels.ItemFormatString = ""; axisX.Labels.Orientation = TextOrientation.VerticalLeftFacing; axisX.Labels.OrientationAngle = 80; axisX.Labels.Visible = false; axisX.Labels.SeriesLabels.Orientation = TextOrientation.Custom;//.VerticalLeftFacing; axisX.Labels.SeriesLabels.OrientationAngle = 250; axisX.Labels.SeriesLabels.Flip = true; /*axisX.LineThickness = 1; axisX.MajorGridLines.AlphaLevel = ((byte)(255)); axisX.MajorGridLines.Color = System.Drawing.Color.Gainsboro; axisX.MajorGridLines.DrawStyle = Infragistics.UltraChart.Shared.Styles.LineDrawStyle.Dot; axisX.MajorGridLines.Thickness = 1; axisX.MajorGridLines.Visible = true;*/ AxisItem axisY = new AxisItem(); axisY.OrientationType = AxisNumber.Y_Axis; axisY.DataType = AxisDataType.Numeric; axisY.Labels.ItemFormatString = ""; axisY.Labels.SeriesLabels.VerticalAlign = System.Drawing.StringAlignment.Near; //axisY.Labels.VerticalAlign = System.Drawing.StringAlignment.Near; AxisItem axisY1 = new AxisItem(); axisY1.OrientationType = AxisNumber.Y2_Axis; axisY1.DataType = AxisDataType.Numeric; axisY1.TickmarkStyle = AxisTickStyle.Percentage; axisY1.TickmarkPercentage = 10; axisY1.Labels.ItemFormatString = ""; axisY1.Labels.SeriesLabels.VerticalAlign = System.Drawing.StringAlignment.Near; myChartArea.Axes.Add(axisX); myChartArea.Axes.Add(axisY); myChartArea.Axes.Add(axisY1); //step4:Add some data series to the Series collection. string series_Label = "", selectstr, Point_value; DataView mydataview = myData.DefaultView; if (sign == "DGX") { mydataview.RowFilter = "processcode='" + ultraTree_scls_qj.ActiveNode.Key + "'"; mydataview.Sort = "createtime"; myData = mydataview.ToTable(); mychart.TitleTop.Text = getprocess(myData.Rows[0]["processcode"].ToString()); series_Label = myData.Rows[0]["createtime"].ToString().Substring(0, 10); } else if (sign == "GX-BM") { mydataview.RowFilter = "processcode+dept_code='" + ultraTree_scls_qj.ActiveNode.Key + "'"; mydataview.Sort = "createtime"; myData = mydataview.ToTable(); mychart.TitleTop.Text = getprocess(myData.Rows[0]["processcode"].ToString()) + ":" + myData.Rows[0]["dept"]; series_Label = myData.Rows[0]["createtime"].ToString().Substring(0, 10); } else if (sign == "BM-CX") { mydataview.RowFilter = "pline_code='" + ultraTree_scls_qj.ActiveNode.Key + "'"; mydataview.Sort = "createtime"; myData = mydataview.ToTable(); mychart.TitleTop.Text = getprocess(myData.Rows[0]["processcode"].ToString()) + " - " + myData.Rows[0]["dept"] + ":" + myData.Rows[0]["pline_name"].ToString(); series_Label = myData.Rows[0]["createtime"].ToString().Substring(0, 10); } myselectstr = " createtime like '" + series_Label + "%'"; NumericSeries series = new NumericSeries(); NumericSeries lineSeries = new NumericSeries(); series.Points.Clear(); string myLabel = series_Label; int i = 0, hj = 0; foreach (DataRow mykfrow in kfdataTable_qj.Rows) { if (columnchartpoint_qj[i] != "") { selectstr = myselectstr + " and kf=" + mykfrow["kf"].ToString(); Point_value = myData.Compute("count(kf)", selectstr).ToString(); if (Point_value == "") Point_value = "0"; series.Points.Add(new NumericDataPoint(Convert.ToDouble(Point_value), columnchartpoint_qj[i], false)); lineSeries.Points.Add(new NumericDataPoint(Convert.ToDouble(Point_value), columnchartpoint_qj[i], false)); } i++; } series.Label = series_Label; mychart.Data.MinValue = 0; //mychart.CompositeChart.Series.Add(series); //step5:Add a chart layer. ChartLayerAppearance myColumnLayer = new ChartLayerAppearance(); myColumnLayer.ChartType = ChartType.StackColumnChart;//.ColumnChart; myColumnLayer.ChartArea = myChartArea; myColumnLayer.AxisX = axisX; myColumnLayer.AxisY = axisY; myColumnLayer.AxisY2 = axisY1; myColumnLayer.Series.Clear(); myColumnLayer.Series.Add(series); ChartLayerAppearance lineLayer = new ChartLayerAppearance(); lineLayer.ChartType = ChartType.LineChart; lineLayer.AxisX = axisX; lineLayer.AxisY = axisY; lineLayer.AxisY2 = axisY1; lineLayer.ChartArea = myChartArea; lineLayer.Series.Clear(); lineLayer.Series.Add(lineSeries); foreach (DataRow myrow in myData.Rows) { /*series = new NumericSeries(); series.Points.Add(new NumericDataPoint(Convert.ToDouble(0), "", false)); series.Points.Add(new NumericDataPoint(Convert.ToDouble(0), "", false)); series.Label = ""; mychart.CompositeChart.Series.Add(series); myColumnLayer.Series.Add(series);)*/ series_Label = myrow["createtime"].ToString().Substring(0, 10); if (myLabel != series_Label) { series = new NumericSeries(); lineSeries = new NumericSeries(); myLabel = series_Label; series.Label = series_Label; myselectstr = myselectstr = " createtime like '" + series_Label + "%'"; i = 0; foreach (DataRow mykfrow in kfdataTable_qj.Rows) { if (columnchartpoint_qj[i] != "") { selectstr = myselectstr + " and kf=" + mykfrow["kf"].ToString(); Point_value = myData.Compute("count(kf)", selectstr).ToString(); if (Point_value == "") Point_value = "0"; series.Points.Add(new NumericDataPoint(Convert.ToDouble(Point_value), columnchartpoint_qj[i], false)); lineSeries.Points.Add(new NumericDataPoint(Convert.ToDouble(Point_value), columnchartpoint_qj[i], false)); } i++; } //mychart.CompositeChart.Series.Add(series); myColumnLayer.Series.Add(series); lineLayer.Series.Add(lineSeries); } } mychart.CompositeChart.ChartLayers.Clear(); mychart.CompositeChart.ChartLayers.Add(myColumnLayer); mychart.CompositeChart.ChartLayers.Add(lineLayer); //step6:Add a legend to the chart. //CompositeLegend myLegend = new CompositeLegend(); //CompositeLegend a = new CompositeLegend(); Infragistics.UltraChart.Resources.Appearance.CompositeLegend myLegend = new Infragistics.UltraChart.Resources.Appearance.CompositeLegend(); myLegend.ChartLayers.Add(myColumnLayer); myLegend.Bounds = new Rectangle(2, 90, 10, 9); myLegend.BoundsMeasureType = MeasureType.Percentage; myLegend.PE.ElementType = PaintElementType.Gradient; myLegend.PE.FillGradientStyle = GradientStyle.ForwardDiagonal; myLegend.PE.Fill = Color.CornflowerBlue; myLegend.PE.FillStopColor = Color.Transparent; myLegend.Border.CornerRadius = 10; myLegend.Border.Thickness = 0; mychart.CompositeChart.Legends.Clear(); mychart.CompositeChart.Legends.Add(myLegend); } private void getsclsline(bool isgetdate) { if (isgetdate) { if (ultraTree_scls_qj.ActiveNode != null) { UltraTreeNode mynode = ultraTree_scls_qj.ActiveNode; if (mynode.Key.Length == 1) getlinechart_scls_qj(UltraChart_scls_qj, dtqry1, "DGX"); else if (mynode.Parent.Key.Length == 1) getlinechart_scls_qj(UltraChart_scls_qj, dtqry1, "GX-BM"); else getlinechart_scls_qj(UltraChart_scls_qj, dtqry1, "BM-CX"); } else getscls_qj(); } } private void rB_line_CheckedChanged(object sender, EventArgs e) { getsclsline(rB_line.Checked); } private void rB_Radar_CheckedChanged(object sender, EventArgs e) { getsclsline(rB_Radar.Checked); } private void setcB() { int i = 0,j=0; CheckBox[] mycB=new CheckBox[7]; if (!cB_dcqj.Checked) i++; else { mycB[j]=cB_dcqj; j++; } if (!cB_qxqj.Checked) i++; else { mycB[j]=cB_qxqj; j++; } if (!cB_dpspqj.Checked) i++; else { mycB[j]=cB_dpspqj; j++; } if (!cB_dppdqj.Checked) i++; else { mycB[j]=cB_dppdqj; j++; } if (!cB_lxwtqj.Checked) i++; else { mycB[j]=cB_lxwtqj; j++; } if (!cB_lxfxqj.Checked) i++; else { mycB[j]=cB_lxfxqj; j++; } if (!cB_fpqj.Checked) i++; else { mycB[j]=cB_fpqj; j++; } if (i == 6) mycB[0].Enabled = false; else if (i == 5) { foreach (CheckBox cb in mycB) { if (cb!=null && cb.Enabled == false) cb.Enabled = true; } } } private void cB_dcqj_CheckedChanged(object sender, EventArgs e) { setcB(); } private void cB_qxqj_CheckedChanged(object sender, EventArgs e) { setcB(); } private void cB_dpspqj_CheckedChanged(object sender, EventArgs e) { setcB(); } private void cB_dppdqj_CheckedChanged(object sender, EventArgs e) { setcB(); } private void cB_lxwtqj_CheckedChanged(object sender, EventArgs e) { setcB(); } private void cB_lxfxqj_CheckedChanged(object sender, EventArgs e) { setcB(); } private void cB_fpqj_CheckedChanged(object sender, EventArgs e) { setcB(); } private void getupdatescls() { WaitingForm2 wf = new WaitingForm2("正在更新最新数据,请稍候...."); try { string mydate = ((DateTime)this.rptdate.Value).ToString("yyyy-MM-dd"); string mymethodid = "", sign = ""; DataTable dtqry = new DataTable(); if (rB_dc.Checked) { mymethodid = "com.steering.rpt.scls.SCLS.getUpdateDC"; sign = "DC"; } else if (rB_qx.Checked) { mymethodid = "com.steering.rpt.scls.SCLS.getUpdateQX"; sign = "QX"; } else if (rB_dpsp.Checked) { mymethodid = "com.steering.rpt.scls.SCLS.getUpdateDPSP"; sign = "DPSP"; } else if (rB_dppd.Checked) { mymethodid = "com.steering.rpt.scls.SCLS.getUpdateDPPD"; sign = "DPPD"; } else if (rB_lxwt.Checked) { mymethodid = "com.steering.rpt.scls.SCLS.getUpdateLXWT"; sign = "LXWT"; } else if (rB_lxfx.Checked) { mymethodid = "com.steering.rpt.scls.SCLS.getUpdateLXFX"; sign = "LXFX"; } else if (rB_fp.Checked) { mymethodid = "com.steering.rpt.scls.SCLS.getUpdateFP"; sign = "FP"; } if (mymethodid != "") { dtqry = ServerHelper.GetData(mymethodid, new object[] { mydate }, this.ob); wf.Close(); DataTable dtqry1 = dtqry.Clone(); dtqry1.Columns["kf"].DataType = typeof(decimal); dtqry1.Columns["qz"].DataType = typeof(decimal); if (dtqry1.Columns.IndexOf("dc_hours") >= 0) dtqry1.Columns["dc_hours"].DataType = typeof(decimal); if (dtqry1.Columns.IndexOf("dc_days") >= 0) dtqry1.Columns["dc_days"].DataType = typeof(decimal); if (dtqry1.Columns.IndexOf("PLN_OUTSINGLE_NUM") >= 0) dtqry1.Columns["PLN_OUTSINGLE_NUM"].DataType = typeof(decimal); if (dtqry1.Columns.IndexOf("PLN_OUTSINGLE_W") >= 0) dtqry1.Columns["PLN_OUTSINGLE_W"].DataType = typeof(decimal); foreach (DataRow dr in dtqry.Rows) { dtqry1.ImportRow(dr); } ultraGrid_scls.DataSource = dtqry1; setgridcolunmName(ultraGrid_scls, sign); } } catch (Exception e) { wf.Close(); MessageBox.Show(e.Message); } finally { } } private void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { if (e.ClickedItem.Text == "更新最新数据" && ((DateTime)this.rptdate.Value).ToString("yyyy-MM-dd") == DateTime.Today.ToString("yyyy-MM-dd")) getupdatescls(); } private void gethtzq() { WaitingForm2 wf = new WaitingForm2("正在加载数据,请稍候...."); try { DataTable dtqry1 = ServerHelper.GetData("com.steering.rpt.scls.SCLS.getHTZQ", new object[] { overdate.Value.ToString() }, this.ob); DataTable dtqry2 = dtqry1.Clone(); foreach (DataColumn dc in dtqry2.Columns) { if (dc.ColumnName.IndexOf("支") >= 0 || dc.ColumnName.IndexOf("重量") >= 0 || dc.ColumnName.IndexOf("吨") >= 0 || dc.ColumnName.IndexOf("天") >= 0) { dc.DataType = typeof(decimal); } } foreach (DataRow dr in dtqry1.Rows) { dtqry2.ImportRow(dr); } ultraGrid_htzq.DataSource = dtqry2; foreach (Infragistics.Win.UltraWinGrid.UltraGridBand band in ultraGrid_htzq.DisplayLayout.Bands) { foreach (Infragistics.Win.UltraWinGrid.UltraGridColumn column in band.Columns) { if (column.Key.IndexOf("支") >= 0 || column.Key.IndexOf("吨") >= 0 || column.Key.IndexOf("重量") >= 0 || column.Key.IndexOf("天") >= 0) { column.CellAppearance.TextHAlign=Infragistics.Win.HAlign.Right; } column.PerformAutoResize(Infragistics.Win.UltraWinGrid.PerformAutoSizeType.AllRowsInBand); } } //setgridcolunmName(ultraGrid_htzq, "htzq"); wf.Close(); } catch (Exception e) { MessageBox.Show(e.Message); } finally { wf.Close(); } } } }