Zu testen bei ewa
This commit is contained in:
@@ -41,11 +41,18 @@ Public Class frmWM_IndexFile
|
||||
Function WORK_FILE(ImportFilePath As String, VerzeichnisZiel As String, vDokart_ID As Integer, vDokart As String, multiindex As Boolean)
|
||||
'Dim swWORK_FILE As New SW("WORK_FILE: " & DOCTYPE_IDTextBox.Text)
|
||||
Try
|
||||
LOGGER.Debug($" WORK_FILE aufgerufen: CURRENT_FILEID={CURRENT_FILEID}, Datei={Me.txtFilepath.Text}")
|
||||
LOGGER.Debug($"=== WORK_FILE START: multiindex={multiindex} ===")
|
||||
LOGGER.Debug($" Datei: {ImportFilePath}")
|
||||
LOGGER.Debug($" Flags: _multiIndexDecisionMade={_multiIndexDecisionMade}, _multiIndexOverwriteExisting={_multiIndexOverwriteExisting}")
|
||||
|
||||
CURRENT_DOC_ID = Nothing
|
||||
Dim odeleteRights As Boolean = True
|
||||
Dim oSQL = $"SELECT GUID FROM TBPMO_FILES_USER WHERE FILENAME2WORK = '{ImportFilePath}' AND WORKED = 0 AND USER_WORK = '{Environment.UserName}'"
|
||||
CURRENT_FILEID = MYDB_ECM.GetScalarValue(oSQL)
|
||||
|
||||
If CURRENT_FILEID = 0 OrElse CURRENT_FILEID = Nothing Then
|
||||
LOGGER.Error("WORK_FILE: CURRENT_FILEID ist ungültig (0 oder Nothing)!")
|
||||
Return False
|
||||
End If
|
||||
CURRENT_DOKARTSTRING = vDokart
|
||||
Dim err As Boolean = False
|
||||
'#################################################################
|
||||
@@ -64,6 +71,7 @@ Public Class frmWM_IndexFile
|
||||
|
||||
If multiindex = True Then
|
||||
If _multiIndexDecisionMade = False Then
|
||||
LOGGER.Debug(" ZEIGE DIALOG für Multi-Index-Entscheidung")
|
||||
' Erste Kollision → Benutzer fragen
|
||||
Dim msg As String
|
||||
If USER_LANGUAGE <> "de-DE" Then
|
||||
@@ -84,12 +92,16 @@ Public Class frmWM_IndexFile
|
||||
_multiIndexOverwriteExisting = (result = MsgBoxResult.Yes)
|
||||
_multiIndexDecisionMade = True
|
||||
|
||||
LOGGER.Info($"Multi-Indexing: User decision for file conflicts = {If(_multiIndexOverwriteExisting, "OVERWRITE", "VERSION")}")
|
||||
LOGGER.Debug($" Benutzer-Entscheidung: {If(_multiIndexOverwriteExisting, "OVERWRITE", "VERSION")}")
|
||||
LOGGER.Debug($" Flags NACH Dialog: _multiIndexDecisionMade={_multiIndexDecisionMade}, _multiIndexOverwriteExisting={_multiIndexOverwriteExisting}")
|
||||
Else
|
||||
LOGGER.Debug($" Verwende GESPEICHERTE Entscheidung: {If(_multiIndexOverwriteExisting, "OVERWRITE", "VERSION")}")
|
||||
End If
|
||||
|
||||
shouldOverwrite = _multiIndexOverwriteExisting
|
||||
Else
|
||||
' Einzeldatei → wie bisher
|
||||
LOGGER.Debug(" Einzeldatei: Zeige Dialog")
|
||||
Dim msg As String
|
||||
If USER_LANGUAGE <> "de-DE" Then
|
||||
msg = "A file with the same name already exists!" & vbCrLf &
|
||||
@@ -104,10 +116,12 @@ Public Class frmWM_IndexFile
|
||||
Dim result As MsgBoxResult = MessageBox.Show(msg, "File already exists:",
|
||||
MessageBoxButtons.YesNo, MessageBoxIcon.Question)
|
||||
shouldOverwrite = (result = MsgBoxResult.Yes)
|
||||
LOGGER.Debug($" Einzeldatei-Entscheidung: {If(shouldOverwrite, "OVERWRITE", "VERSION")}")
|
||||
End If
|
||||
|
||||
' ── Entscheidung ausführen ────────────────────────────────────
|
||||
If shouldOverwrite Then
|
||||
LOGGER.Debug(" Führe OVERWRITE aus")
|
||||
If WMMOD.RemoveFile(CURRENT_NEWFILENAME) = False Then
|
||||
Return False
|
||||
Else
|
||||
@@ -127,8 +141,12 @@ Public Class frmWM_IndexFile
|
||||
Next
|
||||
End If
|
||||
Else
|
||||
LOGGER.Debug(" Führe VERSIONIERUNG aus")
|
||||
CURRENT_NEWFILENAME = ClassHelper.Versionierung_Datei(CURRENT_NEWFILENAME)
|
||||
LOGGER.Debug($" Neuer Dateiname: {CURRENT_NEWFILENAME}")
|
||||
End If
|
||||
Else
|
||||
LOGGER.Debug(" Datei existiert NICHT, kein Konflikt")
|
||||
End If
|
||||
sw.Done()
|
||||
'#################################################################
|
||||
@@ -291,15 +309,23 @@ Public Class frmWM_IndexFile
|
||||
stg1 = "Success:"
|
||||
End If
|
||||
If multiindex = False Then CURRENT_NOTIFICATION_MSG = stg
|
||||
MYDB_ECM.GetScalarValue("UPDATE TBPMO_FILES_USER SET WORKED = 1 WHERE GUID = " & CURRENT_FILEID)
|
||||
For Each row As DataRow In CURRENT_TBPMO_FILES_USER.Rows
|
||||
If row.Item("GUID") = CURRENT_FILEID Then
|
||||
row.Item("WORKED") = 1
|
||||
If IsNothing(droptype) Then
|
||||
droptype = row.Item("HANDLE_TYPE")
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
|
||||
' Neu - NUR wenn NICHT im Multi-Index-Modus:
|
||||
If multiindex = False Then
|
||||
MYDB_ECM.ExecuteNonQuery("UPDATE TBPMO_FILES_USER SET WORKED = 1 WHERE GUID = " & CURRENT_FILEID)
|
||||
LOGGER.Debug($" Einzeldatei als WORKED markiert: GUID={CURRENT_FILEID}")
|
||||
|
||||
' ✅ DEBUG: Was steht JETZT in der DB?
|
||||
Dim debugSQL = $"SELECT GUID, WORKED, FILENAME_ONLY FROM TBPMO_FILES_USER WHERE USER_WORK = '{USER_USERNAME}' ORDER BY GUID DESC"
|
||||
Dim debugDT = MYDB_ECM.GetDatatable(debugSQL)
|
||||
LOGGER.Debug($" ═══ DEBUG NACH UPDATE ═══")
|
||||
LOGGER.Debug($" Anzahl Dateien in DB: {debugDT.Rows.Count}")
|
||||
For Each row As DataRow In debugDT.Rows
|
||||
LOGGER.Debug($" - GUID={row("GUID")}, WORKED={row("WORKED")}, Datei={row("FILENAME_ONLY")}")
|
||||
Next
|
||||
LOGGER.Debug($" ═══════════════════════")
|
||||
End If
|
||||
|
||||
If IsNothing(CURRENT_DOC_ID) Then
|
||||
sw = New SW("GettingDocID")
|
||||
sql = String.Format("SELECT DocID FROM VWPMO_DOC_SYNC WHERE FULL_FILENAME = '{0}' AND CONVERT(DATE,Change_DateTime) = CONVERT(DATE,GETDATE())", CURRENT_FILEIN_WD)
|
||||
@@ -425,31 +451,70 @@ Public Class frmWM_IndexFile
|
||||
Me.Cursor = Cursors.WaitCursor
|
||||
SaveMySettingsValue("WD_IndexDeleteDocs", WD_IndexDeleteDocs, "ConfigMain")
|
||||
|
||||
' ── Multi-Indexing-Flags zurücksetzen beim Start ──────────────────
|
||||
LOGGER.Debug("=== HANDLE_FILE START ===")
|
||||
LOGGER.Debug($" Flags VOR Reset: _multiIndexDecisionMade={_multiIndexDecisionMade}, _multiIndexOverwriteExisting={_multiIndexOverwriteExisting}")
|
||||
|
||||
_multiIndexDecisionMade = False
|
||||
_multiIndexOverwriteExisting = False
|
||||
|
||||
LOGGER.Debug($" Flags NACH Reset: _multiIndexDecisionMade={_multiIndexDecisionMade}, _multiIndexOverwriteExisting={_multiIndexOverwriteExisting}")
|
||||
LOGGER.Debug($" chkMultiIndexer: Visible={chkMultiIndexer.Visible}, Checked={chkMultiIndexer.Checked}")
|
||||
|
||||
If chkMultiIndexer.Visible = True And chkMultiIndexer.Checked = True Then
|
||||
' ── Erste Datei: FILE_HASH sicherstellen ───────────────────────
|
||||
LOGGER.Debug("=== MULTI-INDEXING MODUS AKTIV ===")
|
||||
|
||||
' ── Erste Datei: FILE_HASH und CURRENT_FILEID sicherstellen ───
|
||||
Dim firstFileId As Integer = CURRENT_FILEID
|
||||
Dim firstFileName As String = CURRENT_FILENAME
|
||||
|
||||
For Each oRow As DataRow In CURRENT_TBPMO_FILES_USER.Rows
|
||||
If oRow.Item("GUID") = CURRENT_FILEID Then
|
||||
FILE_HASH = oRow.Item("FILE_HASH")
|
||||
firstFileName = oRow.Item("FILENAME2WORK")
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
|
||||
If WORK_FILE(Me.txtFilepath.Text, Me.PATHTextBox.Text, doctype_id, My.Settings.WD_INDEXDOKART_SAVE, True) = False Then
|
||||
LOGGER.Debug($" Verarbeite erste Datei (CURRENT_FILEID={firstFileId}): {firstFileName}")
|
||||
|
||||
If WORK_FILE(firstFileName, Me.PATHTextBox.Text, doctype_id, My.Settings.WD_INDEXDOKART_SAVE, True) = False Then
|
||||
Me.Cursor = Cursors.Default
|
||||
LOGGER.Warn(" Erste Datei fehlgeschlagen!")
|
||||
Return False
|
||||
End If
|
||||
|
||||
' ── Erste Datei erfolgreich: GUID merken, Folgedateien laden ──
|
||||
Dim firstFileId = CURRENT_FILEID
|
||||
Dim DTFiles2Work As DataTable = MYDB_ECM.GetDatatable(
|
||||
"SELECT * FROM TBPMO_FILES_USER WHERE WORKED = 0 " &
|
||||
"AND GUID <> " & firstFileId & " AND USER_WORK = '" & USER_USERNAME & "'")
|
||||
LOGGER.Debug(" Erste Datei erfolgreich verarbeitet")
|
||||
|
||||
If DTFiles2Work Is Nothing OrElse DTFiles2Work.Rows.Count = 0 Then
|
||||
' ── WICHTIG: Erste Datei als WORKED markieren UND DataTable neu laden ──
|
||||
LOGGER.Debug($" Markiere erste Datei als WORKED: GUID={firstFileId}")
|
||||
MYDB_ECM.ExecuteNonQuery($"UPDATE TBPMO_FILES_USER SET WORKED = 1 WHERE GUID = {firstFileId}")
|
||||
|
||||
LOGGER.Debug(" Lade aktualisierte Dateiliste aus Datenbank...")
|
||||
|
||||
' ✅ SCHRITT 1: Prüfe mit COUNT(*), wie viele Dateien in der DB sind
|
||||
Dim countSQL = $"SELECT COUNT(*) FROM TBPMO_FILES_USER WHERE USER_WORK = '{USER_USERNAME}' AND WORKED = 0"
|
||||
Dim remainingCount = CInt(MYDB_ECM.GetScalarValue(countSQL))
|
||||
LOGGER.Debug($" SQL COUNT ergab: {remainingCount} verbleibende Dateien")
|
||||
|
||||
' ✅ SCHRITT 2: Nur wenn COUNT > 0, dann DataTable laden
|
||||
If remainingCount > 0 Then
|
||||
CURRENT_TBPMO_FILES_USER = MYDB_ECM.GetDatatable("SELECT *, CONVERT(BIT,0) AS DELETE_FILE FROM TBPMO_FILES_USER " &
|
||||
"WHERE USER_WORK = '" & USER_USERNAME & "' AND WORKED = 0")
|
||||
|
||||
If CURRENT_TBPMO_FILES_USER Is Nothing Then
|
||||
LOGGER.Error(" WARNUNG: GetDatatable gab Nothing zurück, obwohl COUNT > 0!")
|
||||
CURRENT_TBPMO_FILES_USER = New DataTable()
|
||||
Else
|
||||
LOGGER.Debug($" DataTable geladen: {CURRENT_TBPMO_FILES_USER.Rows.Count} Zeilen")
|
||||
End If
|
||||
Else
|
||||
LOGGER.Info(" SQL COUNT ergab 0 Dateien")
|
||||
CURRENT_TBPMO_FILES_USER = New DataTable()
|
||||
End If
|
||||
|
||||
' ── Folgedateien aus aktualierter DataTable verarbeiten ──
|
||||
If CURRENT_TBPMO_FILES_USER Is Nothing OrElse CURRENT_TBPMO_FILES_USER.Rows.Count = 0 Then
|
||||
LOGGER.Info(" Keine weiteren Dateien vorhanden")
|
||||
NEW_FILES_ADDED = True
|
||||
FILE_WORKED = True
|
||||
Me.Cursor = Cursors.Default
|
||||
@@ -457,12 +522,24 @@ Public Class frmWM_IndexFile
|
||||
Return True
|
||||
End If
|
||||
|
||||
LOGGER.Debug($" Weitere Dateien gefunden: {CURRENT_TBPMO_FILES_USER.Rows.Count}")
|
||||
LOGGER.Debug($" Flags VOR Schleife: _multiIndexDecisionMade={_multiIndexDecisionMade}, _multiIndexOverwriteExisting={_multiIndexOverwriteExisting}")
|
||||
|
||||
Dim err As Boolean = False
|
||||
For Each filerow As DataRow In DTFiles2Work.Rows
|
||||
CURRENT_FILEID = filerow.Item("GUID")
|
||||
CURRENT_FILENAME = filerow.Item("FILENAME2WORK")
|
||||
FILE_HASH = filerow.Item("FILE_HASH")
|
||||
aktFiledropped = CURRENT_FILENAME
|
||||
Dim fileCount As Integer = 0
|
||||
For Each filerow As DataRow In CURRENT_TBPMO_FILES_USER.Rows
|
||||
fileCount += 1
|
||||
Dim currentFileId As Integer = filerow.Item("GUID")
|
||||
Dim currentFileName As String = filerow.Item("FILENAME2WORK")
|
||||
Dim currentFileHash As String = filerow.Item("FILE_HASH")
|
||||
|
||||
CURRENT_FILEID = currentFileId
|
||||
CURRENT_FILENAME = currentFileName
|
||||
FILE_HASH = currentFileHash
|
||||
aktFiledropped = currentFileName
|
||||
|
||||
LOGGER.Debug($" [{fileCount}/{CURRENT_TBPMO_FILES_USER.Rows.Count}] Verarbeite Datei: {currentFileName}, FILEID={currentFileId}")
|
||||
LOGGER.Debug($" Flags: _multiIndexDecisionMade={_multiIndexDecisionMade}, _multiIndexOverwriteExisting={_multiIndexOverwriteExisting}")
|
||||
|
||||
Dim handleType As String = filerow.Item("HANDLE_TYPE")
|
||||
Select Case handleType
|
||||
@@ -476,10 +553,15 @@ Public Class frmWM_IndexFile
|
||||
droptype = handleType
|
||||
End Select
|
||||
|
||||
If WORK_FILE(CURRENT_FILENAME, Me.PATHTextBox.Text, doctype_id, My.Settings.WD_INDEXDOKART_SAVE, True) = False Then
|
||||
If WORK_FILE(currentFileName, Me.PATHTextBox.Text, doctype_id, My.Settings.WD_INDEXDOKART_SAVE, True) = False Then
|
||||
err = True
|
||||
LOGGER.Warn($" Datei fehlgeschlagen!")
|
||||
Exit For
|
||||
End If
|
||||
|
||||
LOGGER.Debug($" Datei erfolgreich verarbeitet")
|
||||
LOGGER.Debug($" Markiere Datei als WORKED: GUID={currentFileId}")
|
||||
MYDB_ECM.ExecuteNonQuery($"UPDATE TBPMO_FILES_USER SET WORKED = 1 WHERE GUID = {currentFileId}")
|
||||
Next
|
||||
|
||||
Me.Cursor = Cursors.Default
|
||||
@@ -493,6 +575,7 @@ Public Class frmWM_IndexFile
|
||||
stg = "All files were transferred via Multiindexing to windream"
|
||||
stg1 = "Success:"
|
||||
End If
|
||||
LOGGER.Info("=== MULTI-INDEXING ERFOLGREICH ABGESCHLOSSEN ===")
|
||||
MsgBox(stg, MsgBoxStyle.Information, stg1)
|
||||
Me.Close()
|
||||
Return True
|
||||
@@ -501,25 +584,123 @@ Public Class frmWM_IndexFile
|
||||
Return False
|
||||
|
||||
Else
|
||||
' ── Einzeldatei ───────────────────────────────────────────────
|
||||
If WORK_FILE(Me.txtFilepath.Text, Me.PATHTextBox.Text, doctype_id, My.Settings.WD_INDEXDOKART_SAVE, False) = True Then
|
||||
NEW_FILES_ADDED = True
|
||||
FILE_WORKED = True
|
||||
' ✅ EINZELDATEI MODUS
|
||||
LOGGER.Debug("=== EINZELDATEI MODUS ===")
|
||||
|
||||
' ✅ WICHTIG: CURRENT_FILEID VOR WORK_FILE setzen!
|
||||
For Each oRow As DataRow In CURRENT_TBPMO_FILES_USER.Rows
|
||||
If oRow.Item("FILENAME2WORK") = Me.txtFilepath.Text Then
|
||||
CURRENT_FILEID = CInt(oRow("GUID"))
|
||||
FILE_HASH = oRow("FILE_HASH").ToString()
|
||||
LOGGER.Debug($" Datei gefunden in CURRENT_TBPMO_FILES_USER: FILEID={CURRENT_FILEID}")
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
|
||||
' ✅ Validierung NACH Schleife
|
||||
If CURRENT_FILEID = 0 Then
|
||||
LOGGER.Error($" Datei nicht gefunden in CURRENT_TBPMO_FILES_USER: {Me.txtFilepath.Text}")
|
||||
Me.Cursor = Cursors.Default
|
||||
MessageBox.Show("Die Datei konnte nicht in der Verarbeitungsliste gefunden werden!",
|
||||
"Fehler:", MessageBoxButtons.OK, MessageBoxIcon.Error)
|
||||
Return False
|
||||
End If
|
||||
|
||||
If WORK_FILE(Me.txtFilepath.Text, Me.PATHTextBox.Text, doctype_id, My.Settings.WD_INDEXDOKART_SAVE, False) = False Then
|
||||
Me.Cursor = Cursors.Default
|
||||
MessageBox.Show("Import to windream was not successful." & vbCrLf &
|
||||
"Check the log for further information!",
|
||||
"Unexpected Error in windream-Stream:",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Error)
|
||||
Return False
|
||||
End If
|
||||
|
||||
' ── Datei erfolgreich verarbeitet ──
|
||||
NEW_FILES_ADDED = True
|
||||
FILE_WORKED = True
|
||||
LOGGER.Debug(" Einzeldatei erfolgreich verarbeitet")
|
||||
|
||||
' ✅ Prüfen, ob weitere Dateien vorhanden sind
|
||||
LOGGER.Debug(" Lade aktualisierte Dateiliste für Einzeldatei-Check...")
|
||||
|
||||
' ✅ SCHRITT 1: Prüfe mit COUNT(*), wie viele Dateien in der DB sind
|
||||
Dim countSQL = $"SELECT COUNT(*) FROM TBPMO_FILES_USER WHERE USER_WORK = '{USER_USERNAME}' AND WORKED = 0"
|
||||
Dim remainingCount = CInt(MYDB_ECM.GetScalarValue(countSQL))
|
||||
LOGGER.Debug($" ═══ SQL COUNT NACH WORK_FILE ═══")
|
||||
LOGGER.Debug($" COUNT(*) ergab: {remainingCount} verbleibende Dateien")
|
||||
|
||||
' ✅ SCHRITT 2: Dateiliste laden UND vergleichen
|
||||
ClassHelper.Create_USER_FILE_TABLE()
|
||||
|
||||
If CURRENT_TBPMO_FILES_USER Is Nothing Then
|
||||
LOGGER.Error($" ❌ KRITISCHER FEHLER: Create_USER_FILE_TABLE gab Nothing zurück!")
|
||||
ElseIf CURRENT_TBPMO_FILES_USER.Rows.Count <> remainingCount Then
|
||||
LOGGER.Error($" ❌ KRITISCHER FEHLER: COUNT ergab {remainingCount}, aber DataTable hat {CURRENT_TBPMO_FILES_USER.Rows.Count} Zeilen!")
|
||||
LOGGER.Error($" ❌ VERDACHT: Race-Condition oder Transaction-Problem!")
|
||||
Else
|
||||
LOGGER.Debug($" ✅ OK: COUNT und DataTable stimmen überein ({remainingCount} Dateien)")
|
||||
End If
|
||||
LOGGER.Debug($" ═══════════════════════════════")
|
||||
|
||||
If CURRENT_TBPMO_FILES_USER IsNot Nothing AndAlso CURRENT_TBPMO_FILES_USER.Rows.Count > 0 Then
|
||||
LOGGER.Info($" Einzeldatei-Modus: Weitere {CURRENT_TBPMO_FILES_USER.Rows.Count} Dateien vorhanden - aktualisiere Formular")
|
||||
|
||||
' ── Lade ERSTE Datei aus der NEUEN Liste ──
|
||||
Dim nextFile = CURRENT_TBPMO_FILES_USER.Rows(0)
|
||||
CURRENT_FILEID = CInt(nextFile("GUID"))
|
||||
CURRENT_FILENAME = nextFile("FILENAME2WORK").ToString()
|
||||
FILE_HASH = nextFile("FILE_HASH").ToString()
|
||||
aktFiledropped = CURRENT_FILENAME
|
||||
txtFilepath.Text = CURRENT_FILENAME
|
||||
|
||||
LOGGER.Debug($" Nächste Datei geladen: FILEID={CURRENT_FILEID}, Datei={CURRENT_FILENAME}")
|
||||
|
||||
' ── Update MULTIFILES-Anzeige ──
|
||||
MULTIFILES = CURRENT_TBPMO_FILES_USER.Rows.Count - 1
|
||||
If MULTIFILES > 0 Then
|
||||
chkMultiIndexer.Text = "Multi-Indexing - Alle nachfolgenden Dateien (" & MULTIFILES & ") identisch indexieren"
|
||||
chkMultiIndexer.Visible = True
|
||||
chkMultiIndexer.Checked = False
|
||||
Else
|
||||
chkMultiIndexer.Visible = False
|
||||
End If
|
||||
|
||||
' ── Handle-Type setzen ──
|
||||
Dim handleType As String = nextFile("HANDLE_TYPE").ToString()
|
||||
Select Case handleType
|
||||
Case "@DROPFROMFSYSTEM@"
|
||||
droptype = "dragdrop file"
|
||||
chkdelete_origin.Visible = True
|
||||
Case "@OUTLOOK_ATTMNT@"
|
||||
droptype = "dragdrop attachment"
|
||||
chkdelete_origin.Visible = True
|
||||
Case "@OUTLOOKMESSAGE@"
|
||||
droptype = "dragdrop message"
|
||||
chkdelete_origin.Visible = True
|
||||
Case "SCAN"
|
||||
droptype = "scan"
|
||||
chkdelete_origin.Visible = False
|
||||
Case Else
|
||||
droptype = handleType
|
||||
chkdelete_origin.Visible = False
|
||||
End Select
|
||||
|
||||
Me.Cursor = Cursors.Default
|
||||
LOGGER.Debug(" Formular bleibt offen für nächste Datei")
|
||||
Return True ' ← Formular bleibt offen!
|
||||
|
||||
Else
|
||||
' ✅ Keine weiteren Dateien → Formular schließen
|
||||
LOGGER.Info(" Einzeldatei-Modus: Keine weiteren Dateien - schließe Formular")
|
||||
Me.Cursor = Cursors.Default
|
||||
Me.Close()
|
||||
Return True
|
||||
Else
|
||||
Me.Cursor = Cursors.Default
|
||||
MessageBox.Show("Import to windream was not successful." & vbCrLf &
|
||||
"Check the log for further information!",
|
||||
"Unexpected Error in windream-Stream:",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Error)
|
||||
Return False
|
||||
End If
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
MsgBox("Error in Indexing_File:" & vbCrLf & ex.Message, MsgBoxStyle.Critical)
|
||||
LOGGER.Error($"Handle_File Exception: {ex.Message}{vbCrLf}{ex.StackTrace}")
|
||||
Return False
|
||||
Finally
|
||||
Me.Cursor = Cursors.Default
|
||||
@@ -1113,37 +1294,63 @@ Public Class frmWM_IndexFile
|
||||
CURRENT_FILENAME = ""
|
||||
Me.VWDDINDEX_AUTOMTableAdapter.Connection.ConnectionString = MYDB_ECM.CurrentConnectionString
|
||||
chkMultiIndexer.Checked = False
|
||||
|
||||
' ── Multi-Indexing-Flags beim Formular-Load zurücksetzen ──
|
||||
LOGGER.Debug("=== FORM LOAD: Flags zurücksetzen ===")
|
||||
LOGGER.Debug($" VOR Reset: _multiIndexDecisionMade = {_multiIndexDecisionMade}, _multiIndexOverwriteExisting = {_multiIndexOverwriteExisting}")
|
||||
|
||||
_multiIndexDecisionMade = False
|
||||
_multiIndexOverwriteExisting = False
|
||||
_processedFileIds.Clear()
|
||||
|
||||
LOGGER.Debug($" NACH Reset: _multiIndexDecisionMade = {_multiIndexDecisionMade}, _multiIndexOverwriteExisting = {_multiIndexOverwriteExisting}")
|
||||
LOGGER.Debug($" ProcessedFileIds Count: {_processedFileIds.Count}")
|
||||
|
||||
LOGGER.Debug("frmWD_Index_Dokart_Load")
|
||||
chkdelete_origin.Checked = False
|
||||
chkdelete_origin.Visible = False
|
||||
Dim oReconnect = WMMOD.SessionReconnect
|
||||
'= New Windream(LOGCONFIG, False, WMDriveLetter, WMPATH_PREFIX, True, WM_SERVER, WM_USER, WM_USER_PW, WM_DOMAIN)
|
||||
|
||||
' ── WICHTIG: Prüfen, ob überhaupt Dateien vorhanden sind ──
|
||||
If CURRENT_TBPMO_FILES_USER Is Nothing OrElse CURRENT_TBPMO_FILES_USER.Rows.Count = 0 Then
|
||||
LOGGER.Info("frmWD_Index_Dokart_Load: Keine Dateien vorhanden - Formular wird geschlossen")
|
||||
Me.Close()
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
Dim oHandleType As String
|
||||
For Each oRow As DataRow In CURRENT_TBPMO_FILES_USER.Rows
|
||||
If oRow.Item("GUID") = CURRENT_FILEID Then
|
||||
CURRENT_FILENAME = oRow.Item("FILENAME2WORK")
|
||||
oHandleType = oRow.Item("HANDLE_TYPE")
|
||||
FILE_HASH = oRow.Item("FILE_HASH")
|
||||
Exit For ' ← Hinzugefügt: Schleife verlassen, wenn gefunden
|
||||
End If
|
||||
Next
|
||||
|
||||
If CURRENT_FILENAME = "" Then
|
||||
MsgBox("Chekc the Temp Files Table, as it seems to be empty!", MsgBoxStyle.Exclamation)
|
||||
LOGGER.Warn("Check the Temp Files Table, as it seems to be empty or CURRENT_FILEID not found!")
|
||||
MsgBox("Check the Temp Files Table, as it seems to be empty!", MsgBoxStyle.Exclamation)
|
||||
Me.Close() ' ← Formular schließen statt Exit Sub
|
||||
Exit Sub
|
||||
End If
|
||||
MULTIFILES = 0
|
||||
For Each row As DataRow In CURRENT_TBPMO_FILES_USER.Rows
|
||||
If row.Item("GUID") <> CURRENT_FILEID Then
|
||||
MULTIFILES += 1
|
||||
End If
|
||||
Next
|
||||
|
||||
' ── KORREKTUR: Zähle alle Dateien außer der aktuellen ──
|
||||
MULTIFILES = CURRENT_TBPMO_FILES_USER.Rows.Count - 1
|
||||
LOGGER.Debug($" MULTIFILES berechnet: Gesamt={CURRENT_TBPMO_FILES_USER.Rows.Count}, MULTIFILES={MULTIFILES}")
|
||||
|
||||
If MULTIFILES > 0 Then
|
||||
chkMultiIndexer.Text = "Multi-Indexing - Alle nachfolgenden Dateien (" & MULTIFILES & ") identisch indexieren"
|
||||
chkMultiIndexer.Visible = True
|
||||
LOGGER.Debug($" chkMultiIndexer: Visible=True, Text={chkMultiIndexer.Text}")
|
||||
Else
|
||||
chkMultiIndexer.Visible = False
|
||||
LOGGER.Debug(" chkMultiIndexer: Visible=False (keine weiteren Dateien)")
|
||||
End If
|
||||
|
||||
aktFiledropped = CURRENT_FILENAME
|
||||
txtFilepath.Text = aktFiledropped
|
||||
|
||||
If oHandleType = "@DROPFROMFSYSTEM@" Then
|
||||
droptype = "dragdrop file"
|
||||
chkdelete_origin.Visible = True
|
||||
@@ -1159,21 +1366,19 @@ Public Class frmWM_IndexFile
|
||||
ElseIf oHandleType = "SCAM" Then
|
||||
droptype = "scan"
|
||||
End If
|
||||
Dim sql = String.Format("SELECT FORMVIEW_ID, FORM_ID, FORM_TITLE, DOKUMENTTYPE_ID, DOKUMENTTYPE, PATH, SHORTNAME, OBJECT_TYPE, FW_DOCTYPE_ID FROM VWPMO_DOKUMENTTYPES WHERE (FORMVIEW_ID = {0}) " &
|
||||
"ORDER BY SEQUENCE, DOKUMENTTYPE", CURRENT_FORMVIEW_ID)
|
||||
DTVWPMO_DOKUMENTTYPES = MYDB_ECM.GetDatatable(sql)
|
||||
|
||||
'VWPMO_DOKUMENTTYPESTableAdapter.Connection.ConnectionString = MYDB_ECM.CurrentConnectionString
|
||||
'Me.VWPMO_DOKUMENTTYPESTableAdapter.Fill(Me.DD_DMSDataSet.VWPMO_DOKUMENTTYPES, CURRENT_FORMVIEW_ID)
|
||||
Dim sql = String.Format("SELECT FORMVIEW_ID, FORM_ID, FORM_TITLE, DOKUMENTTYPE_ID, DOKUMENTTYPE, PATH, SHORTNAME, OBJECT_TYPE, FW_DOCTYPE_ID FROM VWPMO_DOKUMENTTYPES WHERE (FORMVIEW_ID = {0}) " &
|
||||
"ORDER BY SEQUENCE, DOKUMENTTYPE", CURRENT_FORMVIEW_ID)
|
||||
DTVWPMO_DOKUMENTTYPES = MYDB_ECM.GetDatatable(sql)
|
||||
|
||||
CURRENT_REDUNDANT_FORM_ID = 0
|
||||
CURRENT_REDUNDANT_FORMVIEW_ID = 0
|
||||
If DTVWPMO_DOKUMENTTYPES.Rows.Count = 0 Then ' DD_DMSDataSet.VWPMO_DOKUMENTTYPES.Rows.Count = 0 Then
|
||||
If DTVWPMO_DOKUMENTTYPES.Rows.Count = 0 Then
|
||||
If CURRENT_ENTITY_REDUNDANT_ID <> 0 Then
|
||||
Dim FVID = MYDB_ECM.GetScalarValue(String.Format("SELECT GUID FROM TBPMO_FORM_VIEW WHERE FORM_ID = {0} and SCREEN_ID = 1", CURRENT_ENTITY_REDUNDANT_ID), True)
|
||||
'Me.VWPMO_DOKUMENTTYPESTableAdapter.Fill(Me.DD_DMSDataSet.VWPMO_DOKUMENTTYPES, FVID)
|
||||
If DTVWPMO_DOKUMENTTYPES.Rows.Count = 0 Then 'DD_DMSDataSet.VWPMO_DOKUMENTTYPES.Rows.Count = 0 Then
|
||||
If DTVWPMO_DOKUMENTTYPES.Rows.Count = 0 Then
|
||||
MsgBox("No documenttypes for the redundant entity configured either! Indexing is not possible!" & vbCrLf & "Please check the configuration!", MsgBoxStyle.Exclamation)
|
||||
Me.Close()
|
||||
Exit Sub
|
||||
Else
|
||||
LOGGER.Debug("Redundant EntityID: " & CURRENT_ENTITY_REDUNDANT_ID)
|
||||
@@ -1184,12 +1389,15 @@ Public Class frmWM_IndexFile
|
||||
End If
|
||||
Else
|
||||
MsgBox("No documenttypes for this entity configured! Indexing is not possible!" & vbCrLf & "Please check the configuration!", MsgBoxStyle.Exclamation)
|
||||
Me.Close()
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
LOGGER.Error($"Error in frmWD_Index_Dokart_Load: {ex.Message}")
|
||||
MsgBox("Error in frmWD_Index_Dokart_Load:" & vbCrLf & ex.Message, MsgBoxStyle.Critical)
|
||||
Me.Close()
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
@@ -1242,19 +1450,63 @@ Public Class frmWM_IndexFile
|
||||
|
||||
Private Sub frmWM_IndexFile_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
|
||||
Try
|
||||
' Alle nicht-verarbeiteten Dateien löschen (außer den erfolgreichen)
|
||||
Dim processedIds = String.Join(",", _processedFileIds)
|
||||
Dim oDelete = $"DELETE FROM TBPMO_FILES_USER WHERE USER_WORK = '{USER_USERNAME}' AND WORKED = 0"
|
||||
If _processedFileIds.Count > 0 Then
|
||||
oDelete &= $" AND GUID NOT IN ({processedIds})"
|
||||
' ── Multi-Indexing-Flags zurücksetzen ──
|
||||
_multiIndexDecisionMade = False
|
||||
_multiIndexOverwriteExisting = False
|
||||
|
||||
' ✅ WICHTIG: Liste NEU LADEN, bevor wir zählen!
|
||||
LOGGER.Debug("=== CLOSING: Lade aktuelle Dateiliste ===")
|
||||
ClassHelper.Create_USER_FILE_TABLE() ' ← Lädt CURRENT_TBPMO_FILES_USER NEU!
|
||||
|
||||
' ── Prüfen, ob noch Dateien zu verarbeiten sind ──
|
||||
If CURRENT_TBPMO_FILES_USER IsNot Nothing AndAlso CURRENT_TBPMO_FILES_USER.Rows.Count > 0 Then
|
||||
' Es gibt noch nicht verarbeitete Dateien → Benutzer fragen
|
||||
LOGGER.Debug($"TBPMO_FILES_USER: Formular wird geschlossen, aber {CURRENT_TBPMO_FILES_USER.Rows.Count} Dateien sind noch vorhanden.")
|
||||
|
||||
Dim msg As String
|
||||
Dim title As String
|
||||
If USER_LANGUAGE <> "de-DE" Then
|
||||
msg = $"There are still {CURRENT_TBPMO_FILES_USER.Rows.Count} unprocessed file(s)!" & vbCrLf & vbCrLf &
|
||||
"Do you really want to cancel the import?" & vbCrLf & vbCrLf &
|
||||
"YES → Cancel import and delete all pending files" & vbCrLf &
|
||||
"NO → Continue indexing"
|
||||
title = "Cancel Import?"
|
||||
Else
|
||||
msg = $"Es sind noch {CURRENT_TBPMO_FILES_USER.Rows.Count} nicht verarbeitete Datei(en) vorhanden!" & vbCrLf & vbCrLf &
|
||||
"Möchten Sie den Import wirklich abbrechen?" & vbCrLf & vbCrLf &
|
||||
"JA → Import abbrechen und alle ausstehenden Dateien löschen" & vbCrLf &
|
||||
"NEIN → Indexierung fortsetzen"
|
||||
title = "Import abbrechen?"
|
||||
End If
|
||||
|
||||
Dim result As MsgBoxResult = MessageBox.Show(msg, title, MessageBoxButtons.YesNo, MessageBoxIcon.Warning)
|
||||
|
||||
If result = MsgBoxResult.No Then
|
||||
' Benutzer will NICHT abbrechen → Formular-Schließen verhindern
|
||||
LOGGER.Info("Benutzer hat Abbruch verhindert - Formular bleibt offen")
|
||||
e.Cancel = True
|
||||
Exit Sub
|
||||
Else
|
||||
' Benutzer will abbrechen → Alle Dateien löschen
|
||||
LOGGER.Info("Benutzer hat Abbruch bestätigt - Lösche alle ausstehenden Dateien")
|
||||
Dim oDelete = $"DELETE FROM TBPMO_FILES_USER WHERE USER_WORK = '{USER_USERNAME}' AND WORKED = 0"
|
||||
MYDB_ECM.ExecuteNonQuery(oDelete)
|
||||
LOGGER.Info($"TBPMO_FILES_USER: {CURRENT_TBPMO_FILES_USER.Rows.Count} nicht-verarbeitete Einträge wurden gelöscht (User: {USER_USERNAME})")
|
||||
|
||||
' ── WICHTIG: DataTable leeren, damit Load-Event korrekt reagiert ──
|
||||
CURRENT_TBPMO_FILES_USER.Clear()
|
||||
LOGGER.Debug("CURRENT_TBPMO_FILES_USER wurde geleert")
|
||||
End If
|
||||
Else
|
||||
' Keine Dateien mehr vorhanden → Normal schließen, aufräumen
|
||||
LOGGER.Debug("Keine ausstehenden Dateien mehr vorhanden ")
|
||||
|
||||
End If
|
||||
MYDB_ECM.ExecuteNonQuery(oDelete)
|
||||
LOGGER.Info($"TBPMO_FILES_USER: Nicht-verarbeitete Einträge bereinigt (User: {USER_USERNAME})")
|
||||
|
||||
Catch ex As Exception
|
||||
LOGGER.Warn($"Fehler beim Bereinigen von TBPMO_FILES_USER (Closing): {ex.Message}")
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub frmWM_IndexFile_Closed(sender As Object, e As EventArgs) Handles Me.Closed
|
||||
Try
|
||||
Cursor = Cursors.Default
|
||||
@@ -1262,4 +1514,8 @@ Public Class frmWM_IndexFile
|
||||
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub chkMultiIndexer_CheckedChanged(sender As Object, e As EventArgs) Handles chkMultiIndexer.CheckedChanged
|
||||
LOGGER.Debug($"chkMultiIndexer.CheckedChanged: {chkMultiIndexer.Checked}")
|
||||
End Sub
|
||||
End Class
|
||||
Reference in New Issue
Block a user