Initial commit

This commit is contained in:
2021-04-20 07:59:36 +02:00
commit fb0247c874
21969 changed files with 11640044 additions and 0 deletions

View File

@@ -0,0 +1,408 @@
Imports System.Data.SqlClient
Imports System.IO
Imports System.Xml
Public NotInheritable Class RCVerarbeitung
Inherits MarshalByRefObject
Implements EDKB07Verarbeitung.EDKB07Verarbeitung.IEDKB07
Dim part As Integer = -1
Public Sub GetDocBLPDF(ByVal DruckjobID As Integer) Implements EDKB07Verarbeitung.EDKB07Verarbeitung.IEDKB07.GetDocBLPDF
''RGL 29.1.08 Zusätzlicher Textlog für jeden einzelnen Schritt
'Globals.LogFileName = CStr(DruckjobID)
Dim filetimestamp As String = Format(Now, "yyyyMMddHHmmss")
' Globals.WriteTxtLog("Start Klasse RCVerarbeitung, Methode GetDocBLPDF, Remotaufruf ist erfolgt, schreibe Journaleintrag Start")
Dim log As New clsLog
log.InsertJournale("EDKB07: Start Remotingaufruf " & CType(Now, String) & " DruckjobID: " & DruckjobID, clsLog.Enum_InfoTyp.Keine)
'20071002 RGL Workaround
' Globals.WriteTxtLog("Aufruf Word und Distiller vorbereiten (Workaround)")
PrepareWordandDistiller()
Dim userid As String = ""
Dim timestamp As String = ""
Dim erstelltam As Date
' Globals.WriteTxtLog("Vorbereitung SQL Verbindung")
Dim SqlConn As New SqlConnection
SqlConn.ConnectionString = Globals.sConnectionString
Dim SqlCmd As New SqlCommand
Dim DR As SqlDataReader
'Daten zu Druckjob aus DB lesen
SqlCmd.CommandText = "SP_EDEX_BL_GET_DRUCK_Parameter"
SqlCmd.CommandType = CommandType.StoredProcedure
SqlCmd.Parameters.AddWithValue("@ID", DruckjobID)
SqlCmd.Parameters.AddWithValue("@filetimestamp", filetimestamp)
SqlCmd.Connection = SqlConn
' Globals.WriteTxtLog("Vor SP_EDEX_BL_GET_DRUCK_Parameter")
Try
SqlConn.Open()
' Globals.WriteTxtLog("SQL Verbindung geöffnet")
DR = SqlCmd.ExecuteReader()
' Globals.WriteTxtLog("SP_EDEX_BL_GET_DRUCK_Parameter ausgeführt")
While DR.Read
userid = DR.Item("userid")
userid = UCase(userid)
' Globals.WriteTxtLog("Resultat erhalten, UserID = " & userid)
erstelltam = DR.Item("erstellt_am")
End While
SqlConn.Close()
' Globals.WriteTxtLog("SQL Verbindung geschlossen")
SqlCmd.Parameters.Clear()
'Timestamp für den Dateinamen zusammenstellen
timestamp = filetimestamp
Catch ex As Exception
log.InsertJournale("EDKB07: Fehler beim Auslesen von UserID und Erstelltam-Datum " & CType(Now, String) & " Error: " & ex.Message & " DruckjobID: " & DruckjobID, clsLog.Enum_InfoTyp.Warnung)
End Try
' Globals.WriteTxtLog("Auslesen UserID und Erstellam-Datum fertig")
If Not Globals.UseTestMode Then
' Globals.WriteTxtLog("Nicht im Testmodus")
Dim anzdok As Integer = 0
Try
' Globals.WriteTxtLog("Vor CreatePrintjob")
anzdok = Create_Printjob(DruckjobID, timestamp, userid)
If anzdok > 0 Then
'log.InsertJournale("EDKB07: Parameterfile per DTO an Cold übergeben " & CType(Now, String) & " DruckjobID: " & DruckjobID, clsLog.Enum_InfoTyp.Keine)
' Globals.WriteTxtLog("Paramaterfile wurde an Cold übergeben")
Else
'log.InsertJournale("EDKB07: Parameterfile nicht an COLD übermittelt - keine Daten " & CType(Now, String) & " DruckjobID: " & DruckjobID, clsLog.Enum_InfoTyp.Keine)
' Globals.WriteTxtLog("Paramaterfile wurde NICHT an Cold übergeben da keine Daten gefunden")
End If
' Status setzen
' Globals.WriteTxtLog("Start Status setzen")
SqlCmd.CommandText = "SP_EDEX_BL_UPDATE_DRUCK_StatusByID"
SqlCmd.CommandType = CommandType.StoredProcedure
SqlCmd.Parameters.AddWithValue("@Status", 1)
SqlCmd.Parameters.AddWithValue("@ID", DruckjobID)
SqlCmd.Parameters.AddWithValue("@AnzParts", part)
SqlCmd.Connection = SqlConn
' Globals.WriteTxtLog("SQL Verbindung wird geöffnet")
SqlConn.Open()
' Globals.WriteTxtLog("SQL Verbindung ist geöffnet")
SqlCmd.ExecuteNonQuery()
' Globals.WriteTxtLog("SP_EDEX_BL_UPDATE_DRUCK_StatusByID wurde ausgeführt, Status=1, Druckjob=" & DruckjobID & ", Anzahl Teile=" & part)
SqlConn.Close()
' Globals.WriteTxtLog("SQL Verbindung ist geschlossen")
SqlCmd.Parameters.Clear()
Catch ex As Exception
' Globals.WriteTxtLog("Fehler in Klasse RCVerarbeitung, Methode GetDocBLPDF, catch erreicht")
log.InsertJournale("EDKB07: Fehler bei Übergabe des Parameterfiles an Cold " & CType(Now, String) & " Error: " & ex.Message & " DruckjobID: " & DruckjobID, clsLog.Enum_InfoTyp.Warnung)
'Status auf 'abvereckt' (3) ändern
'Globals.WriteTxtLog("vor Status auf 3 ändern")
SqlCmd.CommandText = "SP_EDEX_BL_UPDATE_DRUCK_StatusByID"
SqlCmd.CommandType = CommandType.StoredProcedure
SqlCmd.Parameters.AddWithValue("@Status", 3)
SqlCmd.Parameters.AddWithValue("@ID", DruckjobID)
SqlCmd.Parameters.AddWithValue("@AnzParts", part)
SqlCmd.Connection = SqlConn
' Globals.WriteTxtLog("SQL Verbindung wird geöffnet")
SqlConn.Open()
' Globals.WriteTxtLog("SQL Verbindung ist geöffnet")
SqlCmd.ExecuteNonQuery()
' Globals.WriteTxtLog("SP_EDEX_BL_UPDATE_DRUCK_StatusByID ausgeführt")
SqlConn.Close()
' Globals.WriteTxtLog("SQL Verbindung ist geschlossen")
SqlCmd.Parameters.Clear()
End Try
Else
' Globals.WriteTxtLog("Testmodus")
Dim owriter As System.IO.StreamWriter
' Globals.WriteTxtLog("Schreibe Information für Cold an andere Stelle: " & Globals.TestParamFilePath)
owriter = File.CreateText(Globals.TestParamFilePath & "\" & userid & "00" & timestamp & ".txt")
owriter.WriteLine("Test BL-Dokumentanforderung")
owriter.Close()
' Globals.WriteTxtLog("Ende Testmodus")
End If
' Globals.WriteTxtLog("Ende Methode GetDocBLPDF")
End Sub
Private Function Create_Printjob(ByVal druckjobid As Integer, ByVal timestamp As String, ByVal userid As String) As Integer
' Globals.WriteTxtLog("Start Methode Create_Printjob")
Dim log As New clsLog
Dim data As New DataTable
Dim Partno As String = ""
data = get_dokumente(druckjobid)
Dim anzdok As Integer = data.Rows.Count
Dim snrpar00 As String = ""
Dim c As Integer = 0
Dim i As Integer
Dim NewFile As Boolean = True
Dim owriter As System.IO.StreamWriter = Nothing
Try
For i = 0 To data.Rows.Count - 1
If NewFile Then
NewFile = False
part = part + 1
Partno = LTrim(Str(part))
While Len(Partno) < 2
Partno = "0" + Partno
End While
'Je nachdem ob das System im Testmodus läuft, das Parameterfile im entsprechenden Pfad ablegen
If Globals.UseTestMode Then
owriter = File.CreateText(Globals.TestParamFilePath & "\" & userid & Partno & timestamp & ".123")
Else
owriter = File.CreateText(Globals.ParamFileOutputPath & "\" & userid & Partno & timestamp & ".123")
End If
End If
Try
snrpar00 = data.Rows(i).Item("nrpar00")
Catch ex As Exception
m_log.Log("RCVerarbeitung:Create_Printjob:" + ex.Message + ex.StackTrace, Common.Common.JournalEntryType.Warning)
End Try
''''NOVA!!
'While Len(snrpar00) < 9
'snrpar00 = "0" + snrpar00
'End While
If data.Rows(i).Item("Typ") = 3 Then
'HOST ALT
If Len(snrpar00) > 8 Then
snrpar00 = "'" + snrpar00 + "'"
owriter.WriteLine(Globals.DruckjobParameter & " [-o Dok" & Format(i, "D5") & ".pdf] [-i where NRPAR00 = " & snrpar00 & " and NRDOK00 = '" & data.Rows(i).Item("dokumentid") & "']")
Else
'HOST NEU
snrpar00 = "'" + snrpar00 + "'"
owriter.WriteLine(Globals.DruckjobParameterAVQ & " [-o Dok" & Format(i, "D5") & ".pdf] [-i where BPKEYNRINHAB = " & snrpar00 & " and MAILINGID = '" & data.Rows(i).Item("dokumentid") & "']")
End If
Else
snrpar00 = "'" + snrpar00 + "'"
owriter.WriteLine(Globals.DruckjobParameter & " [-o Dok" & Format(i, "D5") & ".pdf] [-i where NRPAR00 = " & snrpar00 & " and NRDOC00 = '" & data.Rows(i).Item("dokumentid") & "']")
End If
c = c + 1
If c = Globals.DokPerPackage Then
If part > 0 Then insert_part(druckjobid, part, c)
c = 0
NewFile = True
owriter.Close()
'send_file(userid, timestamp, Partno, druckjobid)
End If
Next
owriter.Close()
If NewFile = False Then
If part > 0 Then insert_part(druckjobid, part, c)
'send_file(userid, timestamp, Partno, druckjobid)
data.Dispose()
End If
Catch ex As Exception
log.InsertJournale("EDKB07: Fehler bei Create_Printjob " & CType(Now, String) & " Error: " & ex.Message & " DruckjobID: " & druckjobid, clsLog.Enum_InfoTyp.Warnung)
Finally
Try
Dim partRename As Integer
partRename = part
While partRename >= 0
Partno = LTrim(Str(partRename))
While Len(Partno) < 2
Partno = "0" + Partno
End While
If Globals.UseTestMode Then
Rename(Globals.TestParamFilePath & "\" & userid & Partno & timestamp & ".123", Globals.TestParamFilePath & "\" & userid & Partno & timestamp & ".txt")
Else
Rename(Globals.ParamFileOutputPath & "\" & userid & Partno & timestamp & ".123", Globals.TestParamFilePath & "\" & userid & Partno & timestamp & ".txt")
End If
partRename = partRename - 1
End While
Catch ex As Exception
m_log.Log("EDKB07: Fehler beim umbenennen " & CType(Now, String) & " Error: " & ex.Message & " DruckjobID: " & druckjobid, clsLog.Enum_InfoTyp.Warnung)
End Try
End Try
Return anzdok
End Function
'Private Sub send_file(ByVal userid As String, ByVal timestamp As String, ByVal partno As String, ByVal druckjobid As Integer)
' Dim log As New clsLog
' If Not Globals.UseTestMode Then
' Try
' Dim owriter As System.IO.StreamWriter
' owriter = File.CreateText(Globals.CMDFilePath & "\" & userid & partno & timestamp & ".cmd")
' Dim cmd1 As String
' cmd1 = Globals.CMDFile1Content.Replace("xfilenamex", userid & partno & timestamp & ".txt")
' owriter.WriteLine(cmd1)
' ' cmd2 = Globals.CMDFile2Content.Replace("xfilenamex", userid & timestamp & ".txt")
' ' owriter.WriteLine(cmd2)
' owriter.Close()
' owriter = Nothing
' Dim i As Integer
' i = Shell(Globals.CMDFilePath & "\" & userid & partno & timestamp & ".cmd", AppWinStyle.NormalFocus, True, 120000)
' Threading.Thread.Sleep(3000)
' 'File.Delete(Globals.CMDFilePath & "\" & userid & timestamp & ".cmd")
' log.InsertJournale("EDKB07: Parameterfile per DTO an Cold übergeben " & CType(Now, String) & " DruckjobID: " & druckjobid, clsLog.Enum_InfoTyp.Keine)
' Catch ex As Exception
' log.InsertJournale("EDKB07: Fehler bei Übergabe des Parameterfiles an Cold " & CType(Now, String) & " Error: " & ex.Message & " DruckjobID: " & druckjobid, clsLog.Enum_InfoTyp.Warnung)
' End Try
' End If
'End Sub
Private Function insert_part(ByVal druckjobid As Integer, ByVal part As Integer, ByVal anzdok As Integer) As DataTable
Dim scmCmdToExecute As SqlCommand = New SqlCommand
scmCmdToExecute.CommandText = "dbo.sp_edex_bl_insert_druckjobpart"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
Dim dtToReturn As DataTable = New DataTable
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.Parameters.Add(New SqlParameter("@druckjobid", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, druckjobid))
scmCmdToExecute.Parameters.Add(New SqlParameter("@partno", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, part))
scmCmdToExecute.Parameters.Add(New SqlParameter("@anzahl_dokumente", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, anzdok))
scmCmdToExecute.Connection = Globals.conn_edoka.scoDBConnection
Globals.conn_edoka.OpenConnection()
Try
sdaAdapter.Fill(dtToReturn)
Return dtToReturn
Catch ex As Exception
' // some error occured. Bubble it to caller and encapsulate Exception object
Throw New Exception("Dokumenterstellung::Generic_Select::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
Globals.conn_edoka.CloseConnection(True)
End Try
End Function
Private Function get_dokumente(ByVal druckjobid As Integer) As DataTable
Dim scmCmdToExecute As SqlCommand = New SqlCommand
scmCmdToExecute.CommandText = "dbo.SP_EDEX_BL_GET_DRUCK_Dokumente"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
Dim dtToReturn As DataTable = New DataTable
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.Parameters.Add(New SqlParameter("@id", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, druckjobid))
scmCmdToExecute.Connection = Globals.conn_edoka.scoDBConnection
Globals.conn_edoka.OpenConnection()
Try
sdaAdapter.Fill(dtToReturn)
Return dtToReturn
Catch ex As Exception
' // some error occured. Bubble it to caller and encapsulate Exception object
Throw New Exception("Dokumenterstellung::Generic_Select::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
Globals.conn_edoka.CloseConnection(True)
End Try
End Function
Public Sub PrintJobF(ByVal alnr As Integer, ByVal partno As Integer) Implements EDKB07Verarbeitung.EDKB07Verarbeitung.IEDKB07.PrintJobF
Print_Docs(alnr, partno)
End Sub
Public Sub PrepareWordandDistiller()
If Globals.Office2010 = True Then Exit Sub
'20071002 RGL
Dim log As New clsLog
Dim proc As System.Diagnostics.Process
Dim plist() As Process
Dim counter1 As Integer = 0
'1. Suche ob bereits ein anderer EDKB07 Prozess läuft.
plist = Process.GetProcessesByName(Globals.OwnName)
For Each proc In plist
counter1 = counter1 + 1
If counter1 > 1 Then
Exit Sub
End If
Next
'2. Suche nach allen Word Instanzen die länger als X Minuten laufen, diese werden beendet.
plist = Process.GetProcessesByName(Globals.ProcessToKill)
For Each proc In plist
Try
If (proc.StartTime < (DateAdd(DateInterval.Minute, -CInt(Globals.ProcessIdleTime), Now()))) Then
log.InsertJournale("EDKB07: Beenden Prozess: " + CStr(proc.ProcessName), clsLog.Enum_InfoTyp.Keine)
proc.Kill()
End If
Catch ex As Exception
log.InsertJournale("EDKB07: Fehler beim Killen von Programminstanz", clsLog.Enum_InfoTyp.Keine)
End Try
Next
'3. Prüfen ob andere Batches laufen, die den Distiller brauchen (EDKB09)
' - Suche nach Prozessname
If Trim(Globals.OtherBatch1) <> "" Then
plist = Process.GetProcessesByName(Globals.OtherBatch1)
For Each proc In plist
Exit Sub
Next
End If
If Trim(Globals.OtherBatch2) <> "" Then
plist = Process.GetProcessesByName(Globals.OtherBatch2)
For Each proc In plist
Exit Sub
Next
End If
If Trim(Globals.OtherBatch3) <> "" Then
plist = Process.GetProcessesByName(Globals.OtherBatch3)
For Each proc In plist
Exit Sub
Next
End If
'20071002 Distiller neu Starten
If Trim(Globals.NameDistiller) <> "" Then
plist = Process.GetProcessesByName(Globals.NameDistiller)
For Each proc In plist
Try
log.InsertJournale("EDKB07: Distiller Close", clsLog.Enum_InfoTyp.Information)
proc.Close() 'Variante1 mit CLOSE
Threading.Thread.Sleep(2000)
Catch ex As Exception
log.InsertJournale("EDKB07: Fehler beim Regulären Beenden der Distiller Instanz", clsLog.Enum_InfoTyp.Keine)
End Try
Next
End If
If Trim(Globals.NameDistiller) <> "" Then
plist = Process.GetProcessesByName(Globals.NameDistiller)
For Each proc In plist
Try
log.InsertJournale("EDKB07: Distiller Kill", clsLog.Enum_InfoTyp.Keine)
proc.Kill() 'Variante 2 mit KILL
Catch ex As Exception
log.InsertJournale("EDKB07: Fehler beim Killen der Distiller Instanz", clsLog.Enum_InfoTyp.Keine)
End Try
Next
End If
Try
If UCase(Globals.OpenModeDistiller) = "TRUE" Then
log.InsertJournale("EDKB07: Distiller Start", clsLog.Enum_InfoTyp.Keine)
Shell(Globals.PathDistiller, AppWinStyle.NormalNoFocus, True)
Else
log.InsertJournale("EDKB07: Distiller Start", clsLog.Enum_InfoTyp.Keine)
Shell(Globals.PathDistiller, AppWinStyle.NormalNoFocus, False)
End If
Catch ex As Exception
log.InsertJournale("EDKB07: Fehler beim Start von Distiller", clsLog.Enum_InfoTyp.Keine)
End Try
End Sub
#Region " Cold-Mehrfachdruck"
Public Sub GetColdMehrfachDruck(ByVal sTGNummer As String, ByVal iJobID As Integer, ByVal colData As Object, ByRef binOutput As Object) Implements EDKB07Verarbeitung.EDKB07Verarbeitung.IEDKB07.GetColdMehrfachDruck
'Aufbereiten des Mehrfachdrucks
Dim log As New clsLog
Try
log.InsertJournale("EDKB07: Mehrfachdruck von " & sTGNummer & " angefordert " & CType(Now, String) + " DruckjobID: " & iJobID, clsLog.Enum_InfoTyp.Keine)
StartMehrfachDruck(sTGNummer, iJobID, colData, binOutput)
log.InsertJournale("EDKB07: Mehrfachdruck von " & sTGNummer & " angeschlossen " & CType(Now, String) + " DruckjobID: " & iJobID, clsLog.Enum_InfoTyp.Keine)
Catch ex As Exception
log.InsertJournale("EDKB07: Mehrfachdruck Allg. Fehler: " & CType(Now, String) & " Error: " & ex.Message & " DruckjobID: " & iJobID, clsLog.Enum_InfoTyp.Warnung)
End Try
End Sub
#End Region
End Class