XML parser erweitert

This commit is contained in:
Damian Wessels
2024-09-09 14:48:05 +02:00
parent 133bc5f6b0
commit 8d8baf0766
5 changed files with 106 additions and 51 deletions

View File

@@ -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)
{
}
}
}

View File

@@ -2,6 +2,7 @@
using Schnittstelle.Import.XML.v2013.Model; using Schnittstelle.Import.XML.v2013.Model;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Security.Cryptography;
using System.Text; using System.Text;
namespace Schnittstelle.DWA149_2_2013 namespace Schnittstelle.DWA149_2_2013
@@ -13,6 +14,7 @@ namespace Schnittstelle.DWA149_2_2013
switch(zustand.Inspektionskode.ToUpper()) switch(zustand.Inspektionskode.ToUpper())
{ {
case "AED": return new AED(zustand); case "AED": return new AED(zustand);
case "AEC": return new AEC(zustand);
case "BAA": return new BAA(zustand); case "BAA": return new BAA(zustand);
case "BAB": return new BAB(zustand); case "BAB": return new BAB(zustand);
@@ -55,7 +57,7 @@ namespace Schnittstelle.DWA149_2_2013
case "BDG": return new BDG(zustand); case "BDG": return new BDG(zustand);
default: default:
throw new ApplicationException("Code not implemented"); throw new NotImplementedException(string.Format("Code not implemented: {0}",zustand.Inspektionskode.ToUpper()));
} }
} }

View File

@@ -67,20 +67,24 @@ namespace Schnittstelle.Export
Sanierungart sanArt = sanierungsarten[i]; Sanierungart sanArt = sanierungsarten[i];
int mainrow = row; int mainrow = row;
worksheet.Range[row, 1].Text = "Haltung"; worksheet.Range[row, 1].Text = "Haltung";
worksheet.Range[row, 2].Text = "Länge"; worksheet.Range[row, 2].Text = "Straße"; // 5
worksheet.Range[row, 3].Text = "Tiefe"; worksheet.Range[row, 3].Text = "Inspizierte Länge"; // 4
worksheet.Range[row, 4].Text = "Inspizierte Länge"; worksheet.Range[row, 4].Text = "Länge"; // 2
worksheet.Range[row, 5].Text = "Straße"; worksheet.Range[row, 5].Text = "Tiefe"; // 3
worksheet.Range[row, 7].Text = sanArt.Sanierungsbezeichnung;
worksheet.Range[row, 9].Text = "DN";
worksheet.Range[row, 7].Text = "Schadensbeschreibung"; //sanArt.Sanierungsbezeichnung;
worksheet.Range[row, 9].Text = "Durchmesser";
worksheet.Range[row, 10].Text = "Material"; worksheet.Range[row, 10].Text = "Material";
row++; row++;
worksheet.Range[row, 1].Text = haltung.Stammdaten.Objektbezeichnung; worksheet.Range[row, 1].Text = haltung.Stammdaten.Objektbezeichnung;
worksheet.Range[row, 2].Text = haltung.Stammdaten.Kante.Laenge.ToString(); // Länge worksheet.Range[row, 2].Text = haltung.Inspektionsdaten.Lage.Strassename;
worksheet.Range[row, 3].Text = "Not Implemented yet"; // Tiefe
worksheet.Range[row, 4].Text = haltung.Stammdaten.Kante.Laenge.ToString(); // Länge
worksheet.Range[row, 5].Text = "Not Implemented yet"; // Tiefe
worksheet.Range[row, 5].Text = haltung.Inspektionsdaten.Lage.Strassename;
worksheet.Range[row, 9].Text = haltung.Inspektionsdaten.OptischeInspektion[0].Rohrleitung.Grunddaten.Profilbreite.ToString(); 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(); 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; //worksheet.Range[row, 2].Text = sanArt.Sanierungsbezeichnung;
//row+= 2; //row+= 2;
//int temprow = row; //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, 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, 4].Text = "Quantifizierung";
worksheet.Range[row, 5].Text = "Lage"; worksheet.Range[row, 5].Text = "Lage im Kreis";
worksheet.Range[row, 6].Text = "Verb."; //worksheet.Range[row, 6].Text = "Verb.";
worksheet.Range[row, 7].Text = "Schaden"; worksheet.Range[row, 7].Text = "Schadensbeschreibung / Info";
worksheet.Range[row, 8].Text = "Strecke"; worksheet.Range[row, 8].Text = "Strecke";
worksheet.Range[row, 9].Text = "Sanierung"; worksheet.Range[row, 9].Text = "Sanierungsvorschlag";
worksheet.Range[row, 10].Text = "Kosten"; worksheet.Range[row, 10].Text = "Kostenans.";
worksheet.Range[row, 1, row,10].CellStyle=headerStyle; worksheet.Range[row, 1, row,10].CellStyle=headerStyle;
@@ -147,6 +151,7 @@ namespace Schnittstelle.Export
List<SanierungMassnahme> Massnahmen; List<SanierungMassnahme> Massnahmen;
Console.WriteLine(code.Inspektionskode);
if (sanArt.Massnahmen.TryGetValue(code.Inspektionskode, out Massnahmen)) if (sanArt.Massnahmen.TryGetValue(code.Inspektionskode, out Massnahmen))
@@ -154,6 +159,8 @@ namespace Schnittstelle.Export
var imass = Massnahmen.Find(x => var imass = Massnahmen.Find(x =>
haltung.Inspektionsdaten.OptischeInspektion[0].Rohrleitung.Grunddaten.Profilbreite >= haltung.Inspektionsdaten.OptischeInspektion[0].Rohrleitung.Grunddaten.Profilbreite >=
x.DN); x.DN);
if (imass != null)
{
worksheet.Range[row + j, 9].Text = imass.Beschreibung; worksheet.Range[row + j, 9].Text = imass.Beschreibung;
@@ -165,12 +172,13 @@ namespace Schnittstelle.Export
zuschlag = 1.3; zuschlag = 1.3;
if (tmpLaenge < 15) if (tmpLaenge < 15)
zuschlag = 1.5; zuschlag = 1.5;
worksheet.Range[row + j, 10].Number = (imass.Kosten*zuschlag) * tmpLaenge; worksheet.Range[row + j, 10].Number = (imass.Kosten * zuschlag) * tmpLaenge;
} }
else else
worksheet.Range[row + j, 10].Number = imass.Kosten; worksheet.Range[row + j, 10].Number = imass.Kosten;
} }
}
row++; row++;
} }
@@ -179,54 +187,75 @@ namespace Schnittstelle.Export
worksheet.Range[temprow, 1, row-1, 10].CellStyle = cellStyle; worksheet.Range[temprow, 1, row-1, 10].CellStyle = cellStyle;
worksheet.Range[row-1, 1, row-1, 10].CellStyle = kodierungEnde; worksheet.Range[row-1, 1, row-1, 10].CellStyle = kodierungEnde;
temprow = row; 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); worksheet.Range[row, 10].Formula = string.Format("=SUM(J{0}:J{1})", codestart_row, row-1);
row++; 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, 8].Number = 10;
worksheet.Range[row, 10].Formula = string.Format("=(H{0}/100)*J{1}", row, temprow); worksheet.Range[row, 10].Formula = string.Format("=(H{0}/100)*J{1}", row, temprow);
row++; 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, 8].Number = 5;
worksheet.Range[row, 10].Formula = string.Format("=(H{0}/100)*J{1}", row, temprow); worksheet.Range[row, 10].Formula = string.Format("=(H{0}/100)*J{1}", row, temprow);
row++; 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, 8].Number = 12;
worksheet.Range[row, 10].Formula = string.Format("=(H{0}/100)*J{1}", row, temprow); worksheet.Range[row, 10].Formula = string.Format("=(H{0}/100)*J{1}", row, temprow);
row++; 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, 8].Number = Convert.ToDouble(inspizierteLaenge);
worksheet.Range[row, 9].Number = 2; worksheet.Range[row, 9].Number = 2;
worksheet.Range[row, 10].Formula = string.Format("=H{0}*I{0}", row); worksheet.Range[row, 10].Formula = string.Format("=H{0}*I{0}", row);
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, 8].Number = Convert.ToDouble(inspizierteLaenge);
worksheet.Range[row, 9].Number = 3; worksheet.Range[row, 9].Number = 3;
worksheet.Range[row, 10].Formula = string.Format("=H{0}*I{0}", row); worksheet.Range[row, 10].Formula = string.Format("=H{0}*I{0}", row);
/*
row++; row++;
worksheet.Range[row, 7].Text = "Reinigung verstopfter Abzweiger"; //250€ // Linke seite
worksheet.Range[row, 9].Number = 250; worksheet.Range[row, 1].Text = "langfristig";
worksheet.Range[row, 10].Formula = string.Format("=H{0}*I{0}", row); worksheet.Range[row, 2].Text = "ja oder nein";
*/ worksheet.Range[row, 3].Text = "5 bis 10 Jahre";
row++; // Auflistung
worksheet.Range[row, 7].Text = "Summe netto"; worksheet.Range[row, 7].Text = "Summe netto Haltung";
worksheet.Range[row, 10].Formula = string.Format("=SUM(J{0}:J{1})",temprow,row-1); worksheet.Range[row, 10].Formula = string.Format("=SUM(J{0}:J{1})",temprow,row-1);
row++; row++;
worksheet.Range[row, 7].Text = "Mehrwertsteuer"; // 19% worksheet.Range[row, 7].Text = "Mehrwertsteuer"; // 19%
worksheet.Range[row, 8].Number = 19; worksheet.Range[row, 8].Number = 19;
worksheet.Range[row, 10].Formula = string.Format("=(H{0}/100)*J{1}",row,row-1); worksheet.Range[row, 10].Formula = string.Format("=(H{0}/100)*J{1}",row,row-1);
row++; 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[row, 10].Formula = string.Format("=SUM(J{0}:J{1})", row - 1, row - 2);
worksheet.Range[temprow, 7, row, 10].CellStyle = cellStyle; 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; row += 5;
} }
worksheet.UsedRange.AutofitColumns(); worksheet.UsedRange.AutofitColumns();
worksheet.Range[string.Format("J1:J{0}",row)].NumberFormat = "€#,##0.00"; worksheet.Range[string.Format("J1:J{0}",row)].NumberFormat = "€#0";
} }
} }
} }

View File

@@ -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)); if (!File.Exists(XmlFile)) throw new FileNotFoundException(string.Format("XML Datei mit den Pfad {0} wurde nicht gefunden", XmlFile));
XmlDocument doc = new XmlDocument(); XmlDocument doc = new XmlDocument();
doc.Load(XmlFile); doc.Load(XmlFile);
string xmlNameSpace = doc.DocumentElement.NamespaceURI;
rootChild = doc.LastChild; rootChild = doc.LastChild;
manager = new XmlNamespaceManager(doc.NameTable); manager = new XmlNamespaceManager(doc.NameTable);
manager.AddNamespace("e", "http://www.ofd-hannover.la/Identifikation");
manager.AddNamespace("e", xmlNameSpace);
rootChild = rootChild.SelectSingleNode("//e:Datenkollektive", manager); rootChild = rootChild.SelectSingleNode("//e:Datenkollektive", manager);
Stammdaten = LoadStammdatenCollectiv(); Stammdaten = LoadStammdatenCollectiv();
@@ -323,6 +325,8 @@ namespace Schnittstelle.Import.XML.v2013
case "Timecode": break; case "Timecode": break;
case "GrundAbbruch": break; case "GrundAbbruch": break;
case "Videozaehler": break; case "Videozaehler": break;
case "BCAMaterial": break;
case "BDBZustandLeitung": break;
default: throw new NotImplementedException(d.Name); 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 "Kantentyp": result.Kantentyp = (EKantenTyp)Convert.ToInt32(d.InnerText); break;
case "Entfernung": result.Entfernung = ConvertXMLToDecimal(d.InnerText); break; case "Entfernung": result.Entfernung = ConvertXMLToDecimal(d.InnerText); break;
case "Fixierung": result.Fixierung = d.InnerText; break; case "Fixierung": result.Fixierung = d.InnerText; break;
case "AnschlussArt": break;
default: throw new NotImplementedException(d.Name); default: throw new NotImplementedException(d.Name);
} }
@@ -502,6 +507,7 @@ namespace Schnittstelle.Import.XML.v2013
case "Kommentar": break; case "Kommentar": break;
case "Geometrie": result.Geometrie = parseGeometrie(aktuell); break; case "Geometrie": result.Geometrie = parseGeometrie(aktuell); break;
case "Sanierung": break; case "Sanierung": break;
case "Ordnungseinheiten": break;
default: throw new NotImplementedException(aktuell.Name); default: throw new NotImplementedException(aktuell.Name);
} }
} }
@@ -545,6 +551,7 @@ namespace Schnittstelle.Import.XML.v2013
case "Kanten": case "Kanten":
result.Kanten = parseGeometrieKanten(s); result.Kanten = parseGeometrieKanten(s);
break; break;
case "Polygone": break;
default: throw new NotImplementedException(s.Name); default: throw new NotImplementedException(s.Name);
} }
} }
@@ -684,6 +691,8 @@ namespace Schnittstelle.Import.XML.v2013
break; break;
case "Haltung": case "Haltung":
break; break;
case "Leitung":
break;
default: throw new NotImplementedException(s.Name); 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 "KnotenTyp": result.KnotenTyp = (EKnotenTyp)Convert.ToInt32(s.InnerText); break;
case "Anschlusspunkt": result.Anschlusspunkt = new Anschlusspunkt() { Punktkennung = s.InnerText }; break; case "Anschlusspunkt": result.Anschlusspunkt = new Anschlusspunkt() { Punktkennung = s.InnerText }; break;
case "Schacht": result.Schacht = parseSchacht(s); break; case "Schacht": result.Schacht = parseSchacht(s); break;
case "Abdeckungen": break;
default: throw new NotImplementedException(s.Name); 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 "SchachtFunktion": result.SchachtFunktion = (ESchachtFunktion)Convert.ToInt32(n.InnerText); break;
case "Schachttiefe": case "Schachttiefe":
result.SchachtTiefe = Convert.ToDecimal(n.InnerText); result.SchachtTiefe = Convert.ToDecimal(n.InnerText);
Debugger.Break(); //Debugger.Break();
break; break;
case "Einstieghilfe": break; case "Einstieghilfe": break;
case "ArtEinstieghilfe": break; case "ArtEinstieghilfe": break;

View File

@@ -46,7 +46,7 @@ namespace Schnittstelle.Sanierung
public class Reparatur : Sanierungart public class Reparatur : Sanierungart
{ {
public Reparatur() : base("Reparaturverfahren") public Reparatur() : base("Reparatur")
{ {
} }
@@ -55,8 +55,9 @@ namespace Schnittstelle.Sanierung
public class Renovation : Sanierungart public class Renovation : Sanierungart
{ {
public Renovation() : base("Renovationsverfahren") public Renovation() : base("Renovation")
{ {
BCA();
BCE(); BCE();
} }
@@ -66,6 +67,7 @@ namespace Schnittstelle.Sanierung
bca.Add(new SanierungMassnahme("Einmessen",10,0,"BCA:-:A")); bca.Add(new SanierungMassnahme("Einmessen",10,0,"BCA:-:A"));
bca.Add(new SanierungMassnahme("Öffnen",100,0,"BCA:-:A")); bca.Add(new SanierungMassnahme("Öffnen",100,0,"BCA:-:A"));
bca.Add(new SanierungMassnahme("Hut",380,0,"BCA:-:A")); bca.Add(new SanierungMassnahme("Hut",380,0,"BCA:-:A"));
massnahmen.Add("BCA",bca);
} }
void BCE() void BCE()
{ {