Compare commits

...

1 Commits

Author SHA1 Message Date
0988bdc296 Removed last logic
Removed save-open-insight-file to use process-data-standard-format instead
2025-05-20 13:49:22 -07:00
5 changed files with 79 additions and 96 deletions

View File

@ -8,6 +8,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.Json;
namespace Adaptation.FileHandlers.IQSSi;
@ -109,6 +110,59 @@ public class FileRead : Shared.FileRead, IFileRead
return results;
}
private static Tuple<string, string> GetLines(Logistics logistics, List<txt.Description> descriptions)
{
StringBuilder result = new();
char del = '\t';
txt.Description x = descriptions[0];
_ = result.Append(x.DcnLpdMin).Append(del). // 001 -
Append(x.DcnLpdMax).Append(del). // 002 -
Append(x.DcnLpdMean).Append(del). // 003 - DCN LPD
Append(x.DcnAreaCountMin).Append(del). // 004 -
Append(x.DcnAreaCountMax).Append(del). // 005 -
Append(x.DcnAreaCountMean).Append(del).// 006 - DCN Area
Append(x.DcnAreaMin).Append(del). // 007 -
Append(x.DcnAreaMax).Append(del). // 008 -
Append(x.Date).Append(del). // 009 -
Append(x.DcnHazeAvgMean).Append(del). // 010 - Haze Average
Append(string.Empty).Append(del). // 011 -
Append(string.Empty).Append(del). // 012 -
Append(string.Empty).Append(del). // 013 -
Append(string.Empty).Append(del). // 014 -
Append(string.Empty).Append(del). // 015 -
Append(string.Empty).Append(del). // 016 -
Append(string.Empty).Append(del). // 017 -
Append(string.Empty).Append(del). // 018 -
Append(string.Empty).Append(del). // 019 -
Append(string.Empty).Append(del). // 020 -
Append(string.Empty).Append(del). // 021 -
Append(string.Empty).Append(del). // 022 -
Append(string.Empty).Append(del). // 023 -
Append(string.Empty).Append(del). // 024 -
Append(string.Empty).Append(del). // 025 -
Append(string.Empty).Append(del). // 026 -
Append(string.Empty).Append(del). // 027 -
Append(x.RDS).Append(del). // 028 - Lot
Append(x.Reactor).Append(del). // 029 - Process
Append(x.Recipe).Append(del). // 030 - Part
Append(x.DcnScrMean).Append(del). // 031 - Scratch Count
Append(string.Empty).Append(del). // 032 -
Append(string.Empty).Append(del). // 033 -
Append(string.Empty).Append(del). // 034 -
Append(x.DcnMicroScrMean).Append(del). // 035 - Scratch Length
Append(string.Empty).Append(del). // 036 -
Append(string.Empty).Append(del). // 037 -
Append(string.Empty).Append(del). // 038 -
Append(x.DcnAllMean).Append(del). // 039 - Average Sum of Defects
Append(x.DcnAllMax).Append(del). // 040 - Max Sum of defects
Append(x.DcnAllMin).Append(del). // 041 - Min Sum of Defects
Append(string.Empty).Append(del). // 042 -
Append(logistics.MesEntity).Append(del). // 043 -
Append(x.DcnAreaMean).Append(del). // 044 - DCN MM2
AppendLine();
return new Tuple<string, string>(result.ToString(), x.Date);
}
private void SaveIQSFile(string reportFullPath, DateTime dateTime, List<txt.Description> descriptions, Test[] tests)
{
if (tests.Length == 0)
@ -116,7 +170,7 @@ public class FileRead : Shared.FileRead, IFileRead
else
{
bool isDummyRun = false;
Tuple<string, string> lines = OpenInsight.FileRead.GetLines(_Logistics, descriptions);
Tuple<string, string> lines = GetLines(_Logistics, descriptions);
string check = lines.Item1.Replace(lines.Item2, "$Date$");
ScopeInfo scopeInfo = new(tests[0], _IQSFile);
List<(Shared.Properties.IScopeInfo, string)> collection = new();

View File

@ -268,7 +268,7 @@ public class FileRead : Shared.FileRead, IFileRead
}
}
private static ReadOnlyCollection<Pre> GetPreCollection(int numberLength, string parentDirectory, ReadOnlyCollection<string> matchingFiles, bool _)
private static ReadOnlyCollection<Pre> GetPreCollection(int numberLength, string parentDirectory, ReadOnlyCollection<string> matchingFiles)
{
List<Pre> results = new();
Pre pre;
@ -366,10 +366,7 @@ public class FileRead : Shared.FileRead, IFileRead
{ CreatePointerFile(numberLength, parentParentDirectory, matchingFiles); }
catch (Exception) { }
}
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(processDataStandardFormat);
List<txt.Description> descriptions = txt.ProcessData.GetDescriptions(jsonElements);
bool mesEntityMatchesProcess = descriptions.Count > 0 && descriptions[0].MesEntity == descriptions[0].Reactor;
ReadOnlyCollection<Pre> preCollection = GetPreCollection(numberLength, parentParentDirectory, matchingFiles, mesEntityMatchesProcess);
ReadOnlyCollection<Pre> preCollection = GetPreCollection(numberLength, parentParentDirectory, matchingFiles);
ReadOnlyCollection<PreWith> preWithCollection = GetPreWithCollection(preCollection);
MoveCollection(dateTime, processDataStandardFormat, preWithCollection);
return results;

View File

@ -9,7 +9,6 @@ using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.Json;
namespace Adaptation.FileHandlers.OpenInsight;
@ -17,9 +16,7 @@ namespace Adaptation.FileHandlers.OpenInsight;
public class FileRead : Shared.FileRead, IFileRead
{
private string _LastLines;
private readonly string _IqsConnectionString;
private readonly string _OpenInsightFilePattern;
private readonly string _OpenInsightApiECDirectory;
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<WS.Results>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
@ -34,10 +31,8 @@ public class FileRead : Shared.FileRead, IFileRead
throw new Exception(cellInstanceConnectionName);
if (!_IsDuplicator)
throw new Exception(cellInstanceConnectionName);
_LastLines = string.Empty;
_IqsConnectionString = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "IQS.ConnectionString");
_OpenInsightApiECDirectory = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "API.EC.Directory");
_OpenInsightFilePattern = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "OpenInsight.FilePattern");
}
void IFileRead.Move(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults, Exception exception)
@ -115,59 +110,6 @@ public class FileRead : Shared.FileRead, IFileRead
return results;
}
internal static Tuple<string, string> GetLines(Logistics logistics, List<txt.Description> descriptions)
{
StringBuilder result = new();
char del = '\t';
txt.Description x = descriptions[0];
_ = result.Append(x.DcnLpdMin).Append(del). // 001 -
Append(x.DcnLpdMax).Append(del). // 002 -
Append(x.DcnLpdMean).Append(del). // 003 - DCN LPD
Append(x.DcnAreaCountMin).Append(del). // 004 -
Append(x.DcnAreaCountMax).Append(del). // 005 -
Append(x.DcnAreaCountMean).Append(del).// 006 - DCN Area
Append(x.DcnAreaMin).Append(del). // 007 -
Append(x.DcnAreaMax).Append(del). // 008 -
Append(x.Date).Append(del). // 009 -
Append(x.DcnHazeAvgMean).Append(del). // 010 - Haze Average
Append(string.Empty).Append(del). // 011 -
Append(string.Empty).Append(del). // 012 -
Append(string.Empty).Append(del). // 013 -
Append(string.Empty).Append(del). // 014 -
Append(string.Empty).Append(del). // 015 -
Append(string.Empty).Append(del). // 016 -
Append(string.Empty).Append(del). // 017 -
Append(string.Empty).Append(del). // 018 -
Append(string.Empty).Append(del). // 019 -
Append(string.Empty).Append(del). // 020 -
Append(string.Empty).Append(del). // 021 -
Append(string.Empty).Append(del). // 022 -
Append(string.Empty).Append(del). // 023 -
Append(string.Empty).Append(del). // 024 -
Append(string.Empty).Append(del). // 025 -
Append(string.Empty).Append(del). // 026 -
Append(string.Empty).Append(del). // 027 -
Append(x.RDS).Append(del). // 028 - Lot
Append(x.Reactor).Append(del). // 029 - Process
Append(x.Recipe).Append(del). // 030 - Part
Append(x.DcnScrMean).Append(del). // 031 - Scratch Count
Append(string.Empty).Append(del). // 032 -
Append(string.Empty).Append(del). // 033 -
Append(string.Empty).Append(del). // 034 -
Append(x.DcnMicroScrMean).Append(del). // 035 - Scratch Length
Append(string.Empty).Append(del). // 036 -
Append(string.Empty).Append(del). // 037 -
Append(string.Empty).Append(del). // 038 -
Append(x.DcnAllMean).Append(del). // 039 - Average Sum of Defects
Append(x.DcnAllMax).Append(del). // 040 - Max Sum of defects
Append(x.DcnAllMin).Append(del). // 041 - Min Sum of Defects
Append(string.Empty).Append(del). // 042 -
Append(logistics.MesEntity).Append(del). // 043 -
Append(x.DcnAreaMean).Append(del). // 044 - DCN MM2
AppendLine();
return new Tuple<string, string>(result.ToString(), x.Date);
}
private void SaveOpenInsightFile(string reportFullPath, DateTime dateTime, ProcessDataStandardFormat processDataStandardFormat, List<txt.Description> descriptions, Test[] tests)
{
bool isDummyRun = false;
@ -186,34 +128,29 @@ public class FileRead : Shared.FileRead, IFileRead
_ = Directory.CreateDirectory(duplicateDirectory);
}
string duplicateFile = Path.Combine(duplicateDirectory, Path.GetFileName(reportFullPath));
if (descriptions.Count == 0 || tests.Length == 0)
_LastLines = string.Empty;
else
if (descriptions.Count != 0 && tests.Length != 0)
{
Tuple<string, string> lines = GetLines(_Logistics, descriptions);
string check = lines.Item1.Replace(lines.Item2, "$Date$");
bool save = string.IsNullOrEmpty(_LastLines) || check != _LastLines;
if (save && !string.IsNullOrEmpty(check))
long? subgroupId;
long breakAfter = dateTime.AddSeconds(_BreakAfterSeconds).Ticks;
long preWait = _FileConnectorConfiguration?.FileHandleWaitTime is null ? dateTime.AddMilliseconds(1234).Ticks : dateTime.AddMilliseconds(_FileConnectorConfiguration.FileHandleWaitTime.Value).Ticks;
if (string.IsNullOrEmpty(descriptions[0].Reactor) || string.IsNullOrEmpty(descriptions[0].PSN))
subgroupId = null;
else
(subgroupId, int? _, string _) = FromIQS.GetCommandText(_IqsConnectionString, _Logistics, descriptions[0], breakAfter, preWait);
if (_StaticRuns.TryGetValue(_Logistics.Sequence, out List<WS.Results> wsResults))
{
long? subgroupId;
_LastLines = check;
long breakAfter = dateTime.AddSeconds(_BreakAfterSeconds).Ticks;
long preWait = _FileConnectorConfiguration?.FileHandleWaitTime is null ? dateTime.AddMilliseconds(1234).Ticks : dateTime.AddMilliseconds(_FileConnectorConfiguration.FileHandleWaitTime.Value).Ticks;
if (string.IsNullOrEmpty(descriptions[0].Reactor) || string.IsNullOrEmpty(descriptions[0].PSN))
subgroupId = null;
else
(subgroupId, int? _, string _) = FromIQS.GetCommandText(_IqsConnectionString, _Logistics, descriptions[0], breakAfter, preWait);
if (subgroupId is null)
collection.Add(new(new ScopeInfo(tests[0], _OpenInsightFilePattern), lines.Item1));
else
collection.Add(new(new ScopeInfo(tests[0], $"{subgroupId.Value} {_OpenInsightFilePattern}"), lines.Item1));
string weekOfYear = _Calendar.GetWeekOfYear(_Logistics.DateTimeFromSequence, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00");
FromIQS.Save(_OpenInsightApiECDirectory, _Logistics, reportFullPath, processDataStandardFormat, descriptions.First(), lines.Item1, subgroupId, weekOfYear);
if (wsResults is null || wsResults.Count != 1)
throw new NullReferenceException($"{nameof(wsResults)} {wsResults?.Count} != 1 {_Logistics.Sequence}!");
lock (_StaticRuns)
wsResults[0] = WS.Results.Get(wsResults[0], subgroupId);
}
if (!Directory.Exists(duplicateDirectory))
_ = Directory.CreateDirectory(duplicateDirectory);
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
WaitForFileConsumption(dateTime, descriptions, isDummyRun, successDirectory, duplicateDirectory, collection, duplicateFile);
string weekOfYear = _Calendar.GetWeekOfYear(_Logistics.DateTimeFromSequence, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00");
FromIQS.Save(_OpenInsightApiECDirectory, _Logistics, reportFullPath, processDataStandardFormat, descriptions.First(), subgroupId, weekOfYear);
}
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
{
File.Copy(reportFullPath, duplicateFile, overwrite: true);
WaitForFileConsumption(dateTime, descriptions, isDummyRun, successDirectory, duplicateDirectory, collection, duplicateFile);
}
}

View File

@ -376,7 +376,7 @@ public class FromIQS
return result;
}
internal static void Save(string openInsightApiECDirectory, Logistics logistics, string reportFullPath, ProcessDataStandardFormat processDataStandardFormat, txt.Description description, string lines, long? subGroupId, string weekOfYear)
internal static void Save(string openInsightApiECDirectory, Logistics logistics, string reportFullPath, ProcessDataStandardFormat processDataStandardFormat, txt.Description description, long? subGroupId, string weekOfYear)
{
string checkFile;
string fileName = Path.GetFileName(reportFullPath);
@ -390,15 +390,9 @@ public class FromIQS
checkFile = Path.Combine(ecDirectory, fileName);
if (ecExists && !File.Exists(checkFile))
File.Copy(reportFullPath, checkFile);
checkFile = Path.Combine(ecDirectory, $"{logistics.DateTimeFromSequence.Ticks}.txt");
if (ecExists && !File.Exists(checkFile))
File.WriteAllText(checkFile, lines);
checkFile = Path.Combine(ecDirectory, $"{logistics.DateTimeFromSequence.Ticks}.json");
if (ecExists && !File.Exists(checkFile))
File.WriteAllText(checkFile, json);
checkFile = Path.Combine(ecDirectory, $"{logistics.DateTimeFromSequence.Ticks}.lbl");
if (ecExists && !File.Exists(checkFile))
File.WriteAllText(checkFile, processDataStandardFormat.Body[processDataStandardFormat.Body.Count - 1]);
}
private static string GetCommandText(string[] iqsCopyValues)

View File

@ -462,6 +462,7 @@ internal class ProcessDataStandardFormat
results.Add(string.Empty);
List<char> hyphens = new();
results.AddRange(processDataStandardFormat.InputPDSF.Header.Select(l => l.Replace('\t', '|')));
results.Add(string.Empty);
results.Add($"|{string.Join("|", processDataStandardFormat.InputPDSF.Columns)}|");
for (int i = 0; i < processDataStandardFormat.InputPDSF.Columns.Count; i++)
hyphens.Add('-');