public static void LoadStatusMaschineLocal(JgMaschineStamm Maschine, string PfadAusgabe) { if (Maschine != null) { var datAusgabe = GetDateiName(PfadAusgabe, Maschine.Id); try { var erg = Helper.XmlDateiInObjekt <JgMaschinenStatus>(datAusgabe); if (erg != null) { Maschine.AktivBauteil = erg.AktivBauteil; Maschine.ListeBauteile = erg.ListeBauteile; Maschine.MeldBediener = erg.MeldBediener; Maschine.MeldListeHelfer = erg.MeldListeHelfer; Maschine.MeldMeldung = erg.MeldMeldung; } } catch (Exception ex) { JgLog.Set(null, $"Fehler Reader Program 'Load' Maschinenstatus für Datei {datAusgabe} ausgelöst\nGrund: {ex.Message}", JgLog.LogArt.Info); } } }
private string[] MeldungBeenden(JgMaschineStamm Maschine) { if (Maschine.MeldMeldung == null) { return(null); } var progText = "Reparatur"; switch (Maschine.MeldMeldung.Meldung) { case ScannerMeldung.COILSTART: progText = "Coilwechsel"; break; case ScannerMeldung.WARTSTART: progText = "Wartung"; break; } var meldung = Maschine.MeldMeldung.Abmeldung(); Maschine.MeldMeldung = null; JgLog.Set(Maschine, $"Meldung {progText} beendet!", JgLog.LogArt.Info); _JgOpt.QueueSend($"Meldung {progText} beendet", Maschine, meldung); return(new string[] { "", progText, "beendet" }); }
private void MaschineInThis(JgMaschineStamm Maschine) { AktivBauteil = Maschine.AktivBauteil; MeldBediener = Maschine.MeldBediener; MeldListeHelfer = Maschine.MeldListeHelfer; MeldMeldung = Maschine.MeldMeldung; ListeBauteile = Maschine.ListeBauteile; }
private void MaschineBvbsEintragen(JgScannerAusgabe ScanAusgabe, JgMaschineStamm Maschine) { if (Maschine.AktivBauteil != null) { var bauteilFertig = Maschine.AktivBauteil.IdBauteilJgData == ScanAusgabe.ScannKoerper; BauteilBeendet(ScanAusgabe, Maschine); if (bauteilFertig) { return; } } BvbsDaten btNeu = null; try { btNeu = new BvbsDaten(ScanAusgabe.BvbsString, true); } catch (Exception f) { JgLog.Set(Maschine, $"Bvbs Code konnte icht gelesen Werden.\nGrund: {f.Message}", JgLog.LogArt.Info); ScanAusgabe.Set(false, true, "Fehler im BVBS", "Code"); return; } //todo: Aktives Bausteil von String in eindeutige Id aus JgData umwandeln var btId = ScanAusgabe.ScannKoerper.Replace("\n", string.Empty).Replace("\r", string.Empty); if (Maschine.ListeBauteile.Any(a => a.IdJgData == btId)) { ScanAusgabe.Set(true, true, "Bauteil wurde", "bereits", "erstellt !"); } else { Maschine.AktivBauteil = new JgBauteil { IdMaschine = Maschine.Id, IdBediener = Maschine.MeldBediener.IdBediener, AnzahlHelfer = Maschine.MeldListeHelfer.Count, IdBauteilJgData = btId, AnzahlTeile = btNeu.Anzahl ?? 0, GewichtInKg = btNeu.Gewicht ?? 0, DuchmesserInMm = btNeu.Durchmesser ?? 0, LaengeInCm = btNeu.Laenge ?? 0, AnzahlBiegungen = btNeu.ListeGeometrie.Count() - 1 }; JgLog.Set(Maschine, $"Bauteil {Maschine.AktivBauteil.Id} registriert.", JgLog.LogArt.Unbedeutend); _JgOpt.QueueSend($"BT {Maschine.AktivBauteil.Id}", Maschine.AktivBauteil); ScanAusgabe.Set(true, false, "Bauteil in", "Maschine", "registriert"); } }
public JgMaschinenStatus(JgMaschineStamm Maschine, string PfadAusgabe) { _Maschine = Maschine; if (_Maschine != null) { MaschineInThis(Maschine); } _DateiAusgabe = GetDateiName(PfadAusgabe, _Maschine.Id); }
public static void Set(JgMaschineStamm Maschine, string LogText, LogArt Art) { System.Diagnostics.TraceEventType art = System.Diagnostics.TraceEventType.Verbose; switch (Art) { case LogArt.Info: art = System.Diagnostics.TraceEventType.Information; break; case LogArt.Warnung: art = System.Diagnostics.TraceEventType.Warning; break; case LogArt.Fehler: art = System.Diagnostics.TraceEventType.Error; break; case LogArt.Krittisch: art = System.Diagnostics.TraceEventType.Critical; break; case LogArt.Start: art = System.Diagnostics.TraceEventType.Start; break; case LogArt.Stop: art = System.Diagnostics.TraceEventType.Stop; break; } if (Maschine == null) { Logger.Write(LogText, "Service", 0, 0, art); } else { Logger.Write($"Maschine: {Maschine.MaschineName}\n{LogText}", "Service", 0, 0, art); if (Art == LogArt.Unbedeutend) { Maschine.Information = ""; } else { Maschine.Information = LogText; } } }
// Programme zum Datenverarbeitung der Sacannerdaten ************************************************************** private void BauteilBeendet(JgScannerAusgabe ScanAusgabe, JgMaschineStamm Maschine) { var meldung = new JgMeldung() { Id = Maschine.AktivBauteil.Id, IdBediener = Maschine.AktivBauteil.IdBediener, Meldung = ScannerMeldung.BAUT_ENDE, Aenderung = DateTime.Now }; Maschine.ListeBauteile.Add(new JgBauteilFertig(meldung.Id, Maschine.AktivBauteil.IdBauteilJgData)); Maschine.AktivBauteil = null; JgLog.Set(Maschine, $"Bauteilt: {meldung.Id} erledigt", JgLog.LogArt.Unbedeutend); _JgOpt.QueueSend($"Bauteil {ScanAusgabe.ScannKoerper} fertig", Maschine, meldung); ScanAusgabe.Set(false, false, "", "Bauteil", "fertig!"); }
private void MaschineMeldungEintragen(JgScannerAusgabe ScanAusgabe, JgMaschineStamm Maschine) { // *** Unterprogramm Bendigung von Coilwechsel, Wartung und Reparatur mit "Rep_Ende" switch (ScanAusgabe.Meldung) { case ScannerMeldung.COILSTART: if (Maschine?.MeldMeldung?.Meldung == ScannerMeldung.COILSTART) { ScanAusgabe.Set(false, true, "Coilwechsle bereits", "begonnen"); } else { MeldungBeenden(Maschine); Maschine.MeldMeldung = new JgMeldung(Maschine.MeldBediener.IdBediener, ScannerMeldung.COILSTART); try { Maschine.MeldMeldung.Anzahl = Convert.ToInt32(ScanAusgabe.ScannKoerper); } catch { } JgLog.Set(Maschine, $"Start Coilwechsel. Anzahl: {Maschine.MeldMeldung.Anzahl ?? 0}", JgLog.LogArt.Info); ScanAusgabe.Set(false, false, "", "Coilwechsel", "gestartet"); _JgOpt.QueueSend($"Start Coilwechsel", Maschine, Maschine.MeldMeldung); } break; case ScannerMeldung.REPASTART: if (Maschine?.MeldMeldung?.Meldung == ScannerMeldung.REPASTART) { ScanAusgabe.Set(false, true, "Reparatur bereits", "begonnen"); } else { MeldungBeenden(Maschine); Maschine.MeldMeldung = new JgMeldung(Maschine.MeldBediener.IdBediener, ScannerMeldung.REPASTART); JgLog.Set(Maschine, "Start Reparatur.", JgLog.LogArt.Info); ScanAusgabe.Set(false, false, "", "Reparatur", "gestartet"); _JgOpt.QueueSend($"Start Reparatur", Maschine, Maschine.MeldMeldung); } break; case ScannerMeldung.WARTSTART: if (Maschine?.MeldMeldung?.Meldung == ScannerMeldung.WARTSTART) { ScanAusgabe.Set(false, true, "Wartung bereits", "begonnen"); } else { MeldungBeenden(Maschine); Maschine.MeldMeldung = new JgMeldung(Maschine.MeldBediener.IdBediener, ScannerMeldung.WARTSTART); JgLog.Set(Maschine, $"Start Wartung.", JgLog.LogArt.Info); ScanAusgabe.Set(false, false, "", "Wartung", "gestartet"); _JgOpt.QueueSend($"Start Wartung", Maschine, Maschine.MeldMeldung); } break; case ScannerMeldung.REPA_ENDE: if (Maschine.MeldMeldung == null) { ScanAusgabe.Set(false, true, "", "Keine Meldung", "registriert"); } else { ScanAusgabe.Set(false, false, MeldungBeenden(Maschine)); } break; } }
private void MaschineAnmeldungEintragen(JgScannerAusgabe ScanAusgabe, JgMaschineStamm Maschine) { var bediener = _JgOpt.JgOpt.ListeBediener.FirstOrDefault(f => (f.Value.NummerAusweis == ScanAusgabe.ScannKoerper)).Value; if (bediener == null) { JgLog.Set(Maschine, $"Bediener ({ScanAusgabe.ScannKoerper}) nicht in Datenbank !", JgLog.LogArt.Info); ScanAusgabe.Set(false, true, "Bediener", ScanAusgabe.ScannKoerper, "nicht regisitriert"); } else { if ((ScanAusgabe.Meldung == ScannerMeldung.ANMELDUNG) && (Maschine.MeldBediener != null)) { if (bediener.Id == Maschine.MeldBediener.IdBediener) { ScanAusgabe.Set(false, true, "Bediener", bediener.BedienerName, "bereits angemeldet!"); return; } else if (Maschine.MeldListeHelfer.Any(f => f.IdBediener == bediener.Id)) { ScanAusgabe.Set(false, true, "Helfer", bediener.BedienerName, "bereits angemeldet!"); return; } } // In allen Maschinen nach einer Anmeldung suchen und abmelden var abmeldungBediener = false; var abmeldungHelfer = false; foreach (var maAbmeldung in _JgOpt.JgOpt.ListeMaschinen.Values) { // Wenn Bediener auf einer Maschine angemeldet ist if (maAbmeldung?.MeldBediener?.IdBediener == bediener.Id) { abmeldungBediener = true; var msg = $"Bediener {bediener.BedienerName} abgemeldet"; var meldung = maAbmeldung.MeldBediener.Abmeldung(); maAbmeldung.MeldBediener = null; _JgOpt.QueueSend(msg, maAbmeldung, meldung); JgLog.Set(Maschine, msg, JgLog.LogArt.Unbedeutend); // Bei Bedienerabmeldung auch alle Helfer abmelden foreach (var meldHelfer in maAbmeldung.MeldListeHelfer) { // Wenn Helfer in Liste Bediener vorhanden if (_JgOpt.JgOpt.ListeBediener.ContainsKey(meldHelfer.IdBediener)) { meldHelfer.Abmeldung(); msg = $"Helfer {_JgOpt.JgOpt.ListeBediener[meldHelfer.IdBediener].BedienerName} abgemeldet!"; _JgOpt.QueueSend(msg, maAbmeldung, meldHelfer); JgLog.Set(Maschine, msg, JgLog.LogArt.Unbedeutend); } } Maschine.MeldListeHelfer.Clear(); } else { // Ob in einer Helferliste eingetragen var lHelfer = maAbmeldung.MeldListeHelfer.Where(w => w.IdBediener == bediener.Id).ToList(); foreach (var meldHelfer in lHelfer) { abmeldungHelfer = true; if (_JgOpt.JgOpt.ListeBediener.ContainsKey(meldHelfer.IdBediener)) { var meldung = meldHelfer.Abmeldung(); maAbmeldung.MeldListeHelfer.Remove(meldHelfer); _JgOpt.QueueSend($"Helfer {_JgOpt.JgOpt.ListeBediener[meldHelfer.IdBediener]} abgemeldet", maAbmeldung, meldung); JgLog.Set(Maschine, $"Helfer {_JgOpt.JgOpt.ListeBediener[meldHelfer.IdBediener].BedienerName} abgemeldet!", JgLog.LogArt.Unbedeutend); } } } } if (ScanAusgabe.Meldung == ScannerMeldung.ABMELDUNG) { if (abmeldungBediener) { ScanAusgabe.Set(false, false, "", "Bediener", bediener.BedienerName, "abgemeldet!"); } else if (abmeldungHelfer) { ScanAusgabe.Set(false, false, "", "Helfer", bediener.BedienerName, "abgemeldet!"); } else { ScanAusgabe.Set(false, true, "Keine Anmeldung", bediener.BedienerName, "registriert!"); } } else // Anmeldung eintragen { if (Maschine.MeldBediener == null) { Maschine.MeldBediener = new JgMeldung(bediener.Id, ScannerMeldung.ANMELDUNG); _JgOpt.QueueSend($"Bediener {bediener.BedienerName} angemeldet", Maschine, Maschine.MeldBediener); ScanAusgabe.Set(false, false, "", "Bediener", bediener.BedienerName, "angemeldet!"); JgLog.Set(Maschine, $"Bediener {bediener.BedienerName} angemeldet!", JgLog.LogArt.Unbedeutend); } else // Wenn ein Bediener angemeldet, wird ein Helfer angemeldet { var meld = new JgMeldung(bediener.Id, ScannerMeldung.ANMELDUNG); Maschine.MeldListeHelfer.Add(meld); _JgOpt.QueueSend($"Helfer {bediener.BedienerName} angemeldet", Maschine, meld); ScanAusgabe.Set(false, false, "", "Helfer", bediener.BedienerName, "angemeldet!"); JgLog.Set(Maschine, $"Helfer {bediener.BedienerName} angemeldet!", JgLog.LogArt.Unbedeutend); } } } }