Compare commits

...

5 Commits

Author SHA1 Message Date
Damian Wessels
042b059f2a Sanierungsarten und weitere Berechnungen 2024-08-23 19:36:40 +02:00
Damian Wessels
c212850836 Ergebnisse werden Exportiert in Excel 2024-08-23 18:06:47 +02:00
Damian Wessels
6b9f157a36 Gegeninspektionen werden nun zusammengeführt 2024-08-23 16:53:28 +02:00
Damian Wessels
6987f8d499 Kürzelbeschreibung hinzugefügt 2024-08-23 16:18:25 +02:00
Damian Wessels
366b9ad4d6 Codebeschreibungen angefangen
Videozähler führt nicht mehr zum Abbruch.
2024-08-23 14:16:00 +02:00
47 changed files with 973 additions and 7 deletions

View File

@@ -0,0 +1,7 @@
namespace Schnittstelle.Contract
{
interface ICodeBeschreibung
{
string GetBeschreibung { get; }
}
}

View File

@@ -0,0 +1,14 @@
using Schnittstelle.Import.XML.v2013.Model;
using System;
using System.Collections.Generic;
using System.Text;
namespace Schnittstelle.DWA149_2_2013
{
internal class AED : CodeBeschreibung
{
public AED(RZustand kuerzel) : base("Grundlagen änderung", kuerzel)
{
}
}
}

View File

@@ -0,0 +1,18 @@
using Schnittstelle.Import.XML.v2013.Model;
using System;
using System.Collections.Generic;
using System.Text;
namespace Schnittstelle.DWA149_2_2013
{
class BAA : CodeBeschreibung
{
public BAA(RZustand kuerzel) : base("Verformung",kuerzel)
{
CH1.Add("A", "vertikal");
CH1.Add("B", "horizontal");
}
}
}

View File

@@ -0,0 +1,22 @@
using Schnittstelle.Import.XML.v2013.Model;
using System;
namespace Schnittstelle.DWA149_2_2013
{
class BAB : CodeBeschreibung
{
public BAB(RZustand kuerzel) : base("Rissbildung", kuerzel)
{
CH1.Add("A", "Oberflächenriss (Haarriss)");
CH1.Add("B", "Riss");
CH1.Add("C", "Klaffender Riss");
CH2.Add("A", "in Längsrichtung");
CH2.Add("B", "am Rohrumfang");
CH2.Add("C", "komplexe Rissbildung");
CH2.Add("D", "gewundene oder spiralförmige Rissbildung");
CH2.Add("E", "sternförmige Rissbildung");
}
}
}

View File

@@ -0,0 +1,17 @@
using Schnittstelle.Import.XML.v2013.Model;
using System;
namespace Schnittstelle.DWA149_2_2013
{
class BAC : CodeBeschreibung
{
public BAC(RZustand kuerzel) : base("Rohrbruch / Einsturz", kuerzel)
{
CH1.Add("A", "Bruch");
CH1.Add("B", "Fehlen von Teilen");
CH1.Add("C", "Einsturz");
}
}
}

View File

@@ -0,0 +1,19 @@
using Schnittstelle.Import.XML.v2013.Model;
using System;
namespace Schnittstelle.DWA149_2_2013
{
class BAD : CodeBeschreibung
{
public BAD(RZustand kuerzel) : base("Defektes Mauerwerk", kuerzel)
{
CH1.Add("A", "verschoben");
CH1.Add("B", "fehlend");
CH1.Add("C", "Sohle abgesackt");
CH1.Add("D", "Einsturz");
CH2.Add("A", "weitere Mauerwerksschicht sichtbar");
CH2.Add("B", "es ist nichts zu sehen");
}
}
}

View File

@@ -0,0 +1,14 @@
using Schnittstelle.Import.XML.v2013.Model;
using System;
namespace Schnittstelle.DWA149_2_2013
{
class BAE : CodeBeschreibung
{
public BAE(RZustand kuerzel) : base("Fehlender Mörtel", kuerzel)
{
}
}
}

View File

@@ -0,0 +1,33 @@
using Schnittstelle.Import.XML.v2013.Model;
using System;
namespace Schnittstelle.DWA149_2_2013
{
class BAF : CodeBeschreibung
{
public BAF(RZustand kuerzel) : base("Oberflächenschaden", kuerzel)
{
CH1.Add("A", "erhöhte Rauheit");
CH1.Add("B", "Abplatzung");
CH1.Add("C", "Zuschlagstoffe sichtbar");
CH1.Add("D", "Zuschlagstoffe einragend");
CH1.Add("E", "Zuschlagstoffe fehlen");
CH1.Add("F", "Bewehrung sichtbar");
CH1.Add("G", "Bewehrung einragend");
CH1.Add("H", "Bewehrung korrodiert");
CH1.Add("I", "fehlende Wand");
CH1.Add("J", "Korrosionserscheinungen an der Oberfläche");
CH1.Add("K", "Blasen");
CH1.Add("Z", "andere Oberflächenschäden");
CH2.Add("A", "mechanisch");
CH2.Add("B", "chemisch - allgemein");
CH2.Add("C", "chemisch - Beschädigung im oberen Teil des Rohres");
CH2.Add("D", "chemisch - Beschädigung im unteren Teil des Rohres");
CH2.Add("E", "Ursache nicht eindeutig festellbar");
CH2.Add("Z", "andere Ursachen");
}
}
}

View File

@@ -0,0 +1,14 @@
using Schnittstelle.Import.XML.v2013.Model;
using System;
namespace Schnittstelle.DWA149_2_2013
{
class BAG : CodeBeschreibung
{
public BAG(RZustand kuerzel) : base("Einragender Anschluss", kuerzel)
{
}
}
}

View File

@@ -0,0 +1,18 @@
using Schnittstelle.Import.XML.v2013.Model;
using System;
namespace Schnittstelle.DWA149_2_2013
{
class BAH : CodeBeschreibung
{
public BAH(RZustand kuerzel) : base("Schadhafter Anschluss", kuerzel)
{
CH1.Add("A", "Lage des Anschlusses um das Rohr ist falsch");
CH1.Add("B", "Spalt zwischen dem Ende des Anschlusses und der Rohrleitung (Zurückliegende Anschluss)");
CH1.Add("C", "am Umfang des Anschlusses ist teilweise ein Spalt (Anschluss unvollständig eingebunden)");
CH1.Add("D", "Anschluss beschädigt");
CH1.Add("E", "Anschluss verstopft");
CH1.Add("Z", "Andere Schaden");
}
}
}

View File

@@ -0,0 +1,21 @@
using Schnittstelle.Import.XML.v2013.Model;
using System;
namespace Schnittstelle.DWA149_2_2013
{
class BAI : CodeBeschreibung
{
public BAI(RZustand kuerzel) : base("Einragendes Dichtungsmaterial", kuerzel)
{
CH1.Add("A", "Dichtring");
CH1.Add("Z", "andere Dichtungsart");
CH2.Add("A", "sichtbar verschoben, jedoch nicht in die Rohrleitung hineinragend");
CH2.Add("B", "einragend, aber nicht gebrochen - tiefster Punkt liegt oberhalb der horizontale Mittellinie");
CH2.Add("C", "einragend, aber nicht gebrochen - tiefster Punkt liegt unterhalb der horizontale Mittellinie");
CH2.Add("D", "einragend und gebrochen");
}
}
}

View File

@@ -0,0 +1,15 @@
using Schnittstelle.Import.XML.v2013.Model;
using System;
namespace Schnittstelle.DWA149_2_2013
{
class BAJ : CodeBeschreibung
{
public BAJ(RZustand kuerzel) : base("Verschobene Verbindung", kuerzel)
{
CH1.Add("A", "in längsrichtung");
CH1.Add("B", "radial");
CH1.Add("C", "im Winkel");
}
}
}

View File

@@ -0,0 +1,34 @@
using Schnittstelle.Import.XML.v2013.Model;
using System;
namespace Schnittstelle.DWA149_2_2013
{
class BAK : CodeBeschreibung
{
public BAK(RZustand kuerzel) : base("Feststellung der Innenauskleidung", kuerzel)
{
CH1.Add("A", "Innenauskleidung abgelöst");
CH1.Add("B", "Innenauskleidung verfärbt");
CH1.Add("C", "Endstelle der Auskleidung schadhaf");
CH1.Add("D", "Falten in der Auskleidung");
CH1.Add("E", "Blasen oder Beulen in der Auskleidung nach innen");
CH1.Add("F", "Beulen außen");
CH1.Add("G", "Ablösen der Innenhaut/Beschichtung");
CH1.Add("H", "Ablösen der Abdeckung der Verbindungsnaht");
CH1.Add("I", "Riss oder Spalt");
CH1.Add("J", "Loch in der Auskleidung");
CH1.Add("K", "Auskleidungsverbindung defekt");
CH1.Add("L", "Auskleidungswerkstoff erscheint weich");
CH1.Add("M", "Harz fehlt im Laminat");
CH1.Add("N", "Ende der Auskleidung ist nicht abgedichtet");
CH1.Add("Z", "anderer Auskleidungsschaden");
CH2.Add("A", "in Längsrichtung");
CH2.Add("B", "radial am Umfang");
CH2.Add("C", "komplex");
CH2.Add("D", "spiralförmig");
}
}
}

View File

@@ -0,0 +1,27 @@
using Schnittstelle.Import.XML.v2013.Model;
using System;
namespace Schnittstelle.DWA149_2_2013
{
class BAL : CodeBeschreibung
{
public BAL(RZustand kuerzel) : base("Schadhafter Reparatur", kuerzel)
{
CH1.Add("A", "Wand fehlt teilweise");
CH1.Add("B", "Reparatur zur Abdichtung eines Loches ist schadhaft");
CH1.Add("C", "Ablösen des Reparaturwerkstoffs vom Basisrohr");
CH1.Add("D", "fehlender Reparaturwerkstoff an der Kontaktfläche");
CH1.Add("E", "überschüssiger Reparaturwerkstoff, der ein Hindernis darstellt");
CH1.Add("F", "Loch im Reparaturwerkstoff");
CH1.Add("G", "Riss im Reparaturwerkstoff");
CH1.Add("Z", "andere");
CH2.Add("A", "in Längsrichtung");
CH2.Add("B", "radial am Umfang");
CH2.Add("C", "komplex");
CH2.Add("D", "spiralförmig");
}
}
}

View File

@@ -0,0 +1,17 @@
using Schnittstelle.Import.XML.v2013.Model;
using System;
namespace Schnittstelle.DWA149_2_2013
{
class BAM : CodeBeschreibung
{
public BAM(RZustand kuerzel) : base("Schadhafter Schweißnaht", kuerzel)
{
CH1.Add("A", "in Längsrichtung");
CH1.Add("B", "am Umfang");
CH1.Add("C", "spiralförmiger Verlauf");
}
}
}

View File

@@ -0,0 +1,14 @@
using Schnittstelle.Import.XML.v2013.Model;
using System;
namespace Schnittstelle.DWA149_2_2013
{
class BAN : CodeBeschreibung
{
public BAN(RZustand kuerzel) : base("Poröses Rohr", kuerzel)
{
}
}
}

View File

@@ -0,0 +1,14 @@
using Schnittstelle.Import.XML.v2013.Model;
using System;
namespace Schnittstelle.DWA149_2_2013
{
class BAO : CodeBeschreibung
{
public BAO(RZustand kuerzel) : base("Boden sichtbar", kuerzel)
{
}
}
}

View File

@@ -0,0 +1,12 @@
using Schnittstelle.Import.XML.v2013.Model;
using System;
namespace Schnittstelle.DWA149_2_2013
{
class BAP : CodeBeschreibung
{
public BAP(RZustand kuerzel) : base("Hohlraum sichtbar", kuerzel)
{
}
}
}

View File

@@ -0,0 +1,14 @@
using Schnittstelle.Import.XML.v2013.Model;
namespace Schnittstelle.DWA149_2_2013
{
class BBA : CodeBeschreibung
{
public BBA(RZustand kuerzel) : base("Wurzeln", kuerzel)
{
CH1.Add("A", "Pfahlwurzel");
CH1.Add("B", "einzelne feine Wurzeln");
CH1.Add("C", "komplexes Wurzelwerk");
}
}
}

View File

@@ -0,0 +1,15 @@
using Schnittstelle.Import.XML.v2013.Model;
namespace Schnittstelle.DWA149_2_2013
{
class BBB : CodeBeschreibung
{
public BBB(RZustand kuerzel) : base("Anhaftende Stoffe", kuerzel)
{
CH1.Add("A", "Inkrustation");
CH1.Add("B", "Fett");
CH1.Add("C", "Fäulnis");
CH1.Add("Z", "andere");
}
}
}

View File

@@ -0,0 +1,15 @@
using Schnittstelle.Import.XML.v2013.Model;
namespace Schnittstelle.DWA149_2_2013
{
class BBC : CodeBeschreibung
{
public BBC(RZustand kuerzel) : base("Ablagerungen", kuerzel)
{
CH1.Add("A", "feines Material");
CH1.Add("B", "grobes Material");
CH1.Add("C", "hartes oder verdichtetes Material");
CH1.Add("Z", "andere");
}
}
}

View File

@@ -0,0 +1,16 @@
using Schnittstelle.Import.XML.v2013.Model;
namespace Schnittstelle.DWA149_2_2013
{
class BBD : CodeBeschreibung
{
public BBD(RZustand kuerzel) : base("Eindringen von Bodenmaterial", kuerzel)
{
CH1.Add("A", "Sand");
CH1.Add("B", "Torf");
CH1.Add("C", "Feinmaterial");
CH1.Add("D", "Grobmaterial");
CH1.Add("Z", "andere");
}
}
}

View File

@@ -0,0 +1,20 @@
using Schnittstelle.Import.XML.v2013.Model;
namespace Schnittstelle.DWA149_2_2013
{
class BBE : CodeBeschreibung
{
public BBE(RZustand kuerzel) : base("Andere Hindernisse", kuerzel)
{
CH1.Add("A", "Ziegel oder Mauerwerk liegen/liegt in der Rohrsohle");
CH1.Add("B", "Bruchstücke einer Abwasserleitung oder eines Abwasserkanals liegen in der \r\nRohrsohle");
CH1.Add("C", "anderer Gegenstand liegt in der Rohrsohle");
CH1.Add("D", "Gegenstand ragt durch die Wand ein");
CH1.Add("E", "Gegenstand in Rohrverbindung eingekeilt");
CH1.Add("F", "Gegenstand dringt durch einen Anschluss/Abzweig ein");
CH1.Add("G", "fremde Leitungen oder Kabel durchqueren die Rohrleitung");
CH1.Add("H", "Gegenstand/Objekt in den Rohrkörper eingebaut");
CH1.Add("Z", "andere");
}
}
}

View File

@@ -0,0 +1,15 @@
using Schnittstelle.Import.XML.v2013.Model;
namespace Schnittstelle.DWA149_2_2013
{
class BBF : CodeBeschreibung
{
public BBF(RZustand kuerzel) : base("Infiltration", kuerzel)
{
CH1.Add("A", "Schwitzen");
CH1.Add("B", "Tropfen");
CH1.Add("C", "Fließen");
CH1.Add("D", "Spritzen");
}
}
}

View File

@@ -0,0 +1,11 @@
using Schnittstelle.Import.XML.v2013.Model;
namespace Schnittstelle.DWA149_2_2013
{
class BBG : CodeBeschreibung
{
public BBG(RZustand kuerzel) : base("Exfiltration", kuerzel)
{
}
}
}

View File

@@ -0,0 +1,19 @@
using Schnittstelle.Import.XML.v2013.Model;
namespace Schnittstelle.DWA149_2_2013
{
class BBH : CodeBeschreibung
{
public BBH(RZustand kuerzel) : base("Ungeziefer", kuerzel)
{
CH1.Add("A", "Ratte");
CH1.Add("B", "Küchenschabe/Kakerlake");
CH1.Add("C", "andere");
CH2.Add("A", "in der Rohrleitung");
CH2.Add("B", "in einem Anschluss");
CH2.Add("C", "in einer offene Rohrverbindung");
CH2.Add("Z", "andere");
}
}
}

View File

@@ -0,0 +1,22 @@
using Schnittstelle.Import.XML.v2013.Model;
namespace Schnittstelle.DWA149_2_2013
{
class BCA : CodeBeschreibung
{
public BCA(RZustand kuerzel) : base("Anschluss", kuerzel)
{
CH1.Add("A", "Abzweig");
CH1.Add("B", "Sattelanschluss gebohrt");
CH1.Add("C", "Sattelanschluss gemeißelt");
CH1.Add("D", "einfacher Anschluss gebohrt");
CH1.Add("E", "einfacher Anschluss gemeißelt");
CH1.Add("F", "anderer Anschluss als ein Abzweig");
CH1.Add("G", "unbekannter Anschluss");
CH1.Add("Z", "andere");
CH2.Add("A", "offen");
CH2.Add("B", "geschlossen");
}
}
}

View File

@@ -0,0 +1,19 @@
using Schnittstelle.Import.XML.v2013.Model;
namespace Schnittstelle.DWA149_2_2013
{
class BCB : CodeBeschreibung
{
public BCB(RZustand kuerzel) : base("Punktuelle Reparatur", kuerzel)
{
CH1.Add("A", "Rohr ausgestauscht");
CH1.Add("B", "örtlich begrenzte Innenauskleidung des Rohrs");
CH1.Add("C", "Mörtelinjizierung");
CH1.Add("D", "Injizierung mit anderem Dichtmittel");
CH1.Add("E", "Loch repariert");
CH1.Add("F", "örtlich begrenzte Innenauskleidung des Anschlusses");
CH1.Add("G", "andere Reparatur des Anschlusses");
CH1.Add("Z", "anderes grabenloses Reparaturverfahren");
}
}
}

View File

@@ -0,0 +1,16 @@
using Schnittstelle.Import.XML.v2013.Model;
namespace Schnittstelle.DWA149_2_2013
{
class BCC : CodeBeschreibung
{
public BCC(RZustand kuerzel) : base("Krümmung der Leitung", kuerzel)
{
CH1.Add("A", "nach links");
CH1.Add("B", "nach rechts");
CH2.Add("A", "nach oben");
CH2.Add("B", "nach unten");
}
}
}

View File

@@ -0,0 +1,11 @@
using Schnittstelle.Import.XML.v2013.Model;
namespace Schnittstelle.DWA149_2_2013
{
class BCD : CodeBeschreibung
{
public BCD(RZustand kuerzel) : base("Anfangsknoten", kuerzel)
{
}
}
}

View File

@@ -0,0 +1,11 @@
using Schnittstelle.Import.XML.v2013.Model;
namespace Schnittstelle.DWA149_2_2013
{
class BCE : CodeBeschreibung
{
public BCE(RZustand kuerzel) : base("Endknoten", kuerzel)
{
}
}
}

View File

@@ -0,0 +1,11 @@
using Schnittstelle.Import.XML.v2013.Model;
namespace Schnittstelle.DWA149_2_2013
{
class BDA : CodeBeschreibung
{
public BDA(RZustand kuerzel) : base("Allgemeines Foto", kuerzel)
{
}
}
}

View File

@@ -0,0 +1,11 @@
using Schnittstelle.Import.XML.v2013.Model;
namespace Schnittstelle.DWA149_2_2013
{
class BDB : CodeBeschreibung
{
public BDB(RZustand kuerzel) : base("Allgemeine Anmerkung", kuerzel)
{
}
}
}

View File

@@ -0,0 +1,22 @@
using Schnittstelle.Import.XML.v2013.Model;
namespace Schnittstelle.DWA149_2_2013
{
class BDC : CodeBeschreibung
{
public BDC(RZustand kuerzel) : base("Inspektion endet vor dem Endknoten", kuerzel)
{
CH1.Add("A", "Hinderniss");
CH1.Add("B", "hoher Wasserstand");
CH1.Add("C", "Versagen der Ausrüstung");
CH1.Add("Z", "andere");
CH2.Add("A", "Inspektionsziel vor Erreichen des Endknotens erreicht");
CH2.Add("B", "Inspektion auf Anweisung des Auftraggebers abgebrochen");
CH2.Add("C", "ie Inspektion der Leitung/des Kanals ist bei Berücksichtigung einer früheren Teilinspektion abgeschlossen");
CH2.Add("D", "die Inspektion der Leitung/des Kanals ist bei Berücksichtigung einer früheren Teilinspektion nicht abgeschlossen");
CH2.Add("E", "es ist nicht bekannt, ob die Inspektion der gesamten Leitung bei Berücksichtigung einer früheren Teilinspektion abgeschlossen ist");
CH2.Add("Z", "andere");
}
}
}

View File

@@ -0,0 +1,16 @@
using Schnittstelle.Import.XML.v2013.Model;
namespace Schnittstelle.DWA149_2_2013
{
class BDD : CodeBeschreibung
{
public BDD(RZustand kuerzel) : base("Wasserspiegel", kuerzel)
{
CH1.Add("A", "klar (Sohle sichtbar)");
CH1.Add("B", "Anwendung nicht fortgeführt");
CH1.Add("C", "trüb");
CH1.Add("D", "gefärbt");
CH1.Add("E", "trüb und gefärbt");
}
}
}

View File

@@ -0,0 +1,19 @@
using Schnittstelle.Import.XML.v2013.Model;
namespace Schnittstelle.DWA149_2_2013
{
class BDE : CodeBeschreibung
{
public BDE(RZustand kuerzel) : base("Zufluss aus einem Anschluss", kuerzel)
{
CH1.Add("A", "klar (Sohle des Zuflusses sichtbar)");
CH1.Add("B", "Kode nicht fortgeführt");
CH1.Add("C", "trüb");
CH1.Add("D", "trüb und gefärbt");
CH2.Add("A", "falsch angeschlossen, da Schmutzwasser in Regenwasserleitung/-kanal abfließt");
CH2.Add("A", "falsch angeschlossen, da Regenwasser in Schmutzwasserleitung/-kanal abfließ");
CH2.Add("A", "kein Fehlanschluss erkennbar");
}
}
}

View File

@@ -0,0 +1,15 @@
using Schnittstelle.Import.XML.v2013.Model;
namespace Schnittstelle.DWA149_2_2013
{
class BDF : CodeBeschreibung
{
public BDF(RZustand kuerzel) : base("Atmosphäre in der Leitung", kuerzel)
{
CH1.Add("A", "Sauerstoffmangel");
CH1.Add("B", "Schwefelwasserstoff");
CH1.Add("C", "Methan");
CH1.Add("Z", "andere");
}
}
}

View File

@@ -0,0 +1,15 @@
using Schnittstelle.Import.XML.v2013.Model;
namespace Schnittstelle.DWA149_2_2013
{
class BDG : CodeBeschreibung
{
public BDG(RZustand kuerzel) : base("Keine Sicht", kuerzel)
{
CH1.Add("A", "Kamera unter Wasser");
CH1.Add("B", "Verschlammung");
CH1.Add("C", "Dämpfe");
CH1.Add("Z", "andere");
}
}
}

View File

@@ -0,0 +1,38 @@
using Schnittstelle.Contract;
using Schnittstelle.Import.XML.v2013.Model;
using System.Collections.Generic;
namespace Schnittstelle.DWA149_2_2013
{
abstract class CodeBeschreibung : ICodeBeschreibung
{
string beschreibung;
protected Dictionary<string, string> CH1 = new Dictionary<string, string>() {
{ "Y", "nicht erkennbar" }
};
protected Dictionary<string, string> CH2 = new Dictionary<string, string>() {
{ "Y", "nicht erkennbar" }
};
private readonly RZustand kuerzel;
protected CodeBeschreibung(string CodeBeschreibung, RZustand kuerzel)
{
this.beschreibung = CodeBeschreibung;
this.kuerzel = kuerzel;
}
public virtual string GetBeschreibung
{
get
{
string beschreibung = this.beschreibung;
string ch1 = "";
string ch2 = "";
if(kuerzel.Charakterisierung1 != null) CH1.TryGetValue(kuerzel.Charakterisierung1, out ch1);
if (kuerzel.Charakterisierung2 != null) CH2.TryGetValue(kuerzel.Charakterisierung2 , out ch2);
return string.Format("{0} {1} {2}", beschreibung, ch1,ch2);
}
}
}
}

View File

@@ -0,0 +1,63 @@
using Schnittstelle.Contract;
using Schnittstelle.Import.XML.v2013.Model;
using System;
using System.Collections.Generic;
using System.Text;
namespace Schnittstelle.DWA149_2_2013
{
class DWA149_2_2013Factory
{
public ICodeBeschreibung GetCodeBeschreibung(RZustand zustand)
{
switch(zustand.Inspektionskode.ToUpper())
{
case "AED": return new AED(zustand);
case "BAA": return new BAA(zustand);
case "BAB": return new BAB(zustand);
case "BAC": return new BAC(zustand);
case "BAD": return new BAD(zustand);
case "BAE": return new BAE(zustand);
case "BAF": return new BAF(zustand);
case "BAG": return new BAG(zustand);
case "BAH": return new BAH(zustand);
case "BAI": return new BAI(zustand);
case "BAJ": return new BAJ(zustand);
case "BAK": return new BAK(zustand);
case "BAL": return new BAL(zustand);
case "BAM": return new BAM(zustand);
case "BAN": return new BAN(zustand);
case "BAO": return new BAO(zustand);
case "BAP": return new BAP(zustand);
case "BBA": return new BBA(zustand);
case "BBB": return new BBB(zustand);
case "BBC": return new BBC(zustand);
case "BBD": return new BBD(zustand);
case "BBE": return new BBE(zustand);
case "BBF": return new BBF(zustand);
case "BBG": return new BBG(zustand);
case "BBH": return new BBH(zustand);
case "BCA": return new BCA(zustand);
case "BCB": return new BCB(zustand);
case "BCC": return new BCC(zustand);
case "BCD": return new BCD(zustand);
case "BCE": return new BCE(zustand);
case "BDA": return new BDA(zustand);
case "BDB": return new BDB(zustand);
case "BDC": return new BDC(zustand);
case "BDD": return new BDD(zustand);
case "BDE": return new BDE(zustand);
case "BDF": return new BDF(zustand);
case "BDG": return new BDG(zustand);
default:
throw new ApplicationException("Code not implemented");
}
}
}
}

View File

@@ -0,0 +1,161 @@
using Schnittstelle.Import.XML.v2013.Model;
using Schnittstelle.Sanierung;
using Syncfusion.XlsIO;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
namespace Schnittstelle.Export
{
public static class Excel
{
const string LizenceKey = "Ngo9BigBOggjHTQxAR8/V1NCaF5cXmZCf1FpRmJGdld5fUVHYVZUTXxaS00DNHVRdkdnWXdccXRQQ2NZWEBxWUM=";
public static void MakeWorkbook(List<KanalObjekt> KanalObjekte, List<Sanierungart> sanierungsarten)
{
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense(LizenceKey);
ExcelEngine excelEngine = new ExcelEngine();
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Xlsx;
IWorkbook workbook = application.Workbooks.Create(KanalObjekte.Count);
IStyle CellStyle = workbook.Styles.Add("HeaderStyle");
CellStyle.Borders[ExcelBordersIndex.EdgeLeft].LineStyle = ExcelLineStyle.Thin;
CellStyle.Borders[ExcelBordersIndex.EdgeRight].LineStyle = ExcelLineStyle.Thin;
CellStyle.Borders[ExcelBordersIndex.EdgeTop].LineStyle = ExcelLineStyle.Thin;
CellStyle.Borders[ExcelBordersIndex.EdgeBottom].LineStyle = ExcelLineStyle.Thin;
for (int i = 0; i < KanalObjekte.Count; i++)
{
IWorksheet worksheet = workbook.Worksheets[i];
KanalObjekt k = KanalObjekte[i];
CalculateHaltung(k, worksheet, sanierungsarten , CellStyle);
}
FileStream stream = new FileStream("beurteilung.xlsx", FileMode.Create, FileAccess.ReadWrite);
workbook.SaveAs(stream);
stream.Dispose();
}
private static void CalculateHaltung(KanalObjekt haltung, IWorksheet worksheet, List<Sanierungart> sanierungsarten, IStyle cellStyle)
{
worksheet.Name = string.Format("{0}", haltung.Stammdaten.Objektbezeichnung);
int row = 1;
for (int i = 0; i < sanierungsarten.Count; i++)
{
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, 9].Text = "DN";
worksheet.Range[row, 10].Text = "Material";
row++;
worksheet.Range[row, 1].Text = haltung.Stammdaten.Objektbezeichnung;
worksheet.Range[row, 2].Text = "TODO";
worksheet.Range[row, 3].Text = "TODO";
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, 10].Text = haltung.Inspektionsdaten.OptischeInspektion[0].Rohrleitung.Grunddaten.Material.ToString();
worksheet.Range[mainrow,1,row,10].CellStyle = cellStyle;
row += 2;
worksheet.Range[row, 2].Text = sanArt.Sanierungsbezeichnung;
row+= 2;
int temprow = row;
worksheet.Range[row, 1].Text = "Stat";
worksheet.Range[row, 2].Text = "Kürzel";
worksheet.Range[row, 3].Text = "Charakterisierung";
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, 8].Text = "Strecke";
worksheet.Range[row, 9].Text = "Sanierung";
worksheet.Range[row, 10].Text = "Kosten";
row++;
int codestart_row = row;
//int rows = 7;
decimal inspizierteLaenge = 0m;
for (int j = 0; j < haltung.Inspektionsdaten.OptischeInspektion.Count; j++)
{
OptischeInspektion opt = haltung.Inspektionsdaten.OptischeInspektion[j];
inspizierteLaenge += opt.Rohrleitung.Zustaende.Max(x => x.Station);
foreach (RZustand code in opt.Rohrleitung.Zustaende)
{
worksheet.Range[row + j, 1].Text = code.Station.ToString();
worksheet.Range[row + j, 2].Text = code.Inspektionskode;
string ch = "";
if (code.Charakterisierung1 != null)
ch = code.Charakterisierung1;
if (code.Charakterisierung2 != null)
ch = string.Format("{0} / {1}", ch, code.Charakterisierung2);
worksheet.Range[row + j, 3].Text = ch;
worksheet.Range[row + j, 4].Text = code.Quantifizierung1.ToString();
string pos = "";
if (code.PositionVon != 0)
pos = code.PositionVon.ToString();
if (code.PositionBis != 0)
pos = string.Format("{0} - {1}", pos, code.PositionBis);
worksheet.Range[row + j, 5].Text = pos;
if (code.Verbindung)
worksheet.Range[row + j, 6].Text = "JA";
worksheet.Range[row + j, 7].Text = code.KodeDescription;
worksheet.Range[row + j, 8].Text = code.Streckenschaden;
Tuple<string, double> d;
if (sanArt.Sanierungen.TryGetValue(code.Inspektionskode, out d))
{
worksheet.Range[row + j, 9].Text = d.Item1;
worksheet.Range[row + j, 10].Number = d.Item2;
}
row++;
}
}
worksheet.Range[temprow, 1, row, 10].CellStyle = cellStyle;
temprow = row;
worksheet.Range[row, 7].Text = "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%
row++;
worksheet.Range[row, 7].Text = "Verkehrssicherung"; // 5%
row++;
worksheet.Range[row, 7].Text = "Aufrechterhaltung der Vorflut"; // 12%
row++;
worksheet.Range[row, 7].Text = "Kanalreinigung"; // 2€ /m
row++;
worksheet.Range[row, 7].Text = "Kamerainspektion"; // 3€ /m
row++;
worksheet.Range[row, 7].Text = "Reinigung verstopfter Abzweiger"; //250€
row++;
worksheet.Range[row, 7].Text = "Summe netto";
row++;
worksheet.Range[row, 7].Text = "Mehrwertsteuer"; // 19%
row++;
worksheet.Range[row, 7].Text = "Summe brutto";
worksheet.Range[temprow, 7, row, 10].CellStyle = cellStyle;
worksheet.Range[mainrow+1, 4].Text = inspizierteLaenge.ToString();
row += 5;
}
}
}
}

View File

@@ -1,3 +1,5 @@
using System.Collections.Generic;
namespace Schnittstelle.Import.XML.v2013.Model namespace Schnittstelle.Import.XML.v2013.Model
{ {
public sealed class InspizierteAbwassertechnischeAnlage public sealed class InspizierteAbwassertechnischeAnlage
@@ -5,7 +7,7 @@ namespace Schnittstelle.Import.XML.v2013.Model
string objektbezeichnung; string objektbezeichnung;
Lage lage; Lage lage;
EAnlagetyp anlagentyp; EAnlagetyp anlagentyp;
OptischeInspektion optischeInspektion; List<OptischeInspektion> optischeInspektion = new List<OptischeInspektion>();
public string Objektbezeichnung public string Objektbezeichnung
{ {
@@ -29,7 +31,7 @@ namespace Schnittstelle.Import.XML.v2013.Model
anlagentyp = value; anlagentyp = value;
} }
} }
public OptischeInspektion OptischeInspektion public List<OptischeInspektion> OptischeInspektion
{ {
get get
{ {
@@ -53,7 +55,7 @@ namespace Schnittstelle.Import.XML.v2013.Model
} }
public override string ToString() public override string ToString()
{ {
return objektbezeichnung + " " + optischeInspektion.Rohrleitung.Grunddaten.Profilbreite; return objektbezeichnung + " " + optischeInspektion[0].Rohrleitung.Grunddaten.Profilbreite;
} }
} }
} }

View File

@@ -7,7 +7,7 @@ namespace Schnittstelle.Import.XML.v2013.Model
public InspizierteAbwassertechnischeAnlage Inspektionsdaten { get; set; } public InspizierteAbwassertechnischeAnlage Inspektionsdaten { get; set; }
public override string ToString() public override string ToString()
{ {
return string.Format("{0} ({1})",Stammdaten.Objektbezeichnung, Inspektionsdaten.OptischeInspektion.Rohrleitung != null ? Inspektionsdaten.OptischeInspektion.Rohrleitung.Grunddaten.Profilbreite: 0); return string.Format("{0} ({1})",Stammdaten.Objektbezeichnung, Inspektionsdaten.OptischeInspektion[0].Rohrleitung != null ? Inspektionsdaten.OptischeInspektion[0].Rohrleitung.Grunddaten.Profilbreite: 0);
} }
} }
} }

View File

@@ -29,6 +29,7 @@ namespace Schnittstelle.Import.XML.v2013.Model
int positionBis; int positionBis;
string kommentar; string kommentar;
Klassifizierung? klassifizierung; Klassifizierung? klassifizierung;
string kodeDescription;
public decimal Station { get => station; set => station = value; } public decimal Station { get => station; set => station = value; }
public string Inspektionskode { get => inspektionskode; set => inspektionskode = value; } public string Inspektionskode { get => inspektionskode; set => inspektionskode = value; }
@@ -43,5 +44,6 @@ namespace Schnittstelle.Import.XML.v2013.Model
public int PositionBis { get => positionBis; set => positionBis = value; } public int PositionBis { get => positionBis; set => positionBis = value; }
public string Kommentar { get => kommentar; set => kommentar = value; } public string Kommentar { get => kommentar; set => kommentar = value; }
public Klassifizierung? Klassifizierung { get => klassifizierung; set => klassifizierung = value; } public Klassifizierung? Klassifizierung { get => klassifizierung; set => klassifizierung = value; }
public string KodeDescription { get => kodeDescription; set => kodeDescription = value; }
} }
} }

View File

@@ -1,7 +1,9 @@
using Schnittstelle.Contract; using Schnittstelle.Contract;
using Schnittstelle.DWA149_2_2013;
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.Diagnostics;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
@@ -100,7 +102,17 @@ namespace Schnittstelle.Import.XML.v2013
foreach (XmlNode node in Inspektionsdaten) foreach (XmlNode node in Inspektionsdaten)
{ {
result.Add(ParseInspektion(node)); var parsedInspektion = ParseInspektion(node);
var src = result.Find(x => x.Objektbezeichnung == parsedInspektion.Objektbezeichnung);
if (src != null)
{
src.OptischeInspektion.Add(parsedInspektion.OptischeInspektion[0]);
}
else
{
result.Add(parsedInspektion);
}
} }
return result; return result;
@@ -133,7 +145,7 @@ namespace Schnittstelle.Import.XML.v2013
} }
result.Lage = new Lage(strassename, ortname); result.Lage = new Lage(strassename, ortname);
break; break;
case "OptischeInspektion": result.OptischeInspektion = parseOptischeInspektion(d); break; case "OptischeInspektion": result.OptischeInspektion.Add(parseOptischeInspektion(d)); break;
} }
} }
return result; return result;
@@ -237,7 +249,6 @@ namespace Schnittstelle.Import.XML.v2013
RZustand rZustand = new RZustand(); RZustand rZustand = new RZustand();
foreach (XmlNode d in child.ChildNodes) foreach (XmlNode d in child.ChildNodes)
{ {
switch (d.Name) switch (d.Name)
{ {
case "Station": case "Station":
@@ -293,10 +304,16 @@ namespace Schnittstelle.Import.XML.v2013
case "Fotonummer": break; case "Fotonummer": break;
case "Timecode": break; case "Timecode": break;
case "GrundAbbruch": break; case "GrundAbbruch": break;
case "Videozaehler": break;
default: throw new NotImplementedException(d.Name); default: throw new NotImplementedException(d.Name);
} }
} }
DWA149_2_2013Factory factory = new DWA149_2_2013Factory();
ICodeBeschreibung codedescription = factory.GetCodeBeschreibung(rZustand);
rZustand.KodeDescription = codedescription.GetBeschreibung;
//Console.WriteLine(rZustand.KodeDescription);
result.Add(rZustand); result.Add(rZustand);
} }

View File

@@ -0,0 +1,36 @@
using Syncfusion.XlsIO.Parser.Biff_Records;
using System;
using System.Collections.Generic;
using System.Text;
namespace Schnittstelle.Sanierung
{
public abstract class Sanierungart
{
string sanierungsbezeichnung = string.Empty;
public string Sanierungsbezeichnung { get => sanierungsbezeichnung; }
public Dictionary<string, Tuple<string, double>> Sanierungen = new Dictionary<string, Tuple<string, double>>();
public Sanierungart(string art)
{
sanierungsbezeichnung = art;
}
}
public class Reparatur : Sanierungart
{
public Reparatur() : base("Reparatur")
{
Sanierungen.Add("BAB", new Tuple<string, double>("Kurzliner 2,4m", 300.30));
}
}
public class Renovation : Sanierungart
{
public Renovation() : base("Renovation")
{
Sanierungen.Add("BCA", new Tuple<string, double>("Einmessen, Öffnen, Hut", 800));
}
}
}

View File

@@ -5,4 +5,8 @@
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<PackageReference Include="Syncfusion.XlsIO.Net.Core" Version="26.2.10" />
</ItemGroup>
</Project> </Project>