using DatenDB; using Deckungsbeitrag.AA_Klassen; using HarfBuzzSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Font = System.Drawing.Font; namespace Deckungsbeitrag.AA_Forms { public partial class FormWSVerfolgung : Form { private readonly SPSDaten _monitor; //Ziel der Eventanfragen für die SPS. private string Userid; private Maschine maschine; private Auftrag auftrag; private Fehlermeldungen meldung = new Fehlermeldungen(); private Aufgabe aufgabe; private WSFach fach; public bool ws1transport = false; public bool ws2transport = false; public FormWSVerfolgung() { InitializeComponent(); } public FormWSVerfolgung(string userid) : this() { this.Userid = userid; if (userid.Contains("01")) this.maschine = Maschine.GetMaschine(null, "Waschstrasse 1"); if (userid.Contains("02")) this.maschine = Maschine.GetMaschine(null, "Waschstrasse 2"); this._monitor = new SPSDaten(); //Je nach Maschine werden die richtigen Events erstellt. if (maschine.MaschineID == 1) { _monitor.WS1Transport += Transport_ValueChanged; //_monitor.Presse1Leer += WS1_Value_Changed; //_monitor.Trockner1Beladen += WS1_Value_Changed; //_monitor.Trockner1Entladen += WS1_Value_Changed; //_monitor.TischSummaryWS1_print += TischSummary_print; //_monitor.BegleitzettelWS1_print += Begleitzettel_print; } //Maschine 1 else { _monitor.WS2Transport += Transport_ValueChanged; //_monitor.Presse2Leer += WS2_Value_Changed; //_monitor.Trockner2Beladen += WS2_Value_Changed; //_monitor.Trockner2Entladen += WS2_Value_Changed; //_monitor.TischSummaryWS2_print += TischSummary_print; //_monitor.BegleitzettelWS2_print += Begleitzettel_print; } //Maschine 2 } private void WSVerfolgung_Load(object sender, EventArgs e) { // WaitCursor und Controls ausblenden. this.Cursor = Cursors.WaitCursor; //Funktionen.HideControls(this.Controls); // StatusStrip DropDown this.toolStripDropDownButtonInfo.DropDownItems.Clear(); List aufgabenliste = Aufgabe.GetList((int)Kategorie.Waschstrasse); foreach(Aufgabe auf in aufgabenliste) { ToolStripMenuItem item = new ToolStripMenuItem(auf.Bezeichnung); item.Tag = auf; item.Click += AufgabeAuswaehlen_Click; toolStripDropDownButtonInfo.DropDownItems.Add(item); } this.BackColor = Properties.Settings.Default.Wirlblau; this.WindowState = FormWindowState.Maximized; this.FormBorderStyle = FormBorderStyle.None; this.tableLayoutPanelWSVerfolgung.Height = this.statusStripWSVerfolgung.Top; if (maschine.TrocknerKaputt) this.tableLayoutPanelWSVerfolgung.RowCount = maschine.Faecher - 1; else this.tableLayoutPanelWSVerfolgung.RowCount = maschine.Faecher; this.tableLayoutPanelWSVerfolgung.RowStyles.Clear(); for (int i = 0; i < tableLayoutPanelWSVerfolgung.RowCount; i++) { tableLayoutPanelWSVerfolgung.RowStyles.Add(new RowStyle(SizeType.Percent, 100f / tableLayoutPanelWSVerfolgung.RowCount)); } Panel_Laden(1); //DefaultCursor und Controls einblenden. //Funktionen.ShowControls(this.Controls); this.Cursor = Cursors.Default; } private void AufgabeAuswaehlen_Click(object sender, EventArgs e) { ToolStripMenuItem item = (ToolStripMenuItem)sender; this.aufgabe = (Aufgabe)item.Tag; Fach_update(); } private void Panel_Laden(int start) { List fachliste = WSFach.GetFachliste(maschine); // Wenn erster Start dann Auftrag aus letztem Fach holen? if (start == 1) { if (meldung.MaschinenStart() == DialogResult.Yes) this.auftrag = Auftrag.GetAuftrag(fachliste[0].AuftragID); else this.auftrag = null; } // Alle Controls aus dem Panel entfernen. this.tableLayoutPanelWSVerfolgung.Controls.Clear(); // UserControls mit Daten aus Fachliste in Panel laden. for (int row = 0; row < fachliste.Count; row++) { Auftrag auftrag = Auftrag.GetAuftrag(fachliste[row].AuftragID); UCFach ucfach = new UCFach(); ucfach.Dock = DockStyle.Fill; // Fach Name und Farbe if (this.maschine.Bezeichnung == "Waschstrasse 1") { switch (row + 1) { case int n when (n <= 4): ucfach.ForeColor = Config.FarbenConfig.Farben["Beladeband"]; ucfach.FachName = $"F"; break; case int n when (n >= 5 && n <= 13): ucfach.ForeColor = Config.FarbenConfig.Farben["Waschstrasse"]; ucfach.FachName = $"W"; break; case int n when (n == 14): ucfach.ForeColor = Config.FarbenConfig.Farben["Presse"]; ucfach.FachName = $"P"; break; case int n when (n == 15): ucfach.ForeColor = Config.FarbenConfig.Farben["Hubband"]; ucfach.FachName = $"H"; break; case int n when (n == 16): ucfach.ForeColor = Config.FarbenConfig.Farben["Trockner"]; ucfach.FachName = $"T"; break; case int n when (n == 17): if (maschine.TrocknerKaputt) { ucfach.ForeColor = Config.FarbenConfig.Farben["Entladeband"]; ucfach.FachName = $"E"; } else { ucfach.ForeColor = Config.FarbenConfig.Farben["Trockner"]; ucfach.FachName = $"T"; } break; case int n when (n == 18): ucfach.ForeColor = Config.FarbenConfig.Farben["Entladeband"]; ucfach.FachName = $"E"; break; default: break; } } ucfach.KundeName = Kunde.GetKunde(null, auftrag.KundeID, null).Suchtext; CultureInfo deCult = new CultureInfo("de-DE"); ucfach.LieferTag = ((Liefertag)auftrag.Liefertag.DayOfWeek).ToString(); //TODO: Aufgabe Text if (aufgabe != null) ucfach.Aufgabe = aufgabe.Bezeichnung; this.tableLayoutPanelWSVerfolgung.Controls.Add(ucfach, 0, row); } } private void Open_NeuerAuftrag() { FormNeuerAuftrag neuerAuftrag = new FormNeuerAuftrag(this.Userid); if (neuerAuftrag.ShowDialog() == DialogResult.OK) { this.auftrag = neuerAuftrag.Auftrag; Fach_speichern(); } } private void Fach_speichern() { WSFach wsfach = new WSFach(); wsfach.AuftragID = (int)this.auftrag.AuftragID; wsfach.MaschineID = (int)this.maschine.MaschineID; wsfach.Gewaschen = DateTime.Now; wsfach.Gewicht = 0; wsfach.WProgrammID = 1; wsfach.AufgabeID = this.aufgabe.AufgabeID; if (wsfach.Save() == 1) { this.fach = wsfach; wsfach = null; Panel_Laden(2); } } private void Fach_update() { this.fach = new WSFach(); this.fach.AuftragID = (int)this.auftrag.AuftragID; this.fach.MaschineID = (int)this.maschine.MaschineID; this.fach.Gewaschen = DateTime.Now; this.fach.Gewicht = 0; this.fach.WProgrammID = 1; this.fach.AufgabeID = this.aufgabe.AufgabeID; if (this.fach.Save() == 1) Panel_Laden(2); } /// /// Value für Transport hat sich geändert und Fach wird gespeichert. /// /// /// private void Transport_ValueChanged(object sender, EventArgs e) { //this.SuspendLayout(); // Warten bis erster Transport durchgeführt wurde. while (_monitor.WS_1_Transport == true & _monitor.WS_2_Transport == true) { } if (_monitor.WS_1_Transport || _monitor.WS_2_Transport) { Maschine ms = (Maschine)this.maschine; if (this.auftrag != null) { Fach_speichern(); } else { MessageBox.Show($"Kein Auftrag erstellt. LEERFACH wird eingegeben. Bitte in BB1 bearbeiten."); } //WENN kein Kunde gewählt dann Fach mit KundeID 0. _monitor.WS_2_Transport = _monitor.WS_1_Transport = false; } //this.ResumeLayout(false); } //Wenn sich SPSDaten Transport ändert wird Event ausgelöst. (Bis jetzt mit Button ausgelöst) protected override bool ProcessDialogKey(Keys keyData) { //TODO: Umbau in Switch. if (Form.ModifierKeys == Keys.None && keyData == Keys.Escape) { this.Close(); return true; } if (Form.ModifierKeys == Keys.None && keyData == Keys.Insert) { Open_NeuerAuftrag(); return true; } if (Form.ModifierKeys == Keys.None && keyData == Keys.R) { Cursor.Current = Cursors.WaitCursor; //this.SuspendLayout(); if (((Maschine)this.maschine).MaschineID == 1) { if (this.auftrag == null) MessageBox.Show($"Kein Kunde ausgewählt. Bitte JETZT erledigen.", "ACHTUNG", MessageBoxButtons.OK, MessageBoxIcon.Warning); else _monitor.WS_1_Transport = true; } if (((Maschine)this.maschine).MaschineID == 2) { if (this.auftrag == null) MessageBox.Show($"Kein Kunde ausgewählt. Bitte JETZT erledigen.", "ACHTUNG", MessageBoxButtons.OK, MessageBoxIcon.Warning); else _monitor.WS_2_Transport = true; } //this.ResumeLayout(); Cursor.Current = Cursors.Default; return true; } return base.ProcessDialogKey(keyData); } private void FormWSVerfolgung_KeyDown(object sender, KeyEventArgs e) { if (e.Control && e.KeyCode == Keys.I) // Ctrl+I { e.Handled = true; e.SuppressKeyPress = true; } } } }