예제 #1
0
        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");
            }
        }
예제 #2
0
        // 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!");
        }
예제 #3
0
        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;
            }
        }
예제 #4
0
        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);
                    }
                }
            }
        }
예제 #5
0
        public JgScannerAusgabe TextEmpfangen(string TextEmpfangen)
        {
            var scanAusgabe = new JgScannerAusgabe(TextEmpfangen);

            if (scanAusgabe.ScannerKennung == null)
            {
                JgLog.Set(null, $"Sannernummer {TextEmpfangen} zu klein", JgLog.LogArt.Fehler);
            }
            else
            {
                var maschine = _JgOpt.JgOpt.ListeMaschinen.FirstOrDefault(f => f.Value.NummerScanner == scanAusgabe.ScannerKennung).Value;
                if (maschine == null)
                {
                    JgLog.Set(null, $"Maschine mit Scannernummer {scanAusgabe.ScannerKennung} nicht gefunden", JgLog.LogArt.Fehler);
                    scanAusgabe.Set(false, true, "Maschine nicht", "gefunden");
                }
                else if ((scanAusgabe.TextEmpfangen.Length == 16) && (scanAusgabe.TextEmpfangen[13] == 'S'))
                {
                    JgLog.Set(maschine, $"Schalter getrückt: {scanAusgabe.ScannKoerper}", JgLog.LogArt.Info);
                    scanAusgabe.Set(false, false, $"Schalter {scanAusgabe.ScannKoerper}", "gedrückt");
                }
                else if (scanAusgabe.TextEmpfangen.Length < 17)
                {
                    JgLog.Set(maschine, $"Scanner {scanAusgabe.TextEmpfangen}. Text zu kurz.", JgLog.LogArt.Fehler);
                    scanAusgabe.Set(false, true, $"Text zu kurz");
                }
                else
                {
                    if (scanAusgabe.VorgangScan != ScannerVorgang.FEHLER)
                    {
                        switch (scanAusgabe.VorgangScan)
                        {
                        case ScannerVorgang.BF2D:
                        case ScannerVorgang.TEST: scanAusgabe.Meldung = ScannerMeldung.TES_____T; break;

                        case ScannerVorgang.SCHALTER: scanAusgabe.Meldung = ScannerMeldung.SCHALTE_R; break;

                        case ScannerVorgang.MITA:
                            if (TextEmpfangen[17] == '0')
                            {
                                scanAusgabe.Meldung = ScannerMeldung.ANMELDUNG;
                            }
                            else
                            {
                                scanAusgabe.Meldung = ScannerMeldung.ABMELDUNG;
                            }
                            break;

                        case ScannerVorgang.PROG:
                            var scanProgrammText = (scanAusgabe.TextEmpfangen.Length < 26) ? null : scanAusgabe.TextEmpfangen.Substring(17, 9);
                            Enum.TryParse <ScannerMeldung>(scanProgrammText, true, out scanAusgabe.Meldung);
                            break;
                        }

                        if ((scanAusgabe.VorgangScan != ScannerVorgang.MITA) && (maschine.MeldBediener == null))
                        {
                            JgLog.Set(maschine, "Kein Bediener angemeldet.", JgLog.LogArt.Info);
                            scanAusgabe.Set(false, true, "", "Kein Bediener", "angemeldet !");
                        }
                        else
                        {
                            try
                            {
                                scanAusgabe.ScannerMitDisplay = maschine.ScannerMitDisplay;

                                switch (scanAusgabe.VorgangScan)
                                {
                                case ScannerVorgang.BF3D:
                                case ScannerVorgang.BF2D:
                                    scanAusgabe.BvbsString = scanAusgabe.VorgangScan.ToString() + scanAusgabe.ScannKoerper;
                                    MaschineBvbsEintragen(scanAusgabe, maschine);
                                    if (scanAusgabe.MeldungAnMaschine)
                                    {
                                        maschine.SendeDatenZurMaschine(scanAusgabe.BvbsString);
                                    }
                                    break;

                                case ScannerVorgang.MITA:
                                    MaschineAnmeldungEintragen(scanAusgabe, maschine);
                                    break;

                                case ScannerVorgang.PROG:
                                    MaschineMeldungEintragen(scanAusgabe, maschine);
                                    break;
                                }
                            }
                            catch (Exception ex)
                            {
                                ExceptionPolicy.HandleException(ex, "Policy");
                                throw new Exception("Felhler in ScannerAusgabe", ex);
                            }
                        }
                    }
                }
            }

            return(scanAusgabe);
        }