private void button1_Click(object sender, EventArgs e) { LoadingInfo.InfoText = "Loading report..."; LoadingInfo.ShowLoading(); LoadOeeChart(); LoadOeeSecondaryChart(); LoadingInfo.CloseLoading(); }
private void RepChartsDynamic_Load(object sender, EventArgs e) { _dgvTables[0] = dgv_sq_1; _dgvTables[1] = dgv_sq_2; _dgvTables[2] = dgv_sq_3; _RepChartsDynamic = true; chart1.Visible = false; chart2.Visible = false; chart3.Visible = false; //LoadingInfo.InfoText = "Loading charts for Squadra 1..."; //LoadingInfo.ShowLoading(); _machines_array = new StringBuilder(); _machines_array.Append(','); _lines_array = new List <string>(); if (!MainWnd._isSquadra) { _machines_array.Append(MainWnd._mouseOverMachineNumber + ","); var line = new Line(); //lblSelTitle.Text = "Macchina: " + MainWnd._mouseOverMachineNumber + " (" + line.GetLineNumber(Convert.ToInt32(MainWnd._mouseOverMachineNumber)) + ")"; Text = "Macc: " + MainWnd._mouseOverMachineNumber; CreateMachinesReport(); } else { if (MainWnd._sqOne.Checked || MainWnd._sqTwo.Checked || MainWnd._sqThree.Checked) { PopulateChartData(); //CreateTableView(); } CreateObjectGroups(); PostMachineColors(); rbMostraTutto.Checked = true; } try { LoadingInfo.CloseLoading(); } catch { } }
private void button2_Click(object sender, EventArgs e) { try { LoadingInfo.InfoText = "Loading report..."; LoadingInfo.ShowLoading(); LoadData(); LoadingInfo.CloseLoading(); } catch { LoadingInfo.CloseLoading(); } }
protected override void OnLoad(EventArgs e) { dgvReport.DoubleBufferedDataGridView(true); dgvReport.ShowCellToolTips = true; _fileName = string.Empty; try { LoadingInfo.InfoText = "Loading report..."; LoadingInfo.ShowLoading(); LoadData(); LoadingInfo.CloseLoading(); } catch { LoadingInfo.CloseLoading(); } base.OnLoad(e); }
private void RepEffTurno_Load(object sender, EventArgs e) { dgvReport.DoubleBufferedDataGridView(true); dgvReport.DataBindingComplete += delegate { dgvReport.Focus(); foreach (DataGridViewColumn col in dgvReport.Columns) { col.SortMode = DataGridViewColumnSortMode.NotSortable; } // total row if (dgvReport.Rows.Count >= 1) { dgvReport.Rows[0].ReadOnly = true; dgvReport.Rows[0].Frozen = true; dgvReport.Rows[0].DefaultCellStyle.Font = new Font("Tahoma", 8, FontStyle.Bold); dgvReport.Rows[0].DefaultCellStyle.ForeColor = Color.Red; dgvReport.Rows[0].DefaultCellStyle.BackColor = Color.White; dgvReport.Rows[0].DefaultCellStyle.SelectionBackColor = Color.White; dgvReport.Rows[0].DefaultCellStyle.SelectionForeColor = dgvReport.Rows[0].DefaultCellStyle.ForeColor; } // specialize filter column dgvReport.Columns[0].Width = 200; dgvReport.Columns[0].HeaderCell.Style.Font = new Font("Tahoma", 10, FontStyle.Regular); dgvReport.Columns[0].HeaderCell.Style.ForeColor = Color.MidnightBlue; dgvReport.Columns[0].HeaderCell.Style.BackColor = Color.White; dgvReport.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; dgvReport.Columns[0].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter; for (var c = 1; c <= dgvReport.Columns.Count - 1; c++) { dgvReport.Columns[c].Width = 90; dgvReport.Columns[c].HeaderCell.Style.Font = new Font("Tahoma", 7); dgvReport.Columns[c].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; dgvReport.Columns[c].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomLeft; } dgvReport.Columns[0].Frozen = true; LoadingInfo.CloseLoading(); }; _from_machine = 1; _to_machine = 210; GetMachinesArray(); LoadReport(); cboBlocks.Items.Add("<All>"); cboLines.Items.Add("<All>"); for (var i = 1; i <= 15; i++) { if (i < 4) { cboBlocks.Items.Add("Squadra " + i.ToString()); } cboLines.Items.Add("LINEA " + i.ToString()); } LoadingInfo.CloseLoading(); }
private void ProcessData() { if (Get_Date_From() > Get_Date_To()) { MessageBox.Show("Invalid date selection!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } LoadingInfo.InfoText = "Loading report..."; LoadingInfo.ShowLoading(); var dsDays = new DataSet(); LoadProcedure(dsDays); _components = new List <Component>(); if (dsDays.Tables[0].Rows.Count <= 0) { LoadingInfo.CloseLoading(); return; } //creating list of components with days and active machines fields foreach (DataRow row in dsDays.Tables[0].Rows) { DateTime.TryParse(row[0].ToString(), out var currDay); int.TryParse(row[1].ToString(), out var actMachines); var newComp = new Component(); newComp.CurrentDay = currDay; newComp.ActiveMachines = actMachines; _components.Add(newComp); } //inserting efficiency for finezzes foreach (DataRow row in dsDays.Tables[1].Rows) { DateTime.TryParse(row[0].ToString(), out var currDay); int.TryParse(row[1].ToString(), out var fin); var eff = row[2].ToString(); var component = (from c in _components where c.CurrentDay == currDay select c).SingleOrDefault(); if (fin == 7) { component.FinSeven = eff + "%"; } else if (fin == 14) { component.FinFourtheen = eff + "%"; } else if (fin == 3) { component.FinThree = eff + "%"; } } //inserting efficiency per squadra' DateTime.TryParse(dsDays.Tables[2].Rows[0][0].ToString(), out var startDay); var effSq1 = 0.0; var effSq2 = 0.0; var effSq3 = 0.0; var qtySq1 = 0; var qtySq2 = 0; var qtySq3 = 0; foreach (DataRow row in dsDays.Tables[2].Rows) { DateTime.TryParse(row[0].ToString(), out var currDay); int.TryParse(row[1].ToString(), out var mac); double.TryParse(row[2].ToString(), out var eff); int.TryParse(row[3].ToString(), out var piecesProd); if (startDay != currDay) { var component = (from c in _components where c.CurrentDay == startDay select c).SingleOrDefault(); if (effSq1 == 0.0) { component.EffOne = "0.0%"; } else { component.EffOne = Math.Round(effSq1 / 70, 1).ToString() + "%"; } if (effSq2 == 0.0) { component.EffTwo = "0.0%"; } else { component.EffTwo = Math.Round(effSq2 / 70, 1).ToString() + "%"; } if (effSq3 == 0.0) { component.EffThree = "0.0%"; } else { component.EffThree = Math.Round(effSq3 / 70, 1).ToString() + "%"; } component.PiecesProducedSqOne = qtySq1; component.PiecesProducedSqTwo = qtySq2; component.PiecesProducedSqThree = qtySq3; effSq1 = 0.0; effSq2 = 0.0; effSq3 = 0.0; qtySq1 = 0; qtySq2 = 0; qtySq3 = 0; } if (mac >= 1 && mac <= 70) { effSq1 += eff; qtySq1 += piecesProd; } else if (mac >= 71 && mac <= 140) { effSq2 += eff; qtySq2 += piecesProd; } else if (mac >= 141 && mac <= 210) { effSq3 += eff; qtySq3 += piecesProd; } startDay = currDay; } var tmpComponent = (from c in _components where c.CurrentDay == startDay select c).SingleOrDefault(); tmpComponent.EffOne = Math.Round(effSq1 / 70, 1).ToString() + "%"; tmpComponent.EffTwo = Math.Round(effSq2 / 70, 1).ToString() + "%"; tmpComponent.EffThree = Math.Round(effSq3 / 70, 1).ToString() + "%"; tmpComponent.PiecesProducedSqOne = qtySq1; tmpComponent.PiecesProducedSqTwo = qtySq2; tmpComponent.PiecesProducedSqThree = qtySq3; //calculating scarti/rammendi pieces produced and efficiency //and inserting into list if (dsDays.Tables[3].Rows.Count <= 0) { LoadingInfo.CloseLoading(); return; } DateTime.TryParse(dsDays.Tables[3].Rows[0][0].ToString(), out var date); var operator_code = dsDays.Tables[3].Rows[0][1].ToString(); int.TryParse(dsDays.Tables[3].Rows[0][2].ToString(), out var machine); var order = dsDays.Tables[3].Rows[0][3].ToString(); var article = dsDays.Tables[3].Rows[0][4].ToString(); int.TryParse(dsDays.Tables[3].Rows[0][5].ToString(), out var tmpScarti); int.TryParse(dsDays.Tables[3].Rows[0][6].ToString(), out var tmpRammendi); var shift = dsDays.Tables[3].Rows[0][7].ToString(); var sqOneScarti = 0; var sqTwoScarti = 0; var sqThreeScarti = 0; var sqOneRammendi = 0; var sqTwoRammendi = 0; var sqThreeRammendi = 0; var scarti = 0; var ramm = 0; foreach (DataRow row in dsDays.Tables[3].Rows) { DateTime.TryParse(row[0].ToString(), out var dt); var operCode = row[1].ToString(); int.TryParse(row[2].ToString(), out var mac); var ord = row[3].ToString(); var art = row[4].ToString(); int.TryParse(row[5].ToString(), out scarti); int.TryParse(row[6].ToString(), out ramm); var sh = row[7].ToString(); if (date != dt) { sqThreeScarti += scarti; sqThreeRammendi += ramm; var component = (from c in _components where c.CurrentDay == date select c).SingleOrDefault(); component.ScartiPiecesOne = sqOneScarti; component.ScartiPiecesTwo = sqTwoScarti; component.ScartiPiecesThree = sqThreeScarti; component.ScartiPiecesTotal = sqOneScarti + sqTwoScarti + sqThreeScarti; double.TryParse(sqOneScarti.ToString(), out var sone); double.TryParse(sqTwoScarti.ToString(), out var stwo); double.TryParse(sqThreeScarti.ToString(), out var sthree); double.TryParse(component.PiecesProducedSqOne.ToString(), out var qone); double.TryParse(component.PiecesProducedSqTwo.ToString(), out var qtwo); double.TryParse(component.PiecesProducedSqThree.ToString(), out var qthree); component.ScartiEffOne = Math.Round((sone / qone) * 100, 1).ToString() + "%"; component.ScartiEffTwo = Math.Round((stwo / qtwo) * 100, 1).ToString() + "%"; component.ScartiEffThree = Math.Round((sthree / qthree) * 100, 1).ToString() + "%"; component.RammendiPiecesOne = sqOneRammendi; component.RammendiPiecesTwo = sqTwoRammendi; component.RammendiPiecesThree = sqThreeRammendi; component.RammendiPiecesTotal = sqOneRammendi + sqTwoRammendi + sqThreeRammendi; double.TryParse(sqOneRammendi.ToString(), out var rone); double.TryParse(sqTwoRammendi.ToString(), out var rtwo); double.TryParse(sqThreeRammendi.ToString(), out var rthree); component.RammendiEffOne = Math.Round((rone / qone) * 100, 1).ToString() + "%"; component.RammendiEffTwo = Math.Round((rtwo / qtwo) * 100, 1).ToString() + "%"; component.RammendiEffThree = Math.Round((rthree / qthree) * 100, 1).ToString() + "%"; sqOneScarti = 0; sqTwoScarti = 0; sqThreeScarti = 0; sqOneRammendi = 0; sqTwoRammendi = 0; sqThreeRammendi = 0; //date = dt; //operator_code = operCode; //order = ord; //article = art; //shift = sh; } if (order != ord || operator_code != operCode || article != art || machine != mac || shift != sh) { if (machine >= 1 && machine <= 70) { sqOneScarti += tmpScarti; sqOneRammendi += tmpRammendi; } else if (machine >= 71 && machine <= 140) { sqTwoScarti += tmpScarti; sqTwoRammendi += tmpRammendi; } else if (machine >= 141 && machine <= 210) { sqThreeScarti += tmpScarti; sqThreeRammendi += tmpRammendi; } } machine = mac; date = dt; operator_code = operCode; order = ord; article = art; tmpRammendi = ramm; tmpScarti = scarti; shift = sh; } //last selected day var comp = (from cp in _components where cp.CurrentDay == date select cp).SingleOrDefault(); sqThreeScarti += tmpScarti; sqThreeRammendi += tmpRammendi; comp.ScartiPiecesOne = sqOneScarti; comp.ScartiPiecesTwo = sqTwoScarti; comp.ScartiPiecesThree = sqThreeScarti; comp.ScartiPiecesTotal = sqOneScarti + sqTwoScarti + sqThreeScarti; double.TryParse(sqOneScarti.ToString(), out var ssone); double.TryParse(sqTwoScarti.ToString(), out var sstwo); double.TryParse(sqThreeScarti.ToString(), out var ssthree); double.TryParse(comp.PiecesProducedSqOne.ToString(), out var qqone); double.TryParse(comp.PiecesProducedSqTwo.ToString(), out var qqtwo); double.TryParse(comp.PiecesProducedSqThree.ToString(), out var qqthree); comp.ScartiEffOne = Math.Round((ssone / qqone) * 100, 1).ToString() + "%"; comp.ScartiEffTwo = Math.Round((sstwo / qqtwo) * 100, 1).ToString() + "%"; comp.ScartiEffThree = Math.Round((ssthree / qqthree) * 100, 1).ToString() + "%"; comp.RammendiPiecesOne = sqOneRammendi; comp.RammendiPiecesTwo = sqTwoRammendi; comp.RammendiPiecesThree = sqThreeRammendi; comp.RammendiPiecesTotal = sqOneRammendi + sqTwoRammendi + sqThreeRammendi; double.TryParse(sqOneRammendi.ToString(), out var rrone); double.TryParse(sqTwoRammendi.ToString(), out var rrtwo); double.TryParse(sqThreeRammendi.ToString(), out var rrthree); comp.RammendiEffOne = Math.Round((rrone / qqone) * 100, 1).ToString() + "%"; comp.RammendiEffTwo = Math.Round((rrtwo / qqtwo) * 100, 1).ToString() + "%"; comp.RammendiEffThree = Math.Round((rrthree / qqthree) * 100, 1).ToString() + "%"; //last selected day foreach (DataRow row in dsDays.Tables[4].Rows) { DateTime.TryParse(row[0].ToString(), out var dt); int.TryParse(row[1].ToString(), out var fin); int.TryParse(row[2].ToString(), out var machines); var component = (from c in _components where c.CurrentDay == dt select c).SingleOrDefault(); if (fin == 3) { component.MacOnFin3 = machines; } else if (fin == 7) { component.MacOnFin7 = machines; } else if (fin == 14) { component.MacOnFin14 = machines; } } var finalTable = new DataTable(); CreateTableView(finalTable); var totalRow = finalTable.NewRow(); totalRow[0] = "TOTALI"; finalTable.Rows.Add(totalRow); var mediaRow = finalTable.NewRow(); mediaRow[0] = "MEDIA"; finalTable.Rows.Add(mediaRow); foreach (var record in _components) { //skip holidays if (string.IsNullOrEmpty(record.FinFourtheen) && string.IsNullOrEmpty(record.FinSeven) && string.IsNullOrEmpty(record.FinThree)) { continue; } var counter = 0; var newRow = finalTable.NewRow(); newRow[0] = record.CurrentDay.Day; newRow[1] = record.FinThree; newRow[2] = string.Empty; //fin5 newRow[3] = record.FinSeven; newRow[4] = record.FinFourtheen; newRow[5] = record.ActiveMachines; newRow[6] = string.Empty; //euro newRow[7] = string.Empty; //next to euro if (!string.IsNullOrEmpty(record.EffOne)) { counter++; } newRow[8] = record.EffOne; if (!string.IsNullOrEmpty(record.EffTwo)) { counter++; } newRow[9] = record.EffTwo; if (!string.IsNullOrEmpty(record.EffThree)) { counter++; } newRow[10] = record.EffThree; double eff1 = 0.0; double eff2 = 0.0; double eff3 = 0.0; if (record.EffOne.Contains("%")) { double.TryParse(record.EffOne.Split('%')[0], out eff1); } if (record.EffTwo.Contains("%")) { double.TryParse(record.EffTwo.Split('%')[0], out eff2); } if (record.EffThree.Contains("%")) { double.TryParse(record.EffThree.Split('%')[0], out eff3); } var totalEff = 0.0; var totalEffSquadra = eff1 + eff2 + eff3; if (totalEffSquadra <= 0.0 || counter <= 0) { totalEff = 0.0; } else { totalEff = Math.Round((totalEffSquadra) / counter, 1); } newRow[11] = /*totalEff == double.NaN ? string.Empty : */ totalEff.ToString() + "%"; //total for eff var effLorda = totalEff; //newRow[12] = string.Empty; // eff - time for producing scarti newRow[13] = record.RammendiPiecesOne; newRow[14] = record.RammendiPiecesTwo; newRow[15] = record.RammendiPiecesThree; newRow[16] = record.RammendiPiecesTotal; newRow[17] = string.Empty; //something in middle between scarti teli and scarti % columns counter = 0; if (!string.IsNullOrEmpty(record.RammendiEffOne)) { counter++; } newRow[18] = record.RammendiEffOne; if (!string.IsNullOrEmpty(record.RammendiEffTwo)) { counter++; } newRow[19] = record.RammendiEffTwo; if (!string.IsNullOrEmpty(record.RammendiEffThree)) { counter++; } newRow[20] = record.RammendiEffThree; if (!string.IsNullOrEmpty(record.RammendiEffOne) && record.RammendiEffOne.Contains('%')) { double.TryParse(record.RammendiEffOne.Split('%')[0], out eff1); } if (!string.IsNullOrEmpty(record.RammendiEffTwo) && record.RammendiEffTwo.Contains('%')) { double.TryParse(record.RammendiEffTwo.Split('%')[0], out eff2); } if (!string.IsNullOrEmpty(record.RammendiEffThree) && record.RammendiEffThree.Contains('%')) { double.TryParse(record.RammendiEffThree.Split('%')[0], out eff3); } var totalSquadraEfficiency = eff1 + eff2 + eff3; if (totalSquadraEfficiency <= 0.0 || counter <= 0) { totalEff = 0.0; } else { totalEff = Math.Round((totalSquadraEfficiency) / counter, 1); } newRow[21] = /*totalEff == double.NaN ? string.Empty : */ totalEff.ToString() + "%"; newRow[22] = record.ScartiPiecesOne; newRow[23] = record.ScartiPiecesTwo; newRow[24] = record.ScartiPiecesThree; newRow[25] = record.ScartiPiecesTotal; counter = 0; if (!string.IsNullOrEmpty(record.ScartiEffOne)) { counter++; } newRow[26] = record.ScartiEffOne; if (!string.IsNullOrEmpty(record.ScartiEffTwo)) { counter++; } newRow[27] = record.ScartiEffTwo; if (!string.IsNullOrEmpty(record.ScartiEffThree)) { counter++; } newRow[28] = record.ScartiEffThree; if (!string.IsNullOrEmpty(record.ScartiEffOne) && record.ScartiEffOne.Contains('%')) { double.TryParse(record.ScartiEffOne.Split('%')[0], out eff1); } if (!string.IsNullOrEmpty(record.ScartiEffTwo) && record.ScartiEffTwo.Contains('%')) { double.TryParse(record.ScartiEffTwo.Split('%')[0], out eff2); } if (!string.IsNullOrEmpty(record.ScartiEffThree) && record.ScartiEffThree.Contains('%')) { double.TryParse(record.ScartiEffThree.Split('%')[0], out eff3); } var effSquadraTotal = eff1 + eff2 + eff3; if (effSquadraTotal <= 0.0 || counter <= 0) { totalEff = 0.0; } else { totalEff = Math.Round((effSquadraTotal) / counter, 1); } newRow[29] = /* totalEff == double.NaN ? string.Empty : */ totalEff.ToString() + "%"; newRow[12] = (effLorda - totalEff) == double.NaN ? string.Empty : (effLorda - totalEff).ToString() + "%"; newRow[30] = string.Empty; finalTable.Rows.Add(newRow); } if (dgvReport.DataSource != null) { dgvReport.DataSource = null; } dgvReport.DataSource = finalTable; CalculateHeaders(); LoadingInfo.CloseLoading(); }
private void CreateTableStructure() { try { LoadingInfo.ShowLoading(); LoadingInfo.InfoText = "Loading data for " + _year + ".\n Please wait..."; _dataSet = new DataSet(); _dataSet.Tables.Clear(); _dataTable = new DataTable(); if (dgvReport.DataSource != null) { dgvReport.DataSource = null; } _dataTable.Columns.Add("Somma"); _dataTable.Columns.Add("splitter_0"); for (var i = 1; i <= 12; i++) { _dataTable.Columns.Add("uno_" + i.ToString()); _dataTable.Columns.Add("due_" + i.ToString()); _dataTable.Columns.Add("tre_" + i.ToString()); _dataTable.Columns.Add("tot_" + i.ToString()); _dataTable.Columns.Add("splitter_" + i.ToString()); } for (var i = 1; i <= 31; i++) { var newRow = _dataTable.NewRow(); newRow[0] = i.ToString(); _dataTable.Rows.Add(newRow); } _dataTable.Columns.Add("uno_t"); _dataTable.Columns.Add("due_t"); _dataTable.Columns.Add("tre_t"); _dataTable.Columns.Add("tot_t"); var cmdTxt = ""; if (_mode == 1) { cmdTxt = "getarticleschanges"; } else if (_mode == 3) { cmdTxt = "getsizechanges"; } else if (_mode == 2) { cmdTxt = "getcolorchanges"; } LoadChanges(cmdTxt); LoadingInfo.UpdateText("Almost done..."); for (var r = 0; r <= _tblChanges.Rows.Count - 1; r++) { var row = _tblChanges.Rows[r]; DateTime.TryParse(row[1].ToString(), out var rDate); var day = rDate.Day.ToString(); var month = rDate.Month.ToString(); var changes = row[2].ToString(); int.TryParse(row[0].ToString(), out var sqrTag); //squadra number var squadra = GetSquadra(sqrTag); var findField = squadra + "_" + month.ToString(); for (var j = 0; j <= _dataTable.Rows.Count - 1; j++) { var jRow = _dataTable.Rows[j]; if (jRow[0].ToString() == day) { int.TryParse(jRow[findField].ToString(), out var jChange); jRow[findField] = jChange + Convert.ToInt32(changes); } } } dgvReport.DataSource = _dataTable; dgvReport.Columns[0].Width = 45; dgvReport.Columns[0].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter; dgvReport.Columns[0].HeaderCell.Style.BackColor = Color.FromArgb(242, 242, 242); dgvReport.Columns[0].HeaderCell.Style.ForeColor = Color.Black; dgvReport.Columns[0].DefaultCellStyle.BackColor = Color.FromArgb(242, 242, 242); dgvReport.Columns[0].HeaderText = "Somma"; dgvReport.Columns[0].Frozen = true; dgvReport.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; dgvReport.Columns[1].Width = 5; dgvReport.Columns[1].HeaderText = string.Empty; for (var i = 2; i <= dgvReport.Columns.Count - 1; i++) { if (i % 5 == 1) { dgvReport.Columns[i].Width = 5; dgvReport.Columns[i].HeaderText = string.Empty; continue; } dgvReport.Columns[i].HeaderCell.Style.Font = new Font("Microsoft Sans Serif", 8, FontStyle.Regular); dgvReport.Columns[i].Width = 35; dgvReport.Columns[i].DefaultCellStyle.Font = new Font("Microsoft Sans Serif", 7, FontStyle.Regular); dgvReport.Columns[i].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; } for (var i = 2; i <= 63; i += 5) { dgvReport.Columns[i - 1].DefaultCellStyle.BackColor = Color.White; dgvReport.Columns[i].DefaultCellStyle.BackColor = Color.FromArgb(255, 255, 231); dgvReport.Columns[i + 1].DefaultCellStyle.BackColor = Color.FromArgb(236, 245, 231); dgvReport.Columns[i + 2].DefaultCellStyle.BackColor = Color.FromArgb(252, 233, 220); dgvReport.Columns[i + 3].DefaultCellStyle.BackColor = Color.FromArgb(242, 242, 242); dgvReport.Columns[i].HeaderCell.Style.BackColor = Color.FromArgb(255, 255, 231); dgvReport.Columns[i + 1].HeaderCell.Style.BackColor = Color.FromArgb(236, 245, 231); dgvReport.Columns[i + 2].HeaderCell.Style.BackColor = Color.FromArgb(252, 233, 220); dgvReport.Columns[i + 3].HeaderCell.Style.BackColor = Color.FromArgb(242, 242, 242); } for (var i = 2; i <= dgvReport.Columns.Count - 1; i++) { if (i % 5 == 1) { continue; } dgvReport.Columns[i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter; dgvReport.Columns[i].HeaderText = "\n\n" + dgvReport.Columns[i].HeaderText.Split('_')[0] + "\n"; } CalculateTotalHorizontal(); CalculateTotalVertical(); foreach (DataGridViewColumn c in dgvReport.Columns) { c.SortMode = DataGridViewColumnSortMode.NotSortable; } if (_mode == 1) { lbl_articolo_total.Text = "Total: " + _yearTotal; lbl_colore_total.Text = string.Empty; lbl_taglia_total.Text = string.Empty; } else if (_mode == 2) { lbl_articolo_total.Text = string.Empty; lbl_colore_total.Text = "Total: " + _yearTotal; lbl_taglia_total.Text = string.Empty; } else if (_mode == 3) { lbl_articolo_total.Text = string.Empty; lbl_colore_total.Text = string.Empty; lbl_taglia_total.Text = "Total: " + _yearTotal; } LoadingInfo.CloseLoading(); } catch (Exception ex) { LoadingInfo.CloseLoading(); MessageBox.Show(ex.Message); } }
private void ProcessData() { LoadingInfo.InfoText = "Loading report..."; LoadingInfo.ShowLoading(); var dsDays = new DataSet(); LoadProcedure(dsDays); _components = new List <CapiComponent>(); //inserting date, eff and qty in list foreach (DataRow row in dsDays.Tables[0].Rows) { DateTime.TryParse(row[0].ToString(), out var date); var eff = row[1].ToString() + "%"; int.TryParse(row[2].ToString(), out var qty); int.TryParse(row[3].ToString(), out var actives); _components.Add(new CapiComponent(date, eff, qty, actives)); } //calculating scarti/rammendi per days DateTime.TryParse(dsDays.Tables[1].Rows[0][0].ToString(), out var startDate); var startShift = dsDays.Tables[1].Rows[0][1].ToString(); int.TryParse(dsDays.Tables[1].Rows[0][2].ToString(), out var startOperatorCode); int.TryParse(dsDays.Tables[1].Rows[0][3].ToString(), out var startMachine); var startOrder = dsDays.Tables[1].Rows[0][4].ToString(); var startArticle = dsDays.Tables[1].Rows[0][5].ToString(); int.TryParse(dsDays.Tables[1].Rows[0][6].ToString(), out var startTrash); int.TryParse(dsDays.Tables[1].Rows[0][7].ToString(), out var startRepair); var sumTrash = 0; var sumRepair = 0; foreach (DataRow row in dsDays.Tables[1].Rows) { DateTime.TryParse(row[0].ToString(), out var date); var shift = row[1].ToString(); int.TryParse(row[2].ToString(), out var operatorCode); int.TryParse(row[3].ToString(), out var machine); var order = row[4].ToString(); var article = row[5].ToString(); int.TryParse(row[6].ToString(), out var trash); int.TryParse(row[7].ToString(), out var repair); if (date != startDate) { sumTrash += startTrash; sumRepair += startRepair; var component = (from c in _components where c.CurrentDay == startDate select c).SingleOrDefault(); if (component != null) { double.TryParse(sumTrash.ToString(), out var t); double.TryParse(sumRepair.ToString(), out var r); component.PercTrash = Math.Round((t / component.Pieces) * 100, 1).ToString() + "%"; component.PercRepair = Math.Round((r / component.Pieces) * 100, 1).ToString() + "%"; double.TryParse(component.Efficiency.Split('%')[0], out var eff); component.EfficiencyNetta = (eff - Math.Round((t / component.Pieces) * 100, 1)).ToString() + "%"; } sumTrash = 0; sumRepair = 0; } if (machine != startMachine || shift != startShift || operatorCode != startOperatorCode || order != startOrder || article != startArticle) { sumTrash += startTrash; sumRepair += startRepair; } startDate = date; startShift = shift; startOperatorCode = operatorCode; startMachine = machine; startOrder = order; startArticle = article; startTrash = trash; startRepair = repair; } sumTrash += startTrash; sumRepair += startRepair; var lstComponent = (from lc in _components where lc.CurrentDay == startDate select lc).SingleOrDefault(); double.TryParse(sumTrash.ToString(), out var lt); double.TryParse(sumRepair.ToString(), out var lr); lstComponent.PercTrash = Math.Round((lt / lstComponent.Pieces) * 100, 1).ToString() + "%"; lstComponent.PercRepair = Math.Round((lr / lstComponent.Pieces) * 100, 1).ToString() + "%"; double.TryParse(lstComponent.Efficiency.Split('%')[0], out var lstEff); lstComponent.EfficiencyNetta = (lstEff - Math.Round((lt / lstComponent.Pieces) * 100, 1)).ToString() + "%"; var tableView = new DataTable(); CreateTableView(tableView); var counter = 0; double mediaActiveMachines = 0.0; double mediaRepair = 0.0; double mediaTrash = 0.0; double mediaEfficiency = 0.0; double mediaEfficiencyNetta = 0.0; var insertMedia = false; var rowPos = 0; foreach (DataRow row in tableView.Rows) { rowPos++; int.TryParse(row[1].ToString(), out var day); var component = (from c in _components where c.CurrentDay.Day == day select c).SingleOrDefault(); if (insertMedia) { if (counter > 0) { row[3] = Math.Round(mediaActiveMachines / counter, 0); row[5] = Math.Round(mediaRepair / counter, 1).ToString() + "%"; row[6] = Math.Round(mediaTrash / counter, 1).ToString() + "%"; row[7] = Math.Round(mediaEfficiency / counter, 1).ToString() + "%"; row[8] = Math.Round(mediaEfficiencyNetta / counter, 1).ToString() + "%"; } counter = 0; mediaActiveMachines = 0.0; mediaRepair = 0.0; mediaTrash = 0.0; mediaEfficiency = 0.0; mediaEfficiencyNetta = 0.0; insertMedia = false; } else { if (row[0].ToString() == "Sunday") { insertMedia = true; } if (component != null) { counter++; double.TryParse(component.PercRepair.Split('%')[0], out var r); double.TryParse(component.PercTrash.Split('%')[0], out var t); double.TryParse(component.Efficiency.Split('%')[0], out var e); double en = 0.0; if (!string.IsNullOrEmpty(component.EfficiencyNetta) && component.EfficiencyNetta.Contains('%')) { double.TryParse(component.EfficiencyNetta.Split('%')[0], out en); } mediaActiveMachines += component.ActiveMachines; mediaRepair += r; mediaTrash += t; mediaEfficiency += e; mediaEfficiencyNetta += en; row[2] = string.Empty; // totale capi row[3] = component.ActiveMachines; row[4] = string.Empty; //capi per mac row[5] = component.PercRepair; row[6] = component.PercTrash; row[7] = component.Efficiency; //eff row[8] = component.EfficiencyNetta; } } if (tableView.Rows.Count - 1 == rowPos) { if (counter > 0) { row[3] = Math.Round(mediaActiveMachines / counter, 0); row[5] = Math.Round(mediaRepair / counter, 1).ToString() + "%"; row[6] = Math.Round(mediaTrash / counter, 1).ToString() + "%"; row[7] = Math.Round(mediaEfficiency / counter, 1).ToString() + "%"; row[8] = Math.Round(mediaEfficiencyNetta / counter, 1).ToString() + "%"; } } } if (dgvReport.DataSource != null) { dgvReport.DataSource = null; } dgvReport.DataSource = tableView; //calculate values for media row --position 0 for (var c = 1; c < dgvReport.Columns.Count; c++) { var count = 0; int intVal = 0; double doubleVal = 0.0; for (var r = 2; r < dgvReport.Rows.Count; r++) { if (string.IsNullOrEmpty(dgvReport.Rows[r].Cells[c].Value.ToString())) { continue; } count++; if (c == 3) { int.TryParse(dgvReport.Rows[r].Cells[c].Value.ToString(), out var val); intVal += val; } else if (c >= 5 && c <= 8) { double.TryParse(dgvReport.Rows[r].Cells[c].Value.ToString().Split('%')[0], out var val); doubleVal += val; } } if (c == 1) { if (count == 0) { dgvReport.Rows[0].Cells[c].Value = "0"; } else { var daysInMonth = DateTime.DaysInMonth(GetYear(), GetMonth()); double.TryParse(count.ToString(), out var workedDays); dgvReport.Rows[0].Cells[c].Value = Math.Round((workedDays / daysInMonth) * 100, 1).ToString() + "%"; } } else if (c == 3) { if (count == 0) { dgvReport.Rows[0].Cells[c].Value = "0"; } else { dgvReport.Rows[0].Cells[c].Value = intVal / count; } } else if (c >= 5 && c <= 8) { if (count == 0) { dgvReport.Rows[0].Cells[c].Value = "0"; } else { dgvReport.Rows[0].Cells[c].Value = Math.Round(doubleVal / count, 1).ToString() + "%"; } } } LoadingInfo.CloseLoading(); }
private void ProcessData() { if (Get_Date_From() > Get_Date_To()) { MessageBox.Show("Invalid date selection!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } LoadingInfo.InfoText = "Loading report..."; LoadingInfo.ShowLoading(); _stops = new List <MachinesStops>(); LoadProcedure(_stops); var table = new DataTable(); CreateTableView(table); foreach (var cat in new string[] { "Tempo possibile", "Cambi [ore]", "Pulizia [ore]", "Campionario [ore]", "Cambio aghi [ore]", "Qualita filato [ore]", "Maintance [ore]", "Rottura filato [ore]", "Pulizia fronture [ore]", "Interventi meccanici [ore]", "Varie [ore]", "Tempo Produttivo", "Perdita per scarti [ore]", "Perdita per rammendi [ore]", "Tempo VA", "Tempo disponibile [ore]", "Utilazation - Saturazione %", "Availability - Disponbilita %", "Efficienza %", "Quality ore %", "Quality teli %", "", //sep row "Tempo possibile %", "Cambi %", "Pulizia %", "Campionario %", "Cambio aghi %", "Qualita filato %", "Varie %", "Rottura filato %", "Pulizia fronture %", "Interventi meccanici %", "Varie %", "Tempo Produttivo %", "Perdita per scarti %", "Perdita per rammendi %", "OEE %", "TEEP %" }) { var newRow = table.NewRow(); newRow["Categories"] = cat; table.Rows.Add(newRow); } if (dgvReport.DataSource != null) { dgvReport.DataSource = null; } dgvReport.DataSource = table; double cambi = 0.0, pulizia = 0.0, campionario = 0.0, cambioAghi = 0.0, qualitaFilato = 0.0, varieOne = 0.0, rotturaFilato = 0.0, puliziaFron = 0.0, meccanici = 0.0, varieTwo = 0.0, totalTempoProdutivo = 0.0, totalTempoPossibile = 0.0, totTempoVA = 0.0, totTempoScarti = 0.0, totTempoRammendi = 0.0; FrmHolidays.dc = new System.Data.Linq.DataContext(MainWnd.conString); var finList = Get_Selected_Finezza(); for (var c = 1; c < dgvReport.Columns.Count - 2; c++) { var month = (from s in _stops where s.Date == dgvReport.Columns[c].Name select s).SingleOrDefault(); if (month == null) { continue; } int.TryParse(dgvReport.Columns[c].Name.Split('.')[0], out var y); int.TryParse(dgvReport.Columns[c].Name.Split('.')[1], out var m); var currentDate = new DateTime(y, m, 1); var parameters = (from p in Tables.TblMonthTrash where p.Date == currentDate select p).ToList(); if (parameters == null || parameters.Count <= 0) { continue; } //calculating times for each month and each finezza double tempoCalendario = 0.0; double tempoPossibile = 0.0; double tempoDisponssibile = 0.0; double tempoProdutivo = 0.0; double tempoScarti = 0.0; double tempoRammendi = 0.0; double tempoCalendarioTeep = 0.0; foreach (var uniqueParameters in parameters) { if (!finList.Exists(f => f == uniqueParameters.Finezza)) { continue; } var daysInMonth = DateTime.DaysInMonth(uniqueParameters.Date.Year, uniqueParameters.Date.Month); double.TryParse(daysInMonth.ToString(), out var days); var tmpTempoCalendario = (days * uniqueParameters.ConsiderateMac - Get_Holidays_In_Range(currentDate, new DateTime(currentDate.Year, currentDate.Month, daysInMonth)) * uniqueParameters.ConsiderateMac) * 86_400; var tmpTempoPossibile = tmpTempoCalendario - (uniqueParameters.FermataStraordinaria + uniqueParameters.MancanzaLavoro) * 3600; var tmpTempoProdutivo = uniqueParameters.Produtivo * 3600; double.TryParse((uniqueParameters.Scarti * 3600).ToString(), out var tmpTempoScarti); double.TryParse((uniqueParameters.Rammendi * 3600).ToString(), out var tmpTempoRammendi); var tmpTempoDisponssibile = tmpTempoPossibile - (month.CambiOre + month.PuliziaOre + month.CampionarioOre + month.CambioAghiOre + month.QualitaFilatoOre + month.MaintanceOre); var tempoIterruzioni = month.RotturaFilatoOre + month.PuliziaFrontureOre + month.MeccaniciOre + month.VarieTOre; var tempoEffetivo = tmpTempoDisponssibile - (month.RotturaFilatoOre + month.PuliziaFrontureOre + month.MeccaniciOre + month.VarieTOre); double.TryParse(uniqueParameters.CalendarioTEEP.ToString(), out var tmpTempoCalendarioTEEP); tempoCalendario += tmpTempoCalendario; tempoCalendarioTeep += tmpTempoCalendarioTEEP * 3600; tempoPossibile += tmpTempoPossibile; tempoDisponssibile += tmpTempoDisponssibile; tempoProdutivo += tmpTempoProdutivo; tempoScarti += tmpTempoScarti; tempoRammendi += tmpTempoRammendi; } #region firstTablePart dgvReport.Rows[0].Cells[c].Value = ConvertSecondsToHHmm(tempoPossibile); totalTempoPossibile += tempoPossibile; dgvReport.Rows[1].Cells[c].Value = ConvertSecondsToHHmm(month.CambiOre); cambi += month.CambiOre; dgvReport.Rows[2].Cells[c].Value = ConvertSecondsToHHmm(month.PuliziaOre); pulizia += month.PuliziaOre; dgvReport.Rows[3].Cells[c].Value = ConvertSecondsToHHmm(month.CampionarioOre); campionario += month.CampionarioOre; dgvReport.Rows[4].Cells[c].Value = ConvertSecondsToHHmm(month.CambioAghiOre); cambioAghi += month.CambioAghiOre; dgvReport.Rows[5].Cells[c].Value = ConvertSecondsToHHmm(month.QualitaFilatoOre); qualitaFilato += month.QualitaFilatoOre; dgvReport.Rows[6].Cells[c].Value = ConvertSecondsToHHmm(month.MaintanceOre); varieOne += month.MaintanceOre; dgvReport.Rows[7].Cells[c].Value = ConvertSecondsToHHmm(month.RotturaFilatoOre); rotturaFilato += month.RotturaFilatoOre; dgvReport.Rows[8].Cells[c].Value = ConvertSecondsToHHmm(month.PuliziaFrontureOre); puliziaFron += month.PuliziaFrontureOre; dgvReport.Rows[9].Cells[c].Value = ConvertSecondsToHHmm(month.MeccaniciOre); meccanici += month.MeccaniciOre; dgvReport.Rows[10].Cells[c].Value = ConvertSecondsToHHmm(month.VarieTOre); varieTwo += month.VarieTOre; dgvReport.Rows[11].Cells[c].Value = ConvertSecondsToHHmm(tempoProdutivo); totalTempoProdutivo += tempoProdutivo; dgvReport.Rows[12].Cells[c].Value = ConvertSecondsToHHmm(tempoScarti); totTempoScarti += tempoScarti; dgvReport.Rows[13].Cells[c].Value = ConvertSecondsToHHmm(tempoRammendi); totTempoRammendi += tempoRammendi; dgvReport.Rows[14].Cells[c].Value = ConvertSecondsToHHmm(tempoProdutivo - tempoScarti - tempoRammendi); totTempoVA += tempoProdutivo - tempoScarti - tempoRammendi; var quality = Math.Round(((tempoProdutivo - tempoScarti - tempoRammendi) / tempoProdutivo) * 100, 1); var percQualityTeli = Math.Round(((month.TeliScarti + month.TeliRammendi) / month.Teli) * 100, 1); // instead of 1s add teliScarti + teliRammendi var qualityTeli = 100 - percQualityTeli; dgvReport.Rows[15].Cells[c].Value = ConvertSecondsToHHmm(tempoDisponssibile); dgvReport.Rows[16].Cells[c].Value = Math.Round((tempoPossibile / tempoCalendario) * 100, 1); dgvReport.Rows[17].Cells[c].Value = Math.Round((tempoDisponssibile / tempoPossibile) * 100, 1); dgvReport.Rows[18].Cells[c].Value = Math.Round((tempoProdutivo / tempoDisponssibile) * 100, 1); dgvReport.Rows[19].Cells[c].Value = quality; dgvReport.Rows[20].Cells[c].Value = qualityTeli; #endregion firstTablePart //row[21] sep row #region secondTablePart dgvReport.Rows[22].Cells[c].Value = "100"; dgvReport.Rows[23].Cells[c].Value = Math.Round((month.CambiOre / (tempoPossibile)) * 100, 1); dgvReport.Rows[24].Cells[c].Value = Math.Round((month.PuliziaOre / (tempoPossibile)) * 100, 1); dgvReport.Rows[25].Cells[c].Value = Math.Round((month.CampionarioOre / (tempoPossibile)) * 100, 1); dgvReport.Rows[26].Cells[c].Value = Math.Round((month.CambioAghiOre / (tempoPossibile)) * 100, 1); dgvReport.Rows[27].Cells[c].Value = Math.Round((month.QualitaFilatoOre / (tempoPossibile)) * 100, 1); dgvReport.Rows[28].Cells[c].Value = Math.Round((month.MaintanceOre / (tempoPossibile)) * 100, 1); dgvReport.Rows[29].Cells[c].Value = Math.Round((month.RotturaFilatoOre / (tempoPossibile)) * 100, 1); dgvReport.Rows[30].Cells[c].Value = Math.Round((month.PuliziaFrontureOre / (tempoPossibile)) * 100, 1); dgvReport.Rows[31].Cells[c].Value = Math.Round((month.MeccaniciOre / (tempoPossibile)) * 100, 1); dgvReport.Rows[32].Cells[c].Value = Math.Round((month.VarieTOre / (tempoPossibile)) * 100, 1); dgvReport.Rows[33].Cells[c].Value = Math.Round((tempoProdutivo / (tempoPossibile)) * 100, 1); dgvReport.Rows[34].Cells[c].Value = Math.Round((totTempoScarti / tempoPossibile) * 100, 1); dgvReport.Rows[35].Cells[c].Value = Math.Round((totTempoRammendi / tempoPossibile) * 100, 1); var oee = Math.Round(((quality * ((tempoProdutivo / tempoDisponssibile) * 100) * ((tempoDisponssibile / tempoPossibile) * 100))) / 10_000, 1); dgvReport.Rows[36].Cells[c].Value = oee; var teep = Math.Round(oee * (((tempoPossibile / tempoCalendarioTeep) * 100) / 100), 1); dgvReport.Rows[37].Cells[c].Value = teep; #endregion secondTablePart } //totals #region firstPartTableTotals dgvReport.Rows[0].Cells[dgvReport.Columns.Count - 1].Value = ConvertSecondsToHHmm(totalTempoPossibile); dgvReport.Rows[1].Cells[dgvReport.Columns.Count - 1].Value = ConvertSecondsToHHmm(cambi); dgvReport.Rows[2].Cells[dgvReport.Columns.Count - 1].Value = ConvertSecondsToHHmm(pulizia); dgvReport.Rows[3].Cells[dgvReport.Columns.Count - 1].Value = ConvertSecondsToHHmm(campionario); dgvReport.Rows[4].Cells[dgvReport.Columns.Count - 1].Value = ConvertSecondsToHHmm(cambioAghi); dgvReport.Rows[5].Cells[dgvReport.Columns.Count - 1].Value = ConvertSecondsToHHmm(qualitaFilato); dgvReport.Rows[6].Cells[dgvReport.Columns.Count - 1].Value = ConvertSecondsToHHmm(varieOne); dgvReport.Rows[7].Cells[dgvReport.Columns.Count - 1].Value = ConvertSecondsToHHmm(rotturaFilato); dgvReport.Rows[8].Cells[dgvReport.Columns.Count - 1].Value = ConvertSecondsToHHmm(puliziaFron); dgvReport.Rows[9].Cells[dgvReport.Columns.Count - 1].Value = ConvertSecondsToHHmm(meccanici); dgvReport.Rows[10].Cells[dgvReport.Columns.Count - 1].Value = ConvertSecondsToHHmm(varieTwo); dgvReport.Rows[11].Cells[dgvReport.Columns.Count - 1].Value = ConvertSecondsToHHmm(totalTempoProdutivo); dgvReport.Rows[12].Cells[dgvReport.Columns.Count - 1].Value = ConvertSecondsToHHmm(totTempoScarti); dgvReport.Rows[13].Cells[dgvReport.Columns.Count - 1].Value = ConvertSecondsToHHmm(totTempoRammendi); dgvReport.Rows[14].Cells[dgvReport.Columns.Count - 1].Value = ConvertSecondsToHHmm(totTempoVA); #endregion firstPartTableTotals #region secondPartTableTotals //sep row [21] dgvReport.Rows[22].Cells[dgvReport.Columns.Count - 1].Value = "100"; dgvReport.Rows[23].Cells[dgvReport.Columns.Count - 1].Value = Math.Round((cambi / totalTempoPossibile) * 100, 1); dgvReport.Rows[24].Cells[dgvReport.Columns.Count - 1].Value = Math.Round((pulizia / totalTempoPossibile) * 100, 1); dgvReport.Rows[25].Cells[dgvReport.Columns.Count - 1].Value = Math.Round((campionario / totalTempoPossibile) * 100, 1); dgvReport.Rows[26].Cells[dgvReport.Columns.Count - 1].Value = Math.Round((cambioAghi / totalTempoPossibile) * 100, 1); dgvReport.Rows[27].Cells[dgvReport.Columns.Count - 1].Value = Math.Round((qualitaFilato / totalTempoPossibile) * 100, 1); dgvReport.Rows[28].Cells[dgvReport.Columns.Count - 1].Value = Math.Round((varieOne / totalTempoPossibile) * 100, 1); dgvReport.Rows[29].Cells[dgvReport.Columns.Count - 1].Value = Math.Round((rotturaFilato / totalTempoPossibile) * 100, 1); dgvReport.Rows[30].Cells[dgvReport.Columns.Count - 1].Value = Math.Round((puliziaFron / totalTempoPossibile) * 100, 1); dgvReport.Rows[31].Cells[dgvReport.Columns.Count - 1].Value = Math.Round((meccanici / totalTempoPossibile) * 100, 1); dgvReport.Rows[32].Cells[dgvReport.Columns.Count - 1].Value = Math.Round((varieTwo / totalTempoPossibile) * 100, 1); dgvReport.Rows[33].Cells[dgvReport.Columns.Count - 1].Value = Math.Round((totalTempoProdutivo / totalTempoPossibile) * 100, 1); dgvReport.Rows[34].Cells[dgvReport.Columns.Count - 1].Value = Math.Round((totTempoScarti / totalTempoPossibile) * 100, 1); dgvReport.Rows[35].Cells[dgvReport.Columns.Count - 1].Value = Math.Round((totTempoRammendi / totalTempoPossibile) * 100, 1); #endregion secondPartTableTotals LoadingInfo.CloseLoading(); }
private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e) { txtLink.Text = e.Url.ToString(); LoadingInfo.CloseLoading(); }
private void CreateMachinesReport() { LoadingInfo.InfoText = "Loading chart..."; LoadingInfo.ShowLoading(); /* **Create controls based on shifts selection */ var global = new Globals(); var chart_data = new DataTable(); var table_data = new DataTable(); // Loads charts data using (var con = new SqlConnection(MainWnd.conString)) { var cmd = new SqlCommand("get_data_in_hold_per_hour", con); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@from_date", SqlDbType.DateTime).Value = MainWnd.Get_to_date(); cmd.Parameters.Add("@to_date", SqlDbType.DateTime).Value = MainWnd.Get_to_date(); cmd.Parameters.Add("@machine", SqlDbType.VarChar).Value = _machines_array.ToString(); con.Open(); var dr = cmd.ExecuteReader(); chart_data.Load(dr); con.Close(); dr.Close(); cmd = null; // Loads table data cmd = new SqlCommand("get_data_in_hold_per_shift", con); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@from_date", SqlDbType.DateTime).Value = MainWnd.Get_from_date(); cmd.Parameters.Add("@to_date", SqlDbType.DateTime).Value = MainWnd.Get_to_date(); cmd.Parameters.Add("@shift", SqlDbType.VarChar).Value = MainWnd.Get_shift_array().ToString(); cmd.Parameters.Add("@machine", SqlDbType.VarChar).Value = _machines_array.ToString(); con.Open(); dr = cmd.ExecuteReader(); table_data.Load(dr); con.Close(); dr.Close(); cmd = null; } // Creates controls with data structure var topObjLocation = 20; var leftObjLocation = 17; var objW = Width - 50; _panel_shift = new Panel(); _panel_shift.Dock = DockStyle.Fill; _panel_shift.AutoScroll = true; Controls.Add(_panel_shift); _panel_shift.BringToFront(); foreach (var shift in MainWnd.ListOfSelectedShifts) { // Add shift title _lbl_shfit = new Label(); _lbl_shfit.AutoSize = true; _lbl_shfit.Font = new Font("Microsoft Sans Serif", 15); _lbl_shfit.ForeColor = Color.Black; var shf = ""; var upShift = string.Empty; if (shift.Remove(0, 2) == "Night") { shf = "Turno 1"; upShift = "NIGHT"; } else if (shift.Remove(0, 2) == "Morning") { shf = "Turno 2"; upShift = "MORNING"; } else if (shift.Remove(0, 2) == "Afternoon") { shf = "Turno 3"; upShift = "AFTERNOON"; } _lbl_shfit.Text = shf; var lblW = _lbl_shfit.Width; var locX = (Width / 2 - lblW / 2); _lbl_shfit.Location = new Point(locX - 20, topObjLocation + 10); _panel_shift.Controls.Add(_lbl_shfit); topObjLocation += _lbl_shfit.Height; // Convert table data var conv_table_data = new DataTable(); foreach (DataColumn dc in table_data.Columns) { if (dc.ColumnName == "stop_time") { continue; } conv_table_data.Columns.Add(dc.ColumnName); //copies datacolumns } conv_table_data.Columns.Add("Generic Stops"); conv_table_data.Columns.Add("TOTAL"); foreach (DataRow row in table_data.Rows) { var newRow = conv_table_data.NewRow(); if (row[1].ToString() != upShift) { continue; } var knitTime = Convert.ToInt32(row[8]); var stopTime = Convert.ToInt32(row[16]); var total = 0; for (var i = 0; i <= 7; i++) { if (i == 0) { newRow[i] = Convert.ToDateTime(row[i]).ToShortDateString(); } else { newRow[i] = row[i].ToString(); } } for (var i = 8; i <= 15; i++) { newRow[i] = ConvertSecondsToHHmm(Convert.ToInt32(row[i])); total += Convert.ToInt32(row[i]); } var genericStop = 0; var allStops = 0; for (var i = 9; i <= 15; i++) { allStops += Convert.ToInt32(row[i]); } genericStop = stopTime - allStops; if (genericStop < 0) { genericStop = 0; } total += genericStop; newRow[16] = ConvertSecondsToHHmm(genericStop); newRow[17] = ConvertSecondsToHHmm(total); conv_table_data.Rows.Add(newRow); } //Add chart _chart = new System.Windows.Forms.DataVisualization.Charting.Chart(); _chart.Size = new Size(objW, 400); _chart.Location = new Point(leftObjLocation, topObjLocation + 20); _chart.BackColor = Color.WhiteSmoke; topObjLocation += _chart.Height; _chart.ChartAreas.Clear(); _chart.Series.Clear(); _chart.ChartAreas.Add("hold"); _chart.ChartAreas[0].AxisX.MajorGrid.LineColor = Color.Gainsboro; _chart.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.Gainsboro; _chart.ChartAreas[0].AxisX.MajorGrid.IntervalOffset = 20; _chart.ChartAreas[0].BackColor = Color.WhiteSmoke; _chart.ChartAreas[0].AxisX.LineColor = Color.WhiteSmoke; _chart.ChartAreas[0].AxisX.LabelStyle.ForeColor = Color.Gray; _chart.ChartAreas[0].AxisY.LineColor = Color.Silver; _chart.ChartAreas[0].AxisY.LabelStyle.ForeColor = Color.Gray; _chart.ChartAreas[0].AxisY.Maximum = 60; //_chart.ChartAreas[0].AxisX.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Hours; //_chart.ChartAreas[0].AxisX.LabelAutoFitMinFontSize = 15; _chart.Series.Add("knitt"); _chart.Series.Add("comb"); _chart.Series.Add("manual"); _chart.Series.Add("yarn"); _chart.Series.Add("needle"); _chart.Series.Add("shock"); _chart.Series.Add("roller"); _chart.Series.Add("other"); _chart.Series.Add("generic"); _chart.Legends.Clear(); _chart.Series["knitt"].Color = global.GetStopColors()[0]; _chart.Series["comb"].Color = global.GetStopColors()[1]; _chart.Series["manual"].Color = global.GetStopColors()[2]; _chart.Series["yarn"].Color = global.GetStopColors()[3]; _chart.Series["needle"].Color = global.GetStopColors()[4]; _chart.Series["shock"].Color = global.GetStopColors()[5]; _chart.Series["roller"].Color = global.GetStopColors()[6]; _chart.Series["other"].Color = global.GetStopColors()[7]; _chart.Series["generic"].Color = Color.Gold; foreach (DataRow row in chart_data.Rows) { var hour = Convert.ToInt32(row[0]); int knit = Convert.ToInt32(row[1]) > 0 ? Convert.ToInt32(row[1]) : knit = 0; int comb = Convert.ToInt32(row[3]) > 0 ? Convert.ToInt32(row[3]) : comb = 0; int manual = Convert.ToInt32(row[4]) > 0 ? Convert.ToInt32(row[4]) : manual = 0; int yarn = Convert.ToInt32(row[5]) > 0 ? Convert.ToInt32(row[5]) : yarn = 0; int needle = Convert.ToInt32(row[6]) > 0 ? Convert.ToInt32(row[6]) : needle = 0; int shock = Convert.ToInt32(row[7]) > 0 ? Convert.ToInt32(row[7]) : shock = 0; int roller = Convert.ToInt32(row[8]) > 0 ? Convert.ToInt32(row[8]) : roller = 0; int other = Convert.ToInt32(row[9]) > 0 ? Convert.ToInt32(row[9]) : other = 0; if (knit > 60) { knit = 60; } if (shift == "cbNight" && hour == 23) { _chart.Series["knitt"].Points.AddXY(hour.ToString(), knit); _chart.Series["comb"].Points.AddXY(hour.ToString(), comb); _chart.Series["manual"].Points.AddXY(hour.ToString(), manual); _chart.Series["yarn"].Points.AddXY(hour.ToString(), yarn); _chart.Series["needle"].Points.AddXY(hour.ToString(), needle); _chart.Series["shock"].Points.AddXY(hour.ToString(), shock); _chart.Series["roller"].Points.AddXY(hour.ToString(), roller); _chart.Series["other"].Points.AddXY(hour.ToString(), other); var stopTime = Convert.ToInt32(row[2]); var otherTime = 0; for (var i = 3; i <= chart_data.Columns.Count - 9; i++) { otherTime += Convert.ToInt32(row[i]); } var unknow = stopTime - otherTime; if (unknow > 60) { unknow = 60; } else if (unknow < 0) { unknow = 0; } if ((knit + unknow) > 60) { unknow = 60 - knit; } _chart.Series["generic"].Points.AddXY(hour.ToString(), unknow); } if (shift == "cbNight" && hour >= 0 && hour <= 6 || shift == "cbMorning" && hour >= 7 && hour <= 14 || shift == "cbAfternoon" && hour >= 15 && hour <= 22) { _chart.Series["knitt"].Points.AddXY(hour.ToString(), knit); _chart.Series["comb"].Points.AddXY(hour.ToString(), comb); _chart.Series["manual"].Points.AddXY(hour.ToString(), manual); _chart.Series["yarn"].Points.AddXY(hour.ToString(), yarn); _chart.Series["needle"].Points.AddXY(hour.ToString(), needle); _chart.Series["shock"].Points.AddXY(hour.ToString(), shock); _chart.Series["roller"].Points.AddXY(hour.ToString(), roller); _chart.Series["other"].Points.AddXY(hour.ToString(), other); var stopTime = Convert.ToInt32(row[2]); var otherTime = 0; for (var i = 3; i <= 9; i++) { otherTime += Convert.ToInt32(row[i]); } var unknow = stopTime - otherTime; if (unknow > 60) { unknow = 60; } else if (unknow < 0) { unknow = 0; } if ((knit + unknow) > 60) { unknow = 60 - knit; } _chart.Series["generic"].Points.AddXY(hour.ToString(), unknow); } } foreach (var s in _chart.Series) { s.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.StackedColumn; s.Font = new Font("Tahoma", 8, FontStyle.Bold); s.LabelForeColor = Color.Black; s.IsValueShownAsLabel = true; foreach (var d in s.Points) { if (d.YValues[0] < 1) { d.IsValueShownAsLabel = false; } } } _panel_shift.Controls.Add(_chart); _dgv = new DataGridView(); _dgv.Size = new Size(objW, 150); _dgv.Location = new Point(leftObjLocation, topObjLocation + 20); topObjLocation += _dgv.Height + 20; _dgv.EnableHeadersVisualStyles = false; _dgv.DoubleBufferedDataGridView(true); _dgv.AllowUserToAddRows = false; _dgv.AllowUserToDeleteRows = false; _dgv.AllowUserToResizeColumns = false; _dgv.AllowUserToResizeRows = false; _dgv.AllowUserToOrderColumns = false; _dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing; _dgv.ReadOnly = true; _dgv.BackgroundColor = Color.WhiteSmoke; _dgv.BorderStyle = BorderStyle.None; _dgv.MultiSelect = false; _dgv.SelectionMode = DataGridViewSelectionMode.CellSelect; _dgv.Font = new Font("Microsoft Sans Serif", 9); _dgv.ForeColor = Color.FromArgb(60, 60, 60); _dgv.CellBorderStyle = DataGridViewCellBorderStyle.None; _dgv.DataSource = conv_table_data; _dgv.DataBindingComplete += delegate { _dgv.Columns[1].Visible = false; for (var c = 8; c <= _dgv.Columns.Count - 3; c++) { _dgv.Columns[c].HeaderCell.Style.BackColor = global.GetStopColors()[c - 8]; _dgv.Columns[c].HeaderCell.Style.ForeColor = Color.White; _dgv.Columns[c].HeaderCell.Style.Font = new Font("Microsoft Sans Serif", 8, FontStyle.Bold); _dgv.Columns[c].HeaderText = global.StopReasonsIt[c - 8]; } _dgv.Columns["Generic Stops"].HeaderCell.Style.BackColor = Color.Gold; _dgv.Columns["Generic Stops"].HeaderCell.Style.ForeColor = Color.White; _dgv.Columns["Generic Stops"].HeaderCell.Style.Font = new Font("Microsoft Sans Serif", 8, FontStyle.Bold); foreach (DataGridViewColumn c in _dgv.Columns) { _dgv.AutoResizeColumn(c.DisplayIndex); } }; _panel_shift.Controls.Add(_dgv); } LoadingInfo.CloseLoading(); }