Fix Verarbeitung von mehreren Dateien

This commit is contained in:
2026-04-10 11:20:13 +02:00
parent facccc8ac4
commit afb807c87c

View File

@@ -13,7 +13,7 @@ param(
1. Optional Self-Update aus dem Public-Repo per Versionsvergleich
2. AZ_GITHUB_TOKEN pruefen
3. Private Konfiguration aus dem Private-Repo laden
4. Genau eine Datei aus Input-Ordner lesen
4. Alle TXT-Dateien direkt im Input-Ordner lesen
5. Dateiname ohne Endung als Belegnummer verwenden
6. SQL-Abfrage ausfuehren
7. Ergebnis an n8n senden
@@ -25,7 +25,7 @@ param(
$ErrorActionPreference = 'Stop'
$script:ScriptName = 'KANBAN-Rational-Druck'
$script:ScriptVersion = '1.0.0'
$script:ScriptVersion = '1.1.0'
$script:PublicRawUrl = 'https://git.az-gruppe.com/AZ-Intec-GmbH/AZ-PowerShell-Pub/raw/branch/main/scripts/KANBAN-Rational-Druck/KANBAN-Rational-Druck.ps1'
$script:PrivateRawUrl = 'https://git.az-gruppe.com/AZ-Intec-GmbH/AZ-PowerShell-Prv/raw/branch/main/scripts/KANBAN-Rational-Druck/KANBAN-Rational-Druck.ps1'
$script:LogFilePath = $null
@@ -227,7 +227,7 @@ function Test-RequiredConfig
}
}
function Get-SingleInputFile
function Get-InputFiles
{
param(
[Parameter(Mandatory = $true)]
@@ -239,19 +239,9 @@ function Get-SingleInputFile
throw "ERROR: Input-Ordner existiert nicht: $InputFolder"
}
$files = Get-ChildItem -Path $InputFolder -File
$files = Get-ChildItem -Path $InputFolder -File -Filter '*.txt'
if ($files.Count -eq 0)
{
throw "ERROR: Keine Datei im Input-Ordner gefunden: $InputFolder"
}
if ($files.Count -gt 1)
{
throw "ERROR: Es wurden mehrere Dateien gefunden. Erwartet wird genau eine Datei im Ordner: $InputFolder"
}
return $files[0]
return @($files)
}
function Invoke-SqlTopOneQuery
@@ -375,56 +365,75 @@ try
Write-Log "Starte Skriptausfuehrung KANBAN-Rational-Druck..." "INFO"
$inputFile = Get-SingleInputFile -InputFolder $config.InputFolder
$inputFiles = Get-InputFiles -InputFolder $config.InputFolder
$fileName = $inputFile.Name
$fileBaseName = [System.IO.Path]::GetFileNameWithoutExtension($inputFile.Name)
$fileFullPath = $inputFile.FullName
$fileExtension = $inputFile.Extension
Write-Log "Gefundene Datei: $fileName" "INFO"
Write-Log "Extrahierte Belegnummer: $fileBaseName" "INFO"
$sqlResult = $null
$sqlFound = $false
$status = 'success'
$message = 'SQL-Datensatz gefunden'
try
if ($inputFiles.Count -eq 0)
{
$sqlResult = Invoke-SqlTopOneQuery -Config $config -Belegnummer $fileBaseName
Write-Log "WARN: Keine TXT-Dateien im Input-Ordner gefunden." "WARN"
exit 0
}
if ($null -eq $sqlResult)
Write-Log "Anzahl gefundener TXT-Dateien: $($inputFiles.Count)" "INFO"
foreach ($inputFile in $inputFiles)
{
try
{
$fileName = $inputFile.Name
$fileBaseName = [System.IO.Path]::GetFileNameWithoutExtension($inputFile.Name)
$fileFullPath = $inputFile.FullName
$fileExtension = $inputFile.Extension
Write-Log "Verarbeite Datei: $fileName" "INFO"
Write-Log "Extrahierte Belegnummer: $fileBaseName" "INFO"
$sqlResult = $null
$sqlFound = $false
$status = 'warning'
$message = 'Kein SQL-Datensatz gefunden'
} else
$status = 'success'
$message = 'SQL-Datensatz gefunden'
try
{
$sqlResult = Invoke-SqlTopOneQuery -Config $config -Belegnummer $fileBaseName
if ($null -eq $sqlResult)
{
$sqlFound = $false
$status = 'warning'
$message = 'Kein SQL-Datensatz gefunden'
} else
{
$sqlFound = $true
}
} catch
{
Write-Log $_.Exception.Message "ERROR"
$sqlFound = $false
$status = 'error'
$message = $_.Exception.Message
}
$payload = [ordered]@{
status = $status
message = $message
fileName = $fileName
fileBaseName = $fileBaseName
fileFullPath = $fileFullPath
fileExtension = $fileExtension
processedAt = (Get-Date).ToString('s')
sqlFound = $sqlFound
sqlResult = $sqlResult
}
Send-N8nWebhook -WebhookUrl $config.WebhookUrl -Payload $payload
Write-Log "Datei erfolgreich verarbeitet: $fileName" "SUCCESS"
} catch
{
$sqlFound = $true
Write-Log "Fehler bei Verarbeitung von Datei '$($inputFile.FullName)': $($_.Exception.Message)" "ERROR"
}
} catch
{
Write-Log $_.Exception.Message "ERROR"
$sqlFound = $false
$status = 'error'
$message = $_.Exception.Message
}
$payload = [ordered]@{
status = $status
message = $message
fileName = $fileName
fileBaseName = $fileBaseName
fileFullPath = $fileFullPath
fileExtension = $fileExtension
processedAt = (Get-Date).ToString('s')
sqlFound = $sqlFound
sqlResult = $sqlResult
}
Send-N8nWebhook -WebhookUrl $config.WebhookUrl -Payload $payload
Write-Log "Skriptausfuehrung abgeschlossen." "SUCCESS"
} catch
{