diff --git a/DataGen/MeasureDataGen.cs b/DataGen/MeasureDataGen.cs index 9b1ea49..e84ded2 100644 --- a/DataGen/MeasureDataGen.cs +++ b/DataGen/MeasureDataGen.cs @@ -14,104 +14,7 @@ namespace DataGen public List ReadMessureList { get => messureList;} - public void GenerateUnterdruck(DateTime startprüfung, double prüfdruck, bool failure=false) { - - int messreiheID = -1; - List messreihen = new List(); - List druckwerte = new List(); - double druck = 0.0; - bool druckerreicht = false; - DateTime start = startprüfung; - - prüfdruck = ((prüfdruck - (new Random(DateTime.Now.Millisecond).NextDouble() * 115.8))); - #region Anstiegskurve - while (!druckerreicht) - { - start = start.AddSeconds(2); - messreiheID++; - if (druck <= prüfdruck) - { - break; - } - Random zufall = new Random(DateTime.Now.Millisecond); - druck -= Convert.ToDouble((zufall.Next(1000, 10000) / 1000.0)); - druckwerte.Add(druck); - messreihen.Add(new MeasureData() - { - Datum = start, - Pressure = druck.ToString(), - EintragID = messreiheID, - MeasureType = EMeasureType.LEERPHASE - }); - - Thread.Sleep(100); - } - - #endregion - messreihen.Add(new MeasureData() - { - Datum = start, - Pressure = druck.ToString(), - EintragID = messreiheID, - MeasureType = EMeasureType.BEFÜLLPHASE - }); - start = start.AddMinutes(2); - messreiheID++; - messreihen.Add(new MeasureData() - { - Datum = start, - Pressure = druck.ToString(), - EintragID = messreiheID, - MeasureType = EMeasureType.PRÜFUNGSPHASE - }); - start = start.AddMinutes(15); - start = start.AddSeconds(3); - messreiheID++; - messreihen.Add(new MeasureData() - { - Datum = start, - Pressure = druck.ToString(), - EintragID = messreiheID, - MeasureType = EMeasureType.PRÜFUNGSPHASE - }); - start = start.AddSeconds(2); - messreiheID++; - messreihen.Add(new MeasureData() - { - Datum = start, - Pressure = druck.ToString(), - EintragID = messreiheID, - MeasureType = EMeasureType.BEFÜLLPHASE - }); - start = start.AddSeconds(2); - messreiheID++; - messreihen.Add(new MeasureData() - { - Datum = start, - Pressure = druck.ToString(), - EintragID = messreiheID, - MeasureType = EMeasureType.LEERPHASE - }); - start = start.AddSeconds(2); - messreiheID++; - messreihen.Add(new MeasureData() - { - Datum = start, - Pressure = "0,000", - EintragID = messreiheID, - MeasureType = EMeasureType.LEERPHASE - }) ; - start = start.AddSeconds(1); - messreiheID++; - messreihen.Add(new MeasureData() - { - Datum = start, - Pressure = "0,000", - EintragID = messreiheID, - MeasureType = EMeasureType.LEERPHASE - }); - messureList = messreihen; - } + /* public void GenerateÜberdruck(DateTime startprüfung, double prüfdruck, bool failure=false) { List messreihen = new List(); string prüfdatum = startprüfung.ToShortDateString(); @@ -274,8 +177,179 @@ namespace DataGen messureList = messreihen; } + */ + /// + /// Generiert unterdruck reihen + /// + /// + /// + /// Länge der Prüfung in Sekunden + /// + public void GenerateUnterdruck(DateTime startprüfung, double prüfdruck, int testduration , bool failure = false) + { + List messreihen = new List(); + string prüfdatum = startprüfung.ToShortDateString(); + bool Bestanden = !failure; + + List druckwerte = new List(); + double druck = 0.0; + bool druckerreicht = false; + int messreiheID = 0; + // Anstiegskurve erzeugen + DateTime start = startprüfung; + + #region Befüllphase + while (!druckerreicht) + { + start = start.AddSeconds(4); + if (failure && druck >= 56) + break; + if (!failure && (druck > ((prüfdruck * -1) * 1.1))) + druckerreicht = true; + Random zufall = new Random(DateTime.Now.Millisecond); + if (!druckerreicht) + { + druck += Convert.ToDouble((zufall.Next(1000, 10000) / 1000.0)); + druckwerte.Add(druck); + messreihen.Add(new MeasureData() + { + Datum = start, + EintragID = messreiheID, + Pressure = (druck * -1).ToString(), + MeasureType = EMeasureType.BEFÜLLPHASE + }); + messreiheID++; + } + Thread.Sleep(100); + } + #endregion + #region Beruhigungsphase + if (!failure) + { + Random druckabfall = new Random(DateTime.Now.Millisecond); + double dp = druckabfall.Next(2, 9) + druckabfall.NextDouble(); + //double startdruck = druckwerte.Last() - dp; + //startdruck += druckabfall.NextDouble(); + double dpt = dp / 90.0; + for (int i = 0; i <= 90; i++) + { + start = start.AddSeconds(2); + druck -= dpt; + druckwerte.Add(druck); + messreihen.Add(new MeasureData() + { + Pressure = (druck * -1).ToString(), + MeasureType = EMeasureType.BERUHUNGSZEIT, + Datum = start, + EintragID = messreiheID + }); + messreiheID++; + } + } + else + { + int anzahlschritte = 20; + double druckabfall = druck / anzahlschritte; + for (int i = 0; i <= anzahlschritte; i++) + { + start = start.AddSeconds(2); + druck -= druckabfall; + if (druck < 0) druck = 0; + druckwerte.Add(druck); + messreihen.Add(new MeasureData() + { + Pressure = druck.ToString(), + MeasureType = EMeasureType.BERUHUNGSZEIT, + Datum = start, + EintragID = messreiheID + }); + messreiheID++; + } + } + #endregion + #region Prüfungsphase + if (!failure) + { + for (int i = 0; i < (testduration / 2); i++) + { + Random Prüfung = new Random(DateTime.Now.Millisecond); + double abfall = Prüfung.NextDouble() / 10; + start = start.AddSeconds(2); + if (abfall <= 0.07 && (i % 2 == 0)) + { + druck -= abfall; + + } + druckwerte.Add(druck); + messreihen.Add(new MeasureData() + { + Datum = start, + EintragID = messreiheID, + MeasureType = EMeasureType.PRÜFUNGSPHASE, + Pressure = (druck * -1).ToString() + }); + messreiheID++; + Thread.Sleep(100); + } + } + #endregion + #region EndePrüfung + start = start.AddSeconds(2); + messreiheID++; + messreihen.Add(new MeasureData() + { + Datum = start, + EintragID = messreiheID, + MeasureType = EMeasureType.ENDE, + Pressure = (druck * -1).ToString() + }); + + start = start.AddSeconds(4); + + messreihen.Add(new MeasureData() + { + Pressure = (druckwerte.Last() * -1).ToString(), + Datum = start, + MeasureType = EMeasureType.ENDE, + EintragID = messreiheID + }); + + while (druck > 10) + { + start = start.AddSeconds(2); + double abbau = druck / 2; + druck -= abbau; + druckwerte.Add(druck); + messreihen.Add(new MeasureData() + { + Datum = start, + Pressure = (druck * -1).ToString(), + EintragID = messreiheID, + MeasureType = EMeasureType.ABLUFT + }); + messreiheID++; + } + messreihen.Add(new MeasureData() + { + Datum = start.AddSeconds(2), + Pressure = "0,0", + EintragID = messreiheID, + MeasureType = EMeasureType.ABLUFT + }); + messreihen.Add(new MeasureData() + { + Datum = start.AddSeconds(4), + Pressure = "0,0", + EintragID = messreiheID + 1, + MeasureType = EMeasureType.ENDE + }); + + #endregion + + messureList = messreihen; + } + - } } diff --git a/Models/Auftraggeber.cs b/Models/Auftraggeber.cs index 61d3fb3..c2b8a32 100644 --- a/Models/Auftraggeber.cs +++ b/Models/Auftraggeber.cs @@ -3,6 +3,7 @@ using System.Collections; using System.Collections.Generic; namespace Models { + [Serializable] public class Auftraggeber { public int Id {get;set;} public string Name {get;set;} diff --git a/Models/Bauvorhaben.cs b/Models/Bauvorhaben.cs index 7ead77c..89ea357 100644 --- a/Models/Bauvorhaben.cs +++ b/Models/Bauvorhaben.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; namespace Models { + [Serializable] public class Bauvorhaben { public Auftraggeber Auftraggeber { get; set; } public int Id { get; set; } diff --git a/Models/EMeasureType.cs b/Models/EMeasureType.cs index 51aa784..a3ed49a 100644 --- a/Models/EMeasureType.cs +++ b/Models/EMeasureType.cs @@ -1,10 +1,11 @@ namespace Models { public enum EMeasureType { - LEERPHASE = 0, // 004 - BEFÜLLPHASE = 1, // 000 - BERUHUNGSZEIT = 2, // 001 - PRÜFUNGSPHASE = 3, // 002 - ENDEPRÜFUNGMARKER = 4 // 003 + BEFÜLLPHASE = 0, // 000 + BERUHUNGSZEIT = 1, // 001 + PRÜFUNGSPHASE = 2, // 002 + ENDE = 3, // 003 + ABLUFT = 4, + } } \ No newline at end of file diff --git a/Models/Inspektionsobjekt.cs b/Models/Inspektionsobjekt.cs index 6b3b166..eed165e 100644 --- a/Models/Inspektionsobjekt.cs +++ b/Models/Inspektionsobjekt.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; namespace Models { + [Serializable] public class Inspektionsobjekt { public int Id { get; set; } diff --git a/Models/MeasureData.cs b/Models/MeasureData.cs index 80f3ace..d5c716d 100644 --- a/Models/MeasureData.cs +++ b/Models/MeasureData.cs @@ -2,6 +2,7 @@ using System; namespace Models { + [Serializable] public class MeasureData { public int Id { get; set; } public int EintragID {get;set;} diff --git a/Models/PressureTest.cs b/Models/PressureTest.cs index e160c7e..0d087a5 100644 --- a/Models/PressureTest.cs +++ b/Models/PressureTest.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; namespace Models { + [Serializable] public class PressureTest { bool bestanden; diff --git a/ProtokollWriter/ProtokollWriter.csproj b/ProtokollWriter/ProtokollWriter.csproj index 63ece54..234a30e 100644 --- a/ProtokollWriter/ProtokollWriter.csproj +++ b/ProtokollWriter/ProtokollWriter.csproj @@ -5,6 +5,12 @@ + + + Always + + + netstandard2.0 diff --git a/ProtokollWriter/SBTextFileWriter.cs b/ProtokollWriter/SBTextFileWriter.cs index 314223a..9da3e15 100644 --- a/ProtokollWriter/SBTextFileWriter.cs +++ b/ProtokollWriter/SBTextFileWriter.cs @@ -78,16 +78,16 @@ namespace ProtokollWriter { hashtable["AUFTRAGGEBER_NAME"] = inspObjekt.Bauvorhaben.Auftraggeber.Name; hashtable["AUFTRAGGEBER_STRASSE"] = inspObjekt.Bauvorhaben.Auftraggeber.Strasse; hashtable["AUFTRAGGEBER_ORT"] = inspObjekt.Bauvorhaben.Auftraggeber.Ort; - hashtable["AUFTRAGGEBER_TEL"] = inspObjekt.Bauvorhaben.Auftraggeber.Tel; - hashtable["VONSCHACHT"] = inspObjekt.ObereSchacht; - hashtable["BISSCHACHT"] = inspObjekt.UntereSchacht; + hashtable["AUFTRAGGEBER_TEL"] = inspObjekt.Bauvorhaben.Auftraggeber.Tel != null ? inspObjekt.Bauvorhaben.Auftraggeber.Tel: ""; + hashtable["VONSCHACHT"] = inspObjekt.ObereSchacht != null? inspObjekt.ObereSchacht: ""; + hashtable["BISSCHACHT"] = inspObjekt.UntereSchacht != null? inspObjekt.UntereSchacht: ""; hashtable["PROJEKTNR"] = "000";//Projektnummer; hashtable["HALTUNGNR"] = inspObjekt.Objektname != null ? inspObjekt.Objektname : inspObjekt.ObereSchacht; hashtable["MESSDATEI"] = inspObjekt.Objektname != null ? inspObjekt.Objektname : inspObjekt.ObereSchacht; hashtable["BAUVORHABEN_STRASSE"] = inspObjekt.Bauvorhaben.Strasse; hashtable["BAUVORHABEN_ORT"] = inspObjekt.Bauvorhaben.Ort; hashtable["BAUVORHABEN_STANDORT"] = inspObjekt.Bauvorhaben.Strasse; - hashtable["BEMERKUNG"] = inspObjekt.Bemerkung; + hashtable["BEMERKUNG"] = inspObjekt.Bemerkung != null? inspObjekt.Bemerkung : ""; hashtable["PRUEFRESULTAT"] = "Cool";//inspObjekt.PressureTests[prüfungsnummer].Bestanden ? "Prüfung Bestanden" : "Prüfung N I C H T Bestanden"; } void WriteFile() { @@ -99,7 +99,7 @@ namespace ProtokollWriter { int ende = zeile.IndexOf("}"); string cmd = zeile.Substring(start+1,(ende-start) -1); - if(hashtable.ContainsKey(cmd)) { + if(cmd != null && hashtable.ContainsKey(cmd)) { string rep = "{"+cmd+"}"; string n = zeile.Replace(rep,hashtable[cmd].ToString()); zeile = n; @@ -107,9 +107,9 @@ namespace ProtokollWriter { if(cmd.StartsWith("@")) { string n = ""; - //foreach(MeasureData data in inspObjekt.PressureTests[prüfungsnummer].Measuredatas) { - // n = string.Format("{0}{1} = {2};{3};{4};{5}\r\n",n,data.EintragID,data.EintragID+2,data.Datum,data.Pressure,data.MeasureType); - //} + foreach(MeasureData data in inspObjekt.pressureTests[prüfungsnummer].Measuredatas) { + n = string.Format("{0}{1} = {2};{3};{4};{5}\r\n",n,data.EintragID,data.EintragID+2,data.Datum,data.Pressure,(int)data.MeasureType); + } zeile = n; } }