From 8d8baf07660dde2d376fd6d84ca90ab53728205b Mon Sep 17 00:00:00 2001 From: Damian Wessels Date: Mon, 9 Sep 2024 14:48:05 +0200 Subject: [PATCH] XML parser erweitert --- Schnittstelle/DWA149-2_2013/AEC.cs | 12 ++ .../DWA149-2_2013/DWA149-2_2013Factory.cs | 4 +- Schnittstelle/Export/Excel.cs | 119 +++++++++++------- Schnittstelle/Import/XML/v2013/XML2013.cs | 14 ++- Schnittstelle/Sanierung/Sanierungart.cs | 8 +- 5 files changed, 106 insertions(+), 51 deletions(-) create mode 100644 Schnittstelle/DWA149-2_2013/AEC.cs diff --git a/Schnittstelle/DWA149-2_2013/AEC.cs b/Schnittstelle/DWA149-2_2013/AEC.cs new file mode 100644 index 0000000..81d671b --- /dev/null +++ b/Schnittstelle/DWA149-2_2013/AEC.cs @@ -0,0 +1,12 @@ +using Schnittstelle.Contract; +using Schnittstelle.Import.XML.v2013.Model; + +namespace Schnittstelle.DWA149_2_2013 +{ + internal class AEC : CodeBeschreibung + { + public AEC(RZustand kuerzel) : base("Grundlagen änderung", kuerzel) + { + } + } +} \ No newline at end of file diff --git a/Schnittstelle/DWA149-2_2013/DWA149-2_2013Factory.cs b/Schnittstelle/DWA149-2_2013/DWA149-2_2013Factory.cs index 9ffd744..fc86010 100644 --- a/Schnittstelle/DWA149-2_2013/DWA149-2_2013Factory.cs +++ b/Schnittstelle/DWA149-2_2013/DWA149-2_2013Factory.cs @@ -2,6 +2,7 @@ using Schnittstelle.Import.XML.v2013.Model; using System; using System.Collections.Generic; +using System.Security.Cryptography; using System.Text; namespace Schnittstelle.DWA149_2_2013 @@ -13,6 +14,7 @@ namespace Schnittstelle.DWA149_2_2013 switch(zustand.Inspektionskode.ToUpper()) { case "AED": return new AED(zustand); + case "AEC": return new AEC(zustand); case "BAA": return new BAA(zustand); case "BAB": return new BAB(zustand); @@ -55,7 +57,7 @@ namespace Schnittstelle.DWA149_2_2013 case "BDG": return new BDG(zustand); default: - throw new ApplicationException("Code not implemented"); + throw new NotImplementedException(string.Format("Code not implemented: {0}",zustand.Inspektionskode.ToUpper())); } } diff --git a/Schnittstelle/Export/Excel.cs b/Schnittstelle/Export/Excel.cs index 64ee1fc..d1e9336 100644 --- a/Schnittstelle/Export/Excel.cs +++ b/Schnittstelle/Export/Excel.cs @@ -67,20 +67,24 @@ namespace Schnittstelle.Export Sanierungart sanArt = sanierungsarten[i]; int mainrow = row; worksheet.Range[row, 1].Text = "Haltung"; - worksheet.Range[row, 2].Text = "Länge"; - worksheet.Range[row, 3].Text = "Tiefe"; - worksheet.Range[row, 4].Text = "Inspizierte Länge"; - worksheet.Range[row, 5].Text = "Straße"; - worksheet.Range[row, 7].Text = sanArt.Sanierungsbezeichnung; - worksheet.Range[row, 9].Text = "DN"; + worksheet.Range[row, 2].Text = "Straße"; // 5 + worksheet.Range[row, 3].Text = "Inspizierte Länge"; // 4 + worksheet.Range[row, 4].Text = "Länge"; // 2 + worksheet.Range[row, 5].Text = "Tiefe"; // 3 + + + worksheet.Range[row, 7].Text = "Schadensbeschreibung"; //sanArt.Sanierungsbezeichnung; + worksheet.Range[row, 9].Text = "Durchmesser"; worksheet.Range[row, 10].Text = "Material"; row++; worksheet.Range[row, 1].Text = haltung.Stammdaten.Objektbezeichnung; - worksheet.Range[row, 2].Text = haltung.Stammdaten.Kante.Laenge.ToString(); // Länge - worksheet.Range[row, 3].Text = "Not Implemented yet"; // Tiefe + worksheet.Range[row, 2].Text = haltung.Inspektionsdaten.Lage.Strassename; - worksheet.Range[row, 5].Text = haltung.Inspektionsdaten.Lage.Strassename; + worksheet.Range[row, 4].Text = haltung.Stammdaten.Kante.Laenge.ToString(); // Länge + worksheet.Range[row, 5].Text = "Not Implemented yet"; // Tiefe + + worksheet.Range[row, 9].Text = haltung.Inspektionsdaten.OptischeInspektion[0].Rohrleitung.Grunddaten.Profilbreite.ToString(); worksheet.Range[row, 10].Text = haltung.Inspektionsdaten.OptischeInspektion[0].Rohrleitung.Grunddaten.Material.ToString(); @@ -92,16 +96,16 @@ namespace Schnittstelle.Export //worksheet.Range[row, 2].Text = sanArt.Sanierungsbezeichnung; //row+= 2; //int temprow = row; - worksheet.Range[row, 1].Text = "Stat"; + worksheet.Range[row, 1].Text = "Station"; worksheet.Range[row, 2].Text = "Kürzel"; - worksheet.Range[row, 3].Text = "Charakterisierung"; + worksheet.Range[row, 3].Text = "Charakterisi."; worksheet.Range[row, 4].Text = "Quantifizierung"; - worksheet.Range[row, 5].Text = "Lage"; - worksheet.Range[row, 6].Text = "Verb."; - worksheet.Range[row, 7].Text = "Schaden"; + worksheet.Range[row, 5].Text = "Lage im Kreis"; + //worksheet.Range[row, 6].Text = "Verb."; + worksheet.Range[row, 7].Text = "Schadensbeschreibung / Info"; worksheet.Range[row, 8].Text = "Strecke"; - worksheet.Range[row, 9].Text = "Sanierung"; - worksheet.Range[row, 10].Text = "Kosten"; + worksheet.Range[row, 9].Text = "Sanierungsvorschlag"; + worksheet.Range[row, 10].Text = "Kostenans."; worksheet.Range[row, 1, row,10].CellStyle=headerStyle; @@ -147,6 +151,7 @@ namespace Schnittstelle.Export List Massnahmen; + Console.WriteLine(code.Inspektionskode); if (sanArt.Massnahmen.TryGetValue(code.Inspektionskode, out Massnahmen)) @@ -154,22 +159,25 @@ namespace Schnittstelle.Export var imass = Massnahmen.Find(x => haltung.Inspektionsdaten.OptischeInspektion[0].Rohrleitung.Grunddaten.Profilbreite >= x.DN); - - worksheet.Range[row + j, 9].Text = imass.Beschreibung; - - if (imass.Beschreibung.Equals("Schlauchliner")) + if (imass != null) { - double zuschlag = 1; - double tmpLaenge = Convert.ToDouble(haltung.Stammdaten.Kante.Laenge); - if (tmpLaenge < 30) - zuschlag = 1.3; - if (tmpLaenge < 15) - zuschlag = 1.5; - worksheet.Range[row + j, 10].Number = (imass.Kosten*zuschlag) * tmpLaenge; + worksheet.Range[row + j, 9].Text = imass.Beschreibung; + + if (imass.Beschreibung.Equals("Schlauchliner")) + { + double zuschlag = 1; + double tmpLaenge = Convert.ToDouble(haltung.Stammdaten.Kante.Laenge); + if (tmpLaenge < 30) + zuschlag = 1.3; + if (tmpLaenge < 15) + zuschlag = 1.5; + worksheet.Range[row + j, 10].Number = (imass.Kosten * zuschlag) * tmpLaenge; + + } + else + worksheet.Range[row + j, 10].Number = imass.Kosten; } - else - worksheet.Range[row + j, 10].Number = imass.Kosten; } row++; @@ -179,54 +187,75 @@ namespace Schnittstelle.Export worksheet.Range[temprow, 1, row-1, 10].CellStyle = cellStyle; worksheet.Range[row-1, 1, row-1, 10].CellStyle = kodierungEnde; temprow = row; - worksheet.Range[row, 7].Text = "Zwischensumme"; + worksheet.Range[row, 7].Text = "netto-Zwischensumme"; worksheet.Range[row, 10].Formula = string.Format("=SUM(J{0}:J{1})", codestart_row, row-1); row++; - worksheet.Range[row, 7].Text = "Baustelleneinrichtung"; //10% + + //Linke seite + worksheet.Range[row, 1].Text =sanArt.Sanierungsbezeichnung.ToString(); + // Auflistung + worksheet.Range[row, 7].Text = "Baustelleneinrichtung anteilig Haltung"; //10% worksheet.Range[row, 8].Number = 10; worksheet.Range[row, 10].Formula = string.Format("=(H{0}/100)*J{1}", row, temprow); row++; - worksheet.Range[row, 7].Text = "Verkehrssicherung"; // 5% + worksheet.Range[row, 7].Text = "Verkehrssicherung anteilig Haltung"; // 5% worksheet.Range[row, 8].Number = 5; worksheet.Range[row, 10].Formula = string.Format("=(H{0}/100)*J{1}", row, temprow); row++; - worksheet.Range[row, 7].Text = "Aufrechterhaltung der Vorflut"; // 12% + // Linke seite + worksheet.Range[row, 1].Text = "Sanierungspriorität"; + worksheet.Range[row, 3].Text = "Info"; + // Auflistung + worksheet.Range[row, 7].Text = "Aufrechterhaltung der Vorflut Haltung"; // 12% worksheet.Range[row, 8].Number = 12; worksheet.Range[row, 10].Formula = string.Format("=(H{0}/100)*J{1}", row, temprow); row++; - worksheet.Range[row, 7].Text = "Kanalreinigung"; // 2€ /m + // Linke seite + worksheet.Range[row, 1].Text = "kurzfristing"; + worksheet.Range[row, 2].Text = "ja oder nein"; + worksheet.Range[row, 3].Text = "6-12 Monate"; + // Auflistung + worksheet.Range[row, 7].Text = "Kanalreinigung vor Sanierung"; // 2€ /m worksheet.Range[row, 8].Number = Convert.ToDouble(inspizierteLaenge); worksheet.Range[row, 9].Number = 2; worksheet.Range[row, 10].Formula = string.Format("=H{0}*I{0}", row); row++; - worksheet.Range[row, 7].Text = "Kamerainspektion"; // 3€ /m + // Linke seite + worksheet.Range[row, 1].Text = "mittelfristig"; + worksheet.Range[row, 2].Text = "ja oder nein"; + worksheet.Range[row, 3].Text = "1 bis 5 Jahre"; + // Auflistung + worksheet.Range[row, 7].Text = "Kamerainspektion Abnahme"; // 3€ /m worksheet.Range[row, 8].Number = Convert.ToDouble(inspizierteLaenge); worksheet.Range[row, 9].Number = 3; worksheet.Range[row, 10].Formula = string.Format("=H{0}*I{0}", row); - /* row++; - worksheet.Range[row, 7].Text = "Reinigung verstopfter Abzweiger"; //250€ - worksheet.Range[row, 9].Number = 250; - worksheet.Range[row, 10].Formula = string.Format("=H{0}*I{0}", row); - */ - row++; - worksheet.Range[row, 7].Text = "Summe netto"; + // Linke seite + worksheet.Range[row, 1].Text = "langfristig"; + worksheet.Range[row, 2].Text = "ja oder nein"; + worksheet.Range[row, 3].Text = "5 bis 10 Jahre"; + // Auflistung + worksheet.Range[row, 7].Text = "Summe netto Haltung"; worksheet.Range[row, 10].Formula = string.Format("=SUM(J{0}:J{1})",temprow,row-1); row++; worksheet.Range[row, 7].Text = "Mehrwertsteuer"; // 19% worksheet.Range[row, 8].Number = 19; worksheet.Range[row, 10].Formula = string.Format("=(H{0}/100)*J{1}",row,row-1); row++; - worksheet.Range[row, 7].Text = "Summe brutto"; + // Linke seite + worksheet.Range[row, 1].Text = "Sanierung im Verbund"; + worksheet.Range[row, 2].Text = "ja oder nein"; + // Auflistung + worksheet.Range[row, 7].Text = "Summe brutto Haltung"; worksheet.Range[row, 10].Formula = string.Format("=SUM(J{0}:J{1})", row - 1, row - 2); worksheet.Range[temprow, 7, row, 10].CellStyle = cellStyle; - worksheet.Range[mainrow+1, 4].Text = inspizierteLaenge.ToString(); + worksheet.Range[mainrow+1, 3].Text = inspizierteLaenge.ToString(); row += 5; } worksheet.UsedRange.AutofitColumns(); - worksheet.Range[string.Format("J1:J{0}",row)].NumberFormat = "€#,##0.00"; + worksheet.Range[string.Format("J1:J{0}",row)].NumberFormat = "€#0"; } } } diff --git a/Schnittstelle/Import/XML/v2013/XML2013.cs b/Schnittstelle/Import/XML/v2013/XML2013.cs index 2e43f1c..c7a8cf7 100644 --- a/Schnittstelle/Import/XML/v2013/XML2013.cs +++ b/Schnittstelle/Import/XML/v2013/XML2013.cs @@ -100,10 +100,12 @@ namespace Schnittstelle.Import.XML.v2013 if (!File.Exists(XmlFile)) throw new FileNotFoundException(string.Format("XML Datei mit den Pfad {0} wurde nicht gefunden", XmlFile)); XmlDocument doc = new XmlDocument(); doc.Load(XmlFile); + string xmlNameSpace = doc.DocumentElement.NamespaceURI; rootChild = doc.LastChild; manager = new XmlNamespaceManager(doc.NameTable); - manager.AddNamespace("e", "http://www.ofd-hannover.la/Identifikation"); + + manager.AddNamespace("e", xmlNameSpace); rootChild = rootChild.SelectSingleNode("//e:Datenkollektive", manager); Stammdaten = LoadStammdatenCollectiv(); @@ -323,6 +325,8 @@ namespace Schnittstelle.Import.XML.v2013 case "Timecode": break; case "GrundAbbruch": break; case "Videozaehler": break; + case "BCAMaterial": break; + case "BDBZustandLeitung": break; default: throw new NotImplementedException(d.Name); } @@ -458,6 +462,7 @@ namespace Schnittstelle.Import.XML.v2013 case "Kantentyp": result.Kantentyp = (EKantenTyp)Convert.ToInt32(d.InnerText); break; case "Entfernung": result.Entfernung = ConvertXMLToDecimal(d.InnerText); break; case "Fixierung": result.Fixierung = d.InnerText; break; + case "AnschlussArt": break; default: throw new NotImplementedException(d.Name); } @@ -502,6 +507,7 @@ namespace Schnittstelle.Import.XML.v2013 case "Kommentar": break; case "Geometrie": result.Geometrie = parseGeometrie(aktuell); break; case "Sanierung": break; + case "Ordnungseinheiten": break; default: throw new NotImplementedException(aktuell.Name); } } @@ -545,6 +551,7 @@ namespace Schnittstelle.Import.XML.v2013 case "Kanten": result.Kanten = parseGeometrieKanten(s); break; + case "Polygone": break; default: throw new NotImplementedException(s.Name); } } @@ -684,6 +691,8 @@ namespace Schnittstelle.Import.XML.v2013 break; case "Haltung": break; + case "Leitung": + break; default: throw new NotImplementedException(s.Name); } } @@ -717,6 +726,7 @@ namespace Schnittstelle.Import.XML.v2013 case "KnotenTyp": result.KnotenTyp = (EKnotenTyp)Convert.ToInt32(s.InnerText); break; case "Anschlusspunkt": result.Anschlusspunkt = new Anschlusspunkt() { Punktkennung = s.InnerText }; break; case "Schacht": result.Schacht = parseSchacht(s); break; + case "Abdeckungen": break; default: throw new NotImplementedException(s.Name); } } @@ -734,7 +744,7 @@ namespace Schnittstelle.Import.XML.v2013 case "SchachtFunktion": result.SchachtFunktion = (ESchachtFunktion)Convert.ToInt32(n.InnerText); break; case "Schachttiefe": result.SchachtTiefe = Convert.ToDecimal(n.InnerText); - Debugger.Break(); + //Debugger.Break(); break; case "Einstieghilfe": break; case "ArtEinstieghilfe": break; diff --git a/Schnittstelle/Sanierung/Sanierungart.cs b/Schnittstelle/Sanierung/Sanierungart.cs index e93b69a..db16fcd 100644 --- a/Schnittstelle/Sanierung/Sanierungart.cs +++ b/Schnittstelle/Sanierung/Sanierungart.cs @@ -46,7 +46,7 @@ namespace Schnittstelle.Sanierung public class Reparatur : Sanierungart { - public Reparatur() : base("Reparaturverfahren") + public Reparatur() : base("Reparatur") { } @@ -55,8 +55,9 @@ namespace Schnittstelle.Sanierung public class Renovation : Sanierungart { - public Renovation() : base("Renovationsverfahren") - { + public Renovation() : base("Renovation") + { + BCA(); BCE(); } @@ -66,6 +67,7 @@ namespace Schnittstelle.Sanierung bca.Add(new SanierungMassnahme("Einmessen",10,0,"BCA:-:A")); bca.Add(new SanierungMassnahme("Öffnen",100,0,"BCA:-:A")); bca.Add(new SanierungMassnahme("Hut",380,0,"BCA:-:A")); + massnahmen.Add("BCA",bca); } void BCE() {