Programm_Wirl/AA-Forms/FormWSVerfolgung.cs

300 lines
9.9 KiB
C#

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<Aufgabe> 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<WSFach> 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);
}
/// <summary>
/// Value für Transport hat sich geändert und Fach wird gespeichert.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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;
}
}
}
}