Compare commits
3 Commits
main
...
Standortän
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7e3e99ad20 | ||
|
|
1905243a4a | ||
|
|
f2ecbe36e0 |
@@ -101,7 +101,6 @@ namespace MergeCMInpro.Business
|
|||||||
{
|
{
|
||||||
int count = 0;
|
int count = 0;
|
||||||
int countRows = File.ReadAllLines(path).Length;
|
int countRows = File.ReadAllLines(path).Length;
|
||||||
|
|
||||||
using (StreamReader sr = new StreamReader(path, System.Text.Encoding.GetEncoding("ISO-8859-1")))
|
using (StreamReader sr = new StreamReader(path, System.Text.Encoding.GetEncoding("ISO-8859-1")))
|
||||||
{
|
{
|
||||||
string[] arr = new string[10];
|
string[] arr = new string[10];
|
||||||
@@ -117,44 +116,22 @@ namespace MergeCMInpro.Business
|
|||||||
Console.WriteLine("\r{0}/{1} ", count, countRows);
|
Console.WriteLine("\r{0}/{1} ", count, countRows);
|
||||||
}
|
}
|
||||||
arr = sr.ReadLine().Split(";");
|
arr = sr.ReadLine().Split(";");
|
||||||
bool jpmFiles = arr[2].Contains(".jpm");
|
|
||||||
//Erstelle Basis-Vorgang aus den SAGA-Daten
|
//Erstelle Basis-Vorgang aus den SAGA-Daten
|
||||||
Vorgang v;
|
Vorgang v;
|
||||||
|
|
||||||
if(arr[2].Contains("70/"))
|
if(arr[2].Contains("70/"))
|
||||||
{
|
{
|
||||||
//arr[0]=ID z.B. 815922, arr[2]=AZ z.B. 61/5-3-048105, arr[3]=Strasse z.B. Westheck, arr[5]=DocType z.B. SCHRIFTVERKEHR, arr[6]=Teil z.B. 001, arr[8]=PDF z.B. 815922.pdf
|
//arr[0]=ID z.B. 815922, arr[2]=AZ z.B. 61/5-3-048105, arr[3]=Strasse z.B. Westheck, arr[5]=DocType z.B. SCHRIFTVERKEHR, arr[6]=Teil z.B. 001, arr[8]=PDF z.B. 815922.pdf
|
||||||
if (jpmFiles)
|
v = new Vorgang(arr[0], arr[2], string.Concat(arr[5], " Teil ", arr[6]), arr[6], arr[8], arr[3],arr[4]);
|
||||||
{
|
|
||||||
v = new Vorgang(arr[0], arr[2], string.Concat(arr[5], " Teil ", arr[6]), arr[6], arr[7], arr[3], arr[4]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
v = new Vorgang(arr[0], arr[2], string.Concat(arr[5], " Teil ", arr[6]), arr[6], arr[7], arr[3], arr[4]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (jpmFiles)
|
v = new Vorgang(arr[0], arr[2], string.Concat(arr[5], " Teil ", arr[6]), arr[6], arr[8]);
|
||||||
{
|
|
||||||
v = new Vorgang(arr[0], arr[2], string.Concat(arr[5], " Teil ", arr[6]), arr[6], arr[8]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
v = new Vorgang(arr[0], arr[2], string.Concat(arr[5], " Teil ", arr[6]), arr[6], arr[7]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#region PDF
|
#region PDF
|
||||||
if(jpmFiles)
|
v.AbsoluteFilePath = GetFullFilePath(arr[8], path); //arr[7]=jpm-Dateien
|
||||||
{
|
|
||||||
v.AbsoluteFilePath = GetFullFilePath(arr[8], path); //arr[7]=jpm-Dateien
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
v.AbsoluteFilePath = GetFullFilePath(arr[7], path);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (v.AbsoluteFilePath == string.Empty)
|
if (v.AbsoluteFilePath == string.Empty)
|
||||||
{
|
{
|
||||||
Console.WriteLine("Keine PDF-Dateien gefunden.");
|
Console.WriteLine("Keine PDF-Dateien gefunden.");
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ namespace MergeCMInpro.Business
|
|||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string GenerateVorgang(Vorgang v)
|
public override string GenerateVorgang(Vorgang v)
|
||||||
{
|
{
|
||||||
StringBuilder sbCM = new StringBuilder();
|
StringBuilder sbCM = new StringBuilder();
|
||||||
@@ -32,28 +32,16 @@ namespace MergeCMInpro.Business
|
|||||||
//Langbezeichnung
|
//Langbezeichnung
|
||||||
string documentType = FileOperations.LowerDocumentType(v.DocType.Split(" ").FirstOrDefault());
|
string documentType = FileOperations.LowerDocumentType(v.DocType.Split(" ").FirstOrDefault());
|
||||||
sbCM.Append(string.Concat(documentType, " ", string.Concat(v.DocType.Split(" ").FirstOrDefault().Substring(0, 1), v.DocType.Split(" ").FirstOrDefault().Substring(1).ToLower()), " ", v.DocType.Split(" ", 2).Skip(1).FirstOrDefault(), ";"));
|
sbCM.Append(string.Concat(documentType, " ", string.Concat(v.DocType.Split(" ").FirstOrDefault().Substring(0, 1), v.DocType.Split(" ").FirstOrDefault().Substring(1).ToLower()), " ", v.DocType.Split(" ", 2).Skip(1).FirstOrDefault(), ";"));
|
||||||
|
|
||||||
string langBez = string.Empty;
|
|
||||||
|
|
||||||
try
|
string langBez = base.GenerateLangbezeichnungFromPath(v.AbsoluteFilePath);
|
||||||
{
|
|
||||||
langBez = base.GenerateLangbezeichnungFromPath(v.AbsoluteFilePath);
|
|
||||||
}
|
|
||||||
catch (ArgumentOutOfRangeException ex)
|
|
||||||
{
|
|
||||||
Console.WriteLine("ERROR: Wrong Path {0}. Please provide folder like '843.818 - 847.187 SAGA HD 28 2023_12_18'", Path.GetDirectoryName(v.AbsoluteFilePath));
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Console.WriteLine(ex.Message);
|
|
||||||
}
|
|
||||||
//string langBez = base.GenerateLangbezeichnungFromPath(v.AbsoluteFilePath);
|
|
||||||
sbCM.Append(string.Concat(langBez, ";"));
|
sbCM.Append(string.Concat(langBez, ";"));
|
||||||
|
|
||||||
sbCM.Append(string.Concat(v.FameId, ".pdf"));
|
sbCM.Append(string.Concat(v.FameId, ".pdf"));
|
||||||
|
|
||||||
return sbCM.ToString();
|
return sbCM.ToString();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,11 +37,12 @@ namespace MergeCMInpro.Business
|
|||||||
sbStandort.Append(string.Concat(this.CID, ";"));//CID
|
sbStandort.Append(string.Concat(this.CID, ";"));//CID
|
||||||
sbStandort.Append(string.Concat(v.Aktenzeichen, ";"));//Vorgangsnummer
|
sbStandort.Append(string.Concat(v.Aktenzeichen, ";"));//Vorgangsnummer
|
||||||
sbStandort.Append(string.Concat(this.Sachbearbeiter, ";"));//Sachbearbeiter
|
sbStandort.Append(string.Concat(this.Sachbearbeiter, ";"));//Sachbearbeiter
|
||||||
|
sbStandort.Append(string.Concat(this.Bemerkung, ";"));//Bemerkung
|
||||||
sbStandort.Append(string.Concat(this.Standort, ";"));//Standort
|
sbStandort.Append(string.Concat(this.Standort, ";"));//Standort
|
||||||
sbStandort.Append(string.Concat(this.Entnahmedatum.ToShortDateString(), ";"));//Entnahmedatum -> Datum Tabelle
|
sbStandort.Append(string.Concat(this.Entnahmedatum.ToShortDateString(), ";"));//Entnahmedatum -> Datum Tabelle
|
||||||
sbStandort.Append(string.Concat(this.Entnahmezeit, ";"));//Entnahmezeit
|
sbStandort.Append(string.Concat(this.Entnahmezeit, ";"));//Entnahmezeit
|
||||||
sbStandort.Append(string.Concat(this.Entnahmedatum.ToShortDateString(), ";"));//Rückgabedatum=Entnahmedatum
|
sbStandort.Append(string.Concat(this.Entnahmedatum.ToShortDateString(), ";"));//Rückgabedatum=Entnahmedatum
|
||||||
sbStandort.Append(string.Concat(this.Entnahmezeit, ";"));//Rückgabezeit=Entnahmezeit
|
sbStandort.Append(this.Entnahmezeit);//Rückgabezeit=Entnahmezeit
|
||||||
|
|
||||||
return sbStandort.ToString();
|
return sbStandort.ToString();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,9 +30,8 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="NLog" Version="6.0.3" />
|
<PackageReference Include="NLog" Version="5.0.4" />
|
||||||
<PackageReference Include="Oracle.ManagedDataAccess.Core" Version="23.9.1" />
|
<PackageReference Include="Oracle.ManagedDataAccess.Core" Version="3.21.70" />
|
||||||
<PackageReference Include="Sentry" Version="5.14.1" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ VisualStudioVersion = 17.0.32126.317
|
|||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MergeCMInpro", "MergeCMInpro.csproj", "{0798D653-CA13-4E5D-8A9E-4D8A3ADA4D1A}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MergeCMInpro", "MergeCMInpro.csproj", "{0798D653-CA13-4E5D-8A9E-4D8A3ADA4D1A}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MergeCMInpro.Test", "..\TestProject1\MergeCMInpro.Test.csproj", "{E67A9AAD-585E-4F23-8A85-665A49285C61}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MergeCMInpro.Testing", "..\MergeCMInpro.Testing\MergeCMInpro.Testing.csproj", "{F0F62B9F-4802-44AE-BFEC-7E20285ED2BE}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
@@ -23,14 +23,14 @@ Global
|
|||||||
{0798D653-CA13-4E5D-8A9E-4D8A3ADA4D1A}.Release|Any CPU.Build.0 = Release|Any CPU
|
{0798D653-CA13-4E5D-8A9E-4D8A3ADA4D1A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{0798D653-CA13-4E5D-8A9E-4D8A3ADA4D1A}.Release|x86.ActiveCfg = Release|x86
|
{0798D653-CA13-4E5D-8A9E-4D8A3ADA4D1A}.Release|x86.ActiveCfg = Release|x86
|
||||||
{0798D653-CA13-4E5D-8A9E-4D8A3ADA4D1A}.Release|x86.Build.0 = Release|x86
|
{0798D653-CA13-4E5D-8A9E-4D8A3ADA4D1A}.Release|x86.Build.0 = Release|x86
|
||||||
{E67A9AAD-585E-4F23-8A85-665A49285C61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{F0F62B9F-4802-44AE-BFEC-7E20285ED2BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{E67A9AAD-585E-4F23-8A85-665A49285C61}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{F0F62B9F-4802-44AE-BFEC-7E20285ED2BE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{E67A9AAD-585E-4F23-8A85-665A49285C61}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{F0F62B9F-4802-44AE-BFEC-7E20285ED2BE}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
{E67A9AAD-585E-4F23-8A85-665A49285C61}.Debug|x86.Build.0 = Debug|Any CPU
|
{F0F62B9F-4802-44AE-BFEC-7E20285ED2BE}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{E67A9AAD-585E-4F23-8A85-665A49285C61}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{F0F62B9F-4802-44AE-BFEC-7E20285ED2BE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{E67A9AAD-585E-4F23-8A85-665A49285C61}.Release|Any CPU.Build.0 = Release|Any CPU
|
{F0F62B9F-4802-44AE-BFEC-7E20285ED2BE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{E67A9AAD-585E-4F23-8A85-665A49285C61}.Release|x86.ActiveCfg = Release|Any CPU
|
{F0F62B9F-4802-44AE-BFEC-7E20285ED2BE}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{E67A9AAD-585E-4F23-8A85-665A49285C61}.Release|x86.Build.0 = Release|Any CPU
|
{F0F62B9F-4802-44AE-BFEC-7E20285ED2BE}.Release|x86.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|||||||
141
Program.cs
141
Program.cs
@@ -1,38 +1,31 @@
|
|||||||
using System;
|
using MergeCMInpro.Business;
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using MergeCMInpro.Business;
|
|
||||||
using MergeCMInpro.Data;
|
using MergeCMInpro.Data;
|
||||||
using NLog;
|
using NLog;
|
||||||
using Sentry;
|
using System;
|
||||||
using static System.Net.WebRequestMethods;
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace MergeCMInpro
|
namespace MergeCMInpro
|
||||||
{
|
{
|
||||||
static class Program
|
static class Program
|
||||||
{
|
{
|
||||||
private static readonly Logger _logger = NLog.LogManager.GetCurrentClassLogger();
|
private static readonly Logger _logger = NLog.LogManager.GetCurrentClassLogger();
|
||||||
|
|
||||||
static string csvPath = String.Empty;
|
static string csvPath = String.Empty;
|
||||||
|
|
||||||
static void Main(string[] args)
|
static void Main(string[] args)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
CallSentry();
|
|
||||||
Console.ForegroundColor = ConsoleColor.White;
|
Console.ForegroundColor = ConsoleColor.White;
|
||||||
|
|
||||||
//productive
|
//productive
|
||||||
//csvPath = Path.Combine(Directory.GetFiles(Environment.CurrentDirectory, "*.csv").FirstOrDefault());
|
csvPath = Path.Combine(Directory.GetFiles(Environment.CurrentDirectory, "*.csv").FirstOrDefault());
|
||||||
|
|
||||||
//testing
|
//testing
|
||||||
//csvPath = Path.Combine(Directory.GetFiles(@"\\fsdeg002\DatenStA61_S\Bauvorhaben\0_SAGA\839.867 - 843.817 SAGA HD 27 2023_11_08", "*.csv").FirstOrDefault());
|
//csvPath = Path.Combine(Directory.GetFiles(@"\\fsdeg002\DatenStA61_S\Bauvorhaben\0_SAGA\815.922 - 819.917 SAGA HD 21 2021_09_27_Testing", "*.csv").FirstOrDefault());
|
||||||
//csvPath = Path.Combine(Directory.GetFiles(@"C:\Testing\MergeInpro", "*.csv").FirstOrDefault());
|
//csvPath = Path.Combine(Directory.GetFiles(@"C:\Testing\MergeInpro", "*.csv").FirstOrDefault());
|
||||||
//csvPath = Path.Combine(Directory.GetFiles(@"C:\TEMP\SAGA\839.867 - 843.817 SAGA HD 27 2023_11_08", "*.csv").FirstOrDefault());
|
|
||||||
//csvPath = Path.Combine(Directory.GetFiles(@"C:\TEMP\SAGA\843.818 - 847.187 SAGA HD 28 2023_12_18", "*.csv").FirstOrDefault());
|
|
||||||
csvPath = Path.Combine(Directory.GetFiles(@"E:\TestData\MergeCMInpro", "*.csv").FirstOrDefault());
|
|
||||||
|
|
||||||
|
|
||||||
string pathOutputFileCM = Path.Combine(Directory.GetParent(csvPath).FullName, "outputCM.csv");
|
string pathOutputFileCM = Path.Combine(Directory.GetParent(csvPath).FullName, "outputCM.csv");
|
||||||
string pathOutputFileInpro = Path.Combine(Directory.GetParent(csvPath).FullName, "outputInpro.csv");
|
string pathOutputFileInpro = Path.Combine(Directory.GetParent(csvPath).FullName, "outputInpro.csv");
|
||||||
@@ -46,29 +39,16 @@ namespace MergeCMInpro
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var config = File.ReadLines(@".\config.txt").ToArray();
|
||||||
if(!CheckFolderStructure(csvPath))
|
|
||||||
{
|
|
||||||
Console.ForegroundColor = ConsoleColor.Yellow;
|
|
||||||
Console.WriteLine("WARNING: folder structure wrong. Please note folder with name '{0}' has to contain all pdf files.", Path.GetFileNameWithoutExtension(csvPath));
|
|
||||||
Console.ResetColor();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var config = System.IO.File.ReadLines(@".\config.txt").ToArray();
|
|
||||||
DataOperations.conString = config[0];
|
DataOperations.conString = config[0];
|
||||||
DataOperations.kanalAktePath = config[2];
|
DataOperations.kanalAktePath = config[2];
|
||||||
DataOperations.csvPath = csvPath;
|
DataOperations.csvPath = csvPath;
|
||||||
|
|
||||||
if (!System.IO.File.Exists(DataOperations.kanalAktePath))
|
if (!File.Exists(DataOperations.kanalAktePath))
|
||||||
throw new FileNotFoundException("Kanalaktendatei nicht gefunden.");
|
throw new FileNotFoundException("Kanalaktendatei nicht gefunden.");
|
||||||
|
|
||||||
//Testing
|
string archivNetPath = Path.Combine(config[1]);
|
||||||
string archivNetPath = Path.Combine(@"E:\TestData\ArchivPath");
|
|
||||||
|
|
||||||
//productive
|
|
||||||
//string archivNetPath = Path.Combine(config[1]);
|
|
||||||
|
|
||||||
Console.WriteLine("Working, please wait... or get yourself a tea.");
|
Console.WriteLine("Working, please wait... or get yourself a tea.");
|
||||||
|
|
||||||
FileOperations.SplitRow(csvPath, archivNetPath);
|
FileOperations.SplitRow(csvPath, archivNetPath);
|
||||||
@@ -94,33 +74,29 @@ namespace MergeCMInpro
|
|||||||
//Standort
|
//Standort
|
||||||
using (StreamWriter sw = new StreamWriter(pathOutputFileStandort))
|
using (StreamWriter sw = new StreamWriter(pathOutputFileStandort))
|
||||||
{
|
{
|
||||||
foreach (var item in DataOperations.vorgängeStandort.Distinct())
|
for (int i = 0; i < DataOperations.vorgängeStandort.Count; i++)
|
||||||
{
|
{
|
||||||
sw.WriteLine(item.ToString());
|
if (i == 0)
|
||||||
|
{
|
||||||
|
sw.WriteLine(String.Concat("CID", "VORGANGID", "Sachbearbeiter", "Bemerkung", "Standort", "ENTNAHMEDATUM", "Entnahmezeit", "RUECKGABEDATUM", "Rückgabezeit"));
|
||||||
|
}
|
||||||
|
sw.WriteLine(DataOperations.vorgängeStandort[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Console.ForegroundColor = ConsoleColor.Green;
|
Console.ForegroundColor = ConsoleColor.Green;
|
||||||
Console.WriteLine("{0} created.", pathOutputFileCM);
|
Console.WriteLine("{0} created.", pathOutputFileCM);
|
||||||
|
Console.WriteLine("{0} created.", pathOutputFileInpro);
|
||||||
FileInfo fi = new FileInfo(pathOutputFileInpro);
|
Console.WriteLine("{0} created.", pathOutputFileStandort);
|
||||||
if(fi.Length!=0)
|
|
||||||
{
|
|
||||||
Console.WriteLine("{0} created.", pathOutputFileInpro);
|
|
||||||
Console.WriteLine("{0} created.", pathOutputFileStandort);
|
|
||||||
}
|
|
||||||
|
|
||||||
Console.ResetColor();
|
Console.ResetColor();
|
||||||
|
|
||||||
//#region Backup JPM-Files
|
//Backup JPM-Files
|
||||||
//Console.WriteLine("Start copying jpm-files, please wait...");
|
Console.WriteLine("Start copying jpm-files, please wait...");
|
||||||
//FileInfo fi = new FileInfo(csvPath);
|
FileInfo fi = new FileInfo(csvPath);
|
||||||
//FileOperations.CopyJPMFilesToDestination(fi.Directory.FullName, archivNetPath);
|
FileOperations.CopyJPMFilesToDestination(fi.Directory.FullName, archivNetPath);
|
||||||
//Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
//Console.ForegroundColor = ConsoleColor.Green;
|
Console.ForegroundColor = ConsoleColor.Green;
|
||||||
//Console.WriteLine("Done. You may close this window now.");
|
Console.WriteLine("Done. You may close this window now.");
|
||||||
//#endregion
|
|
||||||
|
|
||||||
Console.ReadLine();
|
Console.ReadLine();
|
||||||
|
|
||||||
@@ -134,7 +110,7 @@ namespace MergeCMInpro
|
|||||||
catch (FileNotFoundException ex)
|
catch (FileNotFoundException ex)
|
||||||
{
|
{
|
||||||
Console.ForegroundColor = ConsoleColor.Red;
|
Console.ForegroundColor = ConsoleColor.Red;
|
||||||
Console.WriteLine("ERROR: " + ex.Message);
|
Console.WriteLine("ERROR: "+ex.Message);
|
||||||
Console.ReadLine();
|
Console.ReadLine();
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@@ -145,58 +121,9 @@ namespace MergeCMInpro
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static string CallSentry()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var res = SentrySdk.Init(options =>
|
|
||||||
{
|
|
||||||
// A Sentry Data Source Name (DSN) is required.
|
|
||||||
// See https://docs.sentry.io/product/sentry-basics/dsn-explainer/
|
|
||||||
// You can set it in the SENTRY_DSN environment variable, or you can set it in code here.
|
|
||||||
options.Dsn = "https://73fd45bffc79360f9de9b7a7a622d96f@sentry.katyes.dynv6.net/3";
|
|
||||||
|
|
||||||
// When debug is enabled, the Sentry client will emit detailed debugging information to the console.
|
|
||||||
// This might be helpful, or might interfere with the normal operation of your application.
|
|
||||||
// We enable it here for demonstration purposes when first trying Sentry.
|
|
||||||
// You shouldn't do this in your applications unless you're troubleshooting issues with Sentry.
|
|
||||||
options.Debug = true;
|
|
||||||
|
|
||||||
// This option is recommended. It enables Sentry's "Release Health" feature.
|
|
||||||
options.AutoSessionTracking = true;
|
|
||||||
});
|
|
||||||
return res.ToString();
|
|
||||||
|
|
||||||
}
|
|
||||||
catch(Exception ex)
|
|
||||||
{
|
|
||||||
SentrySdk.CaptureMessage("Something went wrong");
|
|
||||||
return ex.Message;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool CheckFolderStructure(string csvName)
|
|
||||||
{
|
|
||||||
string fileName = Path.GetFileNameWithoutExtension(csvName);
|
|
||||||
bool result = false;
|
|
||||||
string dir = Path.GetDirectoryName(csvName);
|
|
||||||
DirectoryInfo di = new DirectoryInfo(dir);
|
|
||||||
if(di.GetFiles("*.pdf").Length > 0)
|
|
||||||
{
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
if (Directory.Exists(Path.Combine(dir, fileName)))
|
|
||||||
{
|
|
||||||
result = true;
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static bool CheckFileExist()
|
public static bool CheckFileExist()
|
||||||
{
|
{
|
||||||
FileInfo fi = new FileInfo(Path.Combine(Directory.GetParent(csvPath).FullName, "outputInpro.csv"));
|
if (File.Exists(Path.Combine(Directory.GetParent(csvPath).FullName, "outputInpro.csv")) || File.Exists(Path.Combine(Directory.GetParent(csvPath).FullName, "outputCM.csv")))
|
||||||
|
|
||||||
if ((System.IO.File.Exists(Path.Combine(Directory.GetParent(csvPath).FullName, "outputInpro.csv")) && fi.Length!=0) || System.IO.File.Exists(Path.Combine(Directory.GetParent(csvPath).FullName, "outputCM.csv")))
|
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
278
Vorgang.cs
Normal file
278
Vorgang.cs
Normal file
@@ -0,0 +1,278 @@
|
|||||||
|
using NLog;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Scan2Compress.Business
|
||||||
|
{
|
||||||
|
public sealed class Vorgang
|
||||||
|
{
|
||||||
|
#region Fields
|
||||||
|
private static readonly Logger _logger = NLog.LogManager.GetCurrentClassLogger();
|
||||||
|
|
||||||
|
private string aktenzeichen;
|
||||||
|
#endregion
|
||||||
|
//TODO: fehlende Felder aus den CM und Inpro hinzufügen
|
||||||
|
#region Properties
|
||||||
|
public DateTime Enddatum { get; set; }
|
||||||
|
public DateTime Eingangsdatum { get; set; }
|
||||||
|
public string BeschreibungVorgang { get; set; }
|
||||||
|
public string Checkliste { get; set; }
|
||||||
|
public string VorgangsDefinition { get; set; }
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
public string Aktenzeichen
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return aktenzeichen;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
aktenzeichen = value;
|
||||||
|
if (!aktenzeichen.Contains("/"))
|
||||||
|
{
|
||||||
|
aktenzeichen = ReplaceHiphenWithSlash(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string FameId { get; set; }
|
||||||
|
|
||||||
|
public string DocsSZ { get; set; }
|
||||||
|
|
||||||
|
public string DocType { get; set; }
|
||||||
|
|
||||||
|
public static Dictionary<int, string> Strassen { get; set; }
|
||||||
|
|
||||||
|
public string IdStrasse { get; set; }
|
||||||
|
|
||||||
|
public string Strasse1 { get; set; }
|
||||||
|
|
||||||
|
public string Hausnummer1Von { get; set; }
|
||||||
|
|
||||||
|
public string Hausnummer1Bis { get; set; }
|
||||||
|
|
||||||
|
public string HsNrVonZusatz { get; set; }
|
||||||
|
|
||||||
|
public string HsNrBisZusatz { get; set; }
|
||||||
|
|
||||||
|
public string Strasse2 { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string Hausnummer2 { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string Teil { get; set; }
|
||||||
|
|
||||||
|
public string NamePDF { get; set; }
|
||||||
|
|
||||||
|
public string AbsoluteFilePath { get; set; }
|
||||||
|
|
||||||
|
public DateTime CreationDate { get; set; }
|
||||||
|
|
||||||
|
public DateTime ScanDatum { get; set; } = DateTime.Now; //Erstelldatum
|
||||||
|
|
||||||
|
#endregion Properties
|
||||||
|
|
||||||
|
#region Contructor
|
||||||
|
|
||||||
|
public Vorgang(string id, string aktenzeichen, string docType, string teil, string namePDF)
|
||||||
|
{
|
||||||
|
this.DocType = docType;
|
||||||
|
this.Teil = teil;
|
||||||
|
this.Aktenzeichen = aktenzeichen;
|
||||||
|
this.NamePDF = namePDF;
|
||||||
|
this.Id = Convert.ToInt32(id);
|
||||||
|
this.FameId = GenerateFameId();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vorgang(string id, string aktenzeichen, string docType, string teil, string namePDF, string strasse1, string hausnummer1)
|
||||||
|
{
|
||||||
|
this.DocType = docType;
|
||||||
|
this.Teil = teil;
|
||||||
|
this.Aktenzeichen = aktenzeichen;
|
||||||
|
this.NamePDF = namePDF;
|
||||||
|
this.Id = Convert.ToInt32(id);
|
||||||
|
this.FameId = GenerateFameId();
|
||||||
|
this.Strasse1 = strasse1.Trim();
|
||||||
|
this.Hausnummer1Von = hausnummer1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Vorgang()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Methods
|
||||||
|
private int GenerateVorgangId(int oldValue)
|
||||||
|
{
|
||||||
|
int newValue = oldValue + 1;
|
||||||
|
return newValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Erstelle Originalaktenzeichen
|
||||||
|
private string ReplaceHiphenWithSlash(string aktenzeichen)
|
||||||
|
{
|
||||||
|
var regex = new Regex(Regex.Escape("-"));
|
||||||
|
string res = regex.Replace(aktenzeichen, "/", 1);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Extract Strassen
|
||||||
|
private void ExtractStrasseHausnummer(string strasse)
|
||||||
|
{
|
||||||
|
string[] res = strasse.Split(' ');
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//Abtrennen von Hausnummerzusätzen wie z.B. "4A" in "4" und "A" sowie Aufspaltung von Bereichen z.B. "4-8" in "4" und "8"
|
||||||
|
for (int i = 0; i < res.Length; i++)
|
||||||
|
{
|
||||||
|
if (!char.IsDigit(res[i].ElementAt(0)) && char.IsDigit(res[i].ElementAt(1)))
|
||||||
|
{
|
||||||
|
DocsSZ = res[i];
|
||||||
|
}
|
||||||
|
else if (char.IsDigit(res[i].ElementAt(0)))
|
||||||
|
{
|
||||||
|
SplittedHausnummerZusatz(res[i]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//z.B. Auf der Mühle, Herbert-Scholtissek-Str, Westholz etc.
|
||||||
|
sb.Append(res[i]);
|
||||||
|
sb.Append(" ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Strasse1 = sb.ToString().Trim();
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (System.ArgumentOutOfRangeException ex)
|
||||||
|
{
|
||||||
|
_logger.Error(string.Concat(ex.Message, " Beim Extrahieren der Strasse/Hausnummer ist ein Fehler aufgetreten."));
|
||||||
|
throw new ArgumentOutOfRangeException("Beim Extrahieren der Strasse1 ist ein Fehler aufgetreten.\n\nBitte Eingaben überprüfen.", ex);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.Error(ex.Message);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SplittedStrasse2(string input)
|
||||||
|
{
|
||||||
|
string[] strasseHnr = input.Split(' ');
|
||||||
|
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
Hausnummer2 = strasseHnr.LastOrDefault();
|
||||||
|
|
||||||
|
strasseHnr = strasseHnr.Take(strasseHnr.Length - 1).ToArray();
|
||||||
|
for (int i = 0; i < strasseHnr.Length; i++)
|
||||||
|
{
|
||||||
|
if (i == strasseHnr.Length - 1)
|
||||||
|
builder.Append(strasseHnr[i]);
|
||||||
|
else
|
||||||
|
builder.Append(string.Concat(strasseHnr[i], " "));
|
||||||
|
}
|
||||||
|
Strasse2 = builder.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SplittedHausnummerZusatz(string input)
|
||||||
|
{
|
||||||
|
string hausnummerZusatzVon = string.Empty;
|
||||||
|
string hausnummerZusatzBis = string.Empty;
|
||||||
|
|
||||||
|
Tuple<string, string> result;
|
||||||
|
|
||||||
|
if (input.Contains('-')) //13-15, 13a-15
|
||||||
|
{
|
||||||
|
hausnummerZusatzVon = input.Split('-').FirstOrDefault();
|
||||||
|
hausnummerZusatzBis = input.Split('-').LastOrDefault();
|
||||||
|
result = ExtractingZusatzFromHausnummer(hausnummerZusatzVon);
|
||||||
|
Hausnummer1Von = result.Item1;
|
||||||
|
HsNrVonZusatz = result.Item2;
|
||||||
|
result = ExtractingZusatzFromHausnummer(hausnummerZusatzBis);
|
||||||
|
Hausnummer1Bis = result.Item1;
|
||||||
|
HsNrBisZusatz = result.Item2;
|
||||||
|
|
||||||
|
if (HsNrBisZusatz.Length >= 2 || HsNrVonZusatz.Length >= 2)
|
||||||
|
{
|
||||||
|
HsNrVonZusatz = HsNrVonZusatz != string.Empty ? HsNrVonZusatz.FirstOrDefault().ToString() : string.Empty;
|
||||||
|
HsNrBisZusatz = HsNrBisZusatz != string.Empty ? HsNrBisZusatz.LastOrDefault().ToString() : string.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else //13
|
||||||
|
{
|
||||||
|
result = ExtractingZusatzFromHausnummer(input);
|
||||||
|
Hausnummer1Von = result.Item1;
|
||||||
|
HsNrBisZusatz = result.Item2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Tuple<string, string> ExtractingZusatzFromHausnummer(string input)
|
||||||
|
{
|
||||||
|
StringBuilder sbHausnummer = new StringBuilder();
|
||||||
|
StringBuilder sbZusatz = new StringBuilder();
|
||||||
|
|
||||||
|
for (int i = 0; i < input.Length; i++)
|
||||||
|
{
|
||||||
|
if (char.IsDigit(input[i]))
|
||||||
|
{
|
||||||
|
sbHausnummer.Append(input[i]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sbZusatz.Append(input[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new Tuple<string, string>(sbHausnummer.ToString(), sbZusatz.ToString());
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
private string GenerateFameId()
|
||||||
|
{
|
||||||
|
string dt = DateTime.Now.ToString("ddMMyyhhmmssfff");
|
||||||
|
byte[] tmpDt;
|
||||||
|
byte[] tmpHash;
|
||||||
|
|
||||||
|
tmpDt = ASCIIEncoding.ASCII.GetBytes(dt);
|
||||||
|
tmpHash = new MD5CryptoServiceProvider().ComputeHash(tmpDt);
|
||||||
|
|
||||||
|
StringBuilder res = new StringBuilder(tmpHash.Length);
|
||||||
|
for (int i = 0; i < tmpHash.Length; i++)
|
||||||
|
{
|
||||||
|
res.Append(tmpHash[i].ToString("X2"));
|
||||||
|
}
|
||||||
|
string tmp = res.ToString().ToLower().Substring(res.Length - 12);
|
||||||
|
_logger.Info("FameId " + tmp + " für " + dt + " und " + Aktenzeichen + " erzeugt.");
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return Id.ToString() + ";" + Aktenzeichen + ";" + Checkliste + ";" + VorgangsDefinition + ";" + BeschreibungVorgang + ";" + Strasse1 + ";" + Hausnummer1Von + ";" + HsNrVonZusatz + ";" + Hausnummer1Bis + ";" + HsNrBisZusatz + ";" + Strasse2.Trim() + ";" + Hausnummer2 + ";" + Eingangsdatum.ToShortDateString() + ";" + FameId + ";" + Enddatum.ToShortDateString() + ";" + DocType + ";" + NamePDF;
|
||||||
|
}
|
||||||
|
//CM:
|
||||||
|
//aktenzeichen
|
||||||
|
//vorgangdefid VV
|
||||||
|
//Vorgangsart Kanalakte
|
||||||
|
//strasse 1
|
||||||
|
//strasse 1 hausnummer
|
||||||
|
//strasse 2
|
||||||
|
//strasse 2 hausnummer
|
||||||
|
//datumabschluss
|
||||||
|
//fameid
|
||||||
|
//dokumentdatum
|
||||||
|
//langebzeichnung/dokumentbezeichnung in inpro
|
||||||
|
//dokumentname mit Endung
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user