313 lines
10 KiB
C#
313 lines
10 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;
|
|
private Auftrag extraAuftrag;
|
|
|
|
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 = Color.Black;
|
|
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;
|
|
if (((Aufgabe)item.Tag).Bezeichnung == "Extra Kunde")
|
|
{
|
|
FormNeuerAuftrag neuerAuftrag = new FormNeuerAuftrag(this.Userid);
|
|
if (neuerAuftrag.ShowDialog() == DialogResult.OK)
|
|
{
|
|
this.extraAuftrag = neuerAuftrag.Auftrag;
|
|
}
|
|
}
|
|
this.aufgabe = (Aufgabe)item.Tag;
|
|
Fach_speichern();
|
|
}
|
|
|
|
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);
|
|
this.aufgabe = Aufgabe.GetAufgabe(null, fachliste[0].AufgabeID);
|
|
}
|
|
else
|
|
{
|
|
this.auftrag = null;
|
|
this.aufgabe = null;
|
|
}
|
|
}
|
|
|
|
// Alle Controls aus dem Panel entfernen.
|
|
this.tableLayoutPanelWSVerfolgung.Controls.Clear();
|
|
|
|
|
|
// UserControls mit Daten aus Fachliste in Panel laden.
|
|
if (fachliste.Count > 0)
|
|
{
|
|
for (int row = 0; row < fachliste.Count; row++)
|
|
{
|
|
Auftrag auftrag = Auftrag.GetAuftrag(fachliste[row].AuftragID);
|
|
Aufgabe aufgabe = Aufgabe.GetAufgabe(null, fachliste[row].AufgabeID);
|
|
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();
|
|
|
|
// Wenn Fachliste Item hat Aufgabe.
|
|
if (aufgabe != null)
|
|
{
|
|
// Wenn Aufgabe ist ein Extra Kunde.
|
|
if (aufgabe.Bezeichnung == "Extra Kunde") ucfach.Aufgabe = "Extra Kunde " + Kunde.GetKunde(null, Auftrag.GetAuftrag(fachliste[row].ExtraAuftragID).KundeID, null).Suchtext;
|
|
else ucfach.Aufgabe = aufgabe.Bezeichnung;
|
|
|
|
// Hintergrund des Fachs in der Farbe der Aufgabe. ACHTUNG WEGEN KONTRAST ZU SCHRIFTFARBE.
|
|
ucfach.BackColor = aufgabe.Farbe;
|
|
}
|
|
else ucfach.Aufgabe = null;
|
|
|
|
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()
|
|
{
|
|
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;
|
|
if (this.aufgabe != null) this.fach.AufgabeID = this.aufgabe.AufgabeID;
|
|
if (this.extraAuftrag != null) this.fach.ExtraAuftragID = this.extraAuftrag.AuftragID;
|
|
|
|
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();
|
|
this.fach.FachID = null;
|
|
this.aufgabe = null;
|
|
this.extraAuftrag = null;
|
|
}
|
|
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)
|
|
|
|
/// <summary>
|
|
/// KEIN VERWEIS NOTWENDIG
|
|
/// Wenn ESC gedrückt wird schließt sich das Fenster.
|
|
/// </summary>
|
|
/// <param name="keyData"></param>
|
|
/// <returns></returns>
|
|
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)
|
|
{
|
|
|
|
}
|
|
|
|
|
|
return base.ProcessDialogKey(keyData);
|
|
}
|
|
|
|
/// <summary>
|
|
/// ShortCuts für
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void FormWSVerfolgung_KeyDown(object sender, KeyEventArgs e)
|
|
{
|
|
if (e.Control && e.KeyCode == Keys.I) // Ctrl+I
|
|
{
|
|
e.Handled = true;
|
|
e.SuppressKeyPress = true;
|
|
|
|
toolStripDropDownButtonInfo.DropDown.Show();
|
|
}
|
|
}
|
|
}
|
|
}
|