From 2492f3bfabbbef9b78394e2f160c2f57c1e39518 Mon Sep 17 00:00:00 2001 From: Damian Wessels Date: Tue, 4 Jul 2023 20:16:24 +0200 Subject: [PATCH] CSV Importer erweitert. HAUSREV6.0 Implementiert --- SewerStammGen.Shared/Contracts/IImport.cs | 2 +- .../Schacht/ManholeImportViewModel.cs | 2 +- .../Exporter/Kandis/KANDIS60.cs | 4 +-- .../Exporter/Kandis/KANDIS_Exporter.cs | 22 ++++++++++---- .../Exporter/Kandis/KANDIS_HAUSREV60.cs | 30 +++++++++++++++++++ .../Exporter/Kandis/KANDIS_SCHACHT60.cs | 4 +-- .../Importer/CSVImporter.cs | 25 +++++++++++++--- .../Exporter/XML/XML2006Tests.cs | 2 +- .../Importer/CSVImporterTests.cs | 2 +- 9 files changed, 76 insertions(+), 17 deletions(-) create mode 100644 WWTech_KanalSchnittstelle/Exporter/Kandis/KANDIS_HAUSREV60.cs diff --git a/SewerStammGen.Shared/Contracts/IImport.cs b/SewerStammGen.Shared/Contracts/IImport.cs index 6f23d54..5304a5f 100644 --- a/SewerStammGen.Shared/Contracts/IImport.cs +++ b/SewerStammGen.Shared/Contracts/IImport.cs @@ -10,6 +10,6 @@ namespace Shared.Contracts { public interface IImport { - List LoadSchaechte(string filename, EEntwaeserung entwaeserung); + List LoadSchaechte(string filename, string vermesser); } } diff --git a/StammGenerator/ViewModel/Schacht/ManholeImportViewModel.cs b/StammGenerator/ViewModel/Schacht/ManholeImportViewModel.cs index c96a8d0..89e5a7d 100644 --- a/StammGenerator/ViewModel/Schacht/ManholeImportViewModel.cs +++ b/StammGenerator/ViewModel/Schacht/ManholeImportViewModel.cs @@ -51,7 +51,7 @@ namespace StammGenerator.ViewModel private async void importFile() { - var schaechte = importer.LoadSchaechte(FileName, EEntwaeserung.Mischwasser); + var schaechte = importer.LoadSchaechte(FileName, "Marwede"); if (schaechte != null) { await schachtDataService.InsertSchachtBulk(schaechte); diff --git a/WWTech_KanalSchnittstelle/Exporter/Kandis/KANDIS60.cs b/WWTech_KanalSchnittstelle/Exporter/Kandis/KANDIS60.cs index 660daf5..ea4bf8f 100644 --- a/WWTech_KanalSchnittstelle/Exporter/Kandis/KANDIS60.cs +++ b/WWTech_KanalSchnittstelle/Exporter/Kandis/KANDIS60.cs @@ -14,8 +14,8 @@ namespace WWTech_KanalSchnittstelle.Exporter.Kandis { public async Task Export(string projektname,EKodierungssystem kodierungssystem, List haltungen, List schaechte, IWWLog log) { - KANDIS_HALTUNG60 haltung = new KANDIS_HALTUNG60(projektname, haltungen,log); - KANDIS_SCHACHT60 schacht = new KANDIS_SCHACHT60(projektname, schaechte,log); + KANDIS_HALTUNG60 haltung = new KANDIS_HALTUNG60(projektname, haltungen, log); + KANDIS_SCHACHT60 schacht = new KANDIS_SCHACHT60(projektname, schaechte, log); return true; } } diff --git a/WWTech_KanalSchnittstelle/Exporter/Kandis/KANDIS_Exporter.cs b/WWTech_KanalSchnittstelle/Exporter/Kandis/KANDIS_Exporter.cs index c89d62a..b81b1aa 100644 --- a/WWTech_KanalSchnittstelle/Exporter/Kandis/KANDIS_Exporter.cs +++ b/WWTech_KanalSchnittstelle/Exporter/Kandis/KANDIS_Exporter.cs @@ -14,10 +14,12 @@ namespace WWTech_KanalSchnittstelle.Exporter.Kandis { public static Dictionary LineSize = new Dictionary() { - { "KANSCH4.0",557 }, - { "KANSCH6.0",2041 }, - { "KANHAL4.0",530 }, - { "KANHAL6.0",2167 } + { "KANSCH4.0", 557 }, + { "KANSCH6.0", 2041 }, + { "KANHAL4.0", 530 }, + { "KANHAL6.0", 2167 }, + { "HAUSREV4.0", 355 }, + { "HAUSREV6.0", 1708 } }; @@ -28,7 +30,8 @@ namespace WWTech_KanalSchnittstelle.Exporter.Kandis public enum kType { HALTUNG, - SCHACHT + SCHACHT, + REVSCHACHT } private StreamWriter sw; @@ -63,6 +66,15 @@ namespace WWTech_KanalSchnittstelle.Exporter.Kandis } } break; + case kType.REVSCHACHT: + { + switch(exportType) + { + case EExportType.KANDIS4: version = "HAUSREV4.0"; break; + case EExportType.KANDIS6: version = "HAUSREV6.0"; break; + } + } + break; } if (!ExporterHelper.LineSize.ContainsKey(version)) diff --git a/WWTech_KanalSchnittstelle/Exporter/Kandis/KANDIS_HAUSREV60.cs b/WWTech_KanalSchnittstelle/Exporter/Kandis/KANDIS_HAUSREV60.cs new file mode 100644 index 0000000..a6eced9 --- /dev/null +++ b/WWTech_KanalSchnittstelle/Exporter/Kandis/KANDIS_HAUSREV60.cs @@ -0,0 +1,30 @@ +using SewerStammGen.Shared.Contracts; +using SewerStammGen.Shared.Domain; +using SewerStammGen.Shared.Enum; + +namespace WWTech_KanalSchnittstelle.Exporter.Kandis +{ + internal class KANDIS_HAUSREV60 : KANDIS_Exporter + { + public KANDIS_HAUSREV60(string filename, List schaechte, IWWLog log) : base(filename + ".rev", EExportType.KANDIS6, kType.REVSCHACHT, log) + { + foreach(Schacht schacht in schaechte) + { + WriteContent(new Tuple(3, 17), schacht.Objektbezeichnung); + WriteContent(new Tuple(19, 28), "ABW"); // Revisionschachtart + WriteContent(new Tuple(30, 39), "K"); // Kanalart + WriteContent(new Tuple(41, 50), "S"); // Entwässerungskennzeichen + WriteContent(new Tuple(52, 61), "IB"); + WriteContent(new Tuple(191, 198), schacht.DeckelHoehe.ToString()); // Deckelhöhe + WriteContent(new Tuple(200, 209), "1"); // Status Deckelhöhe + WriteContent(new Tuple(211,218), schacht.SohlHoehe.ToString()); + WriteContent(new Tuple(220, 229), "1"); // Status Sohlhöhe + // Schachtmittelpunktkoordinaten + WriteContent(new Tuple(293,307), schacht.SohlRechtsWert.ToString()); + WriteContent(new Tuple(309, 323), schacht.SohlHochWert.ToString()); + WriteContent(new Tuple(325, 334), "1"); // Status Schachtmittelkoordinaten + + } + } + } +} diff --git a/WWTech_KanalSchnittstelle/Exporter/Kandis/KANDIS_SCHACHT60.cs b/WWTech_KanalSchnittstelle/Exporter/Kandis/KANDIS_SCHACHT60.cs index 7a7dbf5..1775b3f 100644 --- a/WWTech_KanalSchnittstelle/Exporter/Kandis/KANDIS_SCHACHT60.cs +++ b/WWTech_KanalSchnittstelle/Exporter/Kandis/KANDIS_SCHACHT60.cs @@ -20,8 +20,8 @@ namespace WWTech_KanalSchnittstelle.Exporter.Kandis WriteContent(new Tuple(210, 217), schacht.SohlHoehe.ToString()); WriteContent(new Tuple(219, 228), "1"); // Status Sohlhöhe // Schachtmittelpunktkoordinaten - WriteContent(new Tuple(284, 298), schacht.DeckelRechtsWert.ToString()); - WriteContent(new Tuple(300, 314), schacht.DeckelHochWert.ToString()); + WriteContent(new Tuple(284, 298), schacht.SohlRechtsWert.ToString()); + WriteContent(new Tuple(300, 314), schacht.SohlHochWert.ToString()); WriteContent(new Tuple(316, 325), "1"); // Status der Schachtmittelpunktkoordinaten // Deckelkoordinaten WriteContent(new Tuple(370, 384), schacht.DeckelRechtsWert.ToString()); diff --git a/WWTech_KanalSchnittstelle/Importer/CSVImporter.cs b/WWTech_KanalSchnittstelle/Importer/CSVImporter.cs index bd71b54..2a6b4fc 100644 --- a/WWTech_KanalSchnittstelle/Importer/CSVImporter.cs +++ b/WWTech_KanalSchnittstelle/Importer/CSVImporter.cs @@ -36,10 +36,20 @@ namespace WWTech_KanalSchnittstelle.Importer return result; } - public List LoadSchaechte(string filename, EEntwaeserung entwaeserung) + public List LoadSchaechte(string filename, string vermesser) { List result = new List(); + Dictionary entwaesserungKennung = new Dictionary() + { + { "1100", EEntwaeserung.Schmutzwasser }, + { "1200", EEntwaeserung.Mischwasser }, + { "1300", EEntwaeserung.Regenwasser }, + { "3110", EEntwaeserung.Schmutzwasser }, + { "3210", EEntwaeserung.Mischwasser }, + { "3310", EEntwaeserung.Regenwasser } + }; + if(!File.Exists(filename)) { throw new FileNotFoundException(filename); @@ -80,10 +90,17 @@ namespace WWTech_KanalSchnittstelle.Importer schacht.SohlHoehe = parseKoordinate(parsed[3]); } - + if (parsed.Length >= 4) + { + schacht.Entwaesserung = entwaesserungKennung[parsed[4]]; + } + else + { + schacht.Entwaesserung = EEntwaeserung.Schmutzwasser; + } schacht.Projekt = projekt; - schacht.Entwaesserung = entwaeserung; - schacht.Vermesser = "Marwede"; + + schacht.Vermesser = vermesser; schacht.AufnahmeDatum = DateTime.Now.ToShortDateString(); if (neueSchacht) diff --git a/WWTech_KanalSchnittstelleTests/Exporter/XML/XML2006Tests.cs b/WWTech_KanalSchnittstelleTests/Exporter/XML/XML2006Tests.cs index 29ed90f..cc05466 100644 --- a/WWTech_KanalSchnittstelleTests/Exporter/XML/XML2006Tests.cs +++ b/WWTech_KanalSchnittstelleTests/Exporter/XML/XML2006Tests.cs @@ -50,7 +50,7 @@ namespace WWTech_KanalSchnittstelle.Exporter.XML.Tests } }; XML2006 xmloutput = new XML2006(); - xmloutput.Export("test.xml", EKodierungssystem.EN13508_2_2011, haltungen, schaechte); + xmloutput.Export("test.xml", EKodierungssystem.EN13508_2_2011, haltungen, schaechte,null); } } } \ No newline at end of file diff --git a/WWTech_KanalSchnittstelleTests/Importer/CSVImporterTests.cs b/WWTech_KanalSchnittstelleTests/Importer/CSVImporterTests.cs index e7c081d..6ddbea4 100644 --- a/WWTech_KanalSchnittstelleTests/Importer/CSVImporterTests.cs +++ b/WWTech_KanalSchnittstelleTests/Importer/CSVImporterTests.cs @@ -15,7 +15,7 @@ namespace WWTech_KanalSchnittstelle.Importer.Tests public void LoadSchaechteTest() { CSVImporter importer = new CSVImporter(1); - //var s = importer.LoadSchaechte(@"C:\Users\damia\source\repos\Stammdatengenerator\Beispieldaten\Koordinatendatei.csv", SewerStammGen.Shared.Domain.EEntwaeserung.Regenwasser); + var s = importer.LoadSchaechte(@"C:\Users\damia\source\repos\Stammdatengenerator\Beispieldaten\Projekt\7200-19_190423_Koord_SW.csv","Marwede"); } } } \ No newline at end of file