ExcelExporter erweitert
This commit is contained in:
@@ -1,11 +1,13 @@
|
||||
using Schnittstelle.Import.XML.v2013.Model;
|
||||
using Schnittstelle.Sanierung;
|
||||
using Syncfusion.Drawing;
|
||||
using Syncfusion.XlsIO;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
|
||||
namespace Schnittstelle.Export
|
||||
@@ -43,19 +45,28 @@ namespace Schnittstelle.Export
|
||||
KodierungEnde.Borders[ExcelBordersIndex.EdgeTop].LineStyle = ExcelLineStyle.Thin;
|
||||
KodierungEnde.Borders[ExcelBordersIndex.EdgeBottom].LineStyle = ExcelLineStyle.Thick;
|
||||
|
||||
IStyle AnmerkungStyle = workbook.Styles.Add("AnmerkungStyle");
|
||||
AnmerkungStyle.ColorIndex = ExcelKnownColors.Custom56;
|
||||
|
||||
AnmerkungStyle.Borders.LineStyle = ExcelLineStyle.Medium;
|
||||
AnmerkungStyle.Borders[ExcelBordersIndex.DiagonalUp].ShowDiagonalLine = false;
|
||||
AnmerkungStyle.Borders[ExcelBordersIndex.DiagonalDown].ShowDiagonalLine = false;
|
||||
|
||||
|
||||
|
||||
|
||||
for (int i = 0; i < KanalObjekte.Count; i++)
|
||||
{
|
||||
IWorksheet worksheet = workbook.Worksheets[i];
|
||||
KanalObjekt k = KanalObjekte[i];
|
||||
CalculateHaltung(k, worksheet, sanierungsarten, CellStyle, HeaderStyle, KodierungEnde);
|
||||
CalculateHaltung(k, worksheet, sanierungsarten, CellStyle, HeaderStyle, KodierungEnde,AnmerkungStyle);
|
||||
}
|
||||
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, IStyle headerStyle, IStyle kodierungEnde)
|
||||
private static void CalculateHaltung(KanalObjekt haltung, IWorksheet worksheet, List<Sanierungart> sanierungsarten, IStyle cellStyle, IStyle headerStyle, IStyle kodierungEnde, IStyle AnmerkungStyle)
|
||||
{
|
||||
|
||||
worksheet.Name = string.Format("{0}", haltung.Stammdaten.Objektbezeichnung);
|
||||
@@ -66,11 +77,12 @@ namespace Schnittstelle.Export
|
||||
{
|
||||
Sanierungart sanArt = sanierungsarten[i];
|
||||
int mainrow = row;
|
||||
worksheet.Range[row, 1].Text = "Haltung";
|
||||
worksheet.Range[row, 1].Text = "Von - Nach";
|
||||
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, 6].Text = "Inspektionsrichtung";
|
||||
|
||||
|
||||
worksheet.Range[row, 7].Text = "Schadensbeschreibung"; //sanArt.Sanierungsbezeichnung;
|
||||
@@ -78,11 +90,15 @@ namespace Schnittstelle.Export
|
||||
worksheet.Range[row, 10].Text = "Material";
|
||||
|
||||
row++;
|
||||
worksheet.Range[row, 1].Text = haltung.Stammdaten.Objektbezeichnung;
|
||||
string richtung = haltung.Inspektionsdaten.OptischeInspektion[0].Rohrleitung.Inspektionsrichtung_RAW;
|
||||
string s1 = richtung == "O" ? haltung.Stammdaten.Kante.KnotenZulauf!.Objektbezeichnung : haltung.Stammdaten.Kante.KnotenAblauf!.Objektbezeichnung;
|
||||
string s2 = richtung == "O" ? haltung.Stammdaten.Kante.KnotenAblauf!.Objektbezeichnung : haltung.Stammdaten.Kante.KnotenZulauf!.Objektbezeichnung;
|
||||
worksheet.Range[row, 1].Text = string.Format("{0} -> {1}", s1, s2);
|
||||
worksheet.Range[row, 2].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, 6].Text = haltung.Inspektionsdaten.OptischeInspektion[0].Rohrleitung.Inspektionsrichtung;
|
||||
|
||||
|
||||
worksheet.Range[row, 9].Text = haltung.Inspektionsdaten.OptischeInspektion[0].Rohrleitung.Grunddaten.Profilbreite.ToString();
|
||||
@@ -156,12 +172,46 @@ namespace Schnittstelle.Export
|
||||
|
||||
if (sanArt.Massnahmen.TryGetValue(code.Inspektionskode, out Massnahmen))
|
||||
{
|
||||
var imass = Massnahmen.Find(x =>
|
||||
List<SanierungMassnahme> imasses = Massnahmen.FindAll(x =>
|
||||
haltung.Inspektionsdaten.OptischeInspektion[0].Rohrleitung.Grunddaten.Profilbreite >=
|
||||
x.DN);
|
||||
if (imass != null)
|
||||
{
|
||||
|
||||
uint counter = 0;
|
||||
double Kosten = 0;
|
||||
bool Schlauchliner = false;
|
||||
foreach (SanierungMassnahme imas in imasses)
|
||||
{
|
||||
if(CheckKuerzel(imas.Begrenzung, code))
|
||||
{
|
||||
Kosten += imas.Kosten;
|
||||
if(counter == 0)
|
||||
worksheet.Range[row + j, 9].Text += imas.Beschreibung;
|
||||
else
|
||||
worksheet.Range[row + j, 9].Text += "," + imas.Beschreibung;
|
||||
|
||||
if (imas.Beschreibung.Equals("Schlauchliner"))
|
||||
{
|
||||
Schlauchliner = true;
|
||||
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 = (imas.Kosten * zuschlag) * tmpLaenge;
|
||||
break;
|
||||
}
|
||||
}
|
||||
counter++;
|
||||
}
|
||||
if(!Schlauchliner)
|
||||
{
|
||||
worksheet.Range[row + j, 10].Number = Kosten;
|
||||
}
|
||||
|
||||
if (imasses != null)
|
||||
{
|
||||
/*
|
||||
worksheet.Range[row + j, 9].Text = imass.Beschreibung;
|
||||
|
||||
if (imass.Beschreibung.Equals("Schlauchliner"))
|
||||
@@ -177,6 +227,7 @@ namespace Schnittstelle.Export
|
||||
}
|
||||
else
|
||||
worksheet.Range[row + j, 10].Number = imass.Kosten;
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
@@ -203,7 +254,9 @@ namespace Schnittstelle.Export
|
||||
worksheet.Range[row, 10].Formula = string.Format("=(H{0}/100)*J{1}", row, temprow);
|
||||
row++;
|
||||
// Linke seite
|
||||
worksheet.Range[row, 1].CellStyle = headerStyle;
|
||||
worksheet.Range[row, 1].Text = "Sanierungspriorität";
|
||||
worksheet.Range[row, 3].CellStyle = headerStyle;
|
||||
worksheet.Range[row, 3].Text = "Info";
|
||||
// Auflistung
|
||||
worksheet.Range[row, 7].Text = "Aufrechterhaltung der Vorflut Haltung"; // 12%
|
||||
@@ -214,6 +267,7 @@ namespace Schnittstelle.Export
|
||||
worksheet.Range[row, 1].Text = "kurzfristing";
|
||||
worksheet.Range[row, 2].Text = "ja oder nein";
|
||||
worksheet.Range[row, 3].Text = "6-12 Monate";
|
||||
worksheet.Range[row, 1, row, 3].CellStyle = cellStyle;
|
||||
// Auflistung
|
||||
worksheet.Range[row, 7].Text = "Kanalreinigung vor Sanierung"; // 2€ /m
|
||||
worksheet.Range[row, 8].Number = Convert.ToDouble(inspizierteLaenge);
|
||||
@@ -224,6 +278,7 @@ namespace Schnittstelle.Export
|
||||
worksheet.Range[row, 1].Text = "mittelfristig";
|
||||
worksheet.Range[row, 2].Text = "ja oder nein";
|
||||
worksheet.Range[row, 3].Text = "1 bis 5 Jahre";
|
||||
worksheet.Range[row, 1, row, 3].CellStyle = cellStyle;
|
||||
// Auflistung
|
||||
worksheet.Range[row, 7].Text = "Kamerainspektion Abnahme"; // 3€ /m
|
||||
worksheet.Range[row, 8].Number = Convert.ToDouble(inspizierteLaenge);
|
||||
@@ -234,6 +289,7 @@ namespace Schnittstelle.Export
|
||||
worksheet.Range[row, 1].Text = "langfristig";
|
||||
worksheet.Range[row, 2].Text = "ja oder nein";
|
||||
worksheet.Range[row, 3].Text = "5 bis 10 Jahre";
|
||||
worksheet.Range[row, 1, row, 3].CellStyle = cellStyle;
|
||||
// Auflistung
|
||||
worksheet.Range[row, 7].Text = "Summe netto Haltung";
|
||||
worksheet.Range[row, 10].Formula = string.Format("=SUM(J{0}:J{1})",temprow,row-1);
|
||||
@@ -245,6 +301,7 @@ namespace Schnittstelle.Export
|
||||
// Linke seite
|
||||
worksheet.Range[row, 1].Text = "Sanierung im Verbund";
|
||||
worksheet.Range[row, 2].Text = "ja oder nein";
|
||||
worksheet.Range[row, 1, row, 2].CellStyle = cellStyle;
|
||||
// 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);
|
||||
@@ -254,8 +311,57 @@ namespace Schnittstelle.Export
|
||||
worksheet.Range[mainrow+1, 3].Text = inspizierteLaenge.ToString();
|
||||
row += 5;
|
||||
}
|
||||
|
||||
row -= 3;
|
||||
|
||||
worksheet.Range[row, 1].Text = "Haltungsbewertung:";
|
||||
worksheet.Range[row + 1, 1, row + 4, 5].Merge();
|
||||
worksheet.Range[row + 1, 1, row + 4, 5].CellStyle.Color = ColorTranslator.FromHtml("#FCE4D6");
|
||||
row += 6;
|
||||
worksheet.Range[row, 1].Text = "Sanierungsempfehlung:";
|
||||
|
||||
row += 2;
|
||||
worksheet.Range[row, 1].Text = "Hinweis:";
|
||||
|
||||
|
||||
row++;
|
||||
worksheet.Range[row, 1].Text = "TV-Befahrung:";
|
||||
worksheet.Range[row, 2].Text = "Sohle sichtbar:";
|
||||
worksheet.Range[row, 4].Text = "% Wasser in der Sohle";
|
||||
worksheet.UsedRange.AutofitColumns();
|
||||
worksheet.Range[string.Format("J1:J{0}",row)].NumberFormat = "€#0";
|
||||
worksheet.Range[string.Format("J1:J{0}", row)].NumberFormat = "_(€* #,##0_)"; // "€ #,##0";
|
||||
|
||||
row += 3;
|
||||
|
||||
|
||||
}
|
||||
|
||||
private static bool CheckKuerzel(string begrenzung, RZustand code)
|
||||
{
|
||||
string[] begrenzungs = begrenzung.Split(':');
|
||||
string ch1 = begrenzungs[1];
|
||||
string ch2 = begrenzungs[2];
|
||||
|
||||
bool check1 = false;
|
||||
bool check2 = false;
|
||||
if(ch1 != "-")
|
||||
{
|
||||
check1 = ch1 == code.Charakterisierung1;
|
||||
}
|
||||
else
|
||||
{
|
||||
check1 = true;
|
||||
}
|
||||
|
||||
if (ch2 != "-")
|
||||
{
|
||||
check2 = ch2 == code.Charakterisierung2;
|
||||
}
|
||||
else
|
||||
{
|
||||
check2 = true;
|
||||
}
|
||||
return check1 && check2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
namespace Schnittstelle.Import.XML.v2013.Model
|
||||
{
|
||||
@@ -34,6 +35,12 @@ namespace Schnittstelle.Import.XML.v2013.Model
|
||||
inspektionslaenge = value;
|
||||
}
|
||||
}
|
||||
|
||||
public string Inspektionsrichtung_RAW
|
||||
{
|
||||
get => inspektionsrichtung;
|
||||
}
|
||||
|
||||
public string Inspektionsrichtung
|
||||
{
|
||||
get
|
||||
|
||||
@@ -13,6 +13,12 @@ using System.Xml;
|
||||
|
||||
namespace Schnittstelle.Import.XML.v2013
|
||||
{
|
||||
|
||||
public class NotZustandException: Exception
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public class XML2013 : ISchnittstelleImporter
|
||||
{
|
||||
private string xmlFile = "";
|
||||
@@ -78,6 +84,7 @@ namespace Schnittstelle.Import.XML.v2013
|
||||
Tuple<List<AbwassertechnischeAnlage>, List<InspizierteAbwassertechnischeAnlage>> src = LoadRawFile();
|
||||
stammdaten = src.Item1;
|
||||
inspektionsdaten = src.Item2;
|
||||
if (inspektionsdaten.Count == 0) Console.WriteLine("Keine Inspektionsdaten gefunden in der XML");
|
||||
foreach (InspizierteAbwassertechnischeAnlage iat in inspektionsdaten)
|
||||
{
|
||||
AbwassertechnischeAnlage stammdatens = stammdaten.Find(x => x.Objektbezeichnung.Equals(iat.Objektbezeichnung) && x.ObjektArt.Equals(EObjektArt.KANTE));//;
|
||||
@@ -109,13 +116,34 @@ namespace Schnittstelle.Import.XML.v2013
|
||||
rootChild = rootChild.SelectSingleNode("//e:Datenkollektive", manager);
|
||||
|
||||
Stammdaten = LoadStammdatenCollectiv();
|
||||
try
|
||||
{
|
||||
Inspektionsdaten = LoadInspektionsdatenCollectiv();
|
||||
}
|
||||
catch (NotZustandException ex)
|
||||
{
|
||||
Inspektionsdaten = new List<InspizierteAbwassertechnischeAnlage>();
|
||||
}
|
||||
return new Tuple<List<AbwassertechnischeAnlage>, List<InspizierteAbwassertechnischeAnlage>>(Stammdaten, Inspektionsdaten);
|
||||
}
|
||||
|
||||
private List<InspizierteAbwassertechnischeAnlage> LoadInspektionsdatenCollectiv()
|
||||
{
|
||||
List<InspizierteAbwassertechnischeAnlage> result = new List<InspizierteAbwassertechnischeAnlage>();
|
||||
|
||||
bool found = false;
|
||||
|
||||
foreach(XmlNode childNode in rootChild.ChildNodes)
|
||||
{
|
||||
if(childNode.Name.Equals("Zustandsdatenkollektiv"))
|
||||
{
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!found) throw new NotZustandException();
|
||||
|
||||
XmlNode zstdk = rootChild.SelectSingleNode("//e:Zustandsdatenkollektiv", manager);
|
||||
XmlNodeList Inspektionsdaten = zstdk.SelectNodes("//e:InspizierteAbwassertechnischeAnlage", manager);
|
||||
|
||||
@@ -604,6 +632,8 @@ namespace Schnittstelle.Import.XML.v2013
|
||||
case "Hochwert": result.Hochwert = ConvertXMLToDecimal(s.InnerText); break;
|
||||
case "Punkthoehe": result.Punkthoehe = ConvertXMLToDecimal(s.InnerText); break;
|
||||
case "PunktattributAbwasser": result.PunktattributAbwasser = s.InnerText; break;
|
||||
case "Lagegenauigkeitsstufe": break;
|
||||
case "Hoehengenauigkeitsstufe": break;
|
||||
default: throw new NotImplementedException(s.Name);
|
||||
}
|
||||
}
|
||||
@@ -646,6 +676,8 @@ namespace Schnittstelle.Import.XML.v2013
|
||||
case "PunktattributAbwasser":
|
||||
punkt.PunktattributeAbwasser = s.InnerText;
|
||||
break;
|
||||
case "Lagegenauigkeitsstufe": break;
|
||||
case "Hoehengenauigkeitsstufe": break;
|
||||
default: throw new NotImplementedException(s.Name);
|
||||
}
|
||||
}
|
||||
@@ -693,6 +725,8 @@ namespace Schnittstelle.Import.XML.v2013
|
||||
break;
|
||||
case "Leitung":
|
||||
break;
|
||||
case "Anschlussdaten":
|
||||
break;
|
||||
default: throw new NotImplementedException(s.Name);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace Schnittstelle.Sanierung
|
||||
public double Kosten { get => kosten; }
|
||||
public int DN { get => dn; }
|
||||
|
||||
public SanierungMassnahme(string beschreibung, double kosten, int dn,string begrenzung = "-:-")
|
||||
public SanierungMassnahme(string beschreibung, double kosten, int dn, string begrenzung = "-:-:-")
|
||||
{
|
||||
this.beschreibung = beschreibung;
|
||||
this.kosten = kosten;
|
||||
@@ -48,7 +48,44 @@ namespace Schnittstelle.Sanierung
|
||||
|
||||
public Reparatur() : base("Reparatur")
|
||||
{
|
||||
|
||||
massnahmen.Add("BAB", new List<SanierungMassnahme>()
|
||||
{
|
||||
new SanierungMassnahme("Kurzliner",450,0)
|
||||
});
|
||||
massnahmen.Add("BAG", new List<SanierungMassnahme>()
|
||||
{
|
||||
new SanierungMassnahme("Fräsen",50,0)
|
||||
});
|
||||
massnahmen.Add("BAH", new List<SanierungMassnahme>()
|
||||
{
|
||||
new SanierungMassnahme("Fräsen",50,0,"BAH:C:-"),
|
||||
new SanierungMassnahme("Hut",400,0,"BAH:C:-")
|
||||
});
|
||||
massnahmen.Add("BAI", new List<SanierungMassnahme>()
|
||||
{
|
||||
new SanierungMassnahme("Fräsen",50,0)
|
||||
});
|
||||
massnahmen.Add("BAJ", new List<SanierungMassnahme>()
|
||||
{
|
||||
new SanierungMassnahme("Fräsen",50,0)
|
||||
});
|
||||
massnahmen.Add("BBA", new List<SanierungMassnahme>()
|
||||
{
|
||||
new SanierungMassnahme("Fräsen",50,0)
|
||||
});
|
||||
massnahmen.Add("BBB", new List<SanierungMassnahme>()
|
||||
{
|
||||
new SanierungMassnahme("Fräsen",50,0)
|
||||
});
|
||||
massnahmen.Add("BBC", new List<SanierungMassnahme>()
|
||||
{
|
||||
new SanierungMassnahme("Fräsen",50,0)
|
||||
});
|
||||
massnahmen.Add("BCA", new List<SanierungMassnahme>()
|
||||
{
|
||||
new SanierungMassnahme("Tittensanierung",600,0,"BCA:C:-"),
|
||||
new SanierungMassnahme("Tittensanierung",600,0,"BCA:E:-")
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,26 +96,43 @@ namespace Schnittstelle.Sanierung
|
||||
{
|
||||
BCA();
|
||||
BCE();
|
||||
|
||||
|
||||
massnahmen.Add("BAJ", new List<SanierungMassnahme>()
|
||||
{
|
||||
new SanierungMassnahme("Fräsen",50,0)
|
||||
});
|
||||
massnahmen.Add("BBA", new List<SanierungMassnahme>()
|
||||
{
|
||||
new SanierungMassnahme("Fräsen",50,0)
|
||||
});
|
||||
massnahmen.Add("BBB", new List<SanierungMassnahme>()
|
||||
{
|
||||
new SanierungMassnahme("Fräsen",50,0)
|
||||
});
|
||||
massnahmen.Add("BBC", new List<SanierungMassnahme>()
|
||||
{
|
||||
new SanierungMassnahme("Fräsen",50,0)
|
||||
});
|
||||
}
|
||||
|
||||
void BCA()
|
||||
{
|
||||
List<SanierungMassnahme> bca = new List<SanierungMassnahme>();
|
||||
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);
|
||||
bca.Add(new SanierungMassnahme("Einmessen", 100, 0, "BCA:-:-"));
|
||||
bca.Add(new SanierungMassnahme("Öffnen", 100, 0, "BCA:-:A"));
|
||||
bca.Add(new SanierungMassnahme("Stsan", 600, 0, "BCA:-:A"));
|
||||
massnahmen.Add("BCA", bca);
|
||||
}
|
||||
void BCE()
|
||||
{
|
||||
List<SanierungMassnahme> bce = new List<SanierungMassnahme>();
|
||||
bce.Add(new SanierungMassnahme("Schlauchliner",100,200));
|
||||
bce.Add(new SanierungMassnahme("Schlauchliner",105,250));
|
||||
bce.Add(new SanierungMassnahme("Schlauchliner",110,300));
|
||||
bce.Add(new SanierungMassnahme("Schlauchliner",120,400));
|
||||
bce.Add(new SanierungMassnahme("Schlauchliner",130,500));
|
||||
bce.Add(new SanierungMassnahme("Schlauchliner",140,600));
|
||||
|
||||
bce.Add(new SanierungMassnahme("Schlauchliner", 100, 200));
|
||||
bce.Add(new SanierungMassnahme("Schlauchliner", 105, 250));
|
||||
bce.Add(new SanierungMassnahme("Schlauchliner", 110, 300));
|
||||
bce.Add(new SanierungMassnahme("Schlauchliner", 120, 400));
|
||||
bce.Add(new SanierungMassnahme("Schlauchliner", 130, 500));
|
||||
bce.Add(new SanierungMassnahme("Schlauchliner", 140, 600));
|
||||
|
||||
massnahmen.Add("BCE", bce);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user