From afb807c87c3ae18efa75eb93c6dc26a0eb38570c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=BCller?= Date: Fri, 10 Apr 2026 11:20:13 +0200 Subject: [PATCH] Fix Verarbeitung von mehreren Dateien --- .../KANBAN-Rational-Druck.ps1 | 121 ++++++++++-------- 1 file changed, 65 insertions(+), 56 deletions(-) diff --git a/scripts/KANBAN-Rational-Druck/KANBAN-Rational-Druck.ps1 b/scripts/KANBAN-Rational-Druck/KANBAN-Rational-Druck.ps1 index 536d58d..11dd4d1 100644 --- a/scripts/KANBAN-Rational-Druck/KANBAN-Rational-Druck.ps1 +++ b/scripts/KANBAN-Rational-Druck/KANBAN-Rational-Druck.ps1 @@ -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 {