public Verarbeitungsschritt TransferiereSchrittInHistorie(Produktionseinrichtung bearbeitetIn) { // packe erstes element aus rezept in historie Verarbeitungsschritt schritt = _Rezept[0]; Tuple <Verarbeitungsschritt, string> historienEintrag = new Tuple <Verarbeitungsschritt, string>(_Rezept[0], bearbeitetIn.GetName()); _Historie.Add(historienEintrag); // entferne aus rezept _Rezept.RemoveAt(0); return(schritt); }
public int GetBearbeitungsdauerFuerSchritt(Verarbeitungsschritt schritt) { int dauer = 0; foreach (Tuple <Verarbeitungsschritt, int> tuple in _ListeAusfuehrbarerVerarbeitungsschritte) { if (tuple.Item1 == schritt) { dauer = tuple.Item2; } } return(dauer); }
public void TeilEntgegennehmen(Teil t) { // if (BerechneStatus() == Status.EMPFANGSBEREIT) { _aktuellesTeil = t; // setze belegt bis Verarbeitungsschritt naechsterSchritt = _aktuellesTeil.TransferiereSchrittInHistorie(this); int dauer = GetBearbeitungsdauerFuerSchritt(naechsterSchritt); _BelegtBis = DateTime.Now.AddSeconds(dauer / 4.0); // } else { // Console.WriteLine("!! " + _Name + " belegt. Teil kann nicht angenommen werden."); // } }
/// <summary> /// Findet irgendwas. /// </summary> /// <returns> Schnellste empfangsbereite Fertigungsinsel. null wenn es keine Schnellste gibt.</returns> private Fertigungsinsel GetSchnellsteFertigungsinsel() { // aktueller schritt Verarbeitungsschritt naechsterSchritt = _AktuellesTeil.GetNaechsterSchritt(); // suche nach allen EMPFANGSBEREITen Fertigungsinseln List <Fertigungsinsel> empfangsbereiteFertigungsinseln = new List <Fertigungsinsel>(); foreach (Produktionseinrichtung p in _Produktionseinrichtungen) { if ((p.BerechneStatus() == Status.EMPFANGSBEREIT) && (p is Fertigungsinsel)) { empfangsbereiteFertigungsinseln.Add((Fertigungsinsel)p); } } // suche nach geringster fertigungsdauer für aktuellen verarbeitungsschritt int geringsteDauer = 9999; foreach (Fertigungsinsel f in empfangsbereiteFertigungsinseln) { foreach (Tuple <Verarbeitungsschritt, int> schritt in f.GetAusfuehrbareVerarbeitungsschritteUndDauer()) { if (schritt.Item1 == naechsterSchritt) { if (schritt.Item2 < geringsteDauer) { geringsteDauer = schritt.Item2; } } } } // suche nach fertigungsinsel mit geringster fertigungsdauer für aktuellen verarbeitungsschritt foreach (Fertigungsinsel f in empfangsbereiteFertigungsinseln) { foreach (Tuple <Verarbeitungsschritt, int> schritt in f.GetAusfuehrbareVerarbeitungsschritteUndDauer()) { if (schritt.Item1 == naechsterSchritt && schritt.Item2 == geringsteDauer) { return(f); } } } return(null); }