Fix Verarbeitung von mehreren Dateien
This commit is contained in:
@@ -13,7 +13,7 @@ param(
|
|||||||
1. Optional Self-Update aus dem Public-Repo per Versionsvergleich
|
1. Optional Self-Update aus dem Public-Repo per Versionsvergleich
|
||||||
2. AZ_GITHUB_TOKEN pruefen
|
2. AZ_GITHUB_TOKEN pruefen
|
||||||
3. Private Konfiguration aus dem Private-Repo laden
|
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
|
5. Dateiname ohne Endung als Belegnummer verwenden
|
||||||
6. SQL-Abfrage ausfuehren
|
6. SQL-Abfrage ausfuehren
|
||||||
7. Ergebnis an n8n senden
|
7. Ergebnis an n8n senden
|
||||||
@@ -25,7 +25,7 @@ param(
|
|||||||
|
|
||||||
$ErrorActionPreference = 'Stop'
|
$ErrorActionPreference = 'Stop'
|
||||||
$script:ScriptName = 'KANBAN-Rational-Druck'
|
$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: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: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
|
$script:LogFilePath = $null
|
||||||
@@ -227,7 +227,7 @@ function Test-RequiredConfig
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function Get-SingleInputFile
|
function Get-InputFiles
|
||||||
{
|
{
|
||||||
param(
|
param(
|
||||||
[Parameter(Mandatory = $true)]
|
[Parameter(Mandatory = $true)]
|
||||||
@@ -239,19 +239,9 @@ function Get-SingleInputFile
|
|||||||
throw "ERROR: Input-Ordner existiert nicht: $InputFolder"
|
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)
|
return @($files)
|
||||||
{
|
|
||||||
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]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function Invoke-SqlTopOneQuery
|
function Invoke-SqlTopOneQuery
|
||||||
@@ -375,56 +365,75 @@ try
|
|||||||
|
|
||||||
Write-Log "Starte Skriptausfuehrung KANBAN-Rational-Druck..." "INFO"
|
Write-Log "Starte Skriptausfuehrung KANBAN-Rational-Druck..." "INFO"
|
||||||
|
|
||||||
$inputFile = Get-SingleInputFile -InputFolder $config.InputFolder
|
$inputFiles = Get-InputFiles -InputFolder $config.InputFolder
|
||||||
|
|
||||||
$fileName = $inputFile.Name
|
if ($inputFiles.Count -eq 0)
|
||||||
$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
|
|
||||||
{
|
{
|
||||||
$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
|
$sqlFound = $false
|
||||||
$status = 'warning'
|
$status = 'success'
|
||||||
$message = 'Kein SQL-Datensatz gefunden'
|
$message = 'SQL-Datensatz gefunden'
|
||||||
} else
|
|
||||||
|
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"
|
Write-Log "Skriptausfuehrung abgeschlossen." "SUCCESS"
|
||||||
} catch
|
} catch
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user