Compare commits

..

6 Commits

Author SHA1 Message Date
Damian Wessels
fd13ba2695 Reparaturmaßnahmen und Renovationsmaßnahmen
Angefangen Interfaces zu Implementieren.
2024-08-26 16:48:39 +02:00
Damian Wessels
f8a01cdd8a Style änderung und Länge wird eingetragen
Die Kosten werden nun im Währungsformat herausgegeben
2024-08-26 13:02:30 +02:00
Damian Wessels
bacd1bd770 Knoten zu AbwassertechnischeAnlage geändert
Somit kann auf die Daten zugegriffen werden.
2024-08-26 13:01:45 +02:00
Damian Wessels
368fb464c3 in static funktionen umgeändert 2024-08-26 12:30:54 +02:00
Damian Wessels
3c8cd670b4 umgeschrieben auf static funktion 2024-08-26 12:23:32 +02:00
Damian Wessels
4071b526f0 Geometriedaten werden geladen 2024-08-26 12:13:09 +02:00
9 changed files with 137 additions and 47 deletions

View File

@@ -1,4 +1,6 @@
namespace Schnittstelle.Contract
using Schnittstelle.Sanierung;
namespace Schnittstelle.Contract
{
interface ICodeBeschreibung
{

View File

@@ -1,18 +1,24 @@
using Schnittstelle.Import.XML.v2013.Model;
using Schnittstelle.Sanierung;
using System;
using System.Collections.Generic;
using System.Text;
namespace Schnittstelle.DWA149_2_2013
{
class BAA : CodeBeschreibung
class BAA : CodeBeschreibung, IReparatur, IRenovation
{
List<SanierungMassnahme> reparatur = new List<SanierungMassnahme>();
List<SanierungMassnahme> renovation = new List<SanierungMassnahme>();
public BAA(RZustand kuerzel) : base("Verformung",kuerzel)
{
CH1.Add("A", "vertikal");
CH1.Add("B", "horizontal");
}
List<SanierungMassnahme> IReparatur.Massnahmen => reparatur;
List<SanierungMassnahme> IRenovation.Massnahmen => renovation;
}
}

View File

@@ -1,10 +1,14 @@
using Schnittstelle.Import.XML.v2013.Model;
using Schnittstelle.Sanierung;
using System;
using System.Collections.Generic;
namespace Schnittstelle.DWA149_2_2013
{
class BAB : CodeBeschreibung
class BAB : CodeBeschreibung, IReparatur
{
List<SanierungMassnahme> reparatur = new List<SanierungMassnahme>();
public BAB(RZustand kuerzel) : base("Rissbildung", kuerzel)
{
CH1.Add("A", "Oberflächenriss (Haarriss)");
@@ -16,7 +20,13 @@ namespace Schnittstelle.DWA149_2_2013
CH2.Add("C", "komplexe Rissbildung");
CH2.Add("D", "gewundene oder spiralförmige Rissbildung");
CH2.Add("E", "sternförmige Rissbildung");
reparatur.Add(new SanierungMassnahme("anfräsen",100));
reparatur.Add(new SanierungMassnahme("kurzliner",200));
}
List<SanierungMassnahme> IReparatur.Massnahmen => reparatur;
}
}

View File

@@ -1,5 +1,6 @@
using Schnittstelle.Contract;
using Schnittstelle.Import.XML.v2013.Model;
using Schnittstelle.Sanierung;
using System.Collections.Generic;
namespace Schnittstelle.DWA149_2_2013
@@ -33,6 +34,5 @@ namespace Schnittstelle.DWA149_2_2013
return string.Format("{0} {1} {2}", beschreibung, ch1,ch2);
}
}
}
}

View File

@@ -76,8 +76,8 @@ namespace Schnittstelle.Export
row++;
worksheet.Range[row, 1].Text = haltung.Stammdaten.Objektbezeichnung;
worksheet.Range[row, 2].Text = "TODO";
worksheet.Range[row, 3].Text = "TODO";
worksheet.Range[row, 2].Text = haltung.Stammdaten.Kante.Laenge.ToString(); // Länge
worksheet.Range[row, 3].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();
@@ -103,13 +103,17 @@ namespace Schnittstelle.Export
worksheet.Range[row, 10].Text = "Kosten";
worksheet.Range[row, 1, row,10].CellStyle=headerStyle;
//08950738
row++;
int temprow = row;
int codestart_row = row;
//int rows = 7;
decimal inspizierteLaenge = 0m;
for (int j = 0; j < haltung.Inspektionsdaten.OptischeInspektion.Count; j++)
//if(haltung.Stammdaten.Objektbezeichnung.Equals("08950738")) Debugger.Break();
int anzahlInspektionen = haltung.Inspektionsdaten.OptischeInspektion.Count-1;
for (int j = 0; j < anzahlInspektionen+1; j++)
{
OptischeInspektion opt = haltung.Inspektionsdaten.OptischeInspektion[j];
inspizierteLaenge += opt.Rohrleitung.Zustaende.Max(x => x.Station);
@@ -149,6 +153,7 @@ namespace Schnittstelle.Export
row++;
}
}
row += anzahlInspektionen;
worksheet.Range[temprow, 1, row-1, 10].CellStyle = cellStyle;
worksheet.Range[row-1, 1, row-1, 10].CellStyle = kodierungEnde;
temprow = row;
@@ -197,6 +202,7 @@ namespace Schnittstelle.Export
row += 5;
}
worksheet.UsedRange.AutofitColumns();
worksheet.Range[string.Format("J1:J{0}",row)].NumberFormat = "€#,##0.00";
}
}
}

View File

@@ -5,8 +5,8 @@ namespace Schnittstelle.Import.XML.v2013.Model
decimal sohlhoeheZulauf;
decimal sohlhoeheAblauf;
decimal laenge;
Knoten? knotenZulauf;
Knoten? knotenAblauf;
AbwassertechnischeAnlage? knotenZulauf;
AbwassertechnischeAnlage? knotenAblauf;
int knotenAblaufTyp;
int knotenZulaufTyp;
bool isFiktiveLeitung = true;
@@ -18,8 +18,8 @@ namespace Schnittstelle.Import.XML.v2013.Model
public decimal SohlhoeheZulauf { get => sohlhoeheZulauf; set => sohlhoeheZulauf = value; }
public decimal SohlhoeheAblauf { get => sohlhoeheAblauf; set => sohlhoeheAblauf = value; }
public Knoten? KnotenZulauf { get => knotenZulauf; set => knotenZulauf = value; }
public Knoten? KnotenAblauf { get => knotenAblauf; set => knotenAblauf = value; }
public AbwassertechnischeAnlage? KnotenZulauf { get => knotenZulauf; set => knotenZulauf = value; }
public AbwassertechnischeAnlage? KnotenAblauf { get => knotenAblauf; set => knotenAblauf = value; }
public int KnotenAblaufTyp { get => knotenAblaufTyp; set => knotenAblaufTyp = value; }
public int KnotenZulaufTyp { get => knotenZulaufTyp; set => knotenZulaufTyp = value; }
public bool IsFiktiveLeitung { get => isFiktiveLeitung; set => isFiktiveLeitung = value; }

View File

@@ -1,3 +1,6 @@
using Schnittstelle.Sanierung;
using System.Collections.Generic;
namespace Schnittstelle.Import.XML.v2013.Model
{
public struct Quantifizierung
@@ -30,6 +33,8 @@ namespace Schnittstelle.Import.XML.v2013.Model
string kommentar;
Klassifizierung? klassifizierung;
string kodeDescription;
IReparatur? reparatur;
IRenovation? renovation;
public decimal Station { get => station; set => station = value; }
public string Inspektionskode { get => inspektionskode; set => inspektionskode = value; }
@@ -45,5 +50,7 @@ namespace Schnittstelle.Import.XML.v2013.Model
public string Kommentar { get => kommentar; set => kommentar = value; }
public Klassifizierung? Klassifizierung { get => klassifizierung; set => klassifizierung = value; }
public string KodeDescription { get => kodeDescription; set => kodeDescription = value; }
public IReparatur Reparatur { get => reparatur; set => reparatur = value; }
public IRenovation Renovation { get => renovation; set => renovation = value; }
}
}

View File

@@ -1,6 +1,7 @@
using Schnittstelle.Contract;
using Schnittstelle.DWA149_2_2013;
using Schnittstelle.Import.XML.v2013.Model;
using Schnittstelle.Sanierung;
using System;
using System.Collections.Generic;
using System.Diagnostics;
@@ -35,6 +36,22 @@ namespace Schnittstelle.Import.XML.v2013
RebuildStammdaten();
}
private static decimal ConvertXMLToDecimal(string input)
{
string str = string.Empty;
if(input.Contains('.'))
{
str = input.Replace('.', ',');
}
else
{
str = input;
}
if (decimal.TryParse(str, out decimal result)) return result;
else return new decimal();
}
private void RebuildStammdaten()
{
// liste an knoten
@@ -43,15 +60,15 @@ namespace Schnittstelle.Import.XML.v2013
while (QueueToRebuild.Count > 0)
{
AbwassertechnischeAnlage anlage = QueueToRebuild.Dequeue();
anlage.Kante.KnotenZulauf = knoten.First(x => x.Objektbezeichnung.Equals(anlage.Kante.knotenZulaufTemp)).Knoten;
var d = knoten.FirstOrDefault(x => x.Objektbezeichnung.Equals(anlage.Kante.knotenAblaufTemp));
anlage.Kante.KnotenZulauf = knoten.First(x => x.Objektbezeichnung.Equals(anlage.Kante.knotenZulaufTemp));
AbwassertechnischeAnlage? d = knoten.FirstOrDefault(x => x.Objektbezeichnung.Equals(anlage.Kante.knotenAblaufTemp));
if (d == null)
{
notFoundKnoten.Add(anlage.Kante.knotenAblaufTemp);
}
else
{
anlage.Kante.KnotenAblauf = d.Knoten;
anlage.Kante.KnotenAblauf = d;
}
}
}
@@ -63,7 +80,7 @@ namespace Schnittstelle.Import.XML.v2013
inspektionsdaten = src.Item2;
foreach (InspizierteAbwassertechnischeAnlage iat in inspektionsdaten)
{
AbwassertechnischeAnlage stammdatens = stammdaten.Find(x => x.Objektbezeichnung.Equals(iat.Objektbezeichnung));//;
AbwassertechnischeAnlage stammdatens = stammdaten.Find(x => x.Objektbezeichnung.Equals(iat.Objektbezeichnung) && x.ObjektArt.Equals(EObjektArt.KANTE));//;
string[] filepathsplited = this.XmlFile.Split(Path.DirectorySeparatorChar);
KanalObjekte.Add(new KanalObjekt()
@@ -195,7 +212,7 @@ namespace Schnittstelle.Import.XML.v2013
result.Rohrleitungstyp = (ERohrleitungstyp)Convert.ToInt32(d.InnerText);
break;
case "Inspektionslaenge":
result.Inspektionslaenge = Convert.ToDecimal(d.InnerText.Replace('.', ','));
result.Inspektionslaenge = ConvertXMLToDecimal(d.InnerText);
break;
case "Inspektionsrichtung":
result.Inspektionsrichtung = d.InnerText;
@@ -253,7 +270,7 @@ namespace Schnittstelle.Import.XML.v2013
switch (d.Name)
{
case "Station":
rZustand.Station = Convert.ToDecimal(d.InnerText.Replace('.', ','));
rZustand.Station = ConvertXMLToDecimal(d.InnerText);
break;
case "InspektionsKode":
rZustand.Inspektionskode = d.InnerText;
@@ -275,12 +292,12 @@ namespace Schnittstelle.Import.XML.v2013
break;
case "Quantifizierung1Numerisch":
Quantifizierung quantifizierung1 = new Quantifizierung();
quantifizierung1.Numerisch = Convert.ToDecimal(d.InnerText.Replace('.', ','));
quantifizierung1.Numerisch = ConvertXMLToDecimal(d.InnerText);
rZustand.Quantifizierung1 = quantifizierung1;
break;
case "Quantifizierung2Numerisch":
Quantifizierung quantifizierung2 = new Quantifizierung();
quantifizierung2.Numerisch = Convert.ToDecimal(d.InnerText.Replace('.', ','));
quantifizierung2.Numerisch = ConvertXMLToDecimal(d.InnerText);
rZustand.Quantifizierung1 = quantifizierung2;
break;
case "Quantifizierung1Text":
@@ -314,7 +331,9 @@ namespace Schnittstelle.Import.XML.v2013
ICodeBeschreibung codedescription = factory.GetCodeBeschreibung(rZustand);
rZustand.KodeDescription = codedescription.GetBeschreibung;
//Console.WriteLine(rZustand.KodeDescription);
if (codedescription is IRenovation) rZustand.Renovation = (IRenovation)codedescription;
if(codedescription is IReparatur) rZustand.Reparatur = (IReparatur)codedescription;
result.Add(rZustand);
}
@@ -405,7 +424,7 @@ namespace Schnittstelle.Import.XML.v2013
case "Profilart": grunddaten.Profilart = Convert.ToInt32(d.InnerText); break;
case "HerkunftMaterial": grunddaten.HerkunftMaterial = Convert.ToInt32(d.InnerText); break;
case "Material": grunddaten.Material = d.InnerText; break;
case "Regeleinzelrohrlaenge": grunddaten.Regeleinzelrohrlaenge = Convert.ToDecimal(d.InnerText.Replace('.', ',')); break;
case "Regeleinzelrohrlaenge": grunddaten.Regeleinzelrohrlaenge = ConvertXMLToDecimal(d.InnerText); break;
case "ArtAuskleidung": grunddaten.ArtAuskleidung = Convert.ToInt32(d.InnerText); break;
case "Kanalart": grunddaten.Kanalart = d.InnerText; break;
case "Anschlussdaten": grunddaten.Anschlussddaten = ParseAnschlussdaten(d); break;
@@ -429,6 +448,7 @@ namespace Schnittstelle.Import.XML.v2013
int second = Convert.ToInt32(parsedtime[2]);
return new DateTime(year, month, day, hour, minute, second);
}
private static Anschlussdaten ParseAnschlussdaten(XmlNode anschlussdaten)
{
Anschlussdaten result = new Anschlussdaten();
@@ -438,7 +458,7 @@ namespace Schnittstelle.Import.XML.v2013
{
case "Objektbezeichnung": result.Objektbezeichnung = d.InnerText; break;
case "Kantentyp": result.Kantentyp = (EKantenTyp)Convert.ToInt32(d.InnerText); break;
case "Entfernung": result.Entfernung = Convert.ToDecimal(d.InnerText.Replace('.', ',')); break;
case "Entfernung": result.Entfernung = ConvertXMLToDecimal(d.InnerText); break;
case "Fixierung": result.Fixierung = d.InnerText; break;
default: throw new NotImplementedException(d.Name);
@@ -491,7 +511,7 @@ namespace Schnittstelle.Import.XML.v2013
return result;
}
private Geometrie parseGeometrie(XmlNode aktuell)
private static Geometrie parseGeometrie(XmlNode aktuell)
{
Geometrie result = new Geometrie();
foreach (XmlNode s in aktuell.ChildNodes)
@@ -511,7 +531,7 @@ namespace Schnittstelle.Import.XML.v2013
}
private Geometriedaten parseGeometrieDaten(XmlNode aktuel)
private static Geometriedaten parseGeometrieDaten(XmlNode aktuel)
{
Geometriedaten result = new Geometriedaten();
foreach (XmlNode s in aktuel.ChildNodes)
@@ -522,7 +542,7 @@ namespace Schnittstelle.Import.XML.v2013
result.Knoten = parseGeometrieKnoten(s);
break;
case "Kanten":
parseGeometrieKanten(s);
result.Kanten = parseGeometrieKanten(s);
break;
default: throw new NotImplementedException(s.Name);
}
@@ -531,52 +551,58 @@ namespace Schnittstelle.Import.XML.v2013
return result;
}
private void parseGeometrieKanten(XmlNode aktuel)
private static List<PolyKante> parseGeometrieKanten(XmlNode aktuel)
{
List<PolyKante> result = new List<PolyKante>();
foreach (XmlNode s in aktuel.ChildNodes)
{
switch (s.Name)
{
case "Kante":
parseGeometrieKante(s);
result.Add(parseGeometrieKante(s));
break;
default: throw new NotImplementedException(s.Name);
}
}
return result;
}
private void parseGeometrieKante(XmlNode aktuel)
private static PolyKante parseGeometrieKante(XmlNode aktuel)
{
PolyKante result = new PolyKante();
foreach (XmlNode s in aktuel.ChildNodes)
{
switch (s.Name)
{
case "Start":
parseGeometrieKanteStartEnde(s);
result.Start = parseGeometrieKanteStartEnde(s);
break;
case "Ende":
parseGeometrieKanteStartEnde(s);
result.Ende = parseGeometrieKanteStartEnde(s);
break;
default: throw new NotImplementedException(s.Name);
}
}
return result;
}
private void parseGeometrieKanteStartEnde(XmlNode aktuel)
private static PolyKanteAttribute parseGeometrieKanteStartEnde(XmlNode aktuel)
{
PolyKanteAttribute result = new PolyKanteAttribute();
foreach (XmlNode s in aktuel.ChildNodes)
{
switch (s.Name)
{
case "Rechtswert": break;
case "Hochwert": break;
case "Punkthoehe": break;
case "PunktattributAbwasser": break;
case "Rechtswert": result.Rechtswert = ConvertXMLToDecimal(s.InnerText); break;
case "Hochwert": result.Hochwert = ConvertXMLToDecimal(s.InnerText); break;
case "Punkthoehe": result.Punkthoehe = ConvertXMLToDecimal(s.InnerText); break;
case "PunktattributAbwasser": result.PunktattributAbwasser = s.InnerText; break;
default: throw new NotImplementedException(s.Name);
}
}
return result;
}
private Geometriedatenknoten parseGeometrieKnoten(XmlNode aktuel)
private static Geometriedatenknoten parseGeometrieKnoten(XmlNode aktuel)
{
Geometriedatenknoten result = new Geometriedatenknoten();
foreach (XmlNode s in aktuel.ChildNodes)
@@ -593,7 +619,7 @@ namespace Schnittstelle.Import.XML.v2013
return result;
}
private Punkt parseGeometrieKnotenPunkt(XmlNode aktuel)
private static Punkt parseGeometrieKnotenPunkt(XmlNode aktuel)
{
Punkt punkt = new Punkt();
foreach (XmlNode s in aktuel.ChildNodes)
@@ -601,13 +627,13 @@ namespace Schnittstelle.Import.XML.v2013
switch (s.Name)
{
case "Rechtswert":
punkt.Rechtswert = Convert.ToDecimal(s.InnerText.Replace('.', ','));
punkt.Rechtswert = ConvertXMLToDecimal(s.InnerText);
break;
case "Hochwert":
punkt.Hochwert = Convert.ToDecimal(s.InnerText.Replace('.', ','));
punkt.Hochwert = ConvertXMLToDecimal(s.InnerText);
break;
case "Punkthoehe":
punkt.Punkthoehe = Convert.ToDecimal(s.InnerText.Replace('.', ','));
punkt.Punkthoehe = ConvertXMLToDecimal(s.InnerText);
break;
case "PunktattributAbwasser":
punkt.PunktattributeAbwasser = s.InnerText;
@@ -618,7 +644,7 @@ namespace Schnittstelle.Import.XML.v2013
return punkt;
}
private Kante parseKante(XmlNode aktuell)
private static Kante parseKante(XmlNode aktuell)
{
Kante result = new Kante();
@@ -644,13 +670,13 @@ namespace Schnittstelle.Import.XML.v2013
result.KnotenAblaufTyp = Convert.ToInt32(s.InnerText);
break;
case "SohlhoeheZulauf":
result.SohlhoeheZulauf = Convert.ToDecimal(s.InnerText.Replace('.',','));
result.SohlhoeheZulauf = ConvertXMLToDecimal(s.InnerText);
break;
case "SohlhoeheAblauf":
result.SohlhoeheAblauf = Convert.ToDecimal(s.InnerText.Replace('.',','));
result.SohlhoeheAblauf = ConvertXMLToDecimal(s.InnerText);
break;
case "Laenge":
result.Laenge = Convert.ToDecimal(s.InnerText);
result.Laenge = ConvertXMLToDecimal(s.InnerText);
break;
case "Material":
result.Material = s.InnerText;
@@ -663,7 +689,7 @@ namespace Schnittstelle.Import.XML.v2013
return result;
}
private Profil getProfil(XmlNode s)
private static Profil getProfil(XmlNode s)
{
int Profilart = 0, Profilbreite = 0, Profilhoehe = 0;
foreach (XmlNode d in s.ChildNodes)

View File

@@ -0,0 +1,33 @@
using Schnittstelle.DWA149_2_2013;
using System.Collections.Generic;
namespace Schnittstelle.Sanierung
{
public interface IReparatur
{
List<SanierungMassnahme> Massnahmen { get; }
}
public interface IRenovation
{
List<SanierungMassnahme> Massnahmen { get; }
}
public class SanierungMassnahme
{
string beschreibung = string.Empty;
decimal kosten = decimal.MinValue;
public string Beschreibung { get => beschreibung; }
public decimal Kosten { get => kosten; }
public SanierungMassnahme(string beschreibung, decimal kosten)
{
this.beschreibung=beschreibung;
this.kosten = kosten;
}
}
}