Fileinterface/FileInterface/OnChangedProcess.cs
2026-04-03 10:22:54 +02:00

75 lines
2.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Diagnostics;
using System.IO;
using System.Threading;
using com.itac.mes.imsapi.client.dotnet;
// Stellen Sie sicher, dass Sie die richtigen Namensräume für Ihre IMSApi-Objekte importieren
using com.itac.mes.imsapi.domain;
using com.itac.mes.imsapi.domain.container;
public static class OnChangedProcess
{
public static void OnChanged(IMSApiSessionContextStruct sessionContext, object source, FileSystemEventArgs e)
{
string processpath = ConfigurationManager.AppSettings["PROCESS_FILES_PATH"];
string designator = ConfigurationManager.AppSettings["Designator"];
string mode = "MODE|" + ConfigurationManager.AppSettings["MODE"];
string panelmode = "PANEL_MODE|" + ConfigurationManager.AppSettings["PANEL_MODE"];
string processmode = "PROCESS_MODE|" + ConfigurationManager.AppSettings["PROCESS_MODE"];
string station = "ST|" + ConfigurationManager.AppSettings["StationNr"];
string filename = e.Name;
string filecontentprocess = "";
string parameters = "";
IIMSApiDotNet imsapi = null;
try
{
// Lesen der Datei
using (StreamReader r = new StreamReader(e.FullPath))
{
filecontentprocess = r.ReadToEnd();
}
// Zusammenfassen der Dateiinhalte mit Designator
List<string> lines = new List<string>(filecontentprocess.Split(new string[] { "\r\n" }, StringSplitOptions.None));
parameters = string.Join(designator, lines);
// Ihre IMSApi-Aufruflogik
string[] outargs;
string customErrorString;
int result = imsapi.customFunction(sessionContext, ConfigurationManager.AppSettings["CF_Processfiles"], new string[] { station, mode, panelmode, processmode, "FILENAME|" + filename, "RAW|" + parameters }, out outargs, out customErrorString);
// Protokollierung und Dateiverschiebung
HandleResultAndMoveFile(result, customErrorString, e.FullPath, processpath, filename);
}
catch (Exception ex)
{
Console.WriteLine($"Fehler bei der Verarbeitung der Datei {filename}: {ex.Message}");
}
}
private static void HandleResultAndMoveFile(int result, string customErrorString, string originalFilePath, string destinationPath, string filename)
{
// Protokollierung
LogResult(result, customErrorString);
// Verschieben der Datei in den processed_done Ordner
string newPath = Path.Combine(destinationPath, "processed_done", filename);
if (!Directory.Exists(Path.GetDirectoryName(newPath)))
{
Directory.CreateDirectory(Path.GetDirectoryName(newPath));
}
File.Move(originalFilePath, newPath);
}
private static void LogResult(int result, string customErrorString)
{
// Implementieren Sie Ihre Logik hier
}
}