Compare commits
No commits in common. "05-22-a" and "master" have entirely different histories.
@ -121,7 +121,6 @@ dotnet_diagnostic.IDE0290.severity = none # Use primary constructor [Distance]cs
|
|||||||
dotnet_diagnostic.IDE0300.severity = none # IDE0300: Collection initialization can be simplified
|
dotnet_diagnostic.IDE0300.severity = none # IDE0300: Collection initialization can be simplified
|
||||||
dotnet_diagnostic.IDE0301.severity = none #IDE0301: Collection initialization can be simplified
|
dotnet_diagnostic.IDE0301.severity = none #IDE0301: Collection initialization can be simplified
|
||||||
dotnet_diagnostic.IDE0305.severity = none # IDE0305: Collection initialization can be simplified
|
dotnet_diagnostic.IDE0305.severity = none # IDE0305: Collection initialization can be simplified
|
||||||
dotnet_diagnostic.MSTEST0037.severity = error # MSTEST0037: Use proper 'Assert' methods
|
|
||||||
dotnet_diagnostic.SYSLIB1045.severity = none # SYSLIB1045: diagnostics for regex source generation
|
dotnet_diagnostic.SYSLIB1045.severity = none # SYSLIB1045: diagnostics for regex source generation
|
||||||
dotnet_naming_rule.abstract_method_should_be_pascal_case.severity = warning
|
dotnet_naming_rule.abstract_method_should_be_pascal_case.severity = warning
|
||||||
dotnet_naming_rule.abstract_method_should_be_pascal_case.style = pascal_case
|
dotnet_naming_rule.abstract_method_should_be_pascal_case.style = pascal_case
|
||||||
|
20
Adaptation/.vscode/tasks.json
vendored
20
Adaptation/.vscode/tasks.json
vendored
@ -82,26 +82,6 @@
|
|||||||
"command": "code ../DEP08SIASM.csproj",
|
"command": "code ../DEP08SIASM.csproj",
|
||||||
"problemMatcher": []
|
"problemMatcher": []
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"label": "Readme",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "code ../README.md",
|
|
||||||
"problemMatcher": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "File-Folder-Helper AOT s X Day-Helper-2025-03-20",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "L:/DevOps/Mesa_FI/File-Folder-Helper/bin/Release/net8.0/win-x64/publish/File-Folder-Helper.exe",
|
|
||||||
"args": [
|
|
||||||
"s",
|
|
||||||
"X",
|
|
||||||
"L:/DevOps/EAF-Mesa-Integration/DEP08SIASM",
|
|
||||||
"Day-Helper-2025-03-20",
|
|
||||||
"false",
|
|
||||||
"4"
|
|
||||||
],
|
|
||||||
"problemMatcher": []
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"label": "Git Config",
|
"label": "Git Config",
|
||||||
"type": "shell",
|
"type": "shell",
|
||||||
|
@ -69,7 +69,7 @@
|
|||||||
<PackageReference Include="System.Text.Json" Version="9.0.0" />
|
<PackageReference Include="System.Text.Json" Version="9.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Infineon.Mesa.PDF.Text.Stripper" Version="4.8.0.2"><NoWarn>NU1701</NoWarn></PackageReference>
|
<PackageReference Include="Infineon.Mesa.PDF.Text.Stripper" Version="4.8.0.1"><NoWarn>NU1701</NoWarn></PackageReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Infineon.Yoda.DotNetCore" Version="5.4.3" />
|
<PackageReference Include="Infineon.Yoda.DotNetCore" Version="5.4.3" />
|
||||||
|
@ -9,7 +9,7 @@ namespace Adaptation.FileHandlers;
|
|||||||
public class CellInstanceConnectionName
|
public class CellInstanceConnectionName
|
||||||
{
|
{
|
||||||
|
|
||||||
internal static IFileRead Get(ISMTP smtp, Dictionary<string, string> fileParameter, string cellInstanceName, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList<ModelObjectParameterDefinition> modelObjectParameters, string equipmentDictionaryName, Dictionary<string, List<long>> dummyRuns, Dictionary<long, List<Shared.Metrology.WS.Results>> staticRuns, bool useCyclicalForDescription, int? connectionCount)
|
internal static IFileRead Get(ISMTP smtp, Dictionary<string, string> fileParameter, string cellInstanceName, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList<ModelObjectParameterDefinition> modelObjectParameters, string equipmentDictionaryName, Dictionary<string, List<long>> dummyRuns, Dictionary<long, List<string>> staticRuns, bool useCyclicalForDescription, int? connectionCount)
|
||||||
{
|
{
|
||||||
IFileRead result = cellInstanceConnectionName switch
|
IFileRead result = cellInstanceConnectionName switch
|
||||||
{
|
{
|
||||||
|
@ -20,7 +20,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
private readonly string _FFmpegFileName;
|
private readonly string _FFmpegFileName;
|
||||||
private readonly string _StaticFileServer;
|
private readonly string _StaticFileServer;
|
||||||
|
|
||||||
public FileRead(ISMTP smtp, Dictionary<string, string> fileParameter, string cellInstanceName, int? connectionCount, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList<ModelObjectParameterDefinition> modelObjectParameters, string equipmentDictionaryName, Dictionary<string, List<long>> dummyRuns, Dictionary<long, List<Shared.Metrology.WS.Results>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
|
public FileRead(ISMTP smtp, Dictionary<string, string> fileParameter, string cellInstanceName, int? connectionCount, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList<ModelObjectParameterDefinition> modelObjectParameters, string equipmentDictionaryName, Dictionary<string, List<long>> dummyRuns, Dictionary<long, List<string>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
|
||||||
base(new Description(), false, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
base(new Description(), false, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
||||||
{
|
{
|
||||||
_MinFileLength = 10;
|
_MinFileLength = 10;
|
||||||
|
@ -18,7 +18,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
private readonly string _MonitorApplicationSite;
|
private readonly string _MonitorApplicationSite;
|
||||||
private readonly string _MonitorApplicationResource;
|
private readonly string _MonitorApplicationResource;
|
||||||
|
|
||||||
public FileRead(ISMTP smtp, Dictionary<string, string> fileParameter, string cellInstanceName, int? connectionCount, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList<ModelObjectParameterDefinition> modelObjectParameters, string equipmentDictionaryName, Dictionary<string, List<long>> dummyRuns, Dictionary<long, List<Shared.Metrology.WS.Results>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
|
public FileRead(ISMTP smtp, Dictionary<string, string> fileParameter, string cellInstanceName, int? connectionCount, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList<ModelObjectParameterDefinition> modelObjectParameters, string equipmentDictionaryName, Dictionary<string, List<long>> dummyRuns, Dictionary<long, List<string>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
|
||||||
base(new Description(), false, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
base(new Description(), false, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
||||||
{
|
{
|
||||||
_MinFileLength = 10;
|
_MinFileLength = 10;
|
||||||
@ -125,15 +125,15 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime)
|
private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime)
|
||||||
{
|
{
|
||||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
||||||
ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath);
|
Tuple<string, string[], string[]> pdsf = ProcessDataStandardFormat.GetLogisticsColumnsAndBody(reportFullPath);
|
||||||
_Logistics = new Logistics(reportFullPath, processDataStandardFormat);
|
_Logistics = new Logistics(reportFullPath, pdsf.Item1);
|
||||||
SetFileParameterLotIDToLogisticsMID();
|
SetFileParameterLotIDToLogisticsMID();
|
||||||
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(processDataStandardFormat);
|
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(pdsf);
|
||||||
List<jpeg.Description> descriptions = jpeg.ProcessData.GetDescriptions(jsonElements);
|
List<jpeg.Description> descriptions = jpeg.ProcessData.GetDescriptions(jsonElements);
|
||||||
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
||||||
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
||||||
SendData(dateTime, descriptions);
|
SendData(dateTime, descriptions);
|
||||||
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics[0]), tests, jsonElements, new List<FileInfo>());
|
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(pdsf.Item1, tests, jsonElements, new List<FileInfo>());
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
private readonly string _MemoryPath;
|
private readonly string _MemoryPath;
|
||||||
private readonly HttpClient _HttpClient;
|
private readonly HttpClient _HttpClient;
|
||||||
|
|
||||||
public FileRead(ISMTP smtp, Dictionary<string, string> fileParameter, string cellInstanceName, int? connectionCount, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList<ModelObjectParameterDefinition> modelObjectParameters, string equipmentDictionaryName, Dictionary<string, List<long>> dummyRuns, Dictionary<long, List<Shared.Metrology.WS.Results>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
|
public FileRead(ISMTP smtp, Dictionary<string, string> fileParameter, string cellInstanceName, int? connectionCount, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList<ModelObjectParameterDefinition> modelObjectParameters, string equipmentDictionaryName, Dictionary<string, List<long>> dummyRuns, Dictionary<long, List<string>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
|
||||||
base(new Description(), false, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
base(new Description(), false, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
||||||
{
|
{
|
||||||
_MinFileLength = 10;
|
_MinFileLength = 10;
|
||||||
@ -130,15 +130,15 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime)
|
private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime)
|
||||||
{
|
{
|
||||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
||||||
ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath);
|
Tuple<string, string[], string[]> pdsf = ProcessDataStandardFormat.GetLogisticsColumnsAndBody(reportFullPath);
|
||||||
_Logistics = new Logistics(reportFullPath, processDataStandardFormat);
|
_Logistics = new Logistics(reportFullPath, pdsf.Item1);
|
||||||
SetFileParameterLotIDToLogisticsMID();
|
SetFileParameterLotIDToLogisticsMID();
|
||||||
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(processDataStandardFormat);
|
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(pdsf);
|
||||||
List<jpeg.Description> descriptions = jpeg.ProcessData.GetDescriptions(jsonElements);
|
List<jpeg.Description> descriptions = jpeg.ProcessData.GetDescriptions(jsonElements);
|
||||||
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
||||||
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
||||||
SendData(dateTime, descriptions);
|
SendData(dateTime, descriptions);
|
||||||
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics[0]), tests, jsonElements, new List<FileInfo>());
|
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(pdsf.Item1, tests, jsonElements, new List<FileInfo>());
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
protected readonly Dictionary<string, string> _Reactors;
|
protected readonly Dictionary<string, string> _Reactors;
|
||||||
protected readonly List<Tuple<string, Color[]>> _ColorCollections;
|
protected readonly List<Tuple<string, Color[]>> _ColorCollections;
|
||||||
|
|
||||||
public FileRead(ISMTP smtp, Dictionary<string, string> fileParameter, string cellInstanceName, int? connectionCount, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList<ModelObjectParameterDefinition> modelObjectParameters, string equipmentDictionaryName, Dictionary<string, List<long>> dummyRuns, Dictionary<long, List<Shared.Metrology.WS.Results>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
|
public FileRead(ISMTP smtp, Dictionary<string, string> fileParameter, string cellInstanceName, int? connectionCount, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList<ModelObjectParameterDefinition> modelObjectParameters, string equipmentDictionaryName, Dictionary<string, List<long>> dummyRuns, Dictionary<long, List<string>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
|
||||||
base(new Description(), true, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
base(new Description(), true, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
||||||
{
|
{
|
||||||
_MinFileLength = 36790;
|
_MinFileLength = 36790;
|
||||||
|
@ -35,6 +35,7 @@ public class ProcessData : IProcessData
|
|||||||
public ProcessData(IFileRead fileRead, Logistics logistics, List<FileInfo> fileInfoCollection, int startX, int startY, int endX, int endY, int offSetX, int offSetY, Size size, List<Tuple<string, Color[]>> colorCollections)
|
public ProcessData(IFileRead fileRead, Logistics logistics, List<FileInfo> fileInfoCollection, int startX, int startY, int endX, int endY, int offSetX, int offSetY, Size size, List<Tuple<string, Color[]>> colorCollections)
|
||||||
{
|
{
|
||||||
JobID = logistics.JobID;
|
JobID = logistics.JobID;
|
||||||
|
fileInfoCollection.Clear();
|
||||||
_Details = new List<object>();
|
_Details = new List<object>();
|
||||||
MesEntity = logistics.MesEntity;
|
MesEntity = logistics.MesEntity;
|
||||||
_Log = LogManager.GetLogger(typeof(ProcessData));
|
_Log = LogManager.GetLogger(typeof(ProcessData));
|
||||||
@ -112,13 +113,9 @@ public class ProcessData : IProcessData
|
|||||||
if (description.Test != (int)tests[i])
|
if (description.Test != (int)tests[i])
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
}
|
}
|
||||||
FileInfo fileInfo = new($"{logistics.ReportFullPath}.descriptions.json");
|
|
||||||
List<Description> fileReadDescriptions = (from l in descriptions select (Description)l).ToList();
|
List<Description> fileReadDescriptions = (from l in descriptions select (Description)l).ToList();
|
||||||
string json = JsonSerializer.Serialize(fileReadDescriptions, fileReadDescriptions.GetType());
|
string json = JsonSerializer.Serialize(fileReadDescriptions, fileReadDescriptions.GetType());
|
||||||
File.WriteAllText(fileInfo.FullName, json);
|
JsonElement[] jsonElements = JsonSerializer.Deserialize<JsonElement[]>(json);
|
||||||
File.SetLastWriteTime(fileInfo.FullName, logistics.DateTimeFromSequence);
|
|
||||||
fileInfoCollection.Add(fileInfo);
|
|
||||||
JsonElement[] jsonElements = JsonSerializer.Deserialize<JsonElement[]>(json) ?? throw new Exception();
|
|
||||||
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(logistics.Logistics1[0], tests.ToArray(), jsonElements, fileInfoCollection);
|
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(logistics.Logistics1[0], tests.ToArray(), jsonElements, fileInfoCollection);
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -35,9 +35,6 @@ public class Logistics : ILogistics
|
|||||||
public long Sequence => _Sequence;
|
public long Sequence => _Sequence;
|
||||||
public double TotalSecondsSinceLastWriteTimeFromSequence => _TotalSecondsSinceLastWriteTimeFromSequence;
|
public double TotalSecondsSinceLastWriteTimeFromSequence => _TotalSecondsSinceLastWriteTimeFromSequence;
|
||||||
|
|
||||||
private static string DefaultMesEntity(DateTime dateTime) =>
|
|
||||||
string.Concat(dateTime.Ticks, "_MES_ENTITY");
|
|
||||||
|
|
||||||
public Logistics(IFileRead fileRead)
|
public Logistics(IFileRead fileRead)
|
||||||
{
|
{
|
||||||
DateTime dateTime = DateTime.Now;
|
DateTime dateTime = DateTime.Now;
|
||||||
@ -87,13 +84,13 @@ public class Logistics : ILogistics
|
|||||||
_Logistics2 = new List<Logistics2>();
|
_Logistics2 = new List<Logistics2>();
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Logistics(string reportFullPath, ProcessDataStandardFormat processDataStandardFormat)
|
public Logistics(string reportFullPath, string logistics)
|
||||||
{
|
{
|
||||||
string key;
|
string key;
|
||||||
DateTime dateTime;
|
DateTime dateTime;
|
||||||
string[] segments;
|
string[] segments;
|
||||||
_FileInfo = new(reportFullPath);
|
_FileInfo = new(reportFullPath);
|
||||||
_Logistics1 = processDataStandardFormat.Logistics.ToList();
|
_Logistics1 = logistics.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||||
if (Logistics1.Count == 0 || !Logistics1[0].StartsWith("LOGISTICS_1"))
|
if (Logistics1.Count == 0 || !Logistics1[0].StartsWith("LOGISTICS_1"))
|
||||||
{
|
{
|
||||||
_NullData = null;
|
_NullData = null;
|
||||||
@ -193,6 +190,8 @@ public class Logistics : ILogistics
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static string DefaultMesEntity(DateTime dateTime) => string.Concat(dateTime.Ticks, "_MES_ENTITY");
|
||||||
|
|
||||||
internal void Update(string mid, string processJobID)
|
internal void Update(string mid, string processJobID)
|
||||||
{
|
{
|
||||||
_MID = mid;
|
_MID = mid;
|
||||||
|
@ -6,25 +6,23 @@ public partial class WS
|
|||||||
public class Attachment
|
public class Attachment
|
||||||
{
|
{
|
||||||
|
|
||||||
#nullable enable
|
|
||||||
|
|
||||||
public long HeaderId { get; set; }
|
|
||||||
public string UniqueId { get; set; }
|
|
||||||
public string SubGroupId { get; set; }
|
public string SubGroupId { get; set; }
|
||||||
public string AttachmentId { get; set; }
|
public long HeaderId { get; set; }
|
||||||
public string SourceFileName { get; set; }
|
|
||||||
public string HeaderIdDirectory { get; set; }
|
public string HeaderIdDirectory { get; set; }
|
||||||
|
public string UniqueId { get; set; }
|
||||||
public string DestinationFileName { get; set; }
|
public string DestinationFileName { get; set; }
|
||||||
|
public string SourceFileName { get; set; }
|
||||||
|
public string AttachmentId { get; set; }
|
||||||
|
|
||||||
public Attachment(Results? results, string headerIdDirectory, string uniqueId, string destinationFileName, string sourceFileName)
|
public Attachment(string subGroupId, long headerId, string headerIdDirectory, string uniqueId, string destinationFileName, string sourceFileName)
|
||||||
{
|
{
|
||||||
UniqueId = uniqueId;
|
SubGroupId = subGroupId;
|
||||||
SourceFileName = sourceFileName;
|
HeaderId = headerId;
|
||||||
HeaderIdDirectory = headerIdDirectory;
|
HeaderIdDirectory = headerIdDirectory;
|
||||||
|
UniqueId = uniqueId;
|
||||||
DestinationFileName = destinationFileName;
|
DestinationFileName = destinationFileName;
|
||||||
|
SourceFileName = sourceFileName;
|
||||||
AttachmentId = System.Guid.NewGuid().ToString();
|
AttachmentId = System.Guid.NewGuid().ToString();
|
||||||
HeaderId = results?.HeaderId is null ? -1 : results.HeaderId.Value;
|
|
||||||
SubGroupId = results?.SubgroupId is null ? string.Empty : results.SubgroupId.Value.ToString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,75 +1,27 @@
|
|||||||
using System;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Text;
|
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Text.Json.Serialization;
|
|
||||||
|
|
||||||
namespace Adaptation.Shared.Metrology;
|
namespace Adaptation.Shared.Metrology;
|
||||||
|
|
||||||
public partial class WS
|
public partial class WS
|
||||||
{
|
{
|
||||||
|
// this class represents the response from the Inbound API endpoint
|
||||||
public class Results
|
public class Results
|
||||||
{
|
{
|
||||||
|
// true or false if data was written to the database
|
||||||
|
public bool Success { get; set; }
|
||||||
|
|
||||||
#nullable enable
|
// if true, contains ID of the Header record in the database
|
||||||
|
public long HeaderID { get; set; }
|
||||||
|
|
||||||
[JsonConstructor]
|
// if false, this collection will contain a list of errors
|
||||||
public Results(List<string>? errors,
|
public List<string> Errors { get; set; }
|
||||||
long? headerId,
|
|
||||||
long? subgroupId,
|
|
||||||
bool? success,
|
|
||||||
List<string>? warnings)
|
|
||||||
{
|
|
||||||
Errors = errors;
|
|
||||||
Success = success;
|
|
||||||
HeaderId = headerId;
|
|
||||||
Warnings = warnings;
|
|
||||||
SubgroupId = subgroupId;
|
|
||||||
}
|
|
||||||
|
|
||||||
[JsonPropertyName("errors")] public List<string>? Errors { get; set; }
|
// this collection will contain a list of warnings, they will not prevent data from being saved
|
||||||
[JsonPropertyName("headerID")] public long? HeaderId { get; set; }
|
public List<string> Warnings { get; set; }
|
||||||
[JsonPropertyName("subgroupId")] public long? SubgroupId { get; set; }
|
|
||||||
[JsonPropertyName("success")] public bool? Success { get; set; }
|
|
||||||
[JsonPropertyName("warnings")] public List<string>? Warnings { get; set; }
|
|
||||||
|
|
||||||
public override string ToString()
|
|
||||||
{
|
|
||||||
string result = JsonSerializer.Serialize(this, ResultsSourceGenerationContext.Default.Results);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal static Results Get(Results results, long? subgroupId) =>
|
|
||||||
new(results.Errors, results.HeaderId, subgroupId, results.Success, results.Warnings);
|
|
||||||
|
|
||||||
internal static Results Get(string resultsJson, Exception e)
|
|
||||||
{
|
|
||||||
Results results;
|
|
||||||
Exception? exception = e;
|
|
||||||
List<string> errors = new();
|
|
||||||
StringBuilder stringBuilder = new();
|
|
||||||
while (exception is not null)
|
|
||||||
{
|
|
||||||
_ = stringBuilder.AppendLine(exception.Message);
|
|
||||||
exception = exception.InnerException;
|
|
||||||
}
|
|
||||||
errors.Add(resultsJson);
|
|
||||||
errors.Add(stringBuilder.ToString());
|
|
||||||
results = new(errors: errors,
|
|
||||||
headerId: null,
|
|
||||||
subgroupId: null,
|
|
||||||
success: false,
|
|
||||||
warnings: new());
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// this is just a helper function to make displaying the results easier
|
||||||
|
public override string ToString() => JsonSerializer.Serialize(this, GetType());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
[JsonSourceGenerationOptions(WriteIndented = true)]
|
|
||||||
[JsonSerializable(typeof(WS.Results))]
|
|
||||||
internal partial class ResultsSourceGenerationContext : JsonSerializerContext
|
|
||||||
{
|
|
||||||
}
|
}
|
@ -10,11 +10,9 @@ namespace Adaptation.Shared.Metrology;
|
|||||||
public partial class WS
|
public partial class WS
|
||||||
{
|
{
|
||||||
|
|
||||||
#nullable enable
|
|
||||||
|
|
||||||
public static (string, Results) SendData(string url, long sequence, string directory, object payload, int timeoutSeconds = 120)
|
public static (string, Results) SendData(string url, long sequence, string directory, object payload, int timeoutSeconds = 120)
|
||||||
{
|
{
|
||||||
Results? wsResults = null;
|
Results results = new();
|
||||||
string resultsJson = string.Empty;
|
string resultsJson = string.Empty;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -32,20 +30,29 @@ public partial class WS
|
|||||||
};
|
};
|
||||||
HttpResponseMessage httpResponseMessage = httpClient.SendAsync(httpRequestMessage, HttpCompletionOption.ResponseContentRead).Result;
|
HttpResponseMessage httpResponseMessage = httpClient.SendAsync(httpRequestMessage, HttpCompletionOption.ResponseContentRead).Result;
|
||||||
resultsJson = httpResponseMessage.Content.ReadAsStringAsync().Result;
|
resultsJson = httpResponseMessage.Content.ReadAsStringAsync().Result;
|
||||||
wsResults = JsonSerializer.Deserialize(resultsJson, ResultsSourceGenerationContext.Default.Results);
|
results = JsonSerializer.Deserialize<Results>(resultsJson, new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
|
||||||
if (wsResults is null)
|
string checkDirectory = Path.Combine(directory, $"-{results.HeaderID}");
|
||||||
throw new NullReferenceException(nameof(wsResults));
|
|
||||||
string checkDirectory = Path.Combine(directory, $"-{wsResults.HeaderId}");
|
|
||||||
if (!Directory.Exists(checkDirectory))
|
if (!Directory.Exists(checkDirectory))
|
||||||
_ = Directory.CreateDirectory(checkDirectory);
|
_ = Directory.CreateDirectory(checkDirectory);
|
||||||
File.WriteAllText(Path.Combine(checkDirectory, $"{sequence}.json"), json);
|
File.WriteAllText(Path.Combine(checkDirectory, $"{sequence}.json"), json);
|
||||||
}
|
}
|
||||||
if (wsResults.Success is null || !wsResults.Success.Value)
|
if (!results.Success)
|
||||||
wsResults.Errors?.Add(wsResults.ToString());
|
results.Errors.Add(results.ToString());
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{ wsResults ??= Results.Get(resultsJson, e); }
|
{
|
||||||
return new(resultsJson, wsResults);
|
Exception exception = e;
|
||||||
|
StringBuilder stringBuilder = new();
|
||||||
|
while (exception is not null)
|
||||||
|
{
|
||||||
|
_ = stringBuilder.AppendLine(exception.Message);
|
||||||
|
exception = exception.InnerException;
|
||||||
|
}
|
||||||
|
results.Errors ??= new List<string>();
|
||||||
|
results.Errors.Add(resultsJson);
|
||||||
|
results.Errors.Add(stringBuilder.ToString());
|
||||||
|
}
|
||||||
|
return new(resultsJson, results);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void AttachFile(string url, Attachment attachment, int timeoutSeconds = 60)
|
public static void AttachFile(string url, Attachment attachment, int timeoutSeconds = 60)
|
||||||
@ -62,20 +69,16 @@ public partial class WS
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void AttachFiles(string url, List<Attachment>? headerAttachments = null, List<Attachment>? dataAttachments = null)
|
public static void AttachFiles(string url, List<Attachment> headerAttachments = null, List<Attachment> dataAttachments = null)
|
||||||
{
|
{
|
||||||
string directory;
|
string directory;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string? directoryName;
|
|
||||||
if (headerAttachments is not null)
|
if (headerAttachments is not null)
|
||||||
{
|
{
|
||||||
foreach (Attachment attachment in headerAttachments)
|
foreach (Attachment attachment in headerAttachments)
|
||||||
{
|
{
|
||||||
directoryName = Path.GetDirectoryName(attachment.HeaderIdDirectory);
|
directory = Path.Combine(Path.GetDirectoryName(attachment.HeaderIdDirectory), attachment.AttachmentId) ?? throw new Exception();
|
||||||
if (string.IsNullOrEmpty(directoryName))
|
|
||||||
continue;
|
|
||||||
directory = Path.Combine(directoryName, attachment.AttachmentId) ?? throw new Exception();
|
|
||||||
if (!Directory.Exists(directory))
|
if (!Directory.Exists(directory))
|
||||||
_ = Directory.CreateDirectory(directory);
|
_ = Directory.CreateDirectory(directory);
|
||||||
File.Copy(attachment.SourceFileName, Path.Combine(directory, attachment.DestinationFileName), overwrite: true);
|
File.Copy(attachment.SourceFileName, Path.Combine(directory, attachment.DestinationFileName), overwrite: true);
|
||||||
@ -85,10 +88,7 @@ public partial class WS
|
|||||||
{
|
{
|
||||||
foreach (Attachment attachment in dataAttachments)
|
foreach (Attachment attachment in dataAttachments)
|
||||||
{
|
{
|
||||||
directoryName = Path.GetDirectoryName(attachment.HeaderIdDirectory.Replace("Header", "Data"));
|
directory = Path.Combine(Path.GetDirectoryName(attachment.HeaderIdDirectory.Replace("Header", "Data")), attachment.AttachmentId) ?? throw new Exception();
|
||||||
if (string.IsNullOrEmpty(directoryName))
|
|
||||||
continue;
|
|
||||||
directory = Path.Combine(directoryName, attachment.AttachmentId) ?? throw new Exception();
|
|
||||||
if (!Directory.Exists(directory))
|
if (!Directory.Exists(directory))
|
||||||
_ = Directory.CreateDirectory(directory);
|
_ = Directory.CreateDirectory(directory);
|
||||||
File.Copy(attachment.SourceFileName, Path.Combine(directory, attachment.DestinationFileName), overwrite: true);
|
File.Copy(attachment.SourceFileName, Path.Combine(directory, attachment.DestinationFileName), overwrite: true);
|
||||||
@ -108,7 +108,7 @@ public partial class WS
|
|||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
Exception? exception = e;
|
Exception exception = e;
|
||||||
StringBuilder stringBuilder = new();
|
StringBuilder stringBuilder = new();
|
||||||
while (exception is not null)
|
while (exception is not null)
|
||||||
{
|
{
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,33 +0,0 @@
|
|||||||
using System.Collections.ObjectModel;
|
|
||||||
|
|
||||||
namespace Adaptation.Shared;
|
|
||||||
|
|
||||||
public class ProcessDataStandardFormatMapping
|
|
||||||
{
|
|
||||||
|
|
||||||
public ReadOnlyCollection<string> BackfillColumns { get; private set; }
|
|
||||||
public ReadOnlyCollection<int> ColumnIndices { get; private set; }
|
|
||||||
public ReadOnlyCollection<string> IgnoreColumns { get; private set; }
|
|
||||||
public ReadOnlyCollection<string> IndexOnlyColumns { get; private set; }
|
|
||||||
public ReadOnlyDictionary<string, string> KeyValuePairs { get; private set; }
|
|
||||||
public ReadOnlyCollection<string> NewColumnNames { get; private set; }
|
|
||||||
public ReadOnlyCollection<string> OldColumnNames { get; private set; }
|
|
||||||
|
|
||||||
public ProcessDataStandardFormatMapping(ReadOnlyCollection<string> backfillColumns,
|
|
||||||
ReadOnlyCollection<int> columnIndices,
|
|
||||||
ReadOnlyCollection<string> ignoreColumns,
|
|
||||||
ReadOnlyCollection<string> indexOnlyColumns,
|
|
||||||
ReadOnlyDictionary<string, string> keyValuePairs,
|
|
||||||
ReadOnlyCollection<string> newColumnNames,
|
|
||||||
ReadOnlyCollection<string> oldColumnNames)
|
|
||||||
{
|
|
||||||
BackfillColumns = backfillColumns;
|
|
||||||
ColumnIndices = columnIndices;
|
|
||||||
IgnoreColumns = ignoreColumns;
|
|
||||||
IndexOnlyColumns = indexOnlyColumns;
|
|
||||||
KeyValuePairs = keyValuePairs;
|
|
||||||
NewColumnNames = newColumnNames;
|
|
||||||
OldColumnNames = oldColumnNames;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -27,7 +27,7 @@ public class R34
|
|||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_56_0__R34__jpeg() => _R34.Staging__v2_56_0__R34__jpeg();
|
public void Staging__v2_56_0__R34__jpeg() => _R34.Staging__v2_56_0__R34__jpeg();
|
||||||
|
|
||||||
#if !DEBUG
|
#if (!DEBUG)
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
|
@ -29,7 +29,7 @@ public class R34
|
|||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_57_0__R34__jpeg() => _R34.Staging__v2_57_0__R34__jpeg();
|
public void Staging__v2_57_0__R34__jpeg() => _R34.Staging__v2_57_0__R34__jpeg();
|
||||||
|
|
||||||
#if !DEBUG
|
#if (!DEBUG)
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -51,7 +51,7 @@ public class DEP08SIASM : LoggingUnitTesting, IDisposable
|
|||||||
public void TestDateTime()
|
public void TestDateTime()
|
||||||
{
|
{
|
||||||
DateTime dateTime = DateTime.Now;
|
DateTime dateTime = DateTime.Now;
|
||||||
Assert.AreEqual(dateTime.ToString(), dateTime.ToString("M/d/yyyy h:mm:ss tt"));
|
Assert.IsTrue(dateTime.ToString("M/d/yyyy h:mm:ss tt") == dateTime.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
|
@ -58,12 +58,12 @@ public class JPEG : LoggingUnitTesting, IDisposable
|
|||||||
LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||||
// (float pageMeanConfidence, string text, List<string> blocks) = FileHandlers.jpeg.ProcessData.Parse(fileName, new(), 0, 0, 0, 0, 0, 0);
|
// (float pageMeanConfidence, string text, List<string> blocks) = FileHandlers.jpeg.ProcessData.Parse(fileName, new(), 0, 0, 0, 0, 0, 0);
|
||||||
List<(float pageMeanConfidence, string text, List<string> blocks)> collection = FileHandlers.jpeg.ProcessData.Parse(fileName);
|
List<(float pageMeanConfidence, string text, List<string> blocks)> collection = FileHandlers.jpeg.ProcessData.Parse(fileName);
|
||||||
Assert.AreNotEqual(0, collection.Count);
|
Assert.IsTrue(collection.Count != 0);
|
||||||
foreach ((float pageMeanConfidence, string text, List<string> blocks) in collection)
|
foreach ((float pageMeanConfidence, string text, List<string> blocks) in collection)
|
||||||
{
|
{
|
||||||
Assert.IsTrue(pageMeanConfidence > 0);
|
Assert.IsTrue(pageMeanConfidence > 0);
|
||||||
Assert.IsFalse(string.IsNullOrEmpty(text));
|
Assert.IsTrue(!string.IsNullOrEmpty(text));
|
||||||
Assert.AreNotEqual(0, blocks.Count);
|
Assert.IsTrue(blocks.Count != 0);
|
||||||
// Normal images
|
// Normal images
|
||||||
// "RECIPE:\nte end\nte a ee)\nAcne\n"
|
// "RECIPE:\nte end\nte a ee)\nAcne\n"
|
||||||
// Grayscale
|
// Grayscale
|
||||||
|
@ -135,7 +135,6 @@
|
|||||||
<Compile Include="Adaptation\Shared\Metrology\WS.Results.cs" />
|
<Compile Include="Adaptation\Shared\Metrology\WS.Results.cs" />
|
||||||
<Compile Include="Adaptation\Shared\ParameterType.cs" />
|
<Compile Include="Adaptation\Shared\ParameterType.cs" />
|
||||||
<Compile Include="Adaptation\Shared\ProcessDataStandardFormat.cs" />
|
<Compile Include="Adaptation\Shared\ProcessDataStandardFormat.cs" />
|
||||||
<Compile Include="Adaptation\Shared\ProcessDataStandardFormatMapping.cs" />
|
|
||||||
<Compile Include="Adaptation\Shared\Properties\IDescription.cs" />
|
<Compile Include="Adaptation\Shared\Properties\IDescription.cs" />
|
||||||
<Compile Include="Adaptation\Shared\Properties\IFileRead.cs" />
|
<Compile Include="Adaptation\Shared\Properties\IFileRead.cs" />
|
||||||
<Compile Include="Adaptation\Shared\Properties\ILogistics.cs" />
|
<Compile Include="Adaptation\Shared\Properties\ILogistics.cs" />
|
||||||
|
@ -37,7 +37,7 @@ public partial class FileRead : FileReaderHandler, ISMTP
|
|||||||
private FilePathGenerator _FilePathGeneratorForTarget;
|
private FilePathGenerator _FilePathGeneratorForTarget;
|
||||||
private readonly List<EquipmentParameter> _EquipmentParameters;
|
private readonly List<EquipmentParameter> _EquipmentParameters;
|
||||||
private static readonly Dictionary<string, List<long>> _DummyRuns;
|
private static readonly Dictionary<string, List<long>> _DummyRuns;
|
||||||
private static readonly Dictionary<long, List<Adaptation.Shared.Metrology.WS.Results>> _StaticRuns;
|
private static readonly Dictionary<long, List<string>> _StaticRuns;
|
||||||
|
|
||||||
static FileRead()
|
static FileRead()
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user