Files
EDOKA_Batch/Archiv/EDKB14WS - Kopie/EDKB14WS/Service1.vb
2021-04-20 07:59:36 +02:00

211 lines
8.9 KiB
VB.net

Imports System.ServiceProcess
Imports System.Threading
Imports System.IO
Imports System.Reflection
Imports System.IO.File
Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports System.ComponentModel
Imports System
Imports System.SystemException
Public Class Service1
#Region "Deklarationen"
Dim Watch_Directory As String
Dim FileWatch As New FileSystemWatcher()
Dim LogFileOK As String = ""
Dim LogFileNOK As String = ""
Dim LogFileDebug As String = ""
Dim WithEvents WatchTimer As New Timers.Timer()
#End Region
Protected Overrides Sub OnStart(ByVal args() As String)
'FileOpen(1, "D:\tssettings\Edoka\edkb14\Logs\Test.txt", OpenMode.Output)
'WriteLine(1, "Start")
Globals.Param = New Parameters
Dim hh, mm, ss As String
hh = Param.Startzeit.Substring(0, 2)
mm = Param.Startzeit.Substring(3, 2)
ss = Param.Startzeit.Substring(6, 2)
Globals.Startzeit = New Date(Now.Year, Now.Month, Now.Day, hh, mm, ss)
Globals.Endzeit = Globals.Startzeit.AddHours(Param.Laufzeit)
LogFileOK = Param.LogDir + Format(Now, "ddMMyyyy hhmmss") + "_OK.txt"
LogFileNOK = Param.LogDir + Format(Now, "ddMMyyyy hhmmss") + "_NOK.txt"
LogFileDebug = Param.LogDir + Format(Now, "ddMMyyyy hhmmss") + "_Debug.txt"
Globals.LogEntry = New Log(LogFileOK, LogFileNOK, LogFileDebug, Param.DebugMode)
LogEntry.Writelog(Log.Logtype.Debug, "Start EDKB14")
LogEntry.Writelog(Log.Logtype.Debug, "Parameter:")
LogEntry.Writelog(Log.Logtype.Debug, "Connectionstring EDOKA: " + Param.connectionstring)
LogEntry.Writelog(Log.Logtype.Debug, "Connectionstring Journale: " + Param.connectionstring_Journale)
LogEntry.Writelog(Log.Logtype.Debug, "Anz Dokumente:" + Param.AnzDokumente.ToString)
LogEntry.Writelog(Log.Logtype.Debug, "WorkDir: " + Param.WorkDir)
LogEntry.Writelog(Log.Logtype.Debug, "DSRDir: " + Param.DSRDir)
LogEntry.Writelog(Log.Logtype.Debug, "DokType Briefvorlage: " + Param.DokTypeBriefvorlage.ToString)
LogEntry.Writelog(Log.Logtype.Debug, "PSDir: " + Param.PSDir)
LogEntry.Writelog(Log.Logtype.Debug, "PDFDir " + Param.PDFDir)
LogEntry.Writelog(Log.Logtype.Debug, "LogDir: " + Param.LogDir)
LogEntry.Writelog(Log.Logtype.Debug, "PS Printer :" + Param.PSPrinter)
LogEntry.Writelog(Log.Logtype.Debug, "Distiller In Out Dirs:" + Param.Use_PDFInOutDir.ToString)
LogEntry.Writelog(Log.Logtype.Debug, "EDKB08 Dir: " + Param.EDKB08Dir)
LogEntry.Writelog(Log.Logtype.Debug, "Wait Loop:" + Param.WaitLoop.ToString)
LogEntry.Writelog(Log.Logtype.Debug, "Oracle ConString: " + Param.OracleConnectionString)
LogEntry.Writelog(Log.Logtype.Debug, "Adresse aus Oracle: " + Param.AdresseAbOracle.ToString)
LogEntry.Writelog(Log.Logtype.Debug, "Startzeit: " + Param.Startzeit.ToString)
LogEntry.Writelog(Log.Logtype.Debug, "Laufzeit in Std: " + Param.Laufzeit.ToString)
LogEntry.Writelog(Log.Logtype.Debug, "Mail Durchlauf: " + Param.Mailadresse.ToString)
LogEntry.Writelog(Log.Logtype.Debug, "Timer-Intervall in Millisekunden: " + Param.TimerIntevall.ToString)
LogEntry.Writelog(Log.Logtype.Debug, "CheckOffice 2010: " + Param.CheckOffice2010.ToString)
Globals.LogData.Columns.Add("Timestamp")
Globals.LogData.Columns.Add("Partner")
Globals.LogData.Columns.Add("VV")
Globals.LogData.Columns.Add("Banklagernd")
Me.WatchTimer.Interval = Globals.Param.TimerIntevall
Me.WatchTimer.Enabled = True
LogEntry.Writelog(Log.Logtype.Debug, "Berechnete Endzeit:" + Globals.Endzeit.ToString)
LogEntry.Writelog(Log.Logtype.Debug, "------------------------------------------------------------")
Exit Sub
Me.Watch_Directory = Param.DSRDir
If Not Init_Filewatcher() Then
LogEntry.Writelog(Log.Logtype.NOK, "Filewacher konnte nicht initialisiert werden")
End If
LogEntry.Writelog(Log.Logtype.Debug, "Init Filewatcher durch")
Me.Start_Watching()
'FileClose(1)
End Sub
Protected Overrides Sub OnStop()
' Hier Code zum Ausführen erforderlicher Löschvorgänge zum Beenden des Dienstes einfügen.
End Sub
#Region "Filewatcher"
Private Function Init_Filewatcher() As Boolean
Try
FileWatch.Path = Watch_Directory
FileWatch.IncludeSubdirectories = False
FileWatch.Filter = "*.xml"
Return True
Catch ex As Exception
LogEntry.Writelog(Log.Logtype.NOK, "Init Filewacher: " + ex.Message)
Return False
End Try
End Function
'''<summary>Eventhandler des FileWatching-Objektes aktivieren</summary>
Private Function Start_Watching() As Boolean
Try
AddHandler FileWatch.Created, New FileSystemEventHandler(AddressOf OnFileEvent)
FileWatch.EnableRaisingEvents = True
LogEntry.Writelog(Log.Logtype.Debug, "Filewatch Event-Handler initialisiert: " + Me.Watch_Directory)
Return True
Catch ex As Exception
LogEntry.Writelog(Log.Logtype.Debug, "Fehler bei der Event-Initialisierung " + ex.Message)
Return False
End Try
End Function
Dim EventStopped As Boolean = False
'''<summary>Aktivitäten im Inputverzeichnis verarbeiten</summary>
'''<remarks>Wird eine Datei mit der Endung .IND angeliefert, wird der Eventhandler
'''gestoppt und die anstehenden Dokumente verarbeitet.
'''
'''Nach abgeschlossener Verarbeitung wird der Eventhandler wieder
'''eingeschaltet</remarks>
'''<param name="source"></param>
'''<param name="e"></param>
Private Sub OnFileEvent(ByVal source As Object, ByVal e As FileSystemEventArgs)
If EventStopped = True Then
LogEntry.Writelog(Log.Logtype.Debug, "Neue Datei " + e.FullPath)
LogEntry.Writelog(Log.Logtype.Debug, "Event Stoped")
End If
Exit Sub
If UCase(Microsoft.VisualBasic.Right(e.FullPath, 4)) = ".XML" Then
FileWatch.EnableRaisingEvents = False
EventStopped = True
LogEntry.Writelog(Log.Logtype.Debug, "Neue Datei " + e.FullPath)
'ServiceIcon.Text = "Working..."
Threading.Thread.Sleep(2000)
ModMain.Main()
EventStopped = False
FileWatch.EnableRaisingEvents = True
End If
End Sub
Public Function WriteToEventLog(ByVal Entry As String, _
Optional ByVal AppName As String = "EDKB14WS", _
Optional ByVal EventType As _
EventLogEntryType = EventLogEntryType.Information, _
Optional ByVal LogName As String = "EDKB14WS") As Boolean
'*************************************************************
'PURPOSE: Write Entry to Event Log using VB.NET
'PARAMETERS: Entry - Value to Write
' AppName - Name of Client Application. Needed
' because before writing to event log, you must
' have a named EventLog source.
' EventType - Entry Type, from EventLogEntryType
' Structure e.g., EventLogEntryType.Warning,
' EventLogEntryType.Error
' LogName: Name of Log (System, Application;
' Security is read-only) If you
' specify a non-existent log, the log will be
' created
'RETURNS: True if successful, false if not
'EXAMPLES:
'1. Simple Example, Accepting All Defaults
' WriteToEventLog "Hello Event Log"
'2. Specify EventSource, EventType, and LogName
' WriteToEventLog("Danger, Danger, Danger", "MyVbApp", _
' EventLogEntryType.Warning, "System")
'
'NOTE: EventSources are tightly tied to their log.
' So don't use the same source name for different
' logs, and vice versa
'******************************************************
Dim objEventLog As New EventLog()
Try
'Register the App as an Event Source
If Not objEventLog.SourceExists(AppName) Then
objEventLog.CreateEventSource(AppName, LogName)
End If
objEventLog.Source = AppName
'WriteEntry is overloaded; this is one
'of 10 ways to call it
objEventLog.WriteEntry(Entry, EventType)
Return True
Catch Ex As Exception
Return False
End Try
End Function
#End Region
Private Sub WatchTimer_Elap()
End Sub
Private Sub WatchTimer_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles WatchTimer.Elapsed
LogEntry.Writelog(Log.Logtype.Debug, "Timer Elapsed")
If Globals.In_Runtime Then
Me.WatchTimer.Enabled = False
ModMain.Main()
End If
Me.WatchTimer.Enabled = True
End Sub
End Class