Zugferd/Jobs: Falls DB-Fehler beim Löschen passiert, wird jetzt darauf reagiert.

This commit is contained in:
PitzM 2025-01-14 13:51:06 +01:00
parent 9957465f59
commit bb7ed1bdd8

View File

@ -548,25 +548,9 @@ Public Class ImportZUGFeRDFiles
End If End If
DeleteExistingPropertyValues(pMessageId, oConnections) If DeleteExistingPropertyValues(pMessageId, oConnections) = False Then
Throw New Exception("Could not cleanup data. Exiting.")
' MP 05.06.2024 - Einzel-Inserts durch BULK-Insert abgelöst End If
'Dim oFirstProperty = oCheckResult.ValidProperties.FirstOrDefault()
'If oFirstProperty IsNot Nothing Then
' InsertPropertyValue(pMessageId, oConnections, New PropertyValues.ValidProperty() With {
' .MessageId = pMessageId,
' .Description = "ZUGFeRDSpezifikation",
' .GroupCounter = 0,
' .IsRequired = False,
' .Value = oDocument.Specification,
' .TableName = oFirstProperty.TableName,
' .TableColumn = "ZUGFERD_SPECIFICATION"
' })
'End If
'For Each oProperty In oCheckResult.ValidProperties
' InsertPropertyValue(pMessageId, oConnections, oProperty)
'Next
' DataTable vorbereiten ' DataTable vorbereiten
Dim oDataTable As DataTable = FillDataTable(pMessageId, oCheckResult, oDocument.Specification, oDocument.UsedXMLSchema) Dim oDataTable As DataTable = FillDataTable(pMessageId, oCheckResult, oDocument.Specification, oDocument.UsedXMLSchema)
@ -585,6 +569,7 @@ Public Class ImportZUGFeRDFiles
If oBulkResult = False Then If oBulkResult = False Then
_logger.Error("Bulk Insert for MessageId [{0}] failed!", pMessageId) _logger.Error("Bulk Insert for MessageId [{0}] failed!", pMessageId)
Throw New Exception("Bulk Insert failed! Exiting.")
End If End If
_logger.Info("Bulk Insert finished. [{0}] rows inserted for MessageId [{1}].", oDataTable.Rows.Count, pMessageId) _logger.Info("Bulk Insert finished. [{0}] rows inserted for MessageId [{1}].", oDataTable.Rows.Count, pMessageId)
@ -661,38 +646,17 @@ Public Class ImportZUGFeRDFiles
Return oDataTable Return oDataTable
End Function End Function
Private Sub DeleteExistingPropertyValues(pMessageId As String, pConnections As DatabaseConnections) Private Function DeleteExistingPropertyValues(pMessageId As String, pConnections As DatabaseConnections) As Boolean
Dim oDelSQL = $"DELETE FROM TBEDMI_ITEM_VALUE where REFERENCE_GUID = '{pMessageId}'" Dim oDelSQL = $"DELETE FROM TBEDMI_ITEM_VALUE where REFERENCE_GUID = '{pMessageId}'"
Dim oStep As String Dim oStep As String = "TBEDMI_ITEM_VALUE Delete MessageID Items"
oStep = "TBEDMI_ITEM_VALUE Delete MessageID Items"
Try Try
_mssql.ExecuteNonQueryWithConnectionObject(oDelSQL, pConnections.SQLServerConnection, MSSQLServer.TransactionMode.ExternalTransaction, pConnections.SQLServerTransaction) Dim retValue As Boolean = _mssql.ExecuteNonQueryWithConnectionObject(oDelSQL, pConnections.SQLServerConnection, MSSQLServer.TransactionMode.ExternalTransaction, pConnections.SQLServerTransaction)
Return retValue
Catch ex As Exception Catch ex As Exception
_logger.Warn("Step [{0}] with SQL [{1}] was not successful.", oStep, oDelSQL) _logger.Warn("Step [{0}] with SQL [{1}] was not successful.", oStep, oDelSQL)
End Try End Try
End Sub End Function
' Alte Insert-Methode
'Private Sub InsertPropertyValue(pMessageId As String, pConnections As DatabaseConnections, pProperty As PropertyValues.ValidProperty)
' Dim oGroupCounterValue = pProperty.GroupCounter
' ' If GroupCounter is -1, it means this is a default property that can only occur once.
' ' Set the actual inserted value to 0
' If oGroupCounterValue = -1 Then
' oGroupCounterValue = 0
' End If
' Dim oCommand = $"INSERT INTO {pProperty.TableName} (REFERENCE_GUID, ITEM_DESCRIPTION, ITEM_VALUE, GROUP_COUNTER, SPEC_NAME, IS_REQUIRED) VALUES
' ('{pMessageId}', '{pProperty.Description}', '{pProperty.Value.Replace("'", "''")}', {oGroupCounterValue},'{pProperty.TableColumn}','{pProperty.IsRequired}')"
' _logger.Debug("Mapping Property [{0}] with value [{1}], Will be inserted into table [{2}]", pProperty.TableColumn, pProperty.Value.Replace("'", "''"), pProperty.TableName)
' ' Insert into SQL Server
' Dim oResult = _mssql.ExecuteNonQueryWithConnectionObject(oCommand, pConnections.SQLServerConnection, MSSQLServer.TransactionMode.ExternalTransaction, pConnections.SQLServerTransaction)
' If oResult = False Then
' _logger.Warn($"SQL Command [{oCommand}] was not successful. Check the log.")
' End If
'End Sub
Private Function BulkInsert(pConnections As DatabaseConnections, pTable As DataTable, pDestinationTable As String, pColumns As List(Of String)) As Boolean Private Function BulkInsert(pConnections As DatabaseConnections, pTable As DataTable, pDestinationTable As String, pColumns As List(Of String)) As Boolean