From ff006cb7926989f617dedaf57d37e7ea43a18261 Mon Sep 17 00:00:00 2001 From: Mike Phares Date: Fri, 27 Jun 2025 12:31:46 -0700 Subject: [PATCH] Now relying on pipeline to copy files from file shares for ghost-pcl and linc-pdfc Now using entered-date-time-filter and load-signature-date-time-filter for logistics query --- Adaptation/.vscode/settings.json | 3 + .../FileHandlers/TIBCO/Transport/Job.cs | 23 ++-- .../FileHandlers/TIBCO/Transport/Main.cs | 11 +- Adaptation/MET08DDUPSP1TBI.Tests.csproj | 8 +- Adaptation/MET08DDUPSP1TBI.yml | 40 +++++- .../Shared/ProcessDataStandardFormat.cs | 30 +++-- Adaptation/_Tests/Static/Job.cs | 118 +++++++++++++----- 7 files changed, 177 insertions(+), 56 deletions(-) diff --git a/Adaptation/.vscode/settings.json b/Adaptation/.vscode/settings.json index c583819..7bf26d8 100644 --- a/Adaptation/.vscode/settings.json +++ b/Adaptation/.vscode/settings.json @@ -7,6 +7,7 @@ "CASS", "CEPIEPSILON", "CUST", + "DDUPSFS", "DDUPSP", "EQPT", "GETJOBS", @@ -31,6 +32,8 @@ "substr", "SUSCEPTOR", "targ", + "TENCOR", + "THFTIRQS", "TIBCO", "Wafr" ], diff --git a/Adaptation/FileHandlers/TIBCO/Transport/Job.cs b/Adaptation/FileHandlers/TIBCO/Transport/Job.cs index 884b36c..ac69d4b 100644 --- a/Adaptation/FileHandlers/TIBCO/Transport/Job.cs +++ b/Adaptation/FileHandlers/TIBCO/Transport/Job.cs @@ -41,7 +41,7 @@ public partial class Job public DateTime DateTime { get; } public List Items { get; } - public Job(string lsl2SQLConnectionString, string metrologyFileShare, string barcodeHostFileShare, HttpClient httpClient, string mid) + public Job(string lsl2SQLConnectionString, string metrologyFileShare, string barcodeHostFileShare, HttpClient httpClient, string mid, DateTime enteredDateTimeFilter, DateTime loadSignatureDateTimeFilter) { const int zero = 0; Items = new List(); @@ -86,9 +86,9 @@ public partial class Job } bool isValid = IsValid(common.RDSNumber); if (isValid) - commonB = GetWithValidRDS(lsl2SQLConnectionString, common.Layer, common.PSN, common.RDSNumber, common.ReactorNumber, common.Zone); + commonB = GetWithValidRDS(lsl2SQLConnectionString, enteredDateTimeFilter, loadSignatureDateTimeFilter, common.Layer, common.PSN, common.RDSNumber, common.ReactorNumber, common.Zone); else if (workOrder.IsWorkOrder || common.RDSNumber.HasValue) - commonB = Get(lsl2SQLConnectionString, common.Layer, common.PSN, common.ReactorNumber, workOrder.SlotNumber, workOrder.WorkOrderNumber, workOrder.WorkOrderCassette, common.Zone); + commonB = Get(lsl2SQLConnectionString, enteredDateTimeFilter, loadSignatureDateTimeFilter, common.Layer, common.PSN, common.ReactorNumber, workOrder.SlotNumber, workOrder.WorkOrderNumber, workOrder.WorkOrderCassette, common.Zone); else commonB = new(comment: hyphen, layer: hyphen, @@ -513,7 +513,7 @@ public partial class Job return result.ToString(); } - private static string GetCommandText(int? rds, int? workOrderNumber, int? workOrderCassette, int? slot, int? reactor) + private static string GetCommandText(DateTime enteredDateTimeFilter, DateTime loadSignatureDateTimeFilter, int? rds, int? workOrderNumber, int? workOrderCassette, int? slot, int? reactor) { // cSpell:disable List results = new(); int rdsValue = rds is null ? -1 : rds.Value; @@ -540,6 +540,7 @@ public partial class Job results.Add(" ) zone "); results.Add(" from lsl2sql.dbo.react_run rr "); results.Add($" where rr.rds_no = {rdsValue}"); + results.Add($" and rr.enter_dtm > '{enteredDateTimeFilter:yyyy-MM-dd} 00:00:00.000' "); results.Add(" union all "); results.Add(" select "); results.Add(" rr.rds_no "); @@ -589,20 +590,22 @@ public partial class Job results.Add(" select max(qa.rds_no) "); results.Add(" from lsl2sql.dbo.react_run qa "); results.Add(" where qa.load_sig != '' "); - results.Add(" and qa.load_sig_dtm > '2023-05-01 00:00:00.000' "); + results.Add($" and qa.load_sig_dtm > '{loadSignatureDateTimeFilter:yyyy-MM-dd} 00:00:00.000' "); results.Add($" and qa.reactor = {reactorValue}"); results.Add(" ) "); results.Add(" for json path "); return string.Join(Environment.NewLine, results); } // cSpell:restore - private static CommonB Get(string lsl2SQLConnectionString, string layer, string psn, int? reactorNumber, int? slotNumber, int? workOrderNumber, int? workOrderCassette, string zone) + private static CommonB Get(string lsl2SQLConnectionString, DateTime enteredDateTimeFilter, DateTime loadSignatureDateTimeFilter, string layer, string psn, int? reactorNumber, int? slotNumber, int? workOrderNumber, int? workOrderCassette, string zone) { int? rdsNumber; string comment; const int zero = 0; const string hyphen = "-"; - string commandText = GetCommandText(rds: null, + string commandText = GetCommandText(enteredDateTimeFilter, + loadSignatureDateTimeFilter, + rds: null, workOrderNumber: workOrderNumber, workOrderCassette: workOrderCassette, slot: slotNumber, @@ -657,12 +660,14 @@ public partial class Job zone: zone); } - private static CommonB GetWithValidRDS(string lsl2SQLConnectionString, string layer, string psn, int? rdsNumber, int? reactorNumber, string zone) + private static CommonB GetWithValidRDS(string lsl2SQLConnectionString, DateTime enteredDateTimeFilter, DateTime loadSignatureDateTimeFilter, string layer, string psn, int? rdsNumber, int? reactorNumber, string zone) { string comment; const int zero = 0; const string hyphen = "-"; - string commandText = GetCommandText(rds: rdsNumber, + string commandText = GetCommandText(enteredDateTimeFilter, + loadSignatureDateTimeFilter, + rds: rdsNumber, workOrderNumber: null, workOrderCassette: null, slot: null, diff --git a/Adaptation/FileHandlers/TIBCO/Transport/Main.cs b/Adaptation/FileHandlers/TIBCO/Transport/Main.cs index 9eb9e7b..d1e5f2e 100644 --- a/Adaptation/FileHandlers/TIBCO/Transport/Main.cs +++ b/Adaptation/FileHandlers/TIBCO/Transport/Main.cs @@ -167,13 +167,12 @@ internal partial class Main { try { - string mid = string.Empty; string[] sourceFiles = null; DateTime dateTime = DateTime.Now; - string pdsfFileLogistics = string.Empty; - IfxDoc envelopeDocument = ifxEnvelope.ExtractDocument(); CultureInfo cultureInfo = new("en-US"); + string pdsfFileLogistics = string.Empty; Calendar calendar = cultureInfo.Calendar; + IfxDoc envelopeDocument = ifxEnvelope.ExtractDocument(); string weekOfYear = calendar.GetWeekOfYear(dateTime, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00"); string weekOfYearSegment = string.Concat(@"\", dateTime.ToString("yyyy"), "_Week_", weekOfYear, @"\", dateTime.ToString("yyyy-MM-dd")); if (!string.IsNullOrEmpty(_FileConnectorConfiguration.SourceFileLocation)) @@ -188,8 +187,10 @@ internal partial class Main } if (!subject.Contains(_TibcoParameterSubjectPrefix)) throw new Exception("Invalid Subject"); - mid = GetJobsMID(envelopeDocument); - Job job = new(_LSL2SQLConnectionString, _MetrologyFileShare, _BarcodeHostFileShare, _HttpClient, mid); + string mid = GetJobsMID(envelopeDocument); + DateTime enteredDateTimeFilter = dateTime.AddDays(-356); + DateTime loadSignatureDateTimeFilter = dateTime.AddDays(-4); + Job job = new(_LSL2SQLConnectionString, _MetrologyFileShare, _BarcodeHostFileShare, _HttpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter); if (job.IsAreaSi) { IfxDoc sendReply = GetJobsReply(job); diff --git a/Adaptation/MET08DDUPSP1TBI.Tests.csproj b/Adaptation/MET08DDUPSP1TBI.Tests.csproj index 88f8d5a..bd3a1f1 100644 --- a/Adaptation/MET08DDUPSP1TBI.Tests.csproj +++ b/Adaptation/MET08DDUPSP1TBI.Tests.csproj @@ -87,16 +87,16 @@ - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest diff --git a/Adaptation/MET08DDUPSP1TBI.yml b/Adaptation/MET08DDUPSP1TBI.yml index 7b8da1f..d71bcb2 100644 --- a/Adaptation/MET08DDUPSP1TBI.yml +++ b/Adaptation/MET08DDUPSP1TBI.yml @@ -38,7 +38,25 @@ stages: displayName: "Echo Check" - script: '"C:\program files\dotnet\dotnet.exe" nuget locals all --clear' - displayName: "Nuget Clear" + displayName: "Nuget Nuget Clear" + enabled: false + + - task: CopyFiles@2 + displayName: 'Copy GhostPCL Files to: D:\EAF-Mesa-Integration\copy' + inputs: + Contents: "*" + SourceFolder: '\\mesfs.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\GhostPCL' + TargetFolder: 'D:\EAF-Mesa-Integration\copy\GhostPCL' + OverWrite: true + enabled: false + + - task: CopyFiles@2 + displayName: 'Copy LincPDFC Files to: D:\EAF-Mesa-Integration\copy' + inputs: + Contents: "*" + SourceFolder: '\\mesfs.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\LincPDFC' + TargetFolder: 'D:\EAF-Mesa-Integration\copy\LincPDFC' + OverWrite: true enabled: false - script: | @@ -181,7 +199,25 @@ stages: displayName: "Echo Check" - script: '"C:\program files\dotnet\dotnet.exe" nuget locals all --clear' - displayName: "Nuget Clear" + displayName: "Nuget Nuget Clear" + enabled: false + + - task: CopyFiles@2 + displayName: 'Copy GhostPCL Files to: D:\EAF-Mesa-Integration\copy' + inputs: + Contents: "*" + SourceFolder: '\\mestsa003.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\GhostPCL' + TargetFolder: 'D:\EAF-Mesa-Integration\copy\GhostPCL' + OverWrite: true + enabled: false + + - task: CopyFiles@2 + displayName: 'Copy LincPDFC Files to: D:\EAF-Mesa-Integration\copy' + inputs: + Contents: "*" + SourceFolder: '\\mestsa003.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\LincPDFC' + TargetFolder: 'D:\EAF-Mesa-Integration\copy\LincPDFC' + OverWrite: true enabled: false - script: | diff --git a/Adaptation/Shared/ProcessDataStandardFormat.cs b/Adaptation/Shared/ProcessDataStandardFormat.cs index a86241d..bdcc49e 100644 --- a/Adaptation/Shared/ProcessDataStandardFormat.cs +++ b/Adaptation/Shared/ProcessDataStandardFormat.cs @@ -136,6 +136,7 @@ internal class ProcessDataStandardFormat internal static ProcessDataStandardFormat GetProcessDataStandardFormat(string reportFullPath, string[]? lines = null, int columnsLine = 6) { ProcessDataStandardFormat result; + long? sequence; string segment; string[] segments; bool addToFooter = false; @@ -186,13 +187,25 @@ internal class ProcessDataStandardFormat } string? linesOne = lines.Length > 0 && body.Count == 0 && columns.Count == 0 ? lines[1] : null; logistics = GetLogistics(footer, linesOne: linesOne); + if (logistics.Count == 0) + sequence = null; + else + { + segments = logistics[0].Split(new string[] { "SEQUENCE=" }, StringSplitOptions.None); + sequence = segments.Length < 2 || !long.TryParse(segments[1].Split(';')[0], out long s) ? null : s; + } + if (sequence is null && !string.IsNullOrEmpty(reportFullPath)) + { + FileInfo fileInfo = new(reportFullPath); + sequence = fileInfo.LastWriteTime.Ticks; + } result = new(body: body.AsReadOnly(), columns: columns.AsReadOnly(), footer: footer.AsReadOnly(), header: header.AsReadOnly(), inputPDSF: null, logistics: logistics, - sequence: null); + sequence: sequence); return result; } @@ -236,7 +249,7 @@ internal class ProcessDataStandardFormat private static ProcessDataStandardFormat GetProcessDataStandardFormat(DateTime lastWriteTime, int columnsLine, string path, string[]? lines) { ProcessDataStandardFormat result; - long sequence; + long? sequence; string[] segments; bool addToFooter = false; List body = new(); @@ -268,12 +281,13 @@ internal class ProcessDataStandardFormat } logistics = GetLogistics(footer, linesOne: null); if (logistics.Count == 0) - sequence = lastWriteTime.Ticks; + sequence = null; else { segments = logistics[0].Split(new string[] { "SEQUENCE=" }, StringSplitOptions.None); - sequence = segments.Length < 2 || !long.TryParse(segments[1].Split(';')[0], out long s) ? lastWriteTime.Ticks : s; + sequence = segments.Length < 2 || !long.TryParse(segments[1].Split(';')[0], out long s) ? null : s; } + sequence ??= lastWriteTime.Ticks; result = new(body: body.AsReadOnly(), columns: new(columns), footer: footer.AsReadOnly(), @@ -302,7 +316,7 @@ internal class ProcessDataStandardFormat segments = bodyLine.Split('\t').ToList(); for (int c = 0; c < segments.Count; c++) { - value = segments[c].Replace("\"", "\\\"").Replace("\\", "\\\\"); + value = segments[c].Replace("\\", "\\\\").Replace("\"", "\\\""); _ = stringBuilder.Append('"').Append(processDataStandardFormat.Columns[c]).Append("\":\"").Append(value).Append("\","); } _ = stringBuilder.Remove(stringBuilder.Length - 1, 1); @@ -378,7 +392,7 @@ internal class ProcessDataStandardFormat break; for (int c = 0; c < segments.Length; c++) { - value = segments[c].Replace("\"", "\\\"").Replace("\\", "\\\\"); + value = segments[c].Replace("\\", "\\\\").Replace("\"", "\\\""); line += string.Concat('"', processDataStandardFormat.InputPDSF.Columns[c].Trim('"'), '"', ':', '"', value, '"', ','); } line = string.Concat(line.Substring(0, line.Length - 1), '}'); @@ -518,7 +532,7 @@ internal class ProcessDataStandardFormat { for (int c = 1; c < segments.Length; c++) { - value = segments[c].Replace("\"", "\\\"").Replace("\\", "\\\\"); + value = segments[c].Replace("\\", "\\\\").Replace("\"", "\\\""); _ = stringBuilder.Append('"').Append(processDataStandardFormat.Columns[c]).Append("\":\"").Append(value).Append("\","); } } @@ -526,7 +540,7 @@ internal class ProcessDataStandardFormat { for (int c = 1; c < segments.Length; c++) { - value = segments[c].Replace("\"", "\\\"").Replace("\\", "\\\\"); + value = segments[c].Replace("\\", "\\\\").Replace("\"", "\\\""); if (string.IsNullOrEmpty(value)) _ = stringBuilder.Append('"').Append(processDataStandardFormat.Columns[c]).Append("\":").Append(value).Append("null,"); else if (value.All(char.IsDigit)) diff --git a/Adaptation/_Tests/Static/Job.cs b/Adaptation/_Tests/Static/Job.cs index eda0b61..1a977b2 100644 --- a/Adaptation/_Tests/Static/Job.cs +++ b/Adaptation/_Tests/Static/Job.cs @@ -52,44 +52,57 @@ public class Job : LoggingUnitTesting, IDisposable { string mid; FileHandlers.TIBCO.Transport.Job job; + DateTime enteredDateTimeFilter = new(2023, 05, 01); MethodBase methodBase = new StackFrame().GetMethod(); + DateTime loadSignatureDateTimeFilter = new(2023, 05, 01); string metrologyFileShare = FileHandlers.TIBCO.FileRead.MetrologyFileShare; string barcodeHostFileShare = FileHandlers.TIBCO.FileRead.BarcodeHostFileShare; string lsl2SQLConnectionString = FileHandlers.TIBCO.FileRead.LSL2SQLConnectionString; LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration")); HttpClient httpClient = new() { BaseAddress = new(FileHandlers.TIBCO.FileRead.OpenInsightApplicationProgrammingInterface) }; - mid = "{\"Area\": \"Si\", \"EquipmentType\": \"MET08RESIMAPCDE\", \"MesEntity\": \"CDE4\", \"Sequence\": \"123456789\", \"MID\": \"12-123456-1234\", \"Recipe\": \"Recipe\"}"; - job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid); + mid = """ + {"Area": "Si", "EquipmentType": "MET08RESIMAPCDE", "MesEntity": "CDE4", "Sequence": "123456789", "MID": "12-123456-1234", "Recipe": "Recipe"} + """; + job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter); Assert.IsFalse(string.IsNullOrEmpty(job.ProcessType)); // == "21"); Assert.AreEqual("123456", job.LotName); Assert.IsFalse(string.IsNullOrEmpty(job.ProductName)); // == "4609"); - mid = "{\"Area\": \"Si\", \"EquipmentType\": \"MET08RESIMAPCDE\", \"MesEntity\": \"CDE4\", \"Sequence\": \"123456789\", \"MID\": \"12-1234567-1234\", \"Recipe\": \"Recipe\"}"; - job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid); + mid = """ + {"Area": "Si", "EquipmentType": "MET08RESIMAPCDE", "MesEntity": "CDE4", "Sequence": "123456789", "MID": "12-1234567-1234", "Recipe": "Recipe"} + """; + job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter); Assert.IsFalse(string.IsNullOrEmpty(job.ProcessType)); // == "21"); Assert.AreEqual("1234567", job.LotName); Assert.IsFalse(string.IsNullOrEmpty(job.ProductName)); // == "4609"); - mid = "{\"Area\": \"Si\", \"EquipmentType\": \"MET08RESIMAPCDE\", \"MesEntity\": \"CDE4\", \"Sequence\": \"123456789\", \"MID\": \"-544481-\", \"Recipe\": \"Recipe\"}"; - job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid); + mid = """ + {"Area": "Si", "EquipmentType": "MET08RESIMAPCDE", "MesEntity": "CDE4", "Sequence": "123456789", "MID": "-544481-", "Recipe": "Recipe"} + """; + job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter); Assert.IsFalse(string.IsNullOrEmpty(job.ProcessType)); // == "51"); Assert.AreEqual("544481", job.LotName); Assert.IsFalse(string.IsNullOrEmpty(job.ProductName)); // == "5158"); - mid = "{\"Area\": \"Si\", \"EquipmentType\": \"MET08RESIMAPCDE\", \"MesEntity\": \"CDE4\", \"Sequence\": \"123456789\", \"MID\": \"00-544481-0000\", \"Recipe\": \"Recipe\"}"; - job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid); + mid = """ + {"Area": "Si", "EquipmentType": "MET08RESIMAPCDE", "MesEntity": "CDE4", "Sequence": "123456789", "MID": "00-544481-0000", "Recipe": "Recipe"} + """; + job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter); Assert.IsFalse(string.IsNullOrEmpty(job.ProcessType)); // == "51"); Assert.AreEqual("544481", job.LotName); Assert.IsFalse(string.IsNullOrEmpty(job.ProductName)); // == "5158"); - mid = "{\"Area\": \"Si\", \"EquipmentType\": \"MET08RESIMAPCDE\", \"MesEntity\": \"CDE4\", \"Sequence\": \"123456789\", \"MID\": \"00-o171308.1.51-0000\", \"Recipe\": \"Recipe\", \"Slot\": \"11\"}"; - job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid); + mid = """ + {"Area": "Si", "EquipmentType": "MET08RESIMAPCDE", "MesEntity": "CDE4", "Sequence": "123456789", "MID": "00-o171308.1.51-0000", "Recipe": "Recipe", "Slot": "11"} + """; + job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter); Assert.IsFalse(string.IsNullOrEmpty(job.ProcessType)); // == "54"); Assert.IsFalse(string.IsNullOrEmpty(job.LotName)); // == "547000"); Assert.IsFalse(string.IsNullOrEmpty(job.ProductName)); // == "4445"); LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit")); - mid = "{\"Area\": \"Si\", \"EquipmentType\": \"MET08RESIMAPCDE\", \"MesEntity\": \"CDE5\", \"Sequence\": \"638163023363575829\", \"MID\": \"B48\", \"Recipe\": \"lsl_6in \"}"; - job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid); + mid = """ + {"Area": "Si", "EquipmentType": "MET08RESIMAPCDE", "MesEntity": "CDE5", "Sequence": "638163023363575829", "MID": "B48", "Recipe": "lsl_6in "} + """; + job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter); Assert.IsFalse(string.IsNullOrEmpty(job.ProcessType)); // == "54"); Assert.IsFalse(string.IsNullOrEmpty(job.LotName)); // == "547000"); Assert.IsFalse(string.IsNullOrEmpty(job.ProductName)); // == "4445"); - LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit")); NonThrowTryCatch(); } @@ -99,16 +112,19 @@ public class Job : LoggingUnitTesting, IDisposable [TestMethod] public void TestJobAA() { - string mid; FileHandlers.TIBCO.Transport.Job job; + DateTime enteredDateTimeFilter = new(2023, 05, 01); MethodBase methodBase = new StackFrame().GetMethod(); + DateTime loadSignatureDateTimeFilter = new(2023, 05, 01); string metrologyFileShare = FileHandlers.TIBCO.FileRead.MetrologyFileShare; string barcodeHostFileShare = FileHandlers.TIBCO.FileRead.BarcodeHostFileShare; string lsl2SQLConnectionString = FileHandlers.TIBCO.FileRead.LSL2SQLConnectionString; LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration")); HttpClient httpClient = new() { BaseAddress = new(FileHandlers.TIBCO.FileRead.OpenInsightApplicationProgrammingInterface) }; - mid = "{\"Area\": \"Si\", \"EquipmentType\": \"MET08THFTIRQS408M\", \"MesEntity\": \"BIORAD2\", \"Sequence\": \"123456789\", \"MID\": \"37--\", \"Recipe\": \"Recipe\"}"; - job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid); + string mid = """ + {"Area": "Si", "EquipmentType": "MET08THFTIRQS408M", "MesEntity": "BIORAD2", "Sequence": "123456789", "MID": "37--", "Recipe": "Recipe"} + """; + job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter); Assert.AreEqual("37", job.ProcessType); Assert.IsFalse(string.IsNullOrEmpty(job.LotName)); // == "549918"); Assert.IsFalse(string.IsNullOrEmpty(job.ProductName)); // == "5101"); @@ -123,14 +139,18 @@ public class Job : LoggingUnitTesting, IDisposable public void TestJobB() { FileHandlers.TIBCO.Transport.Job job; + DateTime enteredDateTimeFilter = new(2023, 05, 01); MethodBase methodBase = new StackFrame().GetMethod(); + DateTime loadSignatureDateTimeFilter = new(2023, 05, 01); string metrologyFileShare = FileHandlers.TIBCO.FileRead.MetrologyFileShare; string barcodeHostFileShare = FileHandlers.TIBCO.FileRead.BarcodeHostFileShare; string lsl2SQLConnectionString = FileHandlers.TIBCO.FileRead.LSL2SQLConnectionString; LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration")); HttpClient httpClient = new() { BaseAddress = new(FileHandlers.TIBCO.FileRead.OpenInsightApplicationProgrammingInterface) }; - string mid = "{\"Area\": \"Si\", \"EquipmentType\": \"MET08RESIMAPCDE\", \"MesEntity\": \"CDE4\", \"Sequence\": \"123456789\", \"MID\": \"P1234\", \"Recipe\": \"Recipe\"}"; - job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid); + string mid = """ + {"Area": "Si", "EquipmentType": "MET08RESIMAPCDE", "MesEntity": "CDE4", "Sequence": "123456789", "MID": "P1234", "Recipe": "Recipe"} + """; + job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter); Assert.IsFalse(string.IsNullOrEmpty(job.ProcessType)); Assert.IsFalse(string.IsNullOrEmpty(job.LotName)); Assert.IsFalse(string.IsNullOrEmpty(job.ProductName)); @@ -145,14 +165,18 @@ public class Job : LoggingUnitTesting, IDisposable public void TestJobC() { FileHandlers.TIBCO.Transport.Job job; + DateTime enteredDateTimeFilter = new(2023, 05, 01); MethodBase methodBase = new StackFrame().GetMethod(); + DateTime loadSignatureDateTimeFilter = new(2023, 05, 01); string metrologyFileShare = FileHandlers.TIBCO.FileRead.MetrologyFileShare; string barcodeHostFileShare = FileHandlers.TIBCO.FileRead.BarcodeHostFileShare; string lsl2SQLConnectionString = FileHandlers.TIBCO.FileRead.LSL2SQLConnectionString; LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration")); HttpClient httpClient = new() { BaseAddress = new(FileHandlers.TIBCO.FileRead.OpenInsightApplicationProgrammingInterface) }; - string mid = "{\"Area\": \"Si\", \"EquipmentType\": \"MET08RESIMAPCDE\", \"MesEntity\": \"BIORAD3\", \"Sequence\": \"638234699589174855\", \"MID\": \"33--\", \"Recipe\": \"Recipe\"}"; - job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid); + string mid = """ + {"Area": "Si", "EquipmentType": "MET08RESIMAPCDE", "MesEntity": "BIORAD3", "Sequence": "638234699589174855", "MID": "33--", "Recipe": "Recipe"} + """; + job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter); Assert.IsFalse(string.IsNullOrEmpty(job.ProcessType)); Assert.IsFalse(string.IsNullOrEmpty(job.LotName)); Assert.IsFalse(string.IsNullOrEmpty(job.ProductName)); @@ -167,15 +191,18 @@ public class Job : LoggingUnitTesting, IDisposable public void TestJobD() { FileHandlers.TIBCO.Transport.Job job; + DateTime enteredDateTimeFilter = new(2023, 05, 01); MethodBase methodBase = new StackFrame().GetMethod(); - string metrologyFileShare = - FileHandlers.TIBCO.FileRead.MetrologyFileShare; + DateTime loadSignatureDateTimeFilter = new(2023, 05, 01); + string metrologyFileShare = FileHandlers.TIBCO.FileRead.MetrologyFileShare; string barcodeHostFileShare = FileHandlers.TIBCO.FileRead.BarcodeHostFileShare; string lsl2SQLConnectionString = FileHandlers.TIBCO.FileRead.LSL2SQLConnectionString; LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration")); HttpClient httpClient = new() { BaseAddress = new(FileHandlers.TIBCO.FileRead.OpenInsightApplicationProgrammingInterface) }; - string mid = "{\"Area\": \"Si\", \"EquipmentType\": \"DEP08CEPIEPSILON\", \"MesEntity\": \"R32\", \"Sequence\": \"\", \"MID\": \"32--\", \"Recipe\": \"Recipe\"}"; - job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid); + string mid = """ + {"Area": "Si", "EquipmentType": "DEP08CEPIEPSILON", "MesEntity": "R32", "Sequence": "", "MID": "32--", "Recipe": "Recipe"} + """; + job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter); Assert.IsFalse(string.IsNullOrEmpty(job.ProcessType)); Assert.IsFalse(string.IsNullOrEmpty(job.LotName)); Assert.IsFalse(string.IsNullOrEmpty(job.ProductName)); @@ -191,7 +218,9 @@ public class Job : LoggingUnitTesting, IDisposable public void TestJobE() { FileHandlers.TIBCO.Transport.Job job; + DateTime enteredDateTimeFilter = new(2023, 05, 01); MethodBase methodBase = new StackFrame().GetMethod(); + DateTime loadSignatureDateTimeFilter = new(2023, 05, 01); string metrologyFileShare = FileHandlers.TIBCO.FileRead.MetrologyFileShare; string barcodeHostFileShare = FileHandlers.TIBCO.FileRead.BarcodeHostFileShare; string lsl2SQLConnectionString = FileHandlers.TIBCO.FileRead.LSL2SQLConnectionString; @@ -200,7 +229,7 @@ public class Job : LoggingUnitTesting, IDisposable string mid = """ {"Area": "Si", "EquipmentType": "MET08RESIMAPCDE", "MesEntity": "CDE5", "Sequence": "638756365880000000", "MID": "38-660275-5095.1", "Recipe": "IRC6mm"} """; - job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid); + job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter); Assert.IsFalse(string.IsNullOrEmpty(job.ProcessType)); Assert.IsFalse(string.IsNullOrEmpty(job.LotName)); Assert.IsFalse(string.IsNullOrEmpty(job.ProductName)); @@ -216,7 +245,9 @@ public class Job : LoggingUnitTesting, IDisposable public void TestJobF() { FileHandlers.TIBCO.Transport.Job job; + DateTime enteredDateTimeFilter = new(2023, 05, 01); MethodBase methodBase = new StackFrame().GetMethod(); + DateTime loadSignatureDateTimeFilter = new(2023, 05, 01); string metrologyFileShare = FileHandlers.TIBCO.FileRead.MetrologyFileShare; string barcodeHostFileShare = FileHandlers.TIBCO.FileRead.BarcodeHostFileShare; string lsl2SQLConnectionString = FileHandlers.TIBCO.FileRead.LSL2SQLConnectionString; @@ -225,7 +256,7 @@ public class Job : LoggingUnitTesting, IDisposable string mid = """ {"Area": "Si", "EquipmentType": "MET08THFTIRQS408M", "MesEntity": "BIORAD2", "Sequence": "638757112479659597", "MID": "173308.1.5", "Recipe": "6inTHICK"} """; - job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid); + job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter); Assert.IsFalse(string.IsNullOrEmpty(job.ProcessType)); Assert.IsFalse(string.IsNullOrEmpty(job.LotName)); Assert.IsFalse(string.IsNullOrEmpty(job.ProductName)); @@ -241,7 +272,9 @@ public class Job : LoggingUnitTesting, IDisposable public void TestJobG() { FileHandlers.TIBCO.Transport.Job job; + DateTime enteredDateTimeFilter = new(2023, 05, 01); MethodBase methodBase = new StackFrame().GetMethod(); + DateTime loadSignatureDateTimeFilter = new(2023, 05, 01); string metrologyFileShare = FileHandlers.TIBCO.FileRead.MetrologyFileShare; string barcodeHostFileShare = FileHandlers.TIBCO.FileRead.BarcodeHostFileShare; string lsl2SQLConnectionString = FileHandlers.TIBCO.FileRead.LSL2SQLConnectionString; @@ -250,7 +283,7 @@ public class Job : LoggingUnitTesting, IDisposable string mid = """ {"Area": "Si", "EquipmentType": "MET08DDUPSFS6420", "MesEntity": "TENCOR1", "Sequence": "638765945581765554", "MID": "1T661282", "Recipe": "8IN_THIN ROTR"} """; - job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid); + job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter); Assert.IsFalse(string.IsNullOrEmpty(job.ProcessType)); Assert.IsFalse(string.IsNullOrEmpty(job.LotName)); Assert.IsFalse(string.IsNullOrEmpty(job.ProductName)); @@ -266,7 +299,9 @@ public class Job : LoggingUnitTesting, IDisposable public void TestJobH() { FileHandlers.TIBCO.Transport.Job job; + DateTime enteredDateTimeFilter = new(2023, 05, 01); MethodBase methodBase = new StackFrame().GetMethod(); + DateTime loadSignatureDateTimeFilter = new(2023, 05, 01); string metrologyFileShare = FileHandlers.TIBCO.FileRead.MetrologyFileShare; string barcodeHostFileShare = FileHandlers.TIBCO.FileRead.BarcodeHostFileShare; string lsl2SQLConnectionString = FileHandlers.TIBCO.FileRead.LSL2SQLConnectionString; @@ -275,7 +310,7 @@ public class Job : LoggingUnitTesting, IDisposable string mid = """ {"Area": "Si", "EquipmentType": "MET08DDUPSFS6420", "MesEntity": "TENCOR1", "Sequence": "638765945581765554", "MID": "AK1PL2", "Recipe": "8INCLEAN"} """; - job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid); + job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter); Assert.IsFalse(string.IsNullOrEmpty(job.ProcessType)); Assert.IsFalse(string.IsNullOrEmpty(job.LotName)); Assert.IsFalse(string.IsNullOrEmpty(job.ProductName)); @@ -284,4 +319,31 @@ public class Job : LoggingUnitTesting, IDisposable NonThrowTryCatch(); } +#if !Always + [Ignore] +#endif + [TestMethod] + public void TestJobI() + { + FileHandlers.TIBCO.Transport.Job job; + DateTime enteredDateTimeFilter = new(2023, 05, 01); + MethodBase methodBase = new StackFrame().GetMethod(); + DateTime loadSignatureDateTimeFilter = new(2023, 05, 01); + string metrologyFileShare = FileHandlers.TIBCO.FileRead.MetrologyFileShare; + string barcodeHostFileShare = FileHandlers.TIBCO.FileRead.BarcodeHostFileShare; + string lsl2SQLConnectionString = FileHandlers.TIBCO.FileRead.LSL2SQLConnectionString; + LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration")); + HttpClient httpClient = new() { BaseAddress = new(FileHandlers.TIBCO.FileRead.OpenInsightApplicationProgrammingInterface) }; + string mid = """ + {"Area": "Si", "EquipmentType": "MET08RESIMAPCDE", "MesEntity": "CDE5", "Sequence": "638163023363575829", "MID": "23-111111-5053", "Recipe": "lsl_6in "} + """; + job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter); + Assert.IsFalse(string.IsNullOrEmpty(job.ProcessType)); // == "23"); + Assert.IsFalse(string.IsNullOrEmpty(job.LotName)); // == "111111"); + Assert.IsFalse(string.IsNullOrEmpty(job.ProductName)); // == "5053"); + LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit")); + LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit")); + NonThrowTryCatch(); + } + } \ No newline at end of file