Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c401562813 | |||
| ed8930bd48 | |||
| 7ca641f912 | |||
| 35f5873e22 | |||
| 8ee374b2a8 | |||
| 127a24b77e | |||
| 8c0380b6bf | |||
| b79c9d7ea7 | |||
| ea0c145d4a | |||
| 72cc064f56 | |||
| ec90b4fbbd | |||
| ddf12e5ec0 |
@ -107,6 +107,7 @@ dotnet_diagnostic.CA1864.severity = none # CA1864: To avoid double lookup, call
|
||||
dotnet_diagnostic.CA1866.severity = none # CA1866: Use 'string.EndsWith(char)' instead of 'string.EndsWith(string)' when you have a string with a single char
|
||||
dotnet_diagnostic.CA1869.severity = none # CA1869: Avoid creating a new 'JsonSerializerOptions' instance for every serialization operation. Cache and reuse instances instead.
|
||||
dotnet_diagnostic.CA2254.severity = none # CA2254: The logging message template should not vary between calls to 'LoggerExtensions.LogInformation(ILogger, string?, params object?[])'
|
||||
dotnet_diagnostic.CS0618.severity = none # 'member' is obsolete: 'description'
|
||||
dotnet_diagnostic.IDE0001.severity = warning # IDE0001: Simplify name
|
||||
dotnet_diagnostic.IDE0002.severity = warning # Simplify (member access) - System.Version.Equals("1", "2"); Version.Equals("1", "2");
|
||||
dotnet_diagnostic.IDE0004.severity = warning # IDE0004: Cast is redundant.
|
||||
@ -123,8 +124,9 @@ dotnet_diagnostic.IDE0300.severity = none # IDE0300: Collection initialization c
|
||||
dotnet_diagnostic.IDE0301.severity = none #IDE0301: Collection initialization can be simplified
|
||||
dotnet_diagnostic.IDE0305.severity = none # IDE0305: Collection initialization can be simplified
|
||||
dotnet_diagnostic.MSTEST0015.severity = none # MSTEST0015: Test method {method} should not be ignored
|
||||
dotnet_diagnostic.MSTEST0037.severity = error # MSTEST0037: Use proper 'Assert' methods
|
||||
dotnet_diagnostic.MSTEST0037.severity = none # MSTEST0037: Use proper 'Assert' methods
|
||||
dotnet_diagnostic.SYSLIB1045.severity = none # SYSLIB1045: diagnostics for regex source generation
|
||||
dotnet_diagnostic.MSTEST0048.severity = none # MSTEST0048: Test method '{method}' should be attributed with 'DataTestMethod' when using 'DataRow' attributes
|
||||
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.symbols = abstract_method
|
||||
|
||||
39
Adaptation/.vscode/launch.json
vendored
39
Adaptation/.vscode/launch.json
vendored
@ -1,10 +1,43 @@
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"mode": "debug",
|
||||
"name": "Go launch file",
|
||||
"program": "${file}",
|
||||
"request": "launch",
|
||||
"type": "go"
|
||||
},
|
||||
{
|
||||
"name": "node Launch Current Opened File",
|
||||
"program": "${file}",
|
||||
"request": "launch",
|
||||
"type": "node"
|
||||
},
|
||||
{
|
||||
"cwd": "${workspaceFolder}",
|
||||
"internalConsoleOptions": "neverOpen",
|
||||
"name": "Debug File",
|
||||
"program": "${file}",
|
||||
"request": "launch",
|
||||
"stopOnEntry": false,
|
||||
"type": "bun",
|
||||
"watchMode": false
|
||||
},
|
||||
{
|
||||
"cwd": "${workspaceFolder}",
|
||||
"internalConsoleOptions": "neverOpen",
|
||||
"name": "Run File",
|
||||
"noDebug": true,
|
||||
"program": "${file}",
|
||||
"request": "launch",
|
||||
"type": "bun",
|
||||
"watchMode": false
|
||||
},
|
||||
{
|
||||
"name": ".NET Core Attach",
|
||||
"type": "coreclr",
|
||||
"processId": 32760,
|
||||
"request": "attach",
|
||||
"processId": 13604
|
||||
"type": "coreclr"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
2
Adaptation/.vscode/tasks.json
vendored
2
Adaptation/.vscode/tasks.json
vendored
@ -216,7 +216,7 @@
|
||||
{
|
||||
"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",
|
||||
"command": "L:/DevOps/Mesa_FI/File-Folder-Helper/bin/Release/net10.0/win-x64/publish/File-Folder-Helper.exe",
|
||||
"args": [
|
||||
"s",
|
||||
"X",
|
||||
|
||||
@ -17,8 +17,9 @@ public class CellInstanceConnectionName
|
||||
nameof(Archive) => new Archive.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
||||
nameof(Dummy) => new Dummy.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
||||
nameof(IQSSi) => new IQSSi.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
||||
nameof(MoveAllFiles) => new MoveAllFiles.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
||||
nameof(MoveMapFiles) => new MoveMapFiles.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
||||
nameof(MoveMatchingFiles) => new MoveMatchingFiles.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
||||
nameof(MoveTextFiles) => new MoveTextFiles.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
||||
nameof(OpenInsight) => new OpenInsight.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
||||
nameof(OpenInsightMetrologyViewer) => new OpenInsightMetrologyViewer.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
||||
nameof(OpenInsightMetrologyViewerAttachments) => new OpenInsightMetrologyViewerAttachments.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
||||
|
||||
@ -97,9 +97,9 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
|
||||
private void CallbackInProcessCleared(string sourceArchiveFile, string traceDummyFile, string targetFileLocation, string monARessource, string inProcessDirectory, long sequence, bool warning)
|
||||
{
|
||||
const string site = "sjc";
|
||||
const string site = "els";
|
||||
string stateName = string.Concat("Dummy_", _EventName);
|
||||
const string monInURL = "http://moninhttp.sjc.infineon.com/input/text";
|
||||
const string monInURL = $"http://moninhttp.{site}.infineon.com/input/text";
|
||||
MonIn monIn = MonIn.GetInstance(monInURL);
|
||||
try
|
||||
{
|
||||
|
||||
@ -115,50 +115,50 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
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
|
||||
_ = 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.Session).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);
|
||||
}
|
||||
@ -203,10 +203,11 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime)
|
||||
{
|
||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
||||
ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath);
|
||||
string[] lines = File.ReadAllLines(reportFullPath);
|
||||
ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath, lines);
|
||||
_Logistics = new Logistics(reportFullPath, processDataStandardFormat);
|
||||
SetFileParameterLotIDToLogisticsMID();
|
||||
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(processDataStandardFormat);
|
||||
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(reportFullPath, lines, processDataStandardFormat);
|
||||
List<txt.Description> descriptions = txt.ProcessData.GetDescriptions(jsonElements);
|
||||
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
||||
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
||||
|
||||
@ -8,7 +8,7 @@ using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles;
|
||||
namespace Adaptation.FileHandlers.MoveMapFiles;
|
||||
|
||||
public class FileRead : Shared.FileRead, IFileRead
|
||||
{
|
||||
@ -85,9 +85,9 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
throw new Exception(cellInstanceConnectionName);
|
||||
if (!_IsDuplicator)
|
||||
throw new Exception(cellInstanceConnectionName);
|
||||
string processDataStandardFormatMappingOldColumnNames = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "Process.Data.Standard.Format.Mapping.Old.Column.Names");
|
||||
string processDataStandardFormatMappingNewColumnNames = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "Process.Data.Standard.Format.Mapping.New.Column.Names");
|
||||
string processDataStandardFormatMappingColumnIndices = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "Process.Data.Standard.Format.Mapping.Column.Indices");
|
||||
string processDataStandardFormatMappingOldColumnNames = "Time,A_LOGISTICS,B_LOGISTICS,Test,Count,Index,MesEntity,Date,Employee,Lot,PSN,Reactor,Recipe,Grade,HeaderUniqueId,RDS,Session,Side,SrcDest,UniqueId,WaferID,DcnAllMax,DcnAllMean,DcnAllMin,DcnAllStdDev,DcnAreaCountMax,DcnAreaCountMean,DcnAreaCountMin,DcnAreaCountStdDev,DcnAreaMax,DcnAreaMean,DcnAreaMin,DcnAreaStdDev,DcnBin1Max,DcnBin1Mean,DcnBin1Min,DcnBin1StdDev,DcnBin2Max,DcnBin2Mean,DcnBin2Min,DcnBin2StdDev,DcnBin3Max,DcnBin3Mean,DcnBin3Min,DcnBin3StdDev,DcnBin4Max,DcnBin4Mean,DcnBin4Min,DcnBin4StdDev,DcnBin5Max,DcnBin5Mean,DcnBin5Min,DcnBin5StdDev,DcnBin6Max,DcnBin6Mean,DcnBin6Min,DcnBin6StdDev,DcnBin7Max,DcnBin7Mean,DcnBin7Min,DcnBin7StdDev,DcnBin8Max,DcnBin8Mean,DcnBin8Min,DcnBin8StdDev,DcnHazeAvgMax,DcnHazeAvgMean,DcnHazeAvgMin,DcnHazeAvgStdDev,DcnHazeMedianMax,DcnHazeMedianMean,DcnHazeMedianMin,DcnHazeMedianStdDev,DcnHazeStdDevMax,DcnHazeStdDevMean,DcnHazeStdDevMin,DcnHazeStdDevStdDev,DcnLpdESMax,DcnLpdESMean,DcnLpdESMin,DcnLpdESStdDev,DcnLpdMax,DcnLpdMean,DcnLpdMin,DcnLpdNMax,DcnLpdNMean,DcnLpdNMin,DcnLpdNStdDev,DcnLpdStdDev,DcnMicroScrMax,DcnMicroScrMean,DcnMicroScrMin,DcnMicroScrStdDev,DcnScrMax,DcnScrMean,DcnScrMin,DcnScrStdDev,DcnSlipMax,DcnSlipMean,DcnSlipMin,DcnSlipStdDev,DnnAllMax,DnnAllMean,DnnAllMin,DnnAllStdDev,DnnAreaCountMax,DnnAreaCountMean,DnnAreaCountMin,DnnAreaCountStdDev,DnnAreaMax,DnnAreaMean,DnnAreaMin,DnnAreaStdDev,DnnBin1Max,DnnBin1Mean,DnnBin1Min,DnnBin1StdDev,DnnBin2Max,DnnBin2Mean,DnnBin2Min,DnnBin2StdDev,DnnBin3Max,DnnBin3Mean,DnnBin3Min,DnnBin3StdDev,DnnBin4Max,DnnBin4Mean,DnnBin4Min,DnnBin4StdDev,DnnBin5Max,DnnBin5Mean,DnnBin5Min,DnnBin5StdDev,DnnBin6Max,DnnBin6Mean,DnnBin6Min,DnnBin6StdDev,DnnBin7Max,DnnBin7Mean,DnnBin7Min,DnnBin7StdDev,DnnBin8Max,DnnBin8Mean,DnnBin8Min,DnnBin8StdDev,DnnHazeAvgMax,DnnHazeAvgMean,DnnHazeAvgMin,DnnHazeAvgStdDev,DnnHazeMedianMax,DnnHazeMedianMean,DnnHazeMedianMin,DnnHazeMedianStdDev,DnnHazeStdDevMax,DnnHazeStdDevMean,DnnHazeStdDevMin,DnnHazeStdDevStdDev,DnnLpdESMax,DnnLpdESMean,DnnLpdESMin,DnnLpdESStdDev,DnnLpdMax,DnnLpdMean,DnnLpdMin,DnnLpdNMax,DnnLpdNMean,DnnLpdNMin,DnnLpdNStdDev,DnnLpdStdDev,DnnMicroScrMax,DnnMicroScrMean,DnnMicroScrMin,DnnMicroScrStdDev,DnnScrMax,DnnScrMean,DnnScrMin,DnnScrStdDev,DnnSlipMax,DnnSlipMean,DnnSlipMin,DnnSlipStdDev,DwnAllMax,DwnAllMean,DwnAllMin,DwnAllStdDev,DwnAreaCountMax,DwnAreaCountMean,DwnAreaCountMin,DwnAreaCountStdDev,DwnAreaMax,DwnAreaMean,DwnAreaMin,DwnAreaStdDev,DwnBin1Max,DwnBin1Mean,DwnBin1Min,DwnBin1StdDev,DwnBin2Max,DwnBin2Mean,DwnBin2Min,DwnBin2StdDev,DwnBin3Max,DwnBin3Mean,DwnBin3Min,DwnBin3StdDev,DwnBin4Max,DwnBin4Mean,DwnBin4Min,DwnBin4StdDev,DwnBin5Max,DwnBin5Mean,DwnBin5Min,DwnBin5StdDev,DwnBin6Max,DwnBin6Mean,DwnBin6Min,DwnBin6StdDev,DwnBin7Max,DwnBin7Mean,DwnBin7Min,DwnBin7StdDev,DwnBin8Max,DwnBin8Mean,DwnBin8Min,DwnBin8StdDev,DwnHazeAvgMax,DwnHazeAvgMean,DwnHazeAvgMin,DwnHazeAvgStdDev,DwnHazeMedianMax,DwnHazeMedianMean,DwnHazeMedianMin,DwnHazeMedianStdDev,DwnHazeStdDevMax,DwnHazeStdDevMean,DwnHazeStdDevMin,DwnHazeStdDevStdDev,DwnLpdESMax,DwnLpdESMean,DwnLpdESMin,DwnLpdESStdDev,DwnLpdMax,DwnLpdMean,DwnLpdMin,DwnLpdNMax,DwnLpdNMean,DwnLpdNMin,DwnLpdNStdDev,DwnLpdStdDev,DwnMicroScrMax,DwnMicroScrMean,DwnMicroScrMin,DwnMicroScrStdDev,DwnScrMax,DwnScrMean,DwnScrMin,DwnScrStdDev,DwnSlipMax,DwnSlipMean,DwnSlipMin,DwnSlipStdDev,DcnAll,DcnArea,DcnAreaCount,DcnBin1,DcnBin2,DcnBin3,DcnBin4,DcnBin5,DcnBin6,DcnBin7,DcnBin8,DcnHazeAvg,DcnHazeMedian,DcnHazeStdDev,DcnLpd,DcnLpdES,DcnLpdN,DcnMicroScr,DcnScr,DcnSlip,DnnAll,DnnArea,DnnAreaCount,DnnBin1,DnnBin2,DnnBin3,DnnBin4,DnnBin5,DnnBin6,DnnBin7,DnnBin8,DnnHazeAvg,DnnHazeMedian,DnnHazeStdDev,DnnLpd,DnnLpdES,DnnLpdN,DnnMicroScr,DnnScr,DnnSlip,DwnAll,DwnArea,DwnAreaCount,DwnBin1,DwnBin2,DwnBin3,DwnBin4,DwnBin5,DwnBin6,DwnBin7,DwnBin8,DwnHazeAvg,DwnHazeMedian,DwnHazeStdDev,DwnLpd,DwnLpdES,DwnLpdN,DwnMicroScr,DwnScr,DwnSlip,EventId,IndexOf,AttemptCounter,ReactorMode,ExportControl,CastingVerification"; // GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "Process.Data.Standard.Format.Mapping.Old.Column.Names");
|
||||
string processDataStandardFormatMappingNewColumnNames = "Time,A_LOGISTICS,B_LOGISTICS,Count,Sequence,MesEntity,Index,Lot,Session,DcnAllMin,DcnLpdMin,DcnLpdNMin,DcnLpdESMin,DcnMicroScrMin,DcnScrMin,DcnSlipMin,DcnAreaCountMin,DcnAreaMin,DcnHazeAvgMin,DcnHazeMedianMin,DcnHazeStdDevMin,DcnBin1Min,DcnBin2Min,DcnBin3Min,DcnBin4Min,DcnBin5Min,DcnBin6Min,DcnBin7Min,DcnBin8Min,DcnAllMax,DcnLpdMax,DcnLpdNMax,DcnLpdESMax,DcnMicroScrMax,DcnScrMax,DcnSlipMax,DcnAreaCountMax,DcnAreaMax,DcnHazeAvgMax,DcnHazeMedianMax,DcnHazeStdDevMax,DcnBin1Max,DcnBin2Max,DcnBin3Max,DcnBin4Max,DcnBin5Max,DcnBin6Max,DcnBin7Max,DcnBin8Max,DcnAllMean,DcnLpdMean,DcnLpdNMean,DcnLpdESMean,DcnMicroScrMean,DcnScrMean,DcnSlipMean,DcnAreaCountMean,DcnAreaMean,DcnHazeAvgMean,DcnHazeMedianMean,DcnHazeStdDevMean,DcnBin1Mean,DcnBin2Mean,DcnBin3Mean,DcnBin4Mean,DcnBin5Mean,DcnBin6Mean,DcnBin7Mean,DcnBin8Mean,DcnAllStdDev,DcnLpdStdDev,DcnLpdNStdDev,DcnLpdESStdDev,DcnMicroScrStdDev,DcnScrStdDev,DcnSlipStdDev,DcnAreaCountStdDev,DcnAreaStdDev,DcnHazeAvgStdDev,DcnHazeMedianStdDev,DcnHazeStdDevStdDev,DcnBin1StdDev,DcnBin2StdDev,DcnBin3StdDev,DcnBin4StdDev,DcnBin5StdDev,DcnBin6StdDev,DcnBin7StdDev,DcnBin8StdDev,DwnAllMin,DwnLpdMin,DwnLpdNMin,DwnLpdESMin,DwnMicroScrMin,DwnScrMin,DwnSlipMin,DwnAreaCountMin,DwnAreaMin,DwnHazeAvgMin,DwnHazeMedianMin,DwnHazeStdDevMin,DwnBin1Min,DwnBin2Min,DwnBin3Min,DwnBin4Min,DwnBin5Min,DwnBin6Min,DwnBin7Min,DwnBin8Min,DwnAllMax,DwnLpdMax,DwnLpdNMax,DwnLpdESMax,DwnMicroScrMax,DwnScrMax,DwnSlipMax,DwnAreaCountMax,DwnAreaMax,DwnHazeAvgMax,DwnHazeMedianMax,DwnHazeStdDevMax,DwnBin1Max,DwnBin2Max,DwnBin3Max,DwnBin4Max,DwnBin5Max,DwnBin6Max,DwnBin7Max,DwnBin8Max,DwnAllMean,DwnLpdMean,DwnLpdNMean,DwnLpdESMean,DwnMicroScrMean,DwnScrMean,DwnSlipMean,DwnAreaCountMean,DwnAreaMean,DwnHazeAvgMean,DwnHazeMedianMean,DwnHazeStdDevMean,DwnBin1Mean,DwnBin2Mean,DwnBin3Mean,DwnBin4Mean,DwnBin5Mean,DwnBin6Mean,DwnBin7Mean,DwnBin8Mean,DwnAllStdDev,DwnLpdStdDev,DwnLpdNStdDev,DwnLpdESStdDev,DwnMicroScrStdDev,DwnScrStdDev,DwnSlipStdDev,DwnAreaCountStdDev,DwnAreaStdDev,DwnHazeAvgStdDev,DwnHazeMedianStdDev,DwnHazeStdDevStdDev,DwnBin1StdDev,DwnBin2StdDev,DwnBin3StdDev,DwnBin4StdDev,DwnBin5StdDev,DwnBin6StdDev,DwnBin7StdDev,DwnBin8StdDev,DnnAllMin,DnnLpdMin,DnnLpdNMin,DnnLpdESMin,DnnMicroScrMin,DnnScrMin,DnnSlipMin,DnnAreaCountMin,DnnAreaMin,DnnHazeAvgMin,DnnHazeMedianMin,DnnHazeStdDevMin,DnnBin1Min,DnnBin2Min,DnnBin3Min,DnnBin4Min,DnnBin5Min,DnnBin6Min,DnnBin7Min,DnnBin8Min,DnnAllMax,DnnLpdMax,DnnLpdNMax,DnnLpdESMax,DnnMicroScrMax,DnnScrMax,DnnSlipMax,DnnAreaCountMax,DnnAreaMax,DnnHazeAvgMax,DnnHazeMedianMax,DnnHazeStdDevMax,DnnBin1Max,DnnBin2Max,DnnBin3Max,DnnBin4Max,DnnBin5Max,DnnBin6Max,DnnBin7Max,DnnBin8Max,DnnAllMean,DnnLpdMean,DnnLpdNMean,DnnLpdESMean,DnnMicroScrMean,DnnScrMean,DnnSlipMean,DnnAreaCountMean,DnnAreaMean,DnnHazeAvgMean,DnnHazeMedianMean,DnnHazeStdDevMean,DnnBin1Mean,DnnBin2Mean,DnnBin3Mean,DnnBin4Mean,DnnBin5Mean,DnnBin6Mean,DnnBin7Mean,DnnBin8Mean,DnnAllStdDev,DnnLpdStdDev,DnnLpdNStdDev,DnnLpdESStdDev,DnnMicroScrStdDev,DnnScrStdDev,DnnSlipStdDev,DnnAreaCountStdDev,DnnAreaStdDev,DnnHazeAvgStdDev,DnnHazeMedianStdDev,DnnHazeStdDevStdDev,DnnBin1StdDev,DnnBin2StdDev,DnnBin3StdDev,DnnBin4StdDev,DnnBin5StdDev,DnnBin6StdDev,DnnBin7StdDev,DnnBin8StdDev,Side,WaferID,Grade,SrcDest,DcnAll,DcnLpd,DcnLpdN,DcnLpdES,DcnMicroScr,DcnScr,DcnSlip,DcnAreaCount,DcnArea,DcnHazeAvg,DcnHazeMedian,DcnHazeStdDev,DcnBin1,DcnBin2,DcnBin3,DcnBin4,DcnBin5,DcnBin6,DcnBin7,DcnBin8,DwnAll,DwnLpd,DwnLpdN,DwnLpdES,DwnMicroScr,DwnScr,DwnSlip,DwnAreaCount,DwnArea,DwnHazeAvg,DwnHazeMedian,DwnHazeStdDev,DwnBin1,DwnBin2,DwnBin3,DwnBin4,DwnBin5,DwnBin6,DwnBin7,DwnBin8,DnnAll,DnnLpd,DnnLpdN,DnnLpdES,DnnMicroScr,DnnScr,DnnSlip,DnnAreaCount,DnnArea,DnnHazeAvg,DnnHazeMedian,DnnHazeStdDev,DnnBin1,DnnBin2,DnnBin3,DnnBin4,DnnBin5,DnnBin6,DnnBin7,DnnBin8,RDS,PSN,Reactor,Layer,Zone,Employee,InferredLot,Date,EventId,IndexOf,AttemptCounter,ReactorMode,ExportControl,CastingVerification"; // GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "Process.Data.Standard.Format.Mapping.New.Column.Names");
|
||||
string processDataStandardFormatMappingColumnIndices = "0,1,2,321,3,6,5,320,318,7,314,315,8,251,-1,313,8,249,252,-1,250,29,49,9,69,36,56,16,76,37,57,17,77,41,61,21,81,42,62,22,82,43,63,23,83,44,64,24,84,45,65,25,85,46,66,26,86,47,67,27,87,48,68,28,88,38,58,18,78,39,59,19,79,40,60,20,80,32,52,12,72,30,50,10,31,51,11,71,70,33,53,13,73,34,54,14,74,35,55,15,75,189,209,169,229,196,216,176,236,197,217,177,237,201,221,181,241,202,222,182,242,203,223,183,243,204,224,184,244,205,225,185,245,206,226,186,246,207,227,187,247,208,228,188,248,198,218,178,238,199,219,179,239,200,220,180,240,192,212,172,232,190,210,170,191,211,171,231,230,193,213,173,233,194,214,174,234,195,215,175,235,109,129,89,149,116,136,96,156,117,137,97,157,121,141,101,161,122,142,102,162,123,143,103,163,124,144,104,164,125,145,105,165,126,146,106,166,127,147,107,167,128,148,108,168,118,138,98,158,119,139,99,159,120,140,100,160,112,132,92,152,110,130,90,111,131,91,151,150,113,133,93,153,114,134,94,154,115,135,95,155,253,261,260,265,266,267,268,269,270,271,272,262,263,264,254,256,255,257,258,259,293,301,300,305,306,307,308,309,310,311,312,302,303,304,294,296,295,297,298,299,273,281,280,285,286,287,288,289,290,291,292,282,283,284,274,276,275,277,278,279,280,281,282,283,284,285"; // GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "Process.Data.Standard.Format.Mapping.Column.Indices");
|
||||
_ProcessDataStandardFormatMapping = ProcessDataStandardFormatMapping.Get(processDataStandardFormatMappingOldColumnNames,
|
||||
processDataStandardFormatMappingNewColumnNames,
|
||||
processDataStandardFormatMappingColumnIndices);
|
||||
@ -267,11 +267,12 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
List<Post> results = new();
|
||||
Post post;
|
||||
long preWait;
|
||||
long uniqueSequence = Logistics.GetUniqueSequence(_Logistics);
|
||||
foreach (PreWith preWith in preWithCollection)
|
||||
{
|
||||
if (!_IsEAFHosted)
|
||||
continue;
|
||||
if (!_StaticRuns.TryGetValue(_Logistics.Sequence, out List<Shared.Metrology.WS.Results>? wsResults))
|
||||
if (!_StaticRuns.TryGetValue(uniqueSequence, out List<Shared.Metrology.WS.Results>? wsResults))
|
||||
wsResults = null;
|
||||
if (processDataStandardFormat.InputPDSF is null)
|
||||
File.Move(preWith.MatchingFile, preWith.CheckFile);
|
||||
|
||||
112
Adaptation/FileHandlers/MoveTextFiles/FileRead.cs
Normal file
112
Adaptation/FileHandlers/MoveTextFiles/FileRead.cs
Normal file
@ -0,0 +1,112 @@
|
||||
using Adaptation.Eaf.Management.ConfigurationData.CellAutomation;
|
||||
using Adaptation.Ifx.Eaf.EquipmentConnector.File.Configuration;
|
||||
using Adaptation.Shared;
|
||||
using Adaptation.Shared.Duplicator;
|
||||
using Adaptation.Shared.Methods;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveTextFiles;
|
||||
|
||||
public class FileRead : Shared.FileRead, IFileRead
|
||||
{
|
||||
|
||||
#nullable enable
|
||||
|
||||
private long? _TickOffset;
|
||||
|
||||
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) :
|
||||
base(new Description(), false, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
||||
{
|
||||
_MinFileLength = 10;
|
||||
_NullData = string.Empty;
|
||||
_Logistics = new(this);
|
||||
if (_FileParameter is null)
|
||||
throw new Exception(cellInstanceConnectionName);
|
||||
if (_ModelObjectParameterDefinitions is null)
|
||||
throw new Exception(cellInstanceConnectionName);
|
||||
if (_IsDuplicator)
|
||||
throw new Exception(cellInstanceConnectionName);
|
||||
}
|
||||
|
||||
#nullable disable
|
||||
|
||||
void IFileRead.Move(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults, Exception exception) => Move(extractResults);
|
||||
|
||||
void IFileRead.WaitForThread() => WaitForThread(thread: null, threadExceptions: null);
|
||||
|
||||
string IFileRead.GetEventDescription()
|
||||
{
|
||||
string result = _Description.GetEventDescription();
|
||||
return result;
|
||||
}
|
||||
|
||||
List<string> IFileRead.GetHeaderNames()
|
||||
{
|
||||
List<string> results = _Description.GetHeaderNames();
|
||||
return results;
|
||||
}
|
||||
|
||||
string[] IFileRead.Move(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults, string to, string from, string resolvedFileLocation, Exception exception)
|
||||
{
|
||||
string[] results = Move(extractResults, to, from, resolvedFileLocation, exception);
|
||||
return results;
|
||||
}
|
||||
|
||||
JsonProperty[] IFileRead.GetDefault()
|
||||
{
|
||||
JsonProperty[] results = _Description.GetDefault(this, _Logistics);
|
||||
return results;
|
||||
}
|
||||
|
||||
Dictionary<string, string> IFileRead.GetDisplayNamesJsonElement()
|
||||
{
|
||||
Dictionary<string, string> results = _Description.GetDisplayNamesJsonElement(this);
|
||||
return results;
|
||||
}
|
||||
|
||||
List<IDescription> IFileRead.GetDescriptions(IFileRead fileRead, List<Test> tests, IProcessData processData)
|
||||
{
|
||||
List<IDescription> results = _Description.GetDescriptions(fileRead, _Logistics, tests, processData);
|
||||
return results;
|
||||
}
|
||||
|
||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> IFileRead.GetExtractResult(string reportFullPath, string eventName)
|
||||
{
|
||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
||||
if (string.IsNullOrEmpty(eventName))
|
||||
throw new Exception();
|
||||
_ReportFullPath = reportFullPath;
|
||||
DateTime dateTime = DateTime.Now;
|
||||
results = GetExtractResult(reportFullPath, dateTime);
|
||||
if (results.Item3 is null)
|
||||
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(results.Item1, Array.Empty<Test>(), JsonSerializer.Deserialize<JsonElement[]>("[]"), results.Item4);
|
||||
if (results.Item3.Length > 0 && _IsEAFHosted)
|
||||
WritePDSF(this, results.Item3);
|
||||
UpdateLastTicksDuration(DateTime.Now.Ticks - dateTime.Ticks);
|
||||
return results;
|
||||
}
|
||||
|
||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> IFileRead.ReExtract()
|
||||
{
|
||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
||||
List<string> headerNames = _Description.GetHeaderNames();
|
||||
Dictionary<string, string> keyValuePairs = _Description.GetDisplayNamesJsonElement(this);
|
||||
results = ReExtract(this, headerNames, keyValuePairs);
|
||||
return results;
|
||||
}
|
||||
|
||||
private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime)
|
||||
{
|
||||
if (dateTime == DateTime.MinValue)
|
||||
throw new ArgumentNullException(nameof(dateTime));
|
||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> results = new(string.Empty, null, null, new List<FileInfo>());
|
||||
_TickOffset ??= 0; // new FileInfo(reportFullPath).LastWriteTime.Ticks - dateTime.Ticks;
|
||||
_Logistics = new Logistics(this, _TickOffset.Value, reportFullPath, useSplitForMID: true);
|
||||
SetFileParameterLotIDToLogisticsMID();
|
||||
return results;
|
||||
}
|
||||
|
||||
}
|
||||
@ -110,7 +110,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
return results;
|
||||
}
|
||||
|
||||
private void SaveOpenInsightFile(string reportFullPath, DateTime dateTime, ProcessDataStandardFormat processDataStandardFormat, List<txt.Description> descriptions, Test[] tests)
|
||||
private void SaveOpenInsightFile(string reportFullPath, DateTime dateTime, List<txt.Description> descriptions, Test[] tests)
|
||||
{
|
||||
string duplicateFile;
|
||||
bool isDummyRun = false;
|
||||
@ -125,13 +125,14 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
{
|
||||
long? subgroupId;
|
||||
string fileName = Path.GetFileName(reportFullPath);
|
||||
long uniqueSequence = Logistics.GetUniqueSequence(_Logistics);
|
||||
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))
|
||||
if (_StaticRuns.TryGetValue(uniqueSequence, out List<WS.Results> wsResults))
|
||||
{
|
||||
if (wsResults is null || wsResults.Count != 1)
|
||||
throw new NullReferenceException($"{nameof(wsResults)} {wsResults?.Count} != 1 {_Logistics.Sequence}!");
|
||||
@ -143,7 +144,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
else
|
||||
duplicateFile = Path.Combine(duplicateDirectory, $"{$"Viewer {subgroupId}".TrimEnd()} {fileName.Replace("Viewer", string.Empty)}");
|
||||
string weekOfYear = _Calendar.GetWeekOfYear(_Logistics.DateTimeFromSequence, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00");
|
||||
FromIQS.Save(_OpenInsightApiECDirectory, _Logistics, reportFullPath, processDataStandardFormat, descriptions.First(), subgroupId, weekOfYear);
|
||||
FromIQS.Save(_OpenInsightApiECDirectory, _Logistics, reportFullPath, descriptions.First(), subgroupId, weekOfYear);
|
||||
}
|
||||
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
||||
{
|
||||
@ -155,14 +156,15 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime)
|
||||
{
|
||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
||||
ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath);
|
||||
string[] lines = File.ReadAllLines(reportFullPath);
|
||||
ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath, lines);
|
||||
_Logistics = new Logistics(reportFullPath, processDataStandardFormat);
|
||||
SetFileParameterLotIDToLogisticsMID();
|
||||
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(processDataStandardFormat);
|
||||
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(reportFullPath, lines, processDataStandardFormat);
|
||||
List<txt.Description> descriptions = txt.ProcessData.GetDescriptions(jsonElements);
|
||||
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
||||
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
||||
SaveOpenInsightFile(reportFullPath, dateTime, processDataStandardFormat, descriptions, tests);
|
||||
SaveOpenInsightFile(reportFullPath, dateTime, descriptions, tests);
|
||||
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics), tests, jsonElements, new List<FileInfo>());
|
||||
return results;
|
||||
}
|
||||
|
||||
@ -178,7 +178,7 @@ public class FromIQS
|
||||
results.Add($" and pl.f_name = '{description.RDS}' ");
|
||||
results.Add($" and pr.f_name = '{description.Reactor}' ");
|
||||
results.Add($" and pd.f_name = '{description.PSN}' ");
|
||||
results.Add(" and jd.f_name in ('SP101') ");
|
||||
results.Add(" and jd.f_name in ('SP101', 'TBI01') ");
|
||||
results.Add($" and jd.f_name = '{logistics.MesEntity}' ");
|
||||
results.Add($" and dateadd(HH, -7, (dateadd(SS, convert(bigint, se.f_sgtm), '19700101'))) = '{dateTime}' ");
|
||||
results.Add(" ) as iq ");
|
||||
@ -325,74 +325,18 @@ public class FromIQS
|
||||
return new(result, count, commandText);
|
||||
}
|
||||
|
||||
private static string GetJson(Logistics logistics, ProcessDataStandardFormat processDataStandardFormat, txt.Description description)
|
||||
internal static void Save(string openInsightApiECDirectory, Logistics logistics, string reportFullPath, txt.Description description, long? subGroupId, string weekOfYear)
|
||||
{
|
||||
string result;
|
||||
StringBuilder stringBuilder = new();
|
||||
var @object = new
|
||||
{
|
||||
description.MesEntity,
|
||||
description.Employee,
|
||||
// description.Layer,
|
||||
description.PSN,
|
||||
description.RDS,
|
||||
description.Reactor,
|
||||
description.Recipe,
|
||||
// description.Zone,
|
||||
logistics.DateTimeFromSequence.Ticks
|
||||
};
|
||||
string[] pair;
|
||||
string safeValue;
|
||||
string[] segments;
|
||||
string serializerValue;
|
||||
foreach (string line in processDataStandardFormat.Logistics)
|
||||
{
|
||||
segments = line.Split('\t');
|
||||
if (segments.Length < 2)
|
||||
continue;
|
||||
segments = segments[1].Split(';');
|
||||
_ = stringBuilder.Append('{');
|
||||
foreach (string segment in segments)
|
||||
{
|
||||
pair = segment.Split('=');
|
||||
if (pair.Length != 2 || pair[0].Length < 3)
|
||||
continue;
|
||||
serializerValue = JsonSerializer.Serialize(pair[1]);
|
||||
safeValue = serializerValue.Substring(1, serializerValue.Length - 2);
|
||||
_ = stringBuilder.Append('"').Append(pair[0].Substring(2)).Append('"').Append(':').Append('"').Append(safeValue).Append('"').Append(',');
|
||||
}
|
||||
if (stringBuilder.Length > 0)
|
||||
_ = stringBuilder.Remove(stringBuilder.Length - 1, 1);
|
||||
_ = stringBuilder.Append('}').Append(',');
|
||||
}
|
||||
if (stringBuilder.Length > 0)
|
||||
_ = stringBuilder.Remove(stringBuilder.Length - 1, 1);
|
||||
_ = stringBuilder.Append(']').Append('}');
|
||||
_ = stringBuilder.Insert(0, ",\"Logistics\":[");
|
||||
string json = JsonSerializer.Serialize(@object);
|
||||
_ = stringBuilder.Insert(0, json.Substring(0, json.Length - 1));
|
||||
JsonElement? jsonElement = JsonSerializer.Deserialize<JsonElement>(stringBuilder.ToString());
|
||||
result = jsonElement is null ? "{}" : JsonSerializer.Serialize(jsonElement, new JsonSerializerOptions { WriteIndented = true });
|
||||
return result;
|
||||
}
|
||||
|
||||
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);
|
||||
string json = GetJson(logistics, processDataStandardFormat, description);
|
||||
string? ecPathRoot = Path.GetPathRoot(openInsightApiECDirectory);
|
||||
bool ecExists = ecPathRoot is not null && Directory.Exists(ecPathRoot);
|
||||
string weekYear = $"{logistics.DateTimeFromSequence:yyyy}_Week_{weekOfYear}";
|
||||
string ecDirectory = Path.Combine(openInsightApiECDirectory, weekYear, $"-{description.PSN}", $"-{description.Reactor}", $"-{description.RDS}", $"-{subGroupId}");
|
||||
if (ecExists && !Directory.Exists(ecDirectory))
|
||||
_ = Directory.CreateDirectory(ecDirectory);
|
||||
checkFile = Path.Combine(ecDirectory, fileName);
|
||||
string checkFile = Path.Combine(ecDirectory, fileName);
|
||||
if (ecExists && !File.Exists(checkFile))
|
||||
File.Copy(reportFullPath, checkFile);
|
||||
checkFile = Path.Combine(ecDirectory, $"{logistics.DateTimeFromSequence.Ticks}.json");
|
||||
if (ecExists && !File.Exists(checkFile))
|
||||
File.WriteAllText(checkFile, json);
|
||||
}
|
||||
|
||||
private static string GetCommandText(string[] iqsCopyValues)
|
||||
|
||||
@ -110,10 +110,11 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
return results;
|
||||
}
|
||||
|
||||
private void SendData(string reportFullPath, DateTime dateTime, List<txt.Description> descriptions)
|
||||
private void SendData(string reportFullPath, DateTime dateTime, JsonElement[] jsonElements, List<txt.Description> descriptions)
|
||||
{
|
||||
string checkDirectory;
|
||||
WSRequest wsRequest = new(this, _Logistics, descriptions);
|
||||
long uniqueSequence = Logistics.GetUniqueSequence(_Logistics);
|
||||
WSRequest wsRequest = new(this, _Logistics, jsonElements, descriptions);
|
||||
int weekOfYear = _Calendar.GetWeekOfYear(dateTime, CalendarWeekRule.FirstDay, DayOfWeek.Sunday);
|
||||
string directory = Path.Combine(_OpenInsightMetrologyViewerFileShare, dateTime.Year.ToString(), $"WW{weekOfYear:00}");
|
||||
checkDirectory = Path.Combine(directory, _Logistics.Sequence.ToString());
|
||||
@ -126,9 +127,9 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
_Log.Debug(wsResults.HeaderId);
|
||||
lock (_StaticRuns)
|
||||
{
|
||||
if (!_StaticRuns.ContainsKey(_Logistics.Sequence))
|
||||
_StaticRuns.Add(_Logistics.Sequence, new());
|
||||
_StaticRuns[_Logistics.Sequence].Add(wsResults);
|
||||
if (!_StaticRuns.ContainsKey(uniqueSequence))
|
||||
_StaticRuns.Add(uniqueSequence, new());
|
||||
_StaticRuns[uniqueSequence].Add(wsResults);
|
||||
}
|
||||
checkDirectory = Path.Combine(directory, $"-{wsResults.HeaderId}");
|
||||
if (!Directory.Exists(checkDirectory))
|
||||
@ -139,14 +140,15 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime)
|
||||
{
|
||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
||||
ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath);
|
||||
string[] lines = File.ReadAllLines(reportFullPath);
|
||||
ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath, lines);
|
||||
_Logistics = new Logistics(reportFullPath, processDataStandardFormat);
|
||||
SetFileParameterLotIDToLogisticsMID();
|
||||
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(processDataStandardFormat);
|
||||
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(reportFullPath, lines, processDataStandardFormat);
|
||||
List<txt.Description> descriptions = txt.ProcessData.GetDescriptions(jsonElements);
|
||||
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
||||
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
||||
SendData(reportFullPath, dateTime, descriptions);
|
||||
SendData(reportFullPath, dateTime, jsonElements, descriptions);
|
||||
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics), tests, jsonElements, new List<FileInfo>());
|
||||
return results;
|
||||
}
|
||||
|
||||
@ -6,6 +6,7 @@ using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace Adaptation.FileHandlers.OpenInsightMetrologyViewer;
|
||||
|
||||
@ -16,8 +17,17 @@ public class WSRequest
|
||||
//
|
||||
|
||||
public int Id { get; set; }
|
||||
public string AttemptCounter { get; set; }
|
||||
public string CellName { get; set; }
|
||||
public string Date { get; set; }
|
||||
public string DcnAllMax { get; set; }
|
||||
public string DcnAllMean { get; set; }
|
||||
public string DcnAllMin { get; set; }
|
||||
public string DcnAllStDev { get; set; }
|
||||
public string DcnAreaCntMax { get; set; }
|
||||
public string DcnAreaCntMean { get; set; }
|
||||
public string DcnAreaCntMin { get; set; }
|
||||
public string IndexOf { get; set; }
|
||||
public string LotID { get; set; }
|
||||
public string Operator { get; set; }
|
||||
public string PSN { get; set; }
|
||||
@ -26,13 +36,6 @@ public class WSRequest
|
||||
public string Recipe { get; set; }
|
||||
public string Session { get; set; }
|
||||
public string UniqueID { get; set; }
|
||||
public string DcnAllMax { get; set; }
|
||||
public string DcnAllMean { get; set; }
|
||||
public string DcnAllMin { get; set; }
|
||||
public string DcnAllStDev { get; set; }
|
||||
public string DcnAreaCntMax { get; set; }
|
||||
public string DcnAreaCntMean { get; set; }
|
||||
public string DcnAreaCntMin { get; set; }
|
||||
public string DcnAreaCntStDev { get; set; }
|
||||
public string DcnAreaMax { get; set; }
|
||||
public string DcnAreaMean { get; set; }
|
||||
@ -271,7 +274,7 @@ public class WSRequest
|
||||
[Obsolete("For json")] public WSRequest() { }
|
||||
|
||||
#pragma warning disable IDE0060
|
||||
internal WSRequest(IFileRead fileRead, Logistics logistics, List<txt.Description> descriptions, string processDataStandardFormat = null)
|
||||
internal WSRequest(IFileRead fileRead, Logistics logistics, JsonElement[] jsonElements, List<txt.Description> descriptions, string processDataStandardFormat = null)
|
||||
#pragma warning restore IDE0060
|
||||
{
|
||||
Id = -1;
|
||||
@ -283,252 +286,254 @@ public class WSRequest
|
||||
UniqueID = x.UniqueId;
|
||||
Date = x.Date;
|
||||
Reactor = x.Reactor;
|
||||
LotID = x.Lot;
|
||||
LotID = x.Lot; // different name
|
||||
Session = x.Session;
|
||||
AttemptCounter = x.AttemptCounter;
|
||||
IndexOf = x.IndexOf;
|
||||
DcnAllMin = x.DcnAllMin;
|
||||
DcnAllMax = x.DcnAllMax;
|
||||
DcnAllMean = x.DcnAllMean;
|
||||
DcnAllStDev = x.DcnAllStdDev;
|
||||
DcnAllStDev = x.DcnAllStdDev; // different name
|
||||
DcnLpdMin = x.DcnLpdMin;
|
||||
DcnLpdMax = x.DcnLpdMax;
|
||||
DcnLpdMean = x.DcnLpdMean;
|
||||
DcnLpdStDev = x.DcnLpdStdDev;
|
||||
DcnLpdStDev = x.DcnLpdStdDev; // different name
|
||||
DcnLpdNMin = x.DcnLpdNMin;
|
||||
DcnLpdNMax = x.DcnLpdNMax;
|
||||
DcnLpdNMean = x.DcnLpdNMean;
|
||||
DcnLpdNStDev = x.DcnLpdNStdDev;
|
||||
DcnLpdNStDev = x.DcnLpdNStdDev; // different name
|
||||
DcnLpdESMin = x.DcnLpdESMin;
|
||||
DcnLpdESMax = x.DcnLpdESMax;
|
||||
DcnLpdESMean = x.DcnLpdESMean;
|
||||
DcnLpdESStDev = x.DcnLpdESStdDev;
|
||||
DcnLpdESStDev = x.DcnLpdESStdDev; // different name
|
||||
DcnMicroScrMin = x.DcnMicroScrMin;
|
||||
DcnMicroScrMax = x.DcnMicroScrMax;
|
||||
DcnMicroScrMean = x.DcnMicroScrMean;
|
||||
DcnMicroScrStDev = x.DcnMicroScrStdDev;
|
||||
DcnMicroScrStDev = x.DcnMicroScrStdDev; // different name
|
||||
DcnScrMin = x.DcnScrMin;
|
||||
DcnScrMax = x.DcnScrMax;
|
||||
DcnScrMean = x.DcnScrMean;
|
||||
DcnScrStDev = x.DcnScrStdDev;
|
||||
DcnScrStDev = x.DcnScrStdDev; // different name
|
||||
DcnSlipMin = x.DcnSlipMin;
|
||||
DcnSlipMax = x.DcnSlipMax;
|
||||
DcnSlipMean = x.DcnSlipMean;
|
||||
DcnSlipStDev = x.DcnSlipStdDev;
|
||||
DcnAreaCntMin = x.DcnAreaCountMin;
|
||||
DcnAreaCntMax = x.DcnAreaCountMax;
|
||||
DcnAreaCntMean = x.DcnAreaCountMean;
|
||||
DcnAreaCntStDev = x.DcnAreaCountStdDev;
|
||||
DcnSlipStDev = x.DcnSlipStdDev; // different name
|
||||
DcnAreaCntMin = x.DcnAreaCountMin; // different name
|
||||
DcnAreaCntMax = x.DcnAreaCountMax; // different name
|
||||
DcnAreaCntMean = x.DcnAreaCountMean; // different name
|
||||
DcnAreaCntStDev = x.DcnAreaCountStdDev; // different name
|
||||
DcnAreaMin = x.DcnAreaMin;
|
||||
DcnAreaMax = x.DcnAreaMax;
|
||||
DcnAreaMean = x.DcnAreaMean;
|
||||
DcnAreaStDev = x.DcnAreaStdDev;
|
||||
DcnAreaStDev = x.DcnAreaStdDev; // different name
|
||||
DcnHazeAvgMin = x.DcnHazeAvgMin;
|
||||
DcnHazeAvgMax = x.DcnHazeAvgMax;
|
||||
DcnHazeAvgMean = x.DcnHazeAvgMean;
|
||||
DcnHazeAvgStDev = x.DcnHazeAvgStdDev;
|
||||
DcnHazeMedMin = x.DcnHazeMedianMin;
|
||||
DcnHazeMedMax = x.DcnHazeMedianMax;
|
||||
DcnHazeMedMean = x.DcnHazeMedianMean;
|
||||
DcnHazeMedStDev = x.DcnHazeMedianStdDev;
|
||||
DcnHazeStDevMin = x.DcnHazeStdDevMin;
|
||||
DcnHazeStDevMax = x.DcnHazeStdDevMax;
|
||||
DcnHazeStDevMean = x.DcnHazeStdDevMean;
|
||||
DcnHazeStDevStDev = x.DcnHazeStdDevStdDev;
|
||||
DcnHazeAvgStDev = x.DcnHazeAvgStdDev; // different name
|
||||
DcnHazeMedMin = x.DcnHazeMedianMin; // different name
|
||||
DcnHazeMedMax = x.DcnHazeMedianMax; // different name
|
||||
DcnHazeMedMean = x.DcnHazeMedianMean; // different name
|
||||
DcnHazeMedStDev = x.DcnHazeMedianStdDev; // different name
|
||||
DcnHazeStDevMin = x.DcnHazeStdDevMin; // different name
|
||||
DcnHazeStDevMax = x.DcnHazeStdDevMax; // different name
|
||||
DcnHazeStDevMean = x.DcnHazeStdDevMean; // different name
|
||||
DcnHazeStDevStDev = x.DcnHazeStdDevStdDev; // different name
|
||||
DcnBin1Min = x.DcnBin1Min;
|
||||
DcnBin1Max = x.DcnBin1Max;
|
||||
DcnBin1Mean = x.DcnBin1Mean;
|
||||
DcnBin1StDev = x.DcnBin1StdDev;
|
||||
DcnBin1StDev = x.DcnBin1StdDev; // different name
|
||||
DcnBin2Min = x.DcnBin2Min;
|
||||
DcnBin2Max = x.DcnBin2Max;
|
||||
DcnBin2Mean = x.DcnBin2Mean;
|
||||
DcnBin2StDev = x.DcnBin2StdDev;
|
||||
DcnBin2StDev = x.DcnBin2StdDev; // different name
|
||||
DcnBin3Min = x.DcnBin3Min;
|
||||
DcnBin3Max = x.DcnBin3Max;
|
||||
DcnBin3Mean = x.DcnBin3Mean;
|
||||
DcnBin3StDev = x.DcnBin3StdDev;
|
||||
DcnBin3StDev = x.DcnBin3StdDev; // different name
|
||||
DcnBin4Min = x.DcnBin4Min;
|
||||
DcnBin4Max = x.DcnBin4Max;
|
||||
DcnBin4Mean = x.DcnBin4Mean;
|
||||
DcnBin4StDev = x.DcnBin4StdDev;
|
||||
DcnBin4StDev = x.DcnBin4StdDev; // different name
|
||||
DcnBin5Min = x.DcnBin5Min;
|
||||
DcnBin5Max = x.DcnBin5Max;
|
||||
DcnBin5Mean = x.DcnBin5Mean;
|
||||
DcnBin5StDev = x.DcnBin5StdDev;
|
||||
DcnBin5StDev = x.DcnBin5StdDev; // different name
|
||||
DcnBin6Min = x.DcnBin6Min;
|
||||
DcnBin6Max = x.DcnBin6Max;
|
||||
DcnBin6Mean = x.DcnBin6Mean;
|
||||
DcnBin6StDev = x.DcnBin6StdDev;
|
||||
DcnBin6StDev = x.DcnBin6StdDev; // different name
|
||||
DcnBin7Min = x.DcnBin7Min;
|
||||
DcnBin7Max = x.DcnBin7Max;
|
||||
DcnBin7Mean = x.DcnBin7Mean;
|
||||
DcnBin7StDev = x.DcnBin7StdDev;
|
||||
DcnBin7StDev = x.DcnBin7StdDev; // different name
|
||||
DcnBin8Min = x.DcnBin8Min;
|
||||
DcnBin8Max = x.DcnBin8Max;
|
||||
DcnBin8Mean = x.DcnBin8Mean;
|
||||
DcnBin8StDev = x.DcnBin8StdDev;
|
||||
DcnBin8StDev = x.DcnBin8StdDev; // different name
|
||||
DwnAllMin = x.DwnAllMin;
|
||||
DwnAllMax = x.DwnAllMax;
|
||||
DwnAllMean = x.DwnAllMean;
|
||||
DwnAllStDev = x.DwnAllStdDev;
|
||||
DwnAllStDev = x.DwnAllStdDev; // different name
|
||||
DwnLpdMin = x.DwnLpdMin;
|
||||
DwnLpdMax = x.DwnLpdMax;
|
||||
DwnLpdMean = x.DwnLpdMean;
|
||||
DwnLpdStDev = x.DwnLpdStdDev;
|
||||
DwnLpdStDev = x.DwnLpdStdDev; // different name
|
||||
DwnLpdNMin = x.DwnLpdNMin;
|
||||
DwnLpdNMax = x.DwnLpdNMax;
|
||||
DwnLpdNMean = x.DwnLpdNMean;
|
||||
DwnLpdNStDev = x.DwnLpdNStdDev;
|
||||
DwnLpdNStDev = x.DwnLpdNStdDev; // different name
|
||||
DwnLpdESMin = x.DwnLpdESMin;
|
||||
DwnLpdESMax = x.DwnLpdESMax;
|
||||
DwnLpdESMean = x.DwnLpdESMean;
|
||||
DwnLpdESStDev = x.DwnLpdESStdDev;
|
||||
DwnLpdESStDev = x.DwnLpdESStdDev; // different name
|
||||
DwnMicroScrMin = x.DwnMicroScrMin;
|
||||
DwnMicroScrMax = x.DwnMicroScrMax;
|
||||
DwnMicroScrMean = x.DwnMicroScrMean;
|
||||
DwnMicroScrStDev = x.DwnMicroScrStdDev;
|
||||
DwnMicroScrStDev = x.DwnMicroScrStdDev; // different name
|
||||
DwnScrMin = x.DwnScrMin;
|
||||
DwnScrMax = x.DwnScrMax;
|
||||
DwnScrMean = x.DwnScrMean;
|
||||
DwnScrStDev = x.DwnScrStdDev;
|
||||
DwnScrStDev = x.DwnScrStdDev; // different name
|
||||
DwnSlipMin = x.DwnSlipMin;
|
||||
DwnSlipMax = x.DwnSlipMax;
|
||||
DwnSlipMean = x.DwnSlipMean;
|
||||
DwnSlipStDev = x.DwnSlipStdDev;
|
||||
DwnAreaCntMin = x.DwnAreaCountMin;
|
||||
DwnAreaCntMax = x.DwnAreaCountMax;
|
||||
DwnAreaCntMean = x.DwnAreaCountMean;
|
||||
DwnAreaCntStDev = x.DwnAreaCountStdDev;
|
||||
DwnSlipStDev = x.DwnSlipStdDev; // different name
|
||||
DwnAreaCntMin = x.DwnAreaCountMin; // different name
|
||||
DwnAreaCntMax = x.DwnAreaCountMax; // different name
|
||||
DwnAreaCntMean = x.DwnAreaCountMean; // different name
|
||||
DwnAreaCntStDev = x.DwnAreaCountStdDev; // different name
|
||||
DwnAreaMin = x.DwnAreaMin;
|
||||
DwnAreaMax = x.DwnAreaMax;
|
||||
DwnAreaMean = x.DwnAreaMean;
|
||||
DwnAreaStDev = x.DwnAreaStdDev;
|
||||
DwnAreaStDev = x.DwnAreaStdDev; // different name
|
||||
DwnHazeAvgMin = x.DwnHazeAvgMin;
|
||||
DwnHazeAvgMax = x.DwnHazeAvgMax;
|
||||
DwnHazeAvgMean = x.DwnHazeAvgMean;
|
||||
DwnHazeAvgStDev = x.DwnHazeAvgStdDev;
|
||||
DwnHazeMedMin = x.DwnHazeMedianMin;
|
||||
DwnHazeMedMax = x.DwnHazeMedianMax;
|
||||
DwnHazeMedMean = x.DwnHazeMedianMean;
|
||||
DwnHazeMedStDev = x.DwnHazeMedianStdDev;
|
||||
DwnHazeStDevMin = x.DwnHazeStdDevMin;
|
||||
DwnHazeStDevMax = x.DwnHazeStdDevMax;
|
||||
DwnHazeStDevMean = x.DwnHazeStdDevMean;
|
||||
DwnHazeStDevStDev = x.DwnHazeStdDevStdDev;
|
||||
DwnHazeAvgStDev = x.DwnHazeAvgStdDev; // different name
|
||||
DwnHazeMedMin = x.DwnHazeMedianMin; // different name
|
||||
DwnHazeMedMax = x.DwnHazeMedianMax; // different name
|
||||
DwnHazeMedMean = x.DwnHazeMedianMean; // different name
|
||||
DwnHazeMedStDev = x.DwnHazeMedianStdDev; // different name
|
||||
DwnHazeStDevMin = x.DwnHazeStdDevMin; // different name
|
||||
DwnHazeStDevMax = x.DwnHazeStdDevMax; // different name
|
||||
DwnHazeStDevMean = x.DwnHazeStdDevMean; // different name
|
||||
DwnHazeStDevStDev = x.DwnHazeStdDevStdDev; // different name
|
||||
DwnBin1Min = x.DwnBin1Min;
|
||||
DwnBin1Max = x.DwnBin1Max;
|
||||
DwnBin1Mean = x.DwnBin1Mean;
|
||||
DwnBin1StDev = x.DwnBin1StdDev;
|
||||
DwnBin1StDev = x.DwnBin1StdDev; // different name
|
||||
DwnBin2Min = x.DwnBin2Min;
|
||||
DwnBin2Max = x.DwnBin2Max;
|
||||
DwnBin2Mean = x.DwnBin2Mean;
|
||||
DwnBin2StDev = x.DwnBin2StdDev;
|
||||
DwnBin2StDev = x.DwnBin2StdDev; // different name
|
||||
DwnBin3Min = x.DwnBin3Min;
|
||||
DwnBin3Max = x.DwnBin3Max;
|
||||
DwnBin3Mean = x.DwnBin3Mean;
|
||||
DwnBin3StDev = x.DwnBin3StdDev;
|
||||
DwnBin3StDev = x.DwnBin3StdDev; // different name
|
||||
DwnBin4Min = x.DwnBin4Min;
|
||||
DwnBin4Max = x.DwnBin4Max;
|
||||
DwnBin4Mean = x.DwnBin4Mean;
|
||||
DwnBin4StDev = x.DwnBin4StdDev;
|
||||
DwnBin4StDev = x.DwnBin4StdDev; // different name
|
||||
DwnBin5Min = x.DwnBin5Min;
|
||||
DwnBin5Max = x.DwnBin5Max;
|
||||
DwnBin5Mean = x.DwnBin5Mean;
|
||||
DwnBin5StDev = x.DwnBin5StdDev;
|
||||
DwnBin5StDev = x.DwnBin5StdDev; // different name
|
||||
DwnBin6Min = x.DwnBin6Min;
|
||||
DwnBin6Max = x.DwnBin6Max;
|
||||
DwnBin6Mean = x.DwnBin6Mean;
|
||||
DwnBin6StDev = x.DwnBin6StdDev;
|
||||
DwnBin6StDev = x.DwnBin6StdDev; // different name
|
||||
DwnBin7Min = x.DwnBin7Min;
|
||||
DwnBin7Max = x.DwnBin7Max;
|
||||
DwnBin7Mean = x.DwnBin7Mean;
|
||||
DwnBin7StDev = x.DwnBin7StdDev;
|
||||
DwnBin7StDev = x.DwnBin7StdDev; // different name
|
||||
DwnBin8Min = x.DwnBin8Min;
|
||||
DwnBin8Max = x.DwnBin8Max;
|
||||
DwnBin8Mean = x.DwnBin8Mean;
|
||||
DwnBin8StDev = x.DwnBin8StdDev;
|
||||
DwnBin8StDev = x.DwnBin8StdDev; // different name
|
||||
DnnAllMin = x.DnnAllMin;
|
||||
DnnAllMax = x.DnnAllMax;
|
||||
DnnAllMean = x.DnnAllMean;
|
||||
DnnAllStDev = x.DnnAllStdDev;
|
||||
DnnAllStDev = x.DnnAllStdDev; // different name
|
||||
DnnLpdMin = x.DnnLpdMin;
|
||||
DnnLpdMax = x.DnnLpdMax;
|
||||
DnnLpdMean = x.DnnLpdMean;
|
||||
DnnLpdStDev = x.DnnLpdStdDev;
|
||||
DnnLpdStDev = x.DnnLpdStdDev; // different name
|
||||
DnnLpdNMin = x.DnnLpdNMin;
|
||||
DnnLpdNMax = x.DnnLpdNMax;
|
||||
DnnLpdNMean = x.DnnLpdNMean;
|
||||
DnnLpdNStDev = x.DnnLpdNStdDev;
|
||||
DnnLpdNStDev = x.DnnLpdNStdDev; // different name
|
||||
DnnLpdESMin = x.DnnLpdESMin;
|
||||
DnnLpdESMax = x.DnnLpdESMax;
|
||||
DnnLpdESMean = x.DnnLpdESMean;
|
||||
DnnLpdESStDev = x.DnnLpdESStdDev;
|
||||
DnnLpdESStDev = x.DnnLpdESStdDev; // different name
|
||||
DnnMicroScrMin = x.DnnMicroScrMin;
|
||||
DnnMicroScrMax = x.DnnMicroScrMax;
|
||||
DnnMicroScrMean = x.DnnMicroScrMean;
|
||||
DnnMicroScrStDev = x.DnnMicroScrStdDev;
|
||||
DnnMicroScrStDev = x.DnnMicroScrStdDev; // different name
|
||||
DnnScrMin = x.DnnScrMin;
|
||||
DnnScrMax = x.DnnScrMax;
|
||||
DnnScrMean = x.DnnScrMean;
|
||||
DnnScrStDev = x.DnnScrStdDev;
|
||||
DnnScrStDev = x.DnnScrStdDev; // different name
|
||||
DnnSlipMin = x.DnnSlipMin;
|
||||
DnnSlipMax = x.DnnSlipMax;
|
||||
DnnSlipMean = x.DnnSlipMean;
|
||||
DnnSlipStDev = x.DnnSlipStdDev;
|
||||
DnnAreaCntMin = x.DnnAreaCountMin;
|
||||
DnnAreaCntMax = x.DnnAreaCountMax;
|
||||
DnnAreaCntMean = x.DnnAreaCountMean;
|
||||
DnnAreaCntStDev = x.DnnAreaCountStdDev;
|
||||
DnnSlipStDev = x.DnnSlipStdDev; // different name
|
||||
DnnAreaCntMin = x.DnnAreaCountMin; // different name
|
||||
DnnAreaCntMax = x.DnnAreaCountMax; // different name
|
||||
DnnAreaCntMean = x.DnnAreaCountMean; // different name
|
||||
DnnAreaCntStDev = x.DnnAreaCountStdDev; // different name
|
||||
DnnAreaMin = x.DnnAreaMin;
|
||||
DnnAreaMax = x.DnnAreaMax;
|
||||
DnnAreaMean = x.DnnAreaMean;
|
||||
DnnAreaStDev = x.DnnAreaStdDev;
|
||||
DnnAreaStDev = x.DnnAreaStdDev; // different name
|
||||
DnnHazeAvgMin = x.DnnHazeAvgMin;
|
||||
DnnHazeAvgMax = x.DnnHazeAvgMax;
|
||||
DnnHazeAvgMean = x.DnnHazeAvgMean;
|
||||
DnnHazeAvgStDev = x.DnnHazeAvgStdDev;
|
||||
DnnHazeMedMin = x.DnnHazeMedianMin;
|
||||
DnnHazeMedMax = x.DnnHazeMedianMax;
|
||||
DnnHazeMedMean = x.DnnHazeMedianMean;
|
||||
DnnHazeMedStDev = x.DnnHazeMedianStdDev;
|
||||
DnnHazeStDevMin = x.DnnHazeStdDevMin;
|
||||
DnnHazeStDevMax = x.DnnHazeStdDevMax;
|
||||
DnnHazeStDevMean = x.DnnHazeStdDevMean;
|
||||
DnnHazeStDevStDev = x.DnnHazeStdDevStdDev;
|
||||
DnnHazeAvgStDev = x.DnnHazeAvgStdDev; // different name
|
||||
DnnHazeMedMin = x.DnnHazeMedianMin; // different name
|
||||
DnnHazeMedMax = x.DnnHazeMedianMax; // different name
|
||||
DnnHazeMedMean = x.DnnHazeMedianMean; // different name
|
||||
DnnHazeMedStDev = x.DnnHazeMedianStdDev; // different name
|
||||
DnnHazeStDevMin = x.DnnHazeStdDevMin; // different name
|
||||
DnnHazeStDevMax = x.DnnHazeStdDevMax; // different name
|
||||
DnnHazeStDevMean = x.DnnHazeStdDevMean; // different name
|
||||
DnnHazeStDevStDev = x.DnnHazeStdDevStdDev; // different name
|
||||
DnnBin1Min = x.DnnBin1Min;
|
||||
DnnBin1Max = x.DnnBin1Max;
|
||||
DnnBin1Mean = x.DnnBin1Mean;
|
||||
DnnBin1StDev = x.DnnBin1StdDev;
|
||||
DnnBin1StDev = x.DnnBin1StdDev; // different name
|
||||
DnnBin2Min = x.DnnBin2Min;
|
||||
DnnBin2Max = x.DnnBin2Max;
|
||||
DnnBin2Mean = x.DnnBin2Mean;
|
||||
DnnBin2StDev = x.DnnBin2StdDev;
|
||||
DnnBin2StDev = x.DnnBin2StdDev; // different name
|
||||
DnnBin3Min = x.DnnBin3Min;
|
||||
DnnBin3Max = x.DnnBin3Max;
|
||||
DnnBin3Mean = x.DnnBin3Mean;
|
||||
DnnBin3StDev = x.DnnBin3StdDev;
|
||||
DnnBin3StDev = x.DnnBin3StdDev; // different name
|
||||
DnnBin4Min = x.DnnBin4Min;
|
||||
DnnBin4Max = x.DnnBin4Max;
|
||||
DnnBin4Mean = x.DnnBin4Mean;
|
||||
DnnBin4StDev = x.DnnBin4StdDev;
|
||||
DnnBin4StDev = x.DnnBin4StdDev; // different name
|
||||
DnnBin5Min = x.DnnBin5Min;
|
||||
DnnBin5Max = x.DnnBin5Max;
|
||||
DnnBin5Mean = x.DnnBin5Mean;
|
||||
DnnBin5StDev = x.DnnBin5StdDev;
|
||||
DnnBin5StDev = x.DnnBin5StdDev; // different name
|
||||
DnnBin6Min = x.DnnBin6Min;
|
||||
DnnBin6Max = x.DnnBin6Max;
|
||||
DnnBin6Mean = x.DnnBin6Mean;
|
||||
DnnBin6StDev = x.DnnBin6StdDev;
|
||||
DnnBin6StDev = x.DnnBin6StdDev; // different name
|
||||
DnnBin7Min = x.DnnBin7Min;
|
||||
DnnBin7Max = x.DnnBin7Max;
|
||||
DnnBin7Mean = x.DnnBin7Mean;
|
||||
DnnBin7StDev = x.DnnBin7StdDev;
|
||||
DnnBin7StDev = x.DnnBin7StdDev; // different name
|
||||
DnnBin8Min = x.DnnBin8Min;
|
||||
DnnBin8Max = x.DnnBin8Max;
|
||||
DnnBin8Mean = x.DnnBin8Mean;
|
||||
DnnBin8StDev = x.DnnBin8StdDev;
|
||||
DnnBin8StDev = x.DnnBin8StdDev; // different name
|
||||
RDS = x.RDS;
|
||||
PSN = x.PSN;
|
||||
Recipe = x.Recipe;
|
||||
Operator = x.Employee;
|
||||
Operator = x.Employee; // different name
|
||||
}
|
||||
txt.Detail detail;
|
||||
foreach (txt.Description description in descriptions)
|
||||
@ -606,11 +611,12 @@ public class WSRequest
|
||||
Details.Add(detail);
|
||||
}
|
||||
Date = logistics.DateTimeFromSequence.ToString();
|
||||
UniqueID = $"{logistics.JobID}_{logistics.MID}_{logistics.DateTimeFromSequence:yyyyMMddHHmmssffff}";
|
||||
string uniqueId = Logistics.GetUniqueId(logistics);
|
||||
UniqueID = uniqueId;
|
||||
for (int i = 0; i < Details.Count; i++)
|
||||
{
|
||||
Details[i].HeaderUniqueID = UniqueID;
|
||||
Details[i].UniqueID = $"{logistics.JobID}_{logistics.MID}_{logistics.DateTimeFromSequence:yyyyMMddHHmmssffff}_Item-{i + 1}";
|
||||
Details[i].UniqueID = $"{uniqueId}_Item-{i + 1}";
|
||||
}
|
||||
}
|
||||
|
||||
@ -619,7 +625,7 @@ public class WSRequest
|
||||
/// </summary>
|
||||
/// <param name="sourceFile">source file to be converted to PDF</param>
|
||||
/// <returns></returns>
|
||||
private static string ConvertSourceFileToPdf(string ghostPCLFileName, string sourceFile)
|
||||
public static string ConvertSourceFileToPdf(string ghostPCLFileName, string sourceFile)
|
||||
{
|
||||
string result = Path.ChangeExtension(sourceFile, ".pdf");
|
||||
if (!File.Exists(result))
|
||||
@ -635,14 +641,14 @@ public class WSRequest
|
||||
return result;
|
||||
}
|
||||
|
||||
internal static long GetHeaderId(IFileRead fileRead, Logistics logistics, string openInsightMetrologyViewerAPI, string openInsightMetrologyViewerFileShare, int weekOfYear, WS.Results results, List<txt.Description> descriptions)
|
||||
internal static long GetHeaderId(IFileRead fileRead, Logistics logistics, string openInsightMetrologyViewerAPI, string openInsightMetrologyViewerFileShare, int weekOfYear, WS.Results results, JsonElement[] jsonElements, List<txt.Description> descriptions)
|
||||
{
|
||||
long result;
|
||||
if (results is not null && results.HeaderId is not null)
|
||||
result = results.HeaderId.Value;
|
||||
else
|
||||
{
|
||||
WSRequest wsRequest = new(fileRead, logistics, descriptions);
|
||||
WSRequest wsRequest = new(fileRead, logistics, jsonElements, descriptions);
|
||||
string directory = Path.Combine(openInsightMetrologyViewerFileShare, logistics.DateTimeFromSequence.Year.ToString(), $"WW{weekOfYear:00}");
|
||||
(_, WS.Results wsResults) = WS.SendData(openInsightMetrologyViewerAPI, logistics.Sequence, directory, wsRequest);
|
||||
if (wsResults.Success is null || !wsResults.Success.Value)
|
||||
@ -656,33 +662,34 @@ public class WSRequest
|
||||
internal static void PostOpenInsightMetrologyViewerAttachments(IFileRead fileRead, Logistics logistics, string openInsightMetrologyViewerAPI, string ghostPCLFileName, List<txt.Description> descriptions, string matchDirectory, WS.Results results, string headerIdDirectory)
|
||||
#pragma warning restore IDE0060
|
||||
{
|
||||
string pdfFile;
|
||||
string extension = ".pdf";
|
||||
List<string> attachmentFiles = new();
|
||||
string uniqueId = Logistics.GetUniqueId(logistics);
|
||||
string[] summaryFiles = Directory.GetFiles(matchDirectory, "*.txt", SearchOption.TopDirectoryOnly);
|
||||
if (summaryFiles.Length != 1)
|
||||
throw new Exception($"Invalid source file count for <{results.HeaderId}>!");
|
||||
string[] prnFiles = Directory.GetFiles(matchDirectory, "WaferMap*.prn", SearchOption.TopDirectoryOnly);
|
||||
List<string> pdfFiles = new();
|
||||
foreach (string prnFile in prnFiles.OrderBy(l => l))
|
||||
pdfFiles.Add(ConvertSourceFileToPdf(ghostPCLFileName, prnFile));
|
||||
if (pdfFiles.Count == 0 || pdfFiles.Count != descriptions.Count)
|
||||
{
|
||||
pdfFile = ConvertSourceFileToPdf(ghostPCLFileName, prnFile);
|
||||
attachmentFiles.Add(pdfFile);
|
||||
}
|
||||
if (attachmentFiles.Count == 0)
|
||||
throw new Exception("Invalid *.pdf file count!");
|
||||
List<WS.Attachment> dataAttachments = new();
|
||||
List<WS.Attachment> headerAttachments = new()
|
||||
{
|
||||
new WS.Attachment(results, headerIdDirectory, $"{logistics.JobID}_{logistics.MID}_{logistics.DateTimeFromSequence:yyyyMMddHHmmssffff}", "Data.txt", summaryFiles[0])
|
||||
new WS.Attachment(results, headerIdDirectory, uniqueId, "Data.txt", summaryFiles[0])
|
||||
};
|
||||
int count;
|
||||
if (pdfFiles.Count < descriptions.Count)
|
||||
count = pdfFiles.Count;
|
||||
else
|
||||
count = descriptions.Count;
|
||||
for (int i = 0; i < count; i++)
|
||||
for (int i = 0; i < attachmentFiles.Count; i++)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(pdfFiles[i]))
|
||||
dataAttachments.Add(new WS.Attachment(results, headerIdDirectory, $"{logistics.JobID}_{logistics.MID}_{logistics.DateTimeFromSequence:yyyyMMddHHmmssffff}_Item-{i + 1}", "Image.pdf", pdfFiles[i]));
|
||||
if (!string.IsNullOrEmpty(attachmentFiles[i]))
|
||||
dataAttachments.Add(new WS.Attachment(results, headerIdDirectory, $"{uniqueId}_Item-{i + 1}", $"Image{extension}", attachmentFiles[i]));
|
||||
}
|
||||
if (dataAttachments.Count == 0 || dataAttachments.Count != descriptions.Count)
|
||||
throw new Exception($"Invalid attachment count! {dataAttachments.Count} != {descriptions.Count}");
|
||||
WS.AttachFiles(openInsightMetrologyViewerAPI, headerAttachments, dataAttachments);
|
||||
if (attachmentFiles.Count == 0 || attachmentFiles.Count != descriptions.Count)
|
||||
throw new Exception("Invalid *.pdf file count!");
|
||||
}
|
||||
|
||||
}
|
||||
@ -139,14 +139,15 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
return result;
|
||||
}
|
||||
|
||||
private void PostOpenInsightMetrologyViewerAttachments(List<txt.Description> descriptions)
|
||||
private void PostOpenInsightMetrologyViewerAttachments(JsonElement[] jsonElements, List<txt.Description> descriptions)
|
||||
{
|
||||
Shared.Metrology.WS.Results? results;
|
||||
string jobIdDirectory = Path.Combine(Path.GetDirectoryName(_FileConnectorConfiguration.AlternateTargetFolder) ?? throw new Exception(), _Logistics.JobID);
|
||||
if (!Directory.Exists(jobIdDirectory))
|
||||
_ = Directory.CreateDirectory(jobIdDirectory);
|
||||
long uniqueSequence = Logistics.GetUniqueSequence(_Logistics);
|
||||
string[] matchDirectories = GetInProcessDirectory(jobIdDirectory);
|
||||
if (!_StaticRuns.TryGetValue(_Logistics.Sequence, out List<Shared.Metrology.WS.Results>? wsResults))
|
||||
if (!_StaticRuns.TryGetValue(uniqueSequence, out List<Shared.Metrology.WS.Results>? wsResults))
|
||||
results = null;
|
||||
else
|
||||
{
|
||||
@ -155,7 +156,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
results = wsResults[0];
|
||||
}
|
||||
int weekOfYear = _Calendar.GetWeekOfYear(_Logistics.DateTimeFromSequence, CalendarWeekRule.FirstDay, DayOfWeek.Sunday);
|
||||
long headerId = !_IsEAFHosted ? -1 : OpenInsightMetrologyViewer.WSRequest.GetHeaderId(this, _Logistics, _OpenInsightMetrologyViewerAPI, _OpenInsightMetrologyViewerFileShare, weekOfYear, results, descriptions);
|
||||
long headerId = !_IsEAFHosted ? -1 : OpenInsightMetrologyViewer.WSRequest.GetHeaderId(this, _Logistics, _OpenInsightMetrologyViewerAPI, _OpenInsightMetrologyViewerFileShare, weekOfYear, results, jsonElements, descriptions);
|
||||
string? headerIdDirectory = GetHeaderIdDirectory(headerId);
|
||||
if (string.IsNullOrEmpty(headerIdDirectory))
|
||||
throw new Exception($"Didn't find header id directory <{headerId}>");
|
||||
@ -167,14 +168,15 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
if (dateTime == DateTime.MinValue)
|
||||
throw new ArgumentNullException(nameof(dateTime));
|
||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
||||
ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath);
|
||||
string[] lines = File.ReadAllLines(reportFullPath);
|
||||
ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath, lines);
|
||||
_Logistics = new Logistics(reportFullPath, processDataStandardFormat);
|
||||
SetFileParameterLotIDToLogisticsMID();
|
||||
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(processDataStandardFormat);
|
||||
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(reportFullPath, lines, processDataStandardFormat);
|
||||
List<txt.Description> descriptions = txt.ProcessData.GetDescriptions(jsonElements);
|
||||
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
||||
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
||||
PostOpenInsightMetrologyViewerAttachments(descriptions);
|
||||
PostOpenInsightMetrologyViewerAttachments(jsonElements, descriptions);
|
||||
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics), tests, jsonElements, new List<FileInfo>());
|
||||
return results;
|
||||
}
|
||||
|
||||
@ -108,12 +108,13 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
return results;
|
||||
}
|
||||
|
||||
private void DirectoryMove(string reportFullPath, DateTime dateTime, List<txt.Description> descriptions)
|
||||
private void DirectoryMove(string reportFullPath, DateTime dateTime, JsonElement[] jsonElements, List<txt.Description> descriptions)
|
||||
{
|
||||
if (dateTime == DateTime.MinValue)
|
||||
throw new ArgumentNullException(nameof(dateTime));
|
||||
FileInfo fileInfo = new(reportFullPath);
|
||||
string logisticsSequence = _Logistics.Sequence.ToString();
|
||||
long uniqueSequence = Logistics.GetUniqueSequence(_Logistics);
|
||||
string jobIdDirectory = Path.Combine(_JobIdParentDirectory, _Logistics.JobID);
|
||||
if (!Directory.Exists(jobIdDirectory))
|
||||
_ = Directory.CreateDirectory(jobIdDirectory);
|
||||
@ -122,7 +123,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
throw new Exception("Didn't find directory by logistics sequence");
|
||||
if (fileInfo.Exists && fileInfo.LastWriteTime < fileInfo.CreationTime)
|
||||
File.SetLastWriteTime(reportFullPath, fileInfo.CreationTime);
|
||||
OpenInsightMetrologyViewer.WSRequest wsRequest = new(this, _Logistics, descriptions);
|
||||
OpenInsightMetrologyViewer.WSRequest wsRequest = new(this, _Logistics, jsonElements, descriptions);
|
||||
JsonSerializerOptions jsonSerializerOptions = new() { WriteIndented = true };
|
||||
string json = JsonSerializer.Serialize(wsRequest, wsRequest.GetType(), jsonSerializerOptions);
|
||||
string directoryName = $"{Path.GetFileName(matchDirectories[0]).Split(new string[] { logisticsSequence }, StringSplitOptions.None)[0]}{_Logistics.DateTimeFromSequence:yyyy-MM-dd_hh;mm_tt_}{DateTime.Now.Ticks - _Logistics.Sequence}";
|
||||
@ -136,7 +137,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
File.Copy(reportFullPath, Path.Combine(sequenceDirectory, Path.GetFileName(reportFullPath)), overwrite: true);
|
||||
File.WriteAllText(jsonFileName, json);
|
||||
lock (_StaticRuns)
|
||||
_ = _StaticRuns.Remove(_Logistics.Sequence);
|
||||
_ = _StaticRuns.Remove(uniqueSequence);
|
||||
}
|
||||
|
||||
private static void MoveMatchingFile(string jobIdDirectory, string matchDirectory)
|
||||
@ -166,23 +167,24 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime)
|
||||
{
|
||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
||||
ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath);
|
||||
string[] lines = File.ReadAllLines(reportFullPath);
|
||||
ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath, lines);
|
||||
_Logistics = new Logistics(reportFullPath, processDataStandardFormat);
|
||||
SetFileParameterLotIDToLogisticsMID();
|
||||
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(processDataStandardFormat);
|
||||
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(reportFullPath, lines, processDataStandardFormat);
|
||||
List<txt.Description> descriptions = txt.ProcessData.GetDescriptions(jsonElements);
|
||||
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
||||
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics), tests, jsonElements, new List<FileInfo>());
|
||||
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
||||
DirectoryMove(reportFullPath, dateTime, descriptions);
|
||||
DirectoryMove(reportFullPath, dateTime, jsonElements, descriptions);
|
||||
else if (!_IsEAFHosted)
|
||||
{
|
||||
OpenInsightMetrologyViewer.WSRequest wsRequest = new(this, _Logistics, descriptions);
|
||||
OpenInsightMetrologyViewer.WSRequest wsRequest = new(this, _Logistics, jsonElements, descriptions);
|
||||
JsonSerializerOptions jsonSerializerOptions = new() { WriteIndented = true };
|
||||
string json = JsonSerializer.Serialize(wsRequest, wsRequest.GetType(), jsonSerializerOptions);
|
||||
string check = JsonSerializer.Serialize(wsRequest, wsRequest.GetType(), jsonSerializerOptions);
|
||||
string jsonFileName = Path.ChangeExtension(reportFullPath, ".json");
|
||||
string historicalText = File.ReadAllText(jsonFileName);
|
||||
if (json != historicalText)
|
||||
if (check != historicalText)
|
||||
throw new Exception("File doesn't match historical!");
|
||||
}
|
||||
return results;
|
||||
|
||||
@ -19,6 +19,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
public const string BarcodeHostFileShare = @"\\mesfs.infineon.com\EC_Metrology_Si\BarcodeHost\API";
|
||||
public const string MetrologyFileShare = @"\\mesfs.infineon.com\EC_Metrology_Si\WorkMaterialOut\API";
|
||||
public const string OpenInsightApplicationProgrammingInterface = @"http://oi-metrology-viewer-api.mes.infineon.com:8080/api/oiWizard";
|
||||
public const string IQSConnectionString = @"Data Source=messqlec1.infineon.com\PROD1,53959;Initial Catalog=IRMNSPC;Integrated Security=True";
|
||||
public const string LSL2SQLConnectionString = @"Data Source=messqlec1.infineon.com\PROD1,53959;Initial Catalog=LSL2SQL;Persist Security Info=True;User ID=srpadmin;Password=0okm9ijn;";
|
||||
|
||||
private long? _TickOffset;
|
||||
@ -38,6 +39,9 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
string barcodeHostFileShare = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "Barcode.Host.FileShare");
|
||||
if (barcodeHostFileShare != BarcodeHostFileShare)
|
||||
throw new NotSupportedException($"Update configuration for [{nameof(BarcodeHostFileShare)}]");
|
||||
string iqsConnectionString = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "IQS.ConnectionString");
|
||||
if (iqsConnectionString != IQSConnectionString)
|
||||
throw new NotSupportedException($"Update configuration for [{nameof(IQSConnectionString)}]");
|
||||
string lsl2SQLConnectionString = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "ConnectionString.LSL2SQL");
|
||||
if (lsl2SQLConnectionString != LSL2SQLConnectionString)
|
||||
throw new NotSupportedException($"Update configuration for [{nameof(LSL2SQLConnectionString)}]");
|
||||
@ -53,14 +57,14 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
string tibcoParameterSubjectPrefix = GetPropertyValue(cellInstanceConnectionName, tibcoParameters, "TIBCO.IFX_SUBJECT_PREFIX");
|
||||
string tibcoParameterConfigurationLocation = GetPropertyValue(cellInstanceConnectionName, tibcoParameters, "TIBCO.IFX_CONFIGURATION_LOCATION");
|
||||
string tibcoParameterConfigurationLocationCopy = GetPropertyValue(cellInstanceConnectionName, tibcoParameters, "TIBCO.IFX_CONFIGURATION_LOCATION_LOCAL_COPY");
|
||||
if (!Directory.Exists(MetrologyFileShare))
|
||||
if (!Directory.Exists(metrologyFileShare))
|
||||
throw new Exception($"Unable to access file-share <{MetrologyFileShare}>");
|
||||
if (!Directory.Exists(BarcodeHostFileShare))
|
||||
if (!Directory.Exists(barcodeHostFileShare))
|
||||
throw new Exception($"Unable to access file-share <{BarcodeHostFileShare}>");
|
||||
if (_IsEAFHosted)
|
||||
{
|
||||
HttpClient httpClient = new() { BaseAddress = new(OpenInsightApplicationProgrammingInterface) };
|
||||
Transport.Main.Initialize(smtp, cellInstanceName, fileConnectorConfiguration, LSL2SQLConnectionString, MetrologyFileShare, BarcodeHostFileShare, httpClient);
|
||||
HttpClient httpClient = new() { BaseAddress = new(openInsightApplicationProgrammingInterface) };
|
||||
Transport.Main.Initialize(smtp, cellInstanceName, fileConnectorConfiguration, iqsConnectionString, lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient);
|
||||
if (!string.IsNullOrEmpty(fileConnectorConfiguration.SourceFileLocation))
|
||||
_ = Transport.Main.Setup(useSleep: true, setIfxTransport: true, tibcoParameterChannel, tibcoParameterSubjectPrefix, tibcoParameterConfigurationLocation, tibcoParameterConfigurationLocationCopy, tibcoParameterSubject);
|
||||
else
|
||||
|
||||
@ -1,25 +1,88 @@
|
||||
namespace Adaptation.FileHandlers.TIBCO.Transport;
|
||||
|
||||
#nullable enable
|
||||
|
||||
public class CommonB
|
||||
{
|
||||
|
||||
public string Layer { get; }
|
||||
public string LoadLockSide { get; }
|
||||
public string? Layer { get; }
|
||||
public int? RDSNumber { get; }
|
||||
public string ReactorType { get; }
|
||||
public string PSN { get; }
|
||||
public string? PSN { get; }
|
||||
public int? ReactorNumber { get; }
|
||||
public string Zone { get; }
|
||||
public string? Zone { get; }
|
||||
public string? ExportControl { get; }
|
||||
public string? ReactorMode { get; }
|
||||
|
||||
public CommonB(string layer, string loadLockSide, int? rdsNumber, string reactorType, string psn, int? reactorNumber, string zone)
|
||||
public CommonB(string? layer,
|
||||
int? rdsNumber,
|
||||
string? psn,
|
||||
int? reactorNumber,
|
||||
string? zone,
|
||||
string? exportControl,
|
||||
string? reactorMode)
|
||||
{
|
||||
Layer = layer;
|
||||
LoadLockSide = loadLockSide;
|
||||
RDSNumber = rdsNumber;
|
||||
ReactorType = reactorType;
|
||||
PSN = psn;
|
||||
ReactorNumber = reactorNumber;
|
||||
Zone = zone;
|
||||
ExportControl = exportControl;
|
||||
ReactorMode = reactorMode;
|
||||
}
|
||||
|
||||
internal static CommonB Get(Common common, RunDataSheetRoot? runDataSheetRoot, Run[]? runs)
|
||||
{
|
||||
CommonB result;
|
||||
string? psn;
|
||||
string? zone;
|
||||
string? layer;
|
||||
int? reactorNumber;
|
||||
string? reactorMode;
|
||||
string? exportControl;
|
||||
if (runs is null || runs.Length == 0)
|
||||
{
|
||||
reactorMode = null;
|
||||
zone = common.Zone;
|
||||
exportControl = null;
|
||||
layer = common.Layer;
|
||||
if (runDataSheetRoot?.RunDataSheet is null)
|
||||
{
|
||||
psn = common.PSN;
|
||||
reactorNumber = common.ReactorNumber;
|
||||
}
|
||||
else
|
||||
{
|
||||
psn = runDataSheetRoot?.RunDataSheet.PSN.ToString();
|
||||
reactorNumber = runDataSheetRoot?.RunDataSheet.Reactor;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
const int zero = 0;
|
||||
Run run = runs[zero];
|
||||
reactorMode = run.ReactorMode;
|
||||
exportControl = run.ExportControl;
|
||||
if (runDataSheetRoot?.RunDataSheet is not null)
|
||||
{
|
||||
psn = runDataSheetRoot?.RunDataSheet.PSN.ToString();
|
||||
reactorNumber = runDataSheetRoot?.RunDataSheet.Reactor;
|
||||
}
|
||||
else
|
||||
{
|
||||
psn = string.IsNullOrEmpty(common.PSN) ? run.PSN : common.PSN;
|
||||
reactorNumber = common.ReactorNumber is null ? run.Reactor : common.ReactorNumber;
|
||||
}
|
||||
zone = string.IsNullOrEmpty(common.Zone) ? run.Zone : common.Zone;
|
||||
layer = string.IsNullOrEmpty(common.Layer) ? run.EpiLayer : common.Layer;
|
||||
}
|
||||
result = new(layer: layer,
|
||||
rdsNumber: common.RDSNumber,
|
||||
psn: psn,
|
||||
reactorNumber: reactorNumber,
|
||||
zone: zone,
|
||||
exportControl: exportControl,
|
||||
reactorMode: reactorMode);
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
@ -41,7 +41,7 @@ public partial class Job
|
||||
public DateTime DateTime { get; }
|
||||
public List<Item> Items { get; }
|
||||
|
||||
public Job(string lsl2SQLConnectionString, string metrologyFileShare, string barcodeHostFileShare, HttpClient httpClient, string mid, DateTime enteredDateTimeFilter, DateTime loadSignatureDateTimeFilter)
|
||||
public Job(string iqsSQLConnectionString, string lsl2SQLConnectionString, string metrologyFileShare, string barcodeHostFileShare, HttpClient httpClient, string mid, DateTime enteredDateTimeFilter, DateTime loadSignatureDateTimeFilter)
|
||||
{
|
||||
const int zero = 0;
|
||||
Items = new List<Item>();
|
||||
@ -49,8 +49,10 @@ public partial class Job
|
||||
IsAreaSi = false;
|
||||
else
|
||||
{
|
||||
Run[]? runs;
|
||||
Common common;
|
||||
CommonB commonB;
|
||||
string? basicType;
|
||||
int? reactorNumber;
|
||||
const string hyphen = "-";
|
||||
const string bioRad2 = "BIORAD2";
|
||||
@ -63,6 +65,7 @@ public partial class Job
|
||||
DateTime = DateTime.Now;
|
||||
else
|
||||
DateTime = new DateTime(sequence);
|
||||
string? jobNames = GetJobNames(input);
|
||||
const string dep08CEPIEPSILON = "DEP08CEPIEPSILON";
|
||||
if (input.EquipmentType == dep08CEPIEPSILON)
|
||||
common = ReactorGet(input, httpClient);
|
||||
@ -87,71 +90,59 @@ public partial class Job
|
||||
common = Get(input, httpClient);
|
||||
}
|
||||
bool isValid = IsValid(common.RDSNumber);
|
||||
if (isValid)
|
||||
commonB = GetWithValidRDS(lsl2SQLConnectionString, enteredDateTimeFilter, loadSignatureDateTimeFilter, common.Layer, common.PSN, common.RDSNumber, common.ReactorNumber, common.Zone);
|
||||
else if (common.WorkOrder is null || common.WorkOrder.IsWorkOrder || common.RDSNumber.HasValue)
|
||||
commonB = Get(lsl2SQLConnectionString, enteredDateTimeFilter, loadSignatureDateTimeFilter, common);
|
||||
else
|
||||
commonB = new(layer: hyphen,
|
||||
loadLockSide: hyphen,
|
||||
rdsNumber: common.RDSNumber,
|
||||
reactorType: hyphen,
|
||||
psn: common.PSN,
|
||||
reactorNumber: common.ReactorNumber,
|
||||
zone: hyphen);
|
||||
if (commonB.RDSNumber is null || common.RunDataSheetRoot is not null)
|
||||
if (common.RDSNumber is null || !isValid)
|
||||
runDataSheetRoot = common.RunDataSheetRoot;
|
||||
else
|
||||
{
|
||||
try
|
||||
{ runDataSheetRoot = GetRunDataSheetRoot(httpClient, commonB.RDSNumber.Value); }
|
||||
{ runDataSheetRoot = GetRunDataSheetRoot(httpClient, common.RDSNumber.Value); }
|
||||
catch (Exception)
|
||||
{ runDataSheetRoot = null; }
|
||||
}
|
||||
if (isValid)
|
||||
runs = GetWithValidRDS(lsl2SQLConnectionString, enteredDateTimeFilter, loadSignatureDateTimeFilter, common);
|
||||
else if (common.WorkOrder is null || common.WorkOrder.IsWorkOrder || common.RDSNumber.HasValue)
|
||||
runs = Get(lsl2SQLConnectionString, enteredDateTimeFilter, loadSignatureDateTimeFilter, common);
|
||||
else
|
||||
runs = null;
|
||||
commonB = CommonB.Get(common, runDataSheetRoot, runs);
|
||||
if (string.IsNullOrEmpty(jobNames) || commonB.RDSNumber is null || commonB.ReactorNumber is null || string.IsNullOrEmpty(commonB.PSN))
|
||||
basicType = hyphen;
|
||||
else
|
||||
{
|
||||
int? runCount;
|
||||
string commandText = GetCommandText(commonB, jobNames);
|
||||
try
|
||||
{
|
||||
runCount = GetScalar(iqsSQLConnectionString, commandText);
|
||||
basicType = runCount is null ? "1" : (runCount + 1).ToString();
|
||||
}
|
||||
catch (Exception)
|
||||
{ basicType = hyphen; }
|
||||
}
|
||||
Qty = "1";
|
||||
Status = hyphen; // INFO
|
||||
CreationUser = hyphen; // ?
|
||||
LotState = hyphen; // LAYER2
|
||||
Equipment = input.MesEntity; // ?
|
||||
PackageName = hyphen; // WAFER_ID
|
||||
Qty2 = input.Sequence; // SEQUENCE
|
||||
RecipeName = input.Recipe; // PPID
|
||||
BasicType = basicType; // BASIC_TYPE
|
||||
IsAreaSi = input.Area == "Si"; // N/A
|
||||
StateModel = input.EquipmentType; // ?
|
||||
JobName = DateTime.Ticks.ToString(); // ?
|
||||
BasicType = GetComment(hyphen, runDataSheetRoot, commonB); // BASIC_TYPE
|
||||
AutomationMode = string.Concat(DateTime.Ticks, ".", input.MesEntity); // ?
|
||||
SpecName = !string.IsNullOrEmpty(commonB.Layer) ? commonB.Layer : hyphen; // LAYER
|
||||
ProductName = !string.IsNullOrEmpty(commonB.PSN) ? commonB.PSN : hyphen; // PRODUCT
|
||||
Status = !string.IsNullOrEmpty(commonB.ReactorMode) ? commonB.ReactorMode : hyphen; // INFO
|
||||
ProcessSpecName = !string.IsNullOrEmpty(commonB.Zone) ? commonB.Zone : hyphen; // WAFER_POS
|
||||
LotName = commonB.RDSNumber is not null ? commonB.RDSNumber.Value.ToString() : input.MID; // MID
|
||||
PackageName = !string.IsNullOrEmpty(commonB.ExportControl) ? commonB.ExportControl : hyphen; // WAFER_ID
|
||||
LastUpdateUser = string.IsNullOrEmpty(runDataSheetRoot?.Json) ? "{}" : runDataSheetRoot.Json; // NULL_DATA
|
||||
ProcessType = commonB.ReactorNumber is not null ? commonB.ReactorNumber.Value.ToString() : hyphen; // PROCESS_JOBID
|
||||
Items.Add(new Item { Name = "0", Type = "NA", Number = (0 + 1).ToString(), Qty = "1", CarrierName = hyphen });
|
||||
}
|
||||
}
|
||||
|
||||
private static string GetComment(string hyphen, RunDataSheetRoot? runDataSheetRoot, CommonB commonB)
|
||||
{
|
||||
string result;
|
||||
string? loadLockSide = commonB.LoadLockSide;
|
||||
if (string.IsNullOrEmpty(loadLockSide) && commonB.RDSNumber is not null)
|
||||
loadLockSide = runDataSheetRoot?.RunDataSheet?.LoadLockSide;
|
||||
if (string.IsNullOrEmpty(loadLockSide) || string.IsNullOrEmpty(commonB.ReactorType))
|
||||
result = hyphen;
|
||||
else
|
||||
{
|
||||
string loadLockSideFull = loadLockSide switch
|
||||
{
|
||||
"L" => "Left",
|
||||
"R" => "Right",
|
||||
_ => loadLockSide,
|
||||
};
|
||||
result = $"{loadLockSideFull} - {commonB.ReactorType}";
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private static int? GetReactorNumber(Input input)
|
||||
{
|
||||
int? result;
|
||||
@ -564,12 +555,12 @@ public partial class Job
|
||||
return result;
|
||||
}
|
||||
|
||||
private static string GetRunJson(string lsl2SQLConnectionString, string commandText)
|
||||
private static string GetRunJson(string connectionString, string commandText)
|
||||
{
|
||||
StringBuilder result = new();
|
||||
try
|
||||
{
|
||||
using SqlConnection sqlConnection = new(lsl2SQLConnectionString);
|
||||
using SqlConnection sqlConnection = new(connectionString);
|
||||
sqlConnection.Open();
|
||||
using SqlCommand sqlCommand = new(commandText, sqlConnection);
|
||||
SqlDataReader sqlDataReader = sqlCommand.ExecuteReader(CommandBehavior.SequentialAccess);
|
||||
@ -608,6 +599,21 @@ public partial class Job
|
||||
results.Add($" and wm.in_cass_no = {workOrderCassetteValue}");
|
||||
results.Add($" and wm.slot_no = {slotValue}");
|
||||
results.Add(" ) zone ");
|
||||
results.Add(" , ( ");
|
||||
results.Add(" select top 1 case when ep.export_control = 1 then 'true' else 'false' end ");
|
||||
results.Add(" from lsl2sql.dbo.epi_part ep ");
|
||||
results.Add(" where ep.epi_pn = rr.part_no ");
|
||||
results.Add(" ) export_control ");
|
||||
results.Add(" , ( ");
|
||||
results.Add(" select top 1 rm.mode ");
|
||||
results.Add(" from lsl2sql.dbo.react_mode rm ");
|
||||
results.Add(" where rm.react_no = rr.reactor ");
|
||||
results.Add(" and rm.start_dtm = ( ");
|
||||
results.Add(" select max(start_dtm) ");
|
||||
results.Add(" from lsl2sql.dbo.react_mode rm_b ");
|
||||
results.Add(" where rm_b.react_no = rr.reactor ");
|
||||
results.Add(" ) ");
|
||||
results.Add(" ) react_mode ");
|
||||
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' ");
|
||||
@ -629,6 +635,21 @@ public partial class Job
|
||||
results.Add($" and wm.in_cass_no = {workOrderCassetteValue}");
|
||||
results.Add($" and wm.slot_no = {slotValue}");
|
||||
results.Add(" ) zone ");
|
||||
results.Add(" , ( ");
|
||||
results.Add(" select top 1 case when ep.export_control = 1 then 'true' else 'false' end ");
|
||||
results.Add(" from lsl2sql.dbo.epi_part ep ");
|
||||
results.Add(" where ep.epi_pn = rr.part_no ");
|
||||
results.Add(" ) export_control ");
|
||||
results.Add(" , ( ");
|
||||
results.Add(" select top 1 rm.mode ");
|
||||
results.Add(" from lsl2sql.dbo.react_mode rm ");
|
||||
results.Add(" where rm.react_no = rr.reactor ");
|
||||
results.Add(" and rm.start_dtm = ( ");
|
||||
results.Add(" select max(start_dtm) ");
|
||||
results.Add(" from lsl2sql.dbo.react_mode rm_b ");
|
||||
results.Add(" where rm_b.react_no = rr.reactor ");
|
||||
results.Add(" ) ");
|
||||
results.Add(" ) react_mode ");
|
||||
results.Add(" from lsl2sql.dbo.react_run rr ");
|
||||
results.Add(" where rr.rds_no = ( ");
|
||||
results.Add(" select max(wm.rds) ");
|
||||
@ -655,6 +676,21 @@ public partial class Job
|
||||
results.Add($" and wm.in_cass_no = {workOrderCassetteValue}");
|
||||
results.Add($" and wm.slot_no = {slotValue}");
|
||||
results.Add(" ) zone ");
|
||||
results.Add(" , ( ");
|
||||
results.Add(" select top 1 case when ep.export_control = 1 then 'true' else 'false' end ");
|
||||
results.Add(" from lsl2sql.dbo.epi_part ep ");
|
||||
results.Add(" where ep.epi_pn = rr.part_no ");
|
||||
results.Add(" ) export_control ");
|
||||
results.Add(" , ( ");
|
||||
results.Add(" select top 1 rm.mode ");
|
||||
results.Add(" from lsl2sql.dbo.react_mode rm ");
|
||||
results.Add(" where rm.react_no = rr.reactor ");
|
||||
results.Add(" and rm.start_dtm = ( ");
|
||||
results.Add(" select max(start_dtm) ");
|
||||
results.Add(" from lsl2sql.dbo.react_mode rm_b ");
|
||||
results.Add(" where rm_b.react_no = rr.reactor ");
|
||||
results.Add(" ) ");
|
||||
results.Add(" ) react_mode ");
|
||||
results.Add(" from lsl2sql.dbo.react_run rr ");
|
||||
results.Add(" where rr.rds_no = ( ");
|
||||
results.Add(" select max(qa.rds_no) ");
|
||||
@ -667,16 +703,9 @@ public partial class Job
|
||||
return string.Join(Environment.NewLine, results);
|
||||
} // cSpell:restore
|
||||
|
||||
private static CommonB Get(string lsl2SQLConnectionString, DateTime enteredDateTimeFilter, DateTime loadSignatureDateTimeFilter, Common common)
|
||||
private static Run[]? Get(string lsl2SQLConnectionString, DateTime enteredDateTimeFilter, DateTime loadSignatureDateTimeFilter, Common common)
|
||||
{
|
||||
int? rdsNumber;
|
||||
string? psn;
|
||||
string? zone;
|
||||
string? layer;
|
||||
const int zero = 0;
|
||||
int? reactorNumber;
|
||||
string? reactorType;
|
||||
string? loadLockSide;
|
||||
Run[]? results;
|
||||
string commandText = GetCommandText(enteredDateTimeFilter,
|
||||
loadSignatureDateTimeFilter,
|
||||
rds: null,
|
||||
@ -686,106 +715,169 @@ public partial class Job
|
||||
reactor: common.ReactorNumber);
|
||||
string json = GetRunJson(lsl2SQLConnectionString, commandText);
|
||||
if (string.IsNullOrEmpty(json))
|
||||
{
|
||||
psn = common.PSN;
|
||||
rdsNumber = null;
|
||||
reactorType = null;
|
||||
zone = common.Zone;
|
||||
loadLockSide = null;
|
||||
layer = common.Layer;
|
||||
reactorNumber = common.ReactorNumber;
|
||||
}
|
||||
results = null;
|
||||
else
|
||||
{
|
||||
Run[]? runs;
|
||||
try
|
||||
{ runs = JsonSerializer.Deserialize<Run[]>(json); }
|
||||
{ results = JsonSerializer.Deserialize<Run[]>(json); }
|
||||
catch (Exception)
|
||||
{ runs = Array.Empty<Run>(); }
|
||||
if (runs is null || runs.Length == 0)
|
||||
{
|
||||
psn = common.PSN;
|
||||
rdsNumber = null;
|
||||
reactorType = null;
|
||||
zone = common.Zone;
|
||||
loadLockSide = null;
|
||||
layer = common.Layer;
|
||||
reactorNumber = common.ReactorNumber;
|
||||
}
|
||||
else
|
||||
{
|
||||
reactorType = null;
|
||||
Run run = runs[zero];
|
||||
rdsNumber = run.RdsNo;
|
||||
reactorNumber = run.Reactor;
|
||||
loadLockSide = run.LoadLockSide;
|
||||
psn = string.IsNullOrEmpty(common.PSN) ? run.PSN : common.PSN;
|
||||
zone = string.IsNullOrEmpty(common.Zone) ? run.Zone : common.Zone;
|
||||
layer = string.IsNullOrEmpty(common.Layer) ? run.EpiLayer : common.Layer;
|
||||
}
|
||||
{ results = Array.Empty<Run>(); }
|
||||
}
|
||||
return new(layer: layer,
|
||||
loadLockSide: loadLockSide,
|
||||
rdsNumber: rdsNumber,
|
||||
psn: psn,
|
||||
reactorNumber: reactorNumber,
|
||||
reactorType: reactorType,
|
||||
zone: zone);
|
||||
return results;
|
||||
}
|
||||
|
||||
private static CommonB GetWithValidRDS(string lsl2SQLConnectionString, DateTime enteredDateTimeFilter, DateTime loadSignatureDateTimeFilter, string? layer, string? psn, int? rdsNumber, int? reactorNumber, string? zone)
|
||||
private static Run[]? GetWithValidRDS(string lsl2SQLConnectionString, DateTime enteredDateTimeFilter, DateTime loadSignatureDateTimeFilter, Common common)
|
||||
{
|
||||
const int zero = 0;
|
||||
string? reactorType;
|
||||
string? loadLockSide;
|
||||
Run[]? results;
|
||||
string commandText = GetCommandText(enteredDateTimeFilter,
|
||||
loadSignatureDateTimeFilter,
|
||||
rds: rdsNumber,
|
||||
rds: common.RDSNumber,
|
||||
workOrderNumber: null,
|
||||
workOrderCassette: null,
|
||||
slot: null,
|
||||
reactor: null);
|
||||
string json = GetRunJson(lsl2SQLConnectionString, commandText);
|
||||
if (string.IsNullOrEmpty(json))
|
||||
{
|
||||
zone = null;
|
||||
reactorType = null;
|
||||
loadLockSide = null;
|
||||
}
|
||||
results = null;
|
||||
else
|
||||
{
|
||||
Run[]? runs;
|
||||
try
|
||||
{ runs = JsonSerializer.Deserialize<Run[]>(json); }
|
||||
{ results = JsonSerializer.Deserialize<Run[]>(json); }
|
||||
catch (Exception)
|
||||
{ runs = Array.Empty<Run>(); }
|
||||
if (runs is null || runs.Length == 0)
|
||||
{
|
||||
zone = null;
|
||||
reactorType = null;
|
||||
loadLockSide = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
Run run = runs[zero];
|
||||
if (string.IsNullOrEmpty(psn))
|
||||
psn = run.PSN;
|
||||
if (string.IsNullOrEmpty(zone))
|
||||
zone = run.Zone;
|
||||
if (string.IsNullOrEmpty(layer))
|
||||
layer = run.EpiLayer;
|
||||
reactorNumber = run.Reactor is null ? reactorNumber : run.Reactor.Value;
|
||||
loadLockSide = run.LoadLockSide;
|
||||
reactorType = run.ReactorType;
|
||||
}
|
||||
{ results = Array.Empty<Run>(); }
|
||||
}
|
||||
return new(layer: layer,
|
||||
loadLockSide: loadLockSide,
|
||||
rdsNumber: rdsNumber,
|
||||
reactorType: reactorType,
|
||||
psn: psn,
|
||||
reactorNumber: reactorNumber,
|
||||
zone: zone);
|
||||
return results;
|
||||
}
|
||||
|
||||
private static string? GetJobNames(Input input) =>
|
||||
input.EquipmentType switch
|
||||
{
|
||||
"MET08ANLYSDIFAAST230" => "'SPV01'",
|
||||
"MET08DDUPSFS6420" => "'TENCOR1','TENCOR2','TENCOR3'",
|
||||
"MET08DDUPSP1TBI" => "'SP101','TBI01'",
|
||||
"MET08RESIHGCV" => "'HGCV1','HGCV2','HGCV3'",
|
||||
"MET08RESIMAPCDE" => "'CDE1','CDE2','CDE3','CDE4','CDE5','CDE6'",
|
||||
"MET08RESISRP2100" => "'SRP'",
|
||||
"MET08THFTIRQS408M" => "'BIORAD2','BIORAD3','BIORAD4','BIORAD5'",
|
||||
"MET08THFTIRSTRATUS" => "'BIORAD4','BIORAD5'",
|
||||
_ => null,
|
||||
};
|
||||
|
||||
private static string GetCommandText(CommonB commonB, string jobNames)
|
||||
{ // cSpell:disable
|
||||
List<string> results = new();
|
||||
results.Add(" select count(1) ");
|
||||
results.Add(" from ( ");
|
||||
results.Add(" select [sid] ");
|
||||
results.Add(" , [lot] ");
|
||||
results.Add(" , [process] ");
|
||||
results.Add(" , [part] ");
|
||||
results.Add(" , [job] ");
|
||||
results.Add(" , ( ");
|
||||
results.Add(" select min(concat( ");
|
||||
results.Add(" case when sd.f_dsgp = 1729787380 /* CDE SetupFile */ ");
|
||||
results.Add(" then ds.f_name ");
|
||||
results.Add(" else '' ");
|
||||
results.Add(" end, ");
|
||||
results.Add(" case when sd.f_dsgp = 1657296864 /* CDE Pattern */ ");
|
||||
results.Add(" then ds.f_name ");
|
||||
results.Add(" else '' ");
|
||||
results.Add(" end, ");
|
||||
results.Add(" case when sd.f_dsgp = 1655312695 /* BioRad, BioRad Stratus, CDE, SP1, TBI and Tencor - Recipe */ ");
|
||||
results.Add(" then ds.f_name ");
|
||||
results.Add(" else '' ");
|
||||
results.Add(" end)) ");
|
||||
results.Add(" from [spcepiworld].[dbo].[sgrp_dsc] sd ");
|
||||
results.Add(" join [spcepiworld].[dbo].[desc_dat] ds ");
|
||||
results.Add(" on sd.f_desc = ds.f_desc ");
|
||||
results.Add(" where [sid] = sd.f_sgrp ");
|
||||
results.Add(" and sd.f_dsgp in (1729787380, 1657296864, 1655312695) ");
|
||||
results.Add(" ) [min recipe] ");
|
||||
results.Add(" , ( ");
|
||||
results.Add(" select max(concat( ");
|
||||
results.Add(" case when sd.f_dsgp = 1729787380 /* CDE SetupFile */ ");
|
||||
results.Add(" then ds.f_name ");
|
||||
results.Add(" else '' ");
|
||||
results.Add(" end, ");
|
||||
results.Add(" case when sd.f_dsgp = 1657296864 /* CDE Pattern */ ");
|
||||
results.Add(" then ds.f_name ");
|
||||
results.Add(" else '' ");
|
||||
results.Add(" end, ");
|
||||
results.Add(" case when sd.f_dsgp = 1655312695 /* BioRad, BioRad Stratus, CDE, SP1, TBI and Tencor - Recipe */ ");
|
||||
results.Add(" then ds.f_name ");
|
||||
results.Add(" else '' ");
|
||||
results.Add(" end)) ");
|
||||
results.Add(" from [spcepiworld].[dbo].[sgrp_dsc] sd ");
|
||||
results.Add(" join [spcepiworld].[dbo].[desc_dat] ds ");
|
||||
results.Add(" on sd.f_desc = ds.f_desc ");
|
||||
results.Add(" where [sid] = sd.f_sgrp ");
|
||||
results.Add(" and sd.f_dsgp in (1729787380, 1657296864, 1655312695) ");
|
||||
results.Add(" ) [max recipe] ");
|
||||
results.Add(" from ( ");
|
||||
results.Add(" select se.f_sgrp [sid] ");
|
||||
results.Add(" , pl.f_name [lot] ");
|
||||
results.Add(" , pr.f_name [process] ");
|
||||
results.Add(" , pd.f_name [part] ");
|
||||
results.Add(" , jd.f_name [job] ");
|
||||
results.Add(" from [spcepiworld].[dbo].[sgrp_ext] se ");
|
||||
results.Add(" join [spcepiworld].[dbo].[prcs_dat] pr ");
|
||||
results.Add(" on se.f_prcs = pr.f_prcs ");
|
||||
results.Add(" join [spcepiworld].[dbo].[job_dat] jd ");
|
||||
results.Add(" on se.f_job = jd.f_job ");
|
||||
results.Add(" join [spcepiworld].[dbo].[part_lot] pl ");
|
||||
results.Add(" on se.f_lot = pl.f_lot ");
|
||||
results.Add(" join [spcepiworld].[dbo].[part_dat] pd ");
|
||||
results.Add(" on se.f_part = pd.f_part ");
|
||||
results.Add(" join [spcepiworld].[dbo].[test_dat] td ");
|
||||
results.Add(" on se.f_test = td.f_test ");
|
||||
results.Add(" join [spcepiworld].[dbo].[sgrp_dsc] sd ");
|
||||
results.Add(" on se.f_sgrp = sd.f_sgrp ");
|
||||
results.Add(" join [spcepiworld].[dbo].[desc_dat] ds ");
|
||||
results.Add(" on sd.f_desc = ds.f_desc ");
|
||||
results.Add(" where se.f_flag = 0 ");
|
||||
results.Add(" and sd.f_dsgp = 1765472498 /* Reactor Mode */ ");
|
||||
results.Add($" and pd.f_name = '{commonB.PSN}' ");
|
||||
results.Add($" and pl.f_name = '{commonB.RDSNumber}' ");
|
||||
results.Add($" and ds.f_name = '{commonB.ReactorMode}' ");
|
||||
results.Add($" and pr.f_name = '{commonB.ReactorNumber}' ");
|
||||
results.Add($" and jd.f_name in ({jobNames}) ");
|
||||
results.Add(" group by se.f_sgrp ");
|
||||
results.Add(" , se.f_sgtm ");
|
||||
results.Add(" , pl.f_name ");
|
||||
results.Add(" , pr.f_name ");
|
||||
results.Add(" , pd.f_name ");
|
||||
results.Add(" , jd.f_name ");
|
||||
results.Add(" ) iq ");
|
||||
results.Add(" ) iq ");
|
||||
results.Add(" group by [lot] ");
|
||||
results.Add(" , [process] ");
|
||||
results.Add(" , [part] ");
|
||||
results.Add(" , [job] ");
|
||||
results.Add(" , [min recipe] ");
|
||||
results.Add(" , [max recipe] ");
|
||||
results.Add(" ; ");
|
||||
return string.Join(Environment.NewLine, results);
|
||||
} // cSpell:restore
|
||||
|
||||
private static int? GetScalar(string connectionString, string commandText)
|
||||
{
|
||||
int? result;
|
||||
try
|
||||
{
|
||||
using SqlConnection sqlConnection = new(connectionString);
|
||||
sqlConnection.Open();
|
||||
using SqlCommand sqlCommand = new(commandText, sqlConnection);
|
||||
object scalar = sqlCommand.ExecuteScalar();
|
||||
if (scalar is null || !int.TryParse(scalar.ToString(), out int value))
|
||||
result = null;
|
||||
else
|
||||
result = value;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
result = null;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
@ -17,19 +17,21 @@ internal partial class Main
|
||||
private static object _IfxTransport;
|
||||
private static string _CellInstanceName;
|
||||
private static string _MetrologyFileShare;
|
||||
private static string _IQSConnectionString;
|
||||
private static string _BarcodeHostFileShare;
|
||||
private static string _LSL2SQLConnectionString;
|
||||
private static string _TibcoParameterSubjectPrefix;
|
||||
private static HttpClient _HttpClient;
|
||||
private static FileConnectorConfiguration _FileConnectorConfiguration;
|
||||
|
||||
internal static void Initialize(ISMTP smtp, string cellInstanceName, FileConnectorConfiguration fileConnectorConfiguration, string lsl2SQLConnectionString, string metrologyFileShare, string barcodeHostFileShare, HttpClient httpClient)
|
||||
internal static void Initialize(ISMTP smtp, string cellInstanceName, FileConnectorConfiguration fileConnectorConfiguration, string iqsConnectionString, string lsl2SQLConnectionString, string metrologyFileShare, string barcodeHostFileShare, HttpClient httpClient)
|
||||
{
|
||||
_SMTP = smtp;
|
||||
_IfxTransport = null;
|
||||
_HttpClient = httpClient;
|
||||
_CellInstanceName = cellInstanceName;
|
||||
_MetrologyFileShare = metrologyFileShare;
|
||||
_IQSConnectionString = iqsConnectionString;
|
||||
_TibcoParameterSubjectPrefix = string.Empty;
|
||||
_BarcodeHostFileShare = barcodeHostFileShare;
|
||||
_LSL2SQLConnectionString = lsl2SQLConnectionString;
|
||||
@ -190,7 +192,7 @@ internal partial class Main
|
||||
string mid = GetJobsMID(envelopeDocument);
|
||||
DateTime enteredDateTimeFilter = dateTime.AddDays(-356);
|
||||
DateTime loadSignatureDateTimeFilter = dateTime.AddDays(-4);
|
||||
Job job = new(_LSL2SQLConnectionString, _MetrologyFileShare, _BarcodeHostFileShare, _HttpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter);
|
||||
Job job = new(_IQSConnectionString, _LSL2SQLConnectionString, _MetrologyFileShare, _BarcodeHostFileShare, _HttpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter);
|
||||
if (job.IsAreaSi)
|
||||
{
|
||||
IfxDoc sendReply = GetJobsReply(job);
|
||||
|
||||
@ -29,12 +29,6 @@ public class Run
|
||||
[JsonPropertyName("ps_no")]
|
||||
public string PSN { get; set; }
|
||||
|
||||
[JsonPropertyName("load_lock_side")]
|
||||
public string LoadLockSide { get; set; }
|
||||
|
||||
[JsonPropertyName("reactor_type")]
|
||||
public string ReactorType { get; set; }
|
||||
|
||||
[JsonPropertyName("recipe_name")]
|
||||
public string RecipeName { get; set; }
|
||||
|
||||
@ -80,4 +74,10 @@ public class Run
|
||||
[JsonPropertyName("zone")]
|
||||
public string Zone { get; set; }
|
||||
|
||||
[JsonPropertyName("export_control")]
|
||||
public string ExportControl { get; set; }
|
||||
|
||||
[JsonPropertyName("react_mode")]
|
||||
public string ReactorMode { get; set; }
|
||||
|
||||
}
|
||||
@ -6,15 +6,23 @@ public class RunDataSheet
|
||||
{
|
||||
|
||||
[JsonConstructor]
|
||||
public RunDataSheet(string loadLockSide, int psn, int reactor)
|
||||
public RunDataSheet(string loadLockSide,
|
||||
int number,
|
||||
int psn,
|
||||
int reactor,
|
||||
string reactorType)
|
||||
{
|
||||
PSN = psn;
|
||||
Number = number;
|
||||
LoadLockSide = loadLockSide;
|
||||
Reactor = reactor;
|
||||
ReactorType = reactorType;
|
||||
}
|
||||
|
||||
[JsonPropertyName("keyId")] public int Number { get; } // { init; get; }
|
||||
[JsonPropertyName("loadLockSide")] public string LoadLockSide { get; } // { init; get; }
|
||||
[JsonPropertyName("PSN")] public int PSN { get; } // { init; get; }
|
||||
[JsonPropertyName("reactor")] public int Reactor { get; } // { init; get; }
|
||||
[JsonPropertyName("reactorType")] public string ReactorType { get; } // { init; get; }
|
||||
|
||||
}
|
||||
@ -17,6 +17,8 @@ internal class Constant
|
||||
public string Reject { get; } = "F Reject";
|
||||
public string LongWaferSummary { get; } = "Long Wafer Summary";
|
||||
public string OverLoad { get; } = "F OverLoad";
|
||||
public string ShortWaferSummary { get; } = "Short Wafer Summary";
|
||||
public string Empty35Spaces { get; } = " ";
|
||||
public string FormatExceptionMessage { get; } = "Wafer Summary section is neither Short nor Long format.";
|
||||
|
||||
}
|
||||
@ -4,341 +4,344 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.txt;
|
||||
|
||||
public class Description : IDescription, Shared.Properties.IDescription
|
||||
{
|
||||
|
||||
public int Test { get; set; }
|
||||
public int Count { get; set; }
|
||||
public int Index { get; set; }
|
||||
[JsonPropertyName("EventId")] public int Test { get; set; }
|
||||
[JsonPropertyName("Count")] public int Count { get; set; }
|
||||
[JsonPropertyName("Index")] public int Index { get; set; }
|
||||
//
|
||||
public string EventName { get; set; }
|
||||
public string NullData { get; set; }
|
||||
public string JobID { get; set; }
|
||||
public string Sequence { get; set; }
|
||||
public string MesEntity { get; set; }
|
||||
[JsonPropertyName("MesEntity")] public string MesEntity { get; set; }
|
||||
public string ReportFullPath { get; set; }
|
||||
public string ProcessJobID { get; set; }
|
||||
public string MID { get; set; }
|
||||
//
|
||||
public string Date { get; set; }
|
||||
public string Employee { get; set; }
|
||||
public string Lot { get; set; }
|
||||
public string PSN { get; set; }
|
||||
public string Reactor { get; set; }
|
||||
[JsonPropertyName("Date")] public string Date { get; set; }
|
||||
[JsonPropertyName("Employee")] public string Employee { get; set; }
|
||||
[JsonPropertyName("Lot")] public string Lot { get; set; }
|
||||
[JsonPropertyName("PSN")] public string PSN { get; set; }
|
||||
[JsonPropertyName("Reactor")] public string Reactor { get; set; }
|
||||
public string Recipe { get; set; }
|
||||
[JsonPropertyName("IndexOf")] public string IndexOf { get; set; }
|
||||
[JsonPropertyName("AttemptCounter")] public string AttemptCounter { get; set; }
|
||||
//
|
||||
public string Grade { get; set; }
|
||||
[JsonPropertyName("Grade")] public string Grade { get; set; }
|
||||
public string HeaderUniqueId { get; set; }
|
||||
public string RDS { get; set; }
|
||||
public string Session { get; set; }
|
||||
public string Side { get; set; }
|
||||
public string SrcDest { get; set; }
|
||||
[JsonPropertyName("RDS")] public string RDS { get; set; }
|
||||
[JsonPropertyName("Session")] public string Session { get; set; }
|
||||
[JsonPropertyName("Side")] public string Side { get; set; }
|
||||
[JsonPropertyName("SrcDest")] public string SrcDest { get; set; }
|
||||
public string UniqueId { get; set; }
|
||||
public string WaferID { get; set; }
|
||||
[JsonPropertyName("WaferID")] public string WaferID { get; set; }
|
||||
//
|
||||
public string DcnAllMax { get; set; }
|
||||
public string DcnAllMean { get; set; }
|
||||
public string DcnAllMin { get; set; }
|
||||
public string DcnAllStdDev { get; set; }
|
||||
public string DcnAreaCountMax { get; set; }
|
||||
public string DcnAreaCountMean { get; set; }
|
||||
public string DcnAreaCountMin { get; set; }
|
||||
public string DcnAreaCountStdDev { get; set; }
|
||||
public string DcnAreaMax { get; set; }
|
||||
public string DcnAreaMean { get; set; }
|
||||
public string DcnAreaMin { get; set; }
|
||||
public string DcnAreaStdDev { get; set; }
|
||||
public string DcnBin1Max { get; set; }
|
||||
public string DcnBin1Mean { get; set; }
|
||||
public string DcnBin1Min { get; set; }
|
||||
public string DcnBin1StdDev { get; set; }
|
||||
public string DcnBin2Max { get; set; }
|
||||
public string DcnBin2Mean { get; set; }
|
||||
public string DcnBin2Min { get; set; }
|
||||
public string DcnBin2StdDev { get; set; }
|
||||
public string DcnBin3Max { get; set; }
|
||||
public string DcnBin3Mean { get; set; }
|
||||
public string DcnBin3Min { get; set; }
|
||||
public string DcnBin3StdDev { get; set; }
|
||||
public string DcnBin4Max { get; set; }
|
||||
public string DcnBin4Mean { get; set; }
|
||||
public string DcnBin4Min { get; set; }
|
||||
public string DcnBin4StdDev { get; set; }
|
||||
public string DcnBin5Max { get; set; }
|
||||
public string DcnBin5Mean { get; set; }
|
||||
public string DcnBin5Min { get; set; }
|
||||
public string DcnBin5StdDev { get; set; }
|
||||
public string DcnBin6Max { get; set; }
|
||||
public string DcnBin6Mean { get; set; }
|
||||
public string DcnBin6Min { get; set; }
|
||||
public string DcnBin6StdDev { get; set; }
|
||||
public string DcnBin7Max { get; set; }
|
||||
public string DcnBin7Mean { get; set; }
|
||||
public string DcnBin7Min { get; set; }
|
||||
public string DcnBin7StdDev { get; set; }
|
||||
public string DcnBin8Max { get; set; }
|
||||
public string DcnBin8Mean { get; set; }
|
||||
public string DcnBin8Min { get; set; }
|
||||
public string DcnBin8StdDev { get; set; }
|
||||
public string DcnHazeAvgMax { get; set; }
|
||||
public string DcnHazeAvgMean { get; set; }
|
||||
public string DcnHazeAvgMin { get; set; }
|
||||
public string DcnHazeAvgStdDev { get; set; }
|
||||
public string DcnHazeMedianMax { get; set; }
|
||||
public string DcnHazeMedianMean { get; set; }
|
||||
public string DcnHazeMedianMin { get; set; }
|
||||
public string DcnHazeMedianStdDev { get; set; }
|
||||
public string DcnHazeStdDevMax { get; set; }
|
||||
public string DcnHazeStdDevMean { get; set; }
|
||||
public string DcnHazeStdDevMin { get; set; }
|
||||
public string DcnHazeStdDevStdDev { get; set; }
|
||||
public string DcnLpdESMax { get; set; }
|
||||
public string DcnLpdESMean { get; set; }
|
||||
public string DcnLpdESMin { get; set; }
|
||||
public string DcnLpdESStdDev { get; set; }
|
||||
public string DcnLpdMax { get; set; }
|
||||
public string DcnLpdMean { get; set; }
|
||||
public string DcnLpdMin { get; set; }
|
||||
public string DcnLpdNMax { get; set; }
|
||||
public string DcnLpdNMean { get; set; }
|
||||
public string DcnLpdNMin { get; set; }
|
||||
public string DcnLpdNStdDev { get; set; }
|
||||
public string DcnLpdStdDev { get; set; }
|
||||
public string DcnMicroScrMax { get; set; }
|
||||
public string DcnMicroScrMean { get; set; }
|
||||
public string DcnMicroScrMin { get; set; }
|
||||
public string DcnMicroScrStdDev { get; set; }
|
||||
public string DcnScrMax { get; set; }
|
||||
public string DcnScrMean { get; set; }
|
||||
public string DcnScrMin { get; set; }
|
||||
public string DcnScrStdDev { get; set; }
|
||||
public string DcnSlipMax { get; set; }
|
||||
public string DcnSlipMean { get; set; }
|
||||
public string DcnSlipMin { get; set; }
|
||||
public string DcnSlipStdDev { get; set; }
|
||||
public string DnnAllMax { get; set; }
|
||||
public string DnnAllMean { get; set; }
|
||||
public string DnnAllMin { get; set; }
|
||||
public string DnnAllStdDev { get; set; }
|
||||
public string DnnAreaCountMax { get; set; }
|
||||
public string DnnAreaCountMean { get; set; }
|
||||
public string DnnAreaCountMin { get; set; }
|
||||
public string DnnAreaCountStdDev { get; set; }
|
||||
public string DnnAreaMax { get; set; }
|
||||
public string DnnAreaMean { get; set; }
|
||||
public string DnnAreaMin { get; set; }
|
||||
public string DnnAreaStdDev { get; set; }
|
||||
public string DnnBin1Max { get; set; }
|
||||
public string DnnBin1Mean { get; set; }
|
||||
public string DnnBin1Min { get; set; }
|
||||
public string DnnBin1StdDev { get; set; }
|
||||
public string DnnBin2Max { get; set; }
|
||||
public string DnnBin2Mean { get; set; }
|
||||
public string DnnBin2Min { get; set; }
|
||||
public string DnnBin2StdDev { get; set; }
|
||||
public string DnnBin3Max { get; set; }
|
||||
public string DnnBin3Mean { get; set; }
|
||||
public string DnnBin3Min { get; set; }
|
||||
public string DnnBin3StdDev { get; set; }
|
||||
public string DnnBin4Max { get; set; }
|
||||
public string DnnBin4Mean { get; set; }
|
||||
public string DnnBin4Min { get; set; }
|
||||
public string DnnBin4StdDev { get; set; }
|
||||
public string DnnBin5Max { get; set; }
|
||||
public string DnnBin5Mean { get; set; }
|
||||
public string DnnBin5Min { get; set; }
|
||||
public string DnnBin5StdDev { get; set; }
|
||||
public string DnnBin6Max { get; set; }
|
||||
public string DnnBin6Mean { get; set; }
|
||||
public string DnnBin6Min { get; set; }
|
||||
public string DnnBin6StdDev { get; set; }
|
||||
public string DnnBin7Max { get; set; }
|
||||
public string DnnBin7Mean { get; set; }
|
||||
public string DnnBin7Min { get; set; }
|
||||
public string DnnBin7StdDev { get; set; }
|
||||
public string DnnBin8Max { get; set; }
|
||||
public string DnnBin8Mean { get; set; }
|
||||
public string DnnBin8Min { get; set; }
|
||||
public string DnnBin8StdDev { get; set; }
|
||||
public string DnnHazeAvgMax { get; set; }
|
||||
public string DnnHazeAvgMean { get; set; }
|
||||
public string DnnHazeAvgMin { get; set; }
|
||||
public string DnnHazeAvgStdDev { get; set; }
|
||||
public string DnnHazeMedianMax { get; set; }
|
||||
public string DnnHazeMedianMean { get; set; }
|
||||
public string DnnHazeMedianMin { get; set; }
|
||||
public string DnnHazeMedianStdDev { get; set; }
|
||||
public string DnnHazeStdDevMax { get; set; }
|
||||
public string DnnHazeStdDevMean { get; set; }
|
||||
public string DnnHazeStdDevMin { get; set; }
|
||||
public string DnnHazeStdDevStdDev { get; set; }
|
||||
public string DnnLpdESMax { get; set; }
|
||||
public string DnnLpdESMean { get; set; }
|
||||
public string DnnLpdESMin { get; set; }
|
||||
public string DnnLpdESStdDev { get; set; }
|
||||
public string DnnLpdMax { get; set; }
|
||||
public string DnnLpdMean { get; set; }
|
||||
public string DnnLpdMin { get; set; }
|
||||
public string DnnLpdNMax { get; set; }
|
||||
public string DnnLpdNMean { get; set; }
|
||||
public string DnnLpdNMin { get; set; }
|
||||
public string DnnLpdNStdDev { get; set; }
|
||||
public string DnnLpdStdDev { get; set; }
|
||||
public string DnnMicroScrMax { get; set; }
|
||||
public string DnnMicroScrMean { get; set; }
|
||||
public string DnnMicroScrMin { get; set; }
|
||||
public string DnnMicroScrStdDev { get; set; }
|
||||
public string DnnScrMax { get; set; }
|
||||
public string DnnScrMean { get; set; }
|
||||
public string DnnScrMin { get; set; }
|
||||
public string DnnScrStdDev { get; set; }
|
||||
public string DnnSlipMax { get; set; }
|
||||
public string DnnSlipMean { get; set; }
|
||||
public string DnnSlipMin { get; set; }
|
||||
public string DnnSlipStdDev { get; set; }
|
||||
public string DwnAllMax { get; set; }
|
||||
public string DwnAllMean { get; set; }
|
||||
public string DwnAllMin { get; set; }
|
||||
public string DwnAllStdDev { get; set; }
|
||||
public string DwnAreaCountMax { get; set; }
|
||||
public string DwnAreaCountMean { get; set; }
|
||||
public string DwnAreaCountMin { get; set; }
|
||||
public string DwnAreaCountStdDev { get; set; }
|
||||
public string DwnAreaMax { get; set; }
|
||||
public string DwnAreaMean { get; set; }
|
||||
public string DwnAreaMin { get; set; }
|
||||
public string DwnAreaStdDev { get; set; }
|
||||
public string DwnBin1Max { get; set; }
|
||||
public string DwnBin1Mean { get; set; }
|
||||
public string DwnBin1Min { get; set; }
|
||||
public string DwnBin1StdDev { get; set; }
|
||||
public string DwnBin2Max { get; set; }
|
||||
public string DwnBin2Mean { get; set; }
|
||||
public string DwnBin2Min { get; set; }
|
||||
public string DwnBin2StdDev { get; set; }
|
||||
public string DwnBin3Max { get; set; }
|
||||
public string DwnBin3Mean { get; set; }
|
||||
public string DwnBin3Min { get; set; }
|
||||
public string DwnBin3StdDev { get; set; }
|
||||
public string DwnBin4Max { get; set; }
|
||||
public string DwnBin4Mean { get; set; }
|
||||
public string DwnBin4Min { get; set; }
|
||||
public string DwnBin4StdDev { get; set; }
|
||||
public string DwnBin5Max { get; set; }
|
||||
public string DwnBin5Mean { get; set; }
|
||||
public string DwnBin5Min { get; set; }
|
||||
public string DwnBin5StdDev { get; set; }
|
||||
public string DwnBin6Max { get; set; }
|
||||
public string DwnBin6Mean { get; set; }
|
||||
public string DwnBin6Min { get; set; }
|
||||
public string DwnBin6StdDev { get; set; }
|
||||
public string DwnBin7Max { get; set; }
|
||||
public string DwnBin7Mean { get; set; }
|
||||
public string DwnBin7Min { get; set; }
|
||||
public string DwnBin7StdDev { get; set; }
|
||||
public string DwnBin8Max { get; set; }
|
||||
public string DwnBin8Mean { get; set; }
|
||||
public string DwnBin8Min { get; set; }
|
||||
public string DwnBin8StdDev { get; set; }
|
||||
public string DwnHazeAvgMax { get; set; }
|
||||
public string DwnHazeAvgMean { get; set; }
|
||||
public string DwnHazeAvgMin { get; set; }
|
||||
public string DwnHazeAvgStdDev { get; set; }
|
||||
public string DwnHazeMedianMax { get; set; }
|
||||
public string DwnHazeMedianMean { get; set; }
|
||||
public string DwnHazeMedianMin { get; set; }
|
||||
public string DwnHazeMedianStdDev { get; set; }
|
||||
public string DwnHazeStdDevMax { get; set; }
|
||||
public string DwnHazeStdDevMean { get; set; }
|
||||
public string DwnHazeStdDevMin { get; set; }
|
||||
public string DwnHazeStdDevStdDev { get; set; }
|
||||
public string DwnLpdESMax { get; set; }
|
||||
public string DwnLpdESMean { get; set; }
|
||||
public string DwnLpdESMin { get; set; }
|
||||
public string DwnLpdESStdDev { get; set; }
|
||||
public string DwnLpdMax { get; set; }
|
||||
public string DwnLpdMean { get; set; }
|
||||
public string DwnLpdMin { get; set; }
|
||||
public string DwnLpdNMax { get; set; }
|
||||
public string DwnLpdNMean { get; set; }
|
||||
public string DwnLpdNMin { get; set; }
|
||||
public string DwnLpdNStdDev { get; set; }
|
||||
public string DwnLpdStdDev { get; set; }
|
||||
public string DwnMicroScrMax { get; set; }
|
||||
public string DwnMicroScrMean { get; set; }
|
||||
public string DwnMicroScrMin { get; set; }
|
||||
public string DwnMicroScrStdDev { get; set; }
|
||||
public string DwnScrMax { get; set; }
|
||||
public string DwnScrMean { get; set; }
|
||||
public string DwnScrMin { get; set; }
|
||||
public string DwnScrStdDev { get; set; }
|
||||
public string DwnSlipMax { get; set; }
|
||||
public string DwnSlipMean { get; set; }
|
||||
public string DwnSlipMin { get; set; }
|
||||
public string DwnSlipStdDev { get; set; }
|
||||
public string DcnAll { get; set; }
|
||||
public string DcnArea { get; set; }
|
||||
public string DcnAreaCount { get; set; }
|
||||
public string DcnBin1 { get; set; }
|
||||
public string DcnBin2 { get; set; }
|
||||
public string DcnBin3 { get; set; }
|
||||
public string DcnBin4 { get; set; }
|
||||
public string DcnBin5 { get; set; }
|
||||
public string DcnBin6 { get; set; }
|
||||
public string DcnBin7 { get; set; }
|
||||
public string DcnBin8 { get; set; }
|
||||
public string DcnHazeAvg { get; set; }
|
||||
public string DcnHazeMedian { get; set; }
|
||||
public string DcnHazeStdDev { get; set; }
|
||||
public string DcnLpd { get; set; }
|
||||
public string DcnLpdES { get; set; }
|
||||
public string DcnLpdN { get; set; }
|
||||
public string DcnMicroScr { get; set; }
|
||||
public string DcnScr { get; set; }
|
||||
public string DcnSlip { get; set; }
|
||||
public string DnnAll { get; set; }
|
||||
public string DnnArea { get; set; }
|
||||
public string DnnAreaCount { get; set; }
|
||||
public string DnnBin1 { get; set; }
|
||||
public string DnnBin2 { get; set; }
|
||||
public string DnnBin3 { get; set; }
|
||||
public string DnnBin4 { get; set; }
|
||||
public string DnnBin5 { get; set; }
|
||||
public string DnnBin6 { get; set; }
|
||||
public string DnnBin7 { get; set; }
|
||||
public string DnnBin8 { get; set; }
|
||||
public string DnnHazeAvg { get; set; }
|
||||
public string DnnHazeMedian { get; set; }
|
||||
public string DnnHazeStdDev { get; set; }
|
||||
public string DnnLpd { get; set; }
|
||||
public string DnnLpdES { get; set; }
|
||||
public string DnnLpdN { get; set; }
|
||||
public string DnnMicroScr { get; set; }
|
||||
public string DnnScr { get; set; }
|
||||
public string DnnSlip { get; set; }
|
||||
public string DwnAll { get; set; }
|
||||
public string DwnArea { get; set; }
|
||||
public string DwnAreaCount { get; set; }
|
||||
public string DwnBin1 { get; set; }
|
||||
public string DwnBin2 { get; set; }
|
||||
public string DwnBin3 { get; set; }
|
||||
public string DwnBin4 { get; set; }
|
||||
public string DwnBin5 { get; set; }
|
||||
public string DwnBin6 { get; set; }
|
||||
public string DwnBin7 { get; set; }
|
||||
public string DwnBin8 { get; set; }
|
||||
public string DwnHazeAvg { get; set; }
|
||||
public string DwnHazeMedian { get; set; }
|
||||
public string DwnHazeStdDev { get; set; }
|
||||
public string DwnLpd { get; set; }
|
||||
public string DwnLpdES { get; set; }
|
||||
public string DwnLpdN { get; set; }
|
||||
public string DwnMicroScr { get; set; }
|
||||
public string DwnScr { get; set; }
|
||||
public string DwnSlip { get; set; }
|
||||
[JsonPropertyName("DcnAllMax")] public string DcnAllMax { get; set; }
|
||||
[JsonPropertyName("DcnAllMean")] public string DcnAllMean { get; set; }
|
||||
[JsonPropertyName("DcnAllMin")] public string DcnAllMin { get; set; }
|
||||
[JsonPropertyName("DcnAllStdDev")] public string DcnAllStdDev { get; set; }
|
||||
[JsonPropertyName("DcnAreaCountMax")] public string DcnAreaCountMax { get; set; }
|
||||
[JsonPropertyName("DcnAreaCountMean")] public string DcnAreaCountMean { get; set; }
|
||||
[JsonPropertyName("DcnAreaCountMin")] public string DcnAreaCountMin { get; set; }
|
||||
[JsonPropertyName("DcnAreaCountStdDev")] public string DcnAreaCountStdDev { get; set; }
|
||||
[JsonPropertyName("DcnAreaMax")] public string DcnAreaMax { get; set; }
|
||||
[JsonPropertyName("DcnAreaMean")] public string DcnAreaMean { get; set; }
|
||||
[JsonPropertyName("DcnAreaMin")] public string DcnAreaMin { get; set; }
|
||||
[JsonPropertyName("DcnAreaStdDev")] public string DcnAreaStdDev { get; set; }
|
||||
[JsonPropertyName("DcnBin1Max")] public string DcnBin1Max { get; set; }
|
||||
[JsonPropertyName("DcnBin1Mean")] public string DcnBin1Mean { get; set; }
|
||||
[JsonPropertyName("DcnBin1Min")] public string DcnBin1Min { get; set; }
|
||||
[JsonPropertyName("DcnBin1StdDev")] public string DcnBin1StdDev { get; set; }
|
||||
[JsonPropertyName("DcnBin2Max")] public string DcnBin2Max { get; set; }
|
||||
[JsonPropertyName("DcnBin2Mean")] public string DcnBin2Mean { get; set; }
|
||||
[JsonPropertyName("DcnBin2Min")] public string DcnBin2Min { get; set; }
|
||||
[JsonPropertyName("DcnBin2StdDev")] public string DcnBin2StdDev { get; set; }
|
||||
[JsonPropertyName("DcnBin3Max")] public string DcnBin3Max { get; set; }
|
||||
[JsonPropertyName("DcnBin3Mean")] public string DcnBin3Mean { get; set; }
|
||||
[JsonPropertyName("DcnBin3Min")] public string DcnBin3Min { get; set; }
|
||||
[JsonPropertyName("DcnBin3StdDev")] public string DcnBin3StdDev { get; set; }
|
||||
[JsonPropertyName("DcnBin4Max")] public string DcnBin4Max { get; set; }
|
||||
[JsonPropertyName("DcnBin4Mean")] public string DcnBin4Mean { get; set; }
|
||||
[JsonPropertyName("DcnBin4Min")] public string DcnBin4Min { get; set; }
|
||||
[JsonPropertyName("DcnBin4StdDev")] public string DcnBin4StdDev { get; set; }
|
||||
[JsonPropertyName("DcnBin5Max")] public string DcnBin5Max { get; set; }
|
||||
[JsonPropertyName("DcnBin5Mean")] public string DcnBin5Mean { get; set; }
|
||||
[JsonPropertyName("DcnBin5Min")] public string DcnBin5Min { get; set; }
|
||||
[JsonPropertyName("DcnBin5StdDev")] public string DcnBin5StdDev { get; set; }
|
||||
[JsonPropertyName("DcnBin6Max")] public string DcnBin6Max { get; set; }
|
||||
[JsonPropertyName("DcnBin6Mean")] public string DcnBin6Mean { get; set; }
|
||||
[JsonPropertyName("DcnBin6Min")] public string DcnBin6Min { get; set; }
|
||||
[JsonPropertyName("DcnBin6StdDev")] public string DcnBin6StdDev { get; set; }
|
||||
[JsonPropertyName("DcnBin7Max")] public string DcnBin7Max { get; set; }
|
||||
[JsonPropertyName("DcnBin7Mean")] public string DcnBin7Mean { get; set; }
|
||||
[JsonPropertyName("DcnBin7Min")] public string DcnBin7Min { get; set; }
|
||||
[JsonPropertyName("DcnBin7StdDev")] public string DcnBin7StdDev { get; set; }
|
||||
[JsonPropertyName("DcnBin8Max")] public string DcnBin8Max { get; set; }
|
||||
[JsonPropertyName("DcnBin8Mean")] public string DcnBin8Mean { get; set; }
|
||||
[JsonPropertyName("DcnBin8Min")] public string DcnBin8Min { get; set; }
|
||||
[JsonPropertyName("DcnBin8StdDev")] public string DcnBin8StdDev { get; set; }
|
||||
[JsonPropertyName("DcnHazeAvgMax")] public string DcnHazeAvgMax { get; set; }
|
||||
[JsonPropertyName("DcnHazeAvgMean")] public string DcnHazeAvgMean { get; set; }
|
||||
[JsonPropertyName("DcnHazeAvgMin")] public string DcnHazeAvgMin { get; set; }
|
||||
[JsonPropertyName("DcnHazeAvgStdDev")] public string DcnHazeAvgStdDev { get; set; }
|
||||
[JsonPropertyName("DcnHazeMedianMax")] public string DcnHazeMedianMax { get; set; }
|
||||
[JsonPropertyName("DcnHazeMedianMean")] public string DcnHazeMedianMean { get; set; }
|
||||
[JsonPropertyName("DcnHazeMedianMin")] public string DcnHazeMedianMin { get; set; }
|
||||
[JsonPropertyName("DcnHazeMedianStdDev")] public string DcnHazeMedianStdDev { get; set; }
|
||||
[JsonPropertyName("DcnHazeStdDevMax")] public string DcnHazeStdDevMax { get; set; }
|
||||
[JsonPropertyName("DcnHazeStdDevMean")] public string DcnHazeStdDevMean { get; set; }
|
||||
[JsonPropertyName("DcnHazeStdDevMin")] public string DcnHazeStdDevMin { get; set; }
|
||||
[JsonPropertyName("DcnHazeStdDevStdDev")] public string DcnHazeStdDevStdDev { get; set; }
|
||||
[JsonPropertyName("DcnLpdESMax")] public string DcnLpdESMax { get; set; }
|
||||
[JsonPropertyName("DcnLpdESMean")] public string DcnLpdESMean { get; set; }
|
||||
[JsonPropertyName("DcnLpdESMin")] public string DcnLpdESMin { get; set; }
|
||||
[JsonPropertyName("DcnLpdESStdDev")] public string DcnLpdESStdDev { get; set; }
|
||||
[JsonPropertyName("DcnLpdMax")] public string DcnLpdMax { get; set; }
|
||||
[JsonPropertyName("DcnLpdMean")] public string DcnLpdMean { get; set; }
|
||||
[JsonPropertyName("DcnLpdMin")] public string DcnLpdMin { get; set; }
|
||||
[JsonPropertyName("DcnLpdNMax")] public string DcnLpdNMax { get; set; }
|
||||
[JsonPropertyName("DcnLpdNMean")] public string DcnLpdNMean { get; set; }
|
||||
[JsonPropertyName("DcnLpdNMin")] public string DcnLpdNMin { get; set; }
|
||||
[JsonPropertyName("DcnLpdNStdDev")] public string DcnLpdNStdDev { get; set; }
|
||||
[JsonPropertyName("DcnLpdStdDev")] public string DcnLpdStdDev { get; set; }
|
||||
[JsonPropertyName("DcnMicroScrMax")] public string DcnMicroScrMax { get; set; }
|
||||
[JsonPropertyName("DcnMicroScrMean")] public string DcnMicroScrMean { get; set; }
|
||||
[JsonPropertyName("DcnMicroScrMin")] public string DcnMicroScrMin { get; set; }
|
||||
[JsonPropertyName("DcnMicroScrStdDev")] public string DcnMicroScrStdDev { get; set; }
|
||||
[JsonPropertyName("DcnScrMax")] public string DcnScrMax { get; set; }
|
||||
[JsonPropertyName("DcnScrMean")] public string DcnScrMean { get; set; }
|
||||
[JsonPropertyName("DcnScrMin")] public string DcnScrMin { get; set; }
|
||||
[JsonPropertyName("DcnScrStdDev")] public string DcnScrStdDev { get; set; }
|
||||
[JsonPropertyName("DcnSlipMax")] public string DcnSlipMax { get; set; }
|
||||
[JsonPropertyName("DcnSlipMean")] public string DcnSlipMean { get; set; }
|
||||
[JsonPropertyName("DcnSlipMin")] public string DcnSlipMin { get; set; }
|
||||
[JsonPropertyName("DcnSlipStdDev")] public string DcnSlipStdDev { get; set; }
|
||||
[JsonPropertyName("DnnAllMax")] public string DnnAllMax { get; set; }
|
||||
[JsonPropertyName("DnnAllMean")] public string DnnAllMean { get; set; }
|
||||
[JsonPropertyName("DnnAllMin")] public string DnnAllMin { get; set; }
|
||||
[JsonPropertyName("DnnAllStdDev")] public string DnnAllStdDev { get; set; }
|
||||
[JsonPropertyName("DnnAreaCountMax")] public string DnnAreaCountMax { get; set; }
|
||||
[JsonPropertyName("DnnAreaCountMean")] public string DnnAreaCountMean { get; set; }
|
||||
[JsonPropertyName("DnnAreaCountMin")] public string DnnAreaCountMin { get; set; }
|
||||
[JsonPropertyName("DnnAreaCountStdDev")] public string DnnAreaCountStdDev { get; set; }
|
||||
[JsonPropertyName("DnnAreaMax")] public string DnnAreaMax { get; set; }
|
||||
[JsonPropertyName("DnnAreaMean")] public string DnnAreaMean { get; set; }
|
||||
[JsonPropertyName("DnnAreaMin")] public string DnnAreaMin { get; set; }
|
||||
[JsonPropertyName("DnnAreaStdDev")] public string DnnAreaStdDev { get; set; }
|
||||
[JsonPropertyName("DnnBin1Max")] public string DnnBin1Max { get; set; }
|
||||
[JsonPropertyName("DnnBin1Mean")] public string DnnBin1Mean { get; set; }
|
||||
[JsonPropertyName("DnnBin1Min")] public string DnnBin1Min { get; set; }
|
||||
[JsonPropertyName("DnnBin1StdDev")] public string DnnBin1StdDev { get; set; }
|
||||
[JsonPropertyName("DnnBin2Max")] public string DnnBin2Max { get; set; }
|
||||
[JsonPropertyName("DnnBin2Mean")] public string DnnBin2Mean { get; set; }
|
||||
[JsonPropertyName("DnnBin2Min")] public string DnnBin2Min { get; set; }
|
||||
[JsonPropertyName("DnnBin2StdDev")] public string DnnBin2StdDev { get; set; }
|
||||
[JsonPropertyName("DnnBin3Max")] public string DnnBin3Max { get; set; }
|
||||
[JsonPropertyName("DnnBin3Mean")] public string DnnBin3Mean { get; set; }
|
||||
[JsonPropertyName("DnnBin3Min")] public string DnnBin3Min { get; set; }
|
||||
[JsonPropertyName("DnnBin3StdDev")] public string DnnBin3StdDev { get; set; }
|
||||
[JsonPropertyName("DnnBin4Max")] public string DnnBin4Max { get; set; }
|
||||
[JsonPropertyName("DnnBin4Mean")] public string DnnBin4Mean { get; set; }
|
||||
[JsonPropertyName("DnnBin4Min")] public string DnnBin4Min { get; set; }
|
||||
[JsonPropertyName("DnnBin4StdDev")] public string DnnBin4StdDev { get; set; }
|
||||
[JsonPropertyName("DnnBin5Max")] public string DnnBin5Max { get; set; }
|
||||
[JsonPropertyName("DnnBin5Mean")] public string DnnBin5Mean { get; set; }
|
||||
[JsonPropertyName("DnnBin5Min")] public string DnnBin5Min { get; set; }
|
||||
[JsonPropertyName("DnnBin5StdDev")] public string DnnBin5StdDev { get; set; }
|
||||
[JsonPropertyName("DnnBin6Max")] public string DnnBin6Max { get; set; }
|
||||
[JsonPropertyName("DnnBin6Mean")] public string DnnBin6Mean { get; set; }
|
||||
[JsonPropertyName("DnnBin6Min")] public string DnnBin6Min { get; set; }
|
||||
[JsonPropertyName("DnnBin6StdDev")] public string DnnBin6StdDev { get; set; }
|
||||
[JsonPropertyName("DnnBin7Max")] public string DnnBin7Max { get; set; }
|
||||
[JsonPropertyName("DnnBin7Mean")] public string DnnBin7Mean { get; set; }
|
||||
[JsonPropertyName("DnnBin7Min")] public string DnnBin7Min { get; set; }
|
||||
[JsonPropertyName("DnnBin7StdDev")] public string DnnBin7StdDev { get; set; }
|
||||
[JsonPropertyName("DnnBin8Max")] public string DnnBin8Max { get; set; }
|
||||
[JsonPropertyName("DnnBin8Mean")] public string DnnBin8Mean { get; set; }
|
||||
[JsonPropertyName("DnnBin8Min")] public string DnnBin8Min { get; set; }
|
||||
[JsonPropertyName("DnnBin8StdDev")] public string DnnBin8StdDev { get; set; }
|
||||
[JsonPropertyName("DnnHazeAvgMax")] public string DnnHazeAvgMax { get; set; }
|
||||
[JsonPropertyName("DnnHazeAvgMean")] public string DnnHazeAvgMean { get; set; }
|
||||
[JsonPropertyName("DnnHazeAvgMin")] public string DnnHazeAvgMin { get; set; }
|
||||
[JsonPropertyName("DnnHazeAvgStdDev")] public string DnnHazeAvgStdDev { get; set; }
|
||||
[JsonPropertyName("DnnHazeMedianMax")] public string DnnHazeMedianMax { get; set; }
|
||||
[JsonPropertyName("DnnHazeMedianMean")] public string DnnHazeMedianMean { get; set; }
|
||||
[JsonPropertyName("DnnHazeMedianMin")] public string DnnHazeMedianMin { get; set; }
|
||||
[JsonPropertyName("DnnHazeMedianStdDev")] public string DnnHazeMedianStdDev { get; set; }
|
||||
[JsonPropertyName("DnnHazeStdDevMax")] public string DnnHazeStdDevMax { get; set; }
|
||||
[JsonPropertyName("DnnHazeStdDevMean")] public string DnnHazeStdDevMean { get; set; }
|
||||
[JsonPropertyName("DnnHazeStdDevMin")] public string DnnHazeStdDevMin { get; set; }
|
||||
[JsonPropertyName("DnnHazeStdDevStdDev")] public string DnnHazeStdDevStdDev { get; set; }
|
||||
[JsonPropertyName("DnnLpdESMax")] public string DnnLpdESMax { get; set; }
|
||||
[JsonPropertyName("DnnLpdESMean")] public string DnnLpdESMean { get; set; }
|
||||
[JsonPropertyName("DnnLpdESMin")] public string DnnLpdESMin { get; set; }
|
||||
[JsonPropertyName("DnnLpdESStdDev")] public string DnnLpdESStdDev { get; set; }
|
||||
[JsonPropertyName("DnnLpdMax")] public string DnnLpdMax { get; set; }
|
||||
[JsonPropertyName("DnnLpdMean")] public string DnnLpdMean { get; set; }
|
||||
[JsonPropertyName("DnnLpdMin")] public string DnnLpdMin { get; set; }
|
||||
[JsonPropertyName("DnnLpdNMax")] public string DnnLpdNMax { get; set; }
|
||||
[JsonPropertyName("DnnLpdNMean")] public string DnnLpdNMean { get; set; }
|
||||
[JsonPropertyName("DnnLpdNMin")] public string DnnLpdNMin { get; set; }
|
||||
[JsonPropertyName("DnnLpdNStdDev")] public string DnnLpdNStdDev { get; set; }
|
||||
[JsonPropertyName("DnnLpdStdDev")] public string DnnLpdStdDev { get; set; }
|
||||
[JsonPropertyName("DnnMicroScrMax")] public string DnnMicroScrMax { get; set; }
|
||||
[JsonPropertyName("DnnMicroScrMean")] public string DnnMicroScrMean { get; set; }
|
||||
[JsonPropertyName("DnnMicroScrMin")] public string DnnMicroScrMin { get; set; }
|
||||
[JsonPropertyName("DnnMicroScrStdDev")] public string DnnMicroScrStdDev { get; set; }
|
||||
[JsonPropertyName("DnnScrMax")] public string DnnScrMax { get; set; }
|
||||
[JsonPropertyName("DnnScrMean")] public string DnnScrMean { get; set; }
|
||||
[JsonPropertyName("DnnScrMin")] public string DnnScrMin { get; set; }
|
||||
[JsonPropertyName("DnnScrStdDev")] public string DnnScrStdDev { get; set; }
|
||||
[JsonPropertyName("DnnSlipMax")] public string DnnSlipMax { get; set; }
|
||||
[JsonPropertyName("DnnSlipMean")] public string DnnSlipMean { get; set; }
|
||||
[JsonPropertyName("DnnSlipMin")] public string DnnSlipMin { get; set; }
|
||||
[JsonPropertyName("DnnSlipStdDev")] public string DnnSlipStdDev { get; set; }
|
||||
[JsonPropertyName("DwnAllMax")] public string DwnAllMax { get; set; }
|
||||
[JsonPropertyName("DwnAllMean")] public string DwnAllMean { get; set; }
|
||||
[JsonPropertyName("DwnAllMin")] public string DwnAllMin { get; set; }
|
||||
[JsonPropertyName("DwnAllStdDev")] public string DwnAllStdDev { get; set; }
|
||||
[JsonPropertyName("DwnAreaCountMax")] public string DwnAreaCountMax { get; set; }
|
||||
[JsonPropertyName("DwnAreaCountMean")] public string DwnAreaCountMean { get; set; }
|
||||
[JsonPropertyName("DwnAreaCountMin")] public string DwnAreaCountMin { get; set; }
|
||||
[JsonPropertyName("DwnAreaCountStdDev")] public string DwnAreaCountStdDev { get; set; }
|
||||
[JsonPropertyName("DwnAreaMax")] public string DwnAreaMax { get; set; }
|
||||
[JsonPropertyName("DwnAreaMean")] public string DwnAreaMean { get; set; }
|
||||
[JsonPropertyName("DwnAreaMin")] public string DwnAreaMin { get; set; }
|
||||
[JsonPropertyName("DwnAreaStdDev")] public string DwnAreaStdDev { get; set; }
|
||||
[JsonPropertyName("DwnBin1Max")] public string DwnBin1Max { get; set; }
|
||||
[JsonPropertyName("DwnBin1Mean")] public string DwnBin1Mean { get; set; }
|
||||
[JsonPropertyName("DwnBin1Min")] public string DwnBin1Min { get; set; }
|
||||
[JsonPropertyName("DwnBin1StdDev")] public string DwnBin1StdDev { get; set; }
|
||||
[JsonPropertyName("DwnBin2Max")] public string DwnBin2Max { get; set; }
|
||||
[JsonPropertyName("DwnBin2Mean")] public string DwnBin2Mean { get; set; }
|
||||
[JsonPropertyName("DwnBin2Min")] public string DwnBin2Min { get; set; }
|
||||
[JsonPropertyName("DwnBin2StdDev")] public string DwnBin2StdDev { get; set; }
|
||||
[JsonPropertyName("DwnBin3Max")] public string DwnBin3Max { get; set; }
|
||||
[JsonPropertyName("DwnBin3Mean")] public string DwnBin3Mean { get; set; }
|
||||
[JsonPropertyName("DwnBin3Min")] public string DwnBin3Min { get; set; }
|
||||
[JsonPropertyName("DwnBin3StdDev")] public string DwnBin3StdDev { get; set; }
|
||||
[JsonPropertyName("DwnBin4Max")] public string DwnBin4Max { get; set; }
|
||||
[JsonPropertyName("DwnBin4Mean")] public string DwnBin4Mean { get; set; }
|
||||
[JsonPropertyName("DwnBin4Min")] public string DwnBin4Min { get; set; }
|
||||
[JsonPropertyName("DwnBin4StdDev")] public string DwnBin4StdDev { get; set; }
|
||||
[JsonPropertyName("DwnBin5Max")] public string DwnBin5Max { get; set; }
|
||||
[JsonPropertyName("DwnBin5Mean")] public string DwnBin5Mean { get; set; }
|
||||
[JsonPropertyName("DwnBin5Min")] public string DwnBin5Min { get; set; }
|
||||
[JsonPropertyName("DwnBin5StdDev")] public string DwnBin5StdDev { get; set; }
|
||||
[JsonPropertyName("DwnBin6Max")] public string DwnBin6Max { get; set; }
|
||||
[JsonPropertyName("DwnBin6Mean")] public string DwnBin6Mean { get; set; }
|
||||
[JsonPropertyName("DwnBin6Min")] public string DwnBin6Min { get; set; }
|
||||
[JsonPropertyName("DwnBin6StdDev")] public string DwnBin6StdDev { get; set; }
|
||||
[JsonPropertyName("DwnBin7Max")] public string DwnBin7Max { get; set; }
|
||||
[JsonPropertyName("DwnBin7Mean")] public string DwnBin7Mean { get; set; }
|
||||
[JsonPropertyName("DwnBin7Min")] public string DwnBin7Min { get; set; }
|
||||
[JsonPropertyName("DwnBin7StdDev")] public string DwnBin7StdDev { get; set; }
|
||||
[JsonPropertyName("DwnBin8Max")] public string DwnBin8Max { get; set; }
|
||||
[JsonPropertyName("DwnBin8Mean")] public string DwnBin8Mean { get; set; }
|
||||
[JsonPropertyName("DwnBin8Min")] public string DwnBin8Min { get; set; }
|
||||
[JsonPropertyName("DwnBin8StdDev")] public string DwnBin8StdDev { get; set; }
|
||||
[JsonPropertyName("DwnHazeAvgMax")] public string DwnHazeAvgMax { get; set; }
|
||||
[JsonPropertyName("DwnHazeAvgMean")] public string DwnHazeAvgMean { get; set; }
|
||||
[JsonPropertyName("DwnHazeAvgMin")] public string DwnHazeAvgMin { get; set; }
|
||||
[JsonPropertyName("DwnHazeAvgStdDev")] public string DwnHazeAvgStdDev { get; set; }
|
||||
[JsonPropertyName("DwnHazeMedianMax")] public string DwnHazeMedianMax { get; set; }
|
||||
[JsonPropertyName("DwnHazeMedianMean")] public string DwnHazeMedianMean { get; set; }
|
||||
[JsonPropertyName("DwnHazeMedianMin")] public string DwnHazeMedianMin { get; set; }
|
||||
[JsonPropertyName("DwnHazeMedianStdDev")] public string DwnHazeMedianStdDev { get; set; }
|
||||
[JsonPropertyName("DwnHazeStdDevMax")] public string DwnHazeStdDevMax { get; set; }
|
||||
[JsonPropertyName("DwnHazeStdDevMean")] public string DwnHazeStdDevMean { get; set; }
|
||||
[JsonPropertyName("DwnHazeStdDevMin")] public string DwnHazeStdDevMin { get; set; }
|
||||
[JsonPropertyName("DwnHazeStdDevStdDev")] public string DwnHazeStdDevStdDev { get; set; }
|
||||
[JsonPropertyName("DwnLpdESMax")] public string DwnLpdESMax { get; set; }
|
||||
[JsonPropertyName("DwnLpdESMean")] public string DwnLpdESMean { get; set; }
|
||||
[JsonPropertyName("DwnLpdESMin")] public string DwnLpdESMin { get; set; }
|
||||
[JsonPropertyName("DwnLpdESStdDev")] public string DwnLpdESStdDev { get; set; }
|
||||
[JsonPropertyName("DwnLpdMax")] public string DwnLpdMax { get; set; }
|
||||
[JsonPropertyName("DwnLpdMean")] public string DwnLpdMean { get; set; }
|
||||
[JsonPropertyName("DwnLpdMin")] public string DwnLpdMin { get; set; }
|
||||
[JsonPropertyName("DwnLpdNMax")] public string DwnLpdNMax { get; set; }
|
||||
[JsonPropertyName("DwnLpdNMean")] public string DwnLpdNMean { get; set; }
|
||||
[JsonPropertyName("DwnLpdNMin")] public string DwnLpdNMin { get; set; }
|
||||
[JsonPropertyName("DwnLpdNStdDev")] public string DwnLpdNStdDev { get; set; }
|
||||
[JsonPropertyName("DwnLpdStdDev")] public string DwnLpdStdDev { get; set; }
|
||||
[JsonPropertyName("DwnMicroScrMax")] public string DwnMicroScrMax { get; set; }
|
||||
[JsonPropertyName("DwnMicroScrMean")] public string DwnMicroScrMean { get; set; }
|
||||
[JsonPropertyName("DwnMicroScrMin")] public string DwnMicroScrMin { get; set; }
|
||||
[JsonPropertyName("DwnMicroScrStdDev")] public string DwnMicroScrStdDev { get; set; }
|
||||
[JsonPropertyName("DwnScrMax")] public string DwnScrMax { get; set; }
|
||||
[JsonPropertyName("DwnScrMean")] public string DwnScrMean { get; set; }
|
||||
[JsonPropertyName("DwnScrMin")] public string DwnScrMin { get; set; }
|
||||
[JsonPropertyName("DwnScrStdDev")] public string DwnScrStdDev { get; set; }
|
||||
[JsonPropertyName("DwnSlipMax")] public string DwnSlipMax { get; set; }
|
||||
[JsonPropertyName("DwnSlipMean")] public string DwnSlipMean { get; set; }
|
||||
[JsonPropertyName("DwnSlipMin")] public string DwnSlipMin { get; set; }
|
||||
[JsonPropertyName("DwnSlipStdDev")] public string DwnSlipStdDev { get; set; }
|
||||
[JsonPropertyName("DcnAll")] public string DcnAll { get; set; }
|
||||
[JsonPropertyName("DcnArea")] public string DcnArea { get; set; }
|
||||
[JsonPropertyName("DcnAreaCount")] public string DcnAreaCount { get; set; }
|
||||
[JsonPropertyName("DcnBin1")] public string DcnBin1 { get; set; }
|
||||
[JsonPropertyName("DcnBin2")] public string DcnBin2 { get; set; }
|
||||
[JsonPropertyName("DcnBin3")] public string DcnBin3 { get; set; }
|
||||
[JsonPropertyName("DcnBin4")] public string DcnBin4 { get; set; }
|
||||
[JsonPropertyName("DcnBin5")] public string DcnBin5 { get; set; }
|
||||
[JsonPropertyName("DcnBin6")] public string DcnBin6 { get; set; }
|
||||
[JsonPropertyName("DcnBin7")] public string DcnBin7 { get; set; }
|
||||
[JsonPropertyName("DcnBin8")] public string DcnBin8 { get; set; }
|
||||
[JsonPropertyName("DcnHazeAvg")] public string DcnHazeAvg { get; set; }
|
||||
[JsonPropertyName("DcnHazeMedian")] public string DcnHazeMedian { get; set; }
|
||||
[JsonPropertyName("DcnHazeStdDev")] public string DcnHazeStdDev { get; set; }
|
||||
[JsonPropertyName("DcnLpd")] public string DcnLpd { get; set; }
|
||||
[JsonPropertyName("DcnLpdES")] public string DcnLpdES { get; set; }
|
||||
[JsonPropertyName("DcnLpdN")] public string DcnLpdN { get; set; }
|
||||
[JsonPropertyName("DcnMicroScr")] public string DcnMicroScr { get; set; }
|
||||
[JsonPropertyName("DcnScr")] public string DcnScr { get; set; }
|
||||
[JsonPropertyName("DcnSlip")] public string DcnSlip { get; set; }
|
||||
[JsonPropertyName("DnnAll")] public string DnnAll { get; set; }
|
||||
[JsonPropertyName("DnnArea")] public string DnnArea { get; set; }
|
||||
[JsonPropertyName("DnnAreaCount")] public string DnnAreaCount { get; set; }
|
||||
[JsonPropertyName("DnnBin1")] public string DnnBin1 { get; set; }
|
||||
[JsonPropertyName("DnnBin2")] public string DnnBin2 { get; set; }
|
||||
[JsonPropertyName("DnnBin3")] public string DnnBin3 { get; set; }
|
||||
[JsonPropertyName("DnnBin4")] public string DnnBin4 { get; set; }
|
||||
[JsonPropertyName("DnnBin5")] public string DnnBin5 { get; set; }
|
||||
[JsonPropertyName("DnnBin6")] public string DnnBin6 { get; set; }
|
||||
[JsonPropertyName("DnnBin7")] public string DnnBin7 { get; set; }
|
||||
[JsonPropertyName("DnnBin8")] public string DnnBin8 { get; set; }
|
||||
[JsonPropertyName("DnnHazeAvg")] public string DnnHazeAvg { get; set; }
|
||||
[JsonPropertyName("DnnHazeMedian")] public string DnnHazeMedian { get; set; }
|
||||
[JsonPropertyName("DnnHazeStdDev")] public string DnnHazeStdDev { get; set; }
|
||||
[JsonPropertyName("DnnLpd")] public string DnnLpd { get; set; }
|
||||
[JsonPropertyName("DnnLpdES")] public string DnnLpdES { get; set; }
|
||||
[JsonPropertyName("DnnLpdN")] public string DnnLpdN { get; set; }
|
||||
[JsonPropertyName("DnnMicroScr")] public string DnnMicroScr { get; set; }
|
||||
[JsonPropertyName("DnnScr")] public string DnnScr { get; set; }
|
||||
[JsonPropertyName("DnnSlip")] public string DnnSlip { get; set; }
|
||||
[JsonPropertyName("DwnAll")] public string DwnAll { get; set; }
|
||||
[JsonPropertyName("DwnArea")] public string DwnArea { get; set; }
|
||||
[JsonPropertyName("DwnAreaCount")] public string DwnAreaCount { get; set; }
|
||||
[JsonPropertyName("DwnBin1")] public string DwnBin1 { get; set; }
|
||||
[JsonPropertyName("DwnBin2")] public string DwnBin2 { get; set; }
|
||||
[JsonPropertyName("DwnBin3")] public string DwnBin3 { get; set; }
|
||||
[JsonPropertyName("DwnBin4")] public string DwnBin4 { get; set; }
|
||||
[JsonPropertyName("DwnBin5")] public string DwnBin5 { get; set; }
|
||||
[JsonPropertyName("DwnBin6")] public string DwnBin6 { get; set; }
|
||||
[JsonPropertyName("DwnBin7")] public string DwnBin7 { get; set; }
|
||||
[JsonPropertyName("DwnBin8")] public string DwnBin8 { get; set; }
|
||||
[JsonPropertyName("DwnHazeAvg")] public string DwnHazeAvg { get; set; }
|
||||
[JsonPropertyName("DwnHazeMedian")] public string DwnHazeMedian { get; set; }
|
||||
[JsonPropertyName("DwnHazeStdDev")] public string DwnHazeStdDev { get; set; }
|
||||
[JsonPropertyName("DwnLpd")] public string DwnLpd { get; set; }
|
||||
[JsonPropertyName("DwnLpdES")] public string DwnLpdES { get; set; }
|
||||
[JsonPropertyName("DwnLpdN")] public string DwnLpdN { get; set; }
|
||||
[JsonPropertyName("DwnMicroScr")] public string DwnMicroScr { get; set; }
|
||||
[JsonPropertyName("DwnScr")] public string DwnScr { get; set; }
|
||||
[JsonPropertyName("DwnSlip")] public string DwnSlip { get; set; }
|
||||
|
||||
string IDescription.GetEventDescription() => "File Has been read and parsed";
|
||||
|
||||
@ -782,6 +785,8 @@ public class Description : IDescription, Shared.Properties.IDescription
|
||||
PSN = processData.PSN,
|
||||
Reactor = processData.Reactor,
|
||||
Recipe = processData.Recipe,
|
||||
IndexOf = nameof(IndexOf),
|
||||
AttemptCounter = nameof(AttemptCounter),
|
||||
//
|
||||
Grade = detail.Grade,
|
||||
HeaderUniqueId = detail.HeaderUniqueID,
|
||||
@ -1105,7 +1110,7 @@ public class Description : IDescription, Shared.Properties.IDescription
|
||||
return result;
|
||||
}
|
||||
|
||||
private Description GetDefault(IFileRead fileRead, Logistics logistics)
|
||||
private static Description GetDefault(IFileRead fileRead, Logistics logistics)
|
||||
{
|
||||
Description result = new()
|
||||
{
|
||||
@ -1128,6 +1133,8 @@ public class Description : IDescription, Shared.Properties.IDescription
|
||||
PSN = nameof(PSN),
|
||||
Reactor = nameof(Reactor),
|
||||
Recipe = nameof(Recipe),
|
||||
IndexOf = nameof(IndexOf),
|
||||
AttemptCounter = nameof(AttemptCounter),
|
||||
//
|
||||
Grade = nameof(Grade),
|
||||
HeaderUniqueId = nameof(HeaderUniqueId),
|
||||
@ -1442,6 +1449,27 @@ public class Description : IDescription, Shared.Properties.IDescription
|
||||
return result;
|
||||
}
|
||||
|
||||
internal static JsonElement GetDefaultJsonElement(IFileRead fileRead, Logistics logistics)
|
||||
{
|
||||
JsonElement result;
|
||||
Description description = GetDefault(fileRead, logistics);
|
||||
string json = JsonSerializer.Serialize(description, DescriptionSourceGenerationContext.Default.Description);
|
||||
result = JsonSerializer.Deserialize<JsonElement>(json);
|
||||
return result;
|
||||
}
|
||||
|
||||
internal static string GetDateFormat() => "MM/dd/yyyy hh:mm:ss tt";
|
||||
|
||||
}
|
||||
|
||||
[JsonSourceGenerationOptions(WriteIndented = true, NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
|
||||
[JsonSerializable(typeof(Description))]
|
||||
internal partial class DescriptionSourceGenerationContext : JsonSerializerContext
|
||||
{
|
||||
}
|
||||
|
||||
[JsonSourceGenerationOptions(WriteIndented = true, NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
|
||||
[JsonSerializable(typeof(Description[]))]
|
||||
internal partial class DescriptionArraySourceGenerationContext : JsonSerializerContext
|
||||
{
|
||||
}
|
||||
@ -1,76 +1,90 @@
|
||||
namespace Adaptation.FileHandlers.txt;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.txt;
|
||||
|
||||
public class Detail
|
||||
{
|
||||
|
||||
public string Grade { get; set; }
|
||||
[JsonPropertyName("Grade")] public string Grade { get; set; }
|
||||
public string HeaderUniqueID { get; set; }
|
||||
public string Side { get; set; }
|
||||
public string SrcDest { get; set; }
|
||||
[JsonPropertyName("Side")] public string Side { get; set; }
|
||||
[JsonPropertyName("SrcDest")] public string SrcDest { get; set; }
|
||||
public string UniqueID { get; set; }
|
||||
public string WaferID { get; set; }
|
||||
[JsonPropertyName("WaferID")] public string WaferID { get; set; }
|
||||
public string Data { get; set; }
|
||||
public string DcnAll { get; set; }
|
||||
public string DcnArea { get; set; }
|
||||
public string DcnAreaCount { get; set; }
|
||||
public string DcnBin1 { get; set; }
|
||||
public string DcnBin2 { get; set; }
|
||||
public string DcnBin3 { get; set; }
|
||||
public string DcnBin4 { get; set; }
|
||||
public string DcnBin5 { get; set; }
|
||||
public string DcnBin6 { get; set; }
|
||||
public string DcnBin7 { get; set; }
|
||||
public string DcnBin8 { get; set; }
|
||||
public string DcnHazeAvg { get; set; }
|
||||
public string DcnHazeMedian { get; set; }
|
||||
public string DcnHazeStdDev { get; set; }
|
||||
public string DcnLpd { get; set; }
|
||||
public string DcnLpdES { get; set; }
|
||||
public string DcnLpdN { get; set; }
|
||||
public string DcnMicroScr { get; set; }
|
||||
public string DcnScr { get; set; }
|
||||
public string DcnSlip { get; set; }
|
||||
public string DnnAll { get; set; }
|
||||
public string DnnArea { get; set; }
|
||||
public string DnnAreaCount { get; set; }
|
||||
public string DnnBin1 { get; set; }
|
||||
public string DnnBin2 { get; set; }
|
||||
public string DnnBin3 { get; set; }
|
||||
public string DnnBin4 { get; set; }
|
||||
public string DnnBin5 { get; set; }
|
||||
public string DnnBin6 { get; set; }
|
||||
public string DnnBin7 { get; set; }
|
||||
public string DnnBin8 { get; set; }
|
||||
public string DnnHazeAvg { get; set; }
|
||||
public string DnnHazeMedian { get; set; }
|
||||
public string DnnHazeStdDev { get; set; }
|
||||
public string DnnLpd { get; set; }
|
||||
public string DnnLpdES { get; set; }
|
||||
public string DnnLpdN { get; set; }
|
||||
public string DnnMicroScr { get; set; }
|
||||
public string DnnScr { get; set; }
|
||||
public string DnnSlip { get; set; }
|
||||
public string DwnAll { get; set; }
|
||||
public string DwnArea { get; set; }
|
||||
public string DwnAreaCount { get; set; }
|
||||
public string DwnBin1 { get; set; }
|
||||
public string DwnBin2 { get; set; }
|
||||
public string DwnBin3 { get; set; }
|
||||
public string DwnBin4 { get; set; }
|
||||
public string DwnBin5 { get; set; }
|
||||
public string DwnBin6 { get; set; }
|
||||
public string DwnBin7 { get; set; }
|
||||
public string DwnBin8 { get; set; }
|
||||
public string DwnHazeAvg { get; set; }
|
||||
public string DwnHazeMedian { get; set; }
|
||||
public string DwnHazeStdDev { get; set; }
|
||||
public string DwnLpd { get; set; }
|
||||
public string DwnLpdES { get; set; }
|
||||
public string DwnLpdN { get; set; }
|
||||
public string DwnMicroScr { get; set; }
|
||||
public string DwnScr { get; set; }
|
||||
public string DwnSlip { get; set; }
|
||||
[JsonPropertyName("DcnAll")] public string DcnAll { get; set; }
|
||||
[JsonPropertyName("DcnArea")] public string DcnArea { get; set; }
|
||||
[JsonPropertyName("DcnAreaCount")] public string DcnAreaCount { get; set; }
|
||||
[JsonPropertyName("DcnBin1")] public string DcnBin1 { get; set; }
|
||||
[JsonPropertyName("DcnBin2")] public string DcnBin2 { get; set; }
|
||||
[JsonPropertyName("DcnBin3")] public string DcnBin3 { get; set; }
|
||||
[JsonPropertyName("DcnBin4")] public string DcnBin4 { get; set; }
|
||||
[JsonPropertyName("DcnBin5")] public string DcnBin5 { get; set; }
|
||||
[JsonPropertyName("DcnBin6")] public string DcnBin6 { get; set; }
|
||||
[JsonPropertyName("DcnBin7")] public string DcnBin7 { get; set; }
|
||||
[JsonPropertyName("DcnBin8")] public string DcnBin8 { get; set; }
|
||||
[JsonPropertyName("DcnHazeAvg")] public string DcnHazeAvg { get; set; }
|
||||
[JsonPropertyName("DcnHazeMedian")] public string DcnHazeMedian { get; set; }
|
||||
[JsonPropertyName("DcnHazeStdDev")] public string DcnHazeStdDev { get; set; }
|
||||
[JsonPropertyName("DcnLpd")] public string DcnLpd { get; set; }
|
||||
[JsonPropertyName("DcnLpdES")] public string DcnLpdES { get; set; }
|
||||
[JsonPropertyName("DcnLpdN")] public string DcnLpdN { get; set; }
|
||||
[JsonPropertyName("DcnMicroScr")] public string DcnMicroScr { get; set; }
|
||||
[JsonPropertyName("DcnScr")] public string DcnScr { get; set; }
|
||||
[JsonPropertyName("DcnSlip")] public string DcnSlip { get; set; }
|
||||
[JsonPropertyName("DnnAll")] public string DnnAll { get; set; }
|
||||
[JsonPropertyName("DnnArea")] public string DnnArea { get; set; }
|
||||
[JsonPropertyName("DnnAreaCount")] public string DnnAreaCount { get; set; }
|
||||
[JsonPropertyName("DnnBin1")] public string DnnBin1 { get; set; }
|
||||
[JsonPropertyName("DnnBin2")] public string DnnBin2 { get; set; }
|
||||
[JsonPropertyName("DnnBin3")] public string DnnBin3 { get; set; }
|
||||
[JsonPropertyName("DnnBin4")] public string DnnBin4 { get; set; }
|
||||
[JsonPropertyName("DnnBin5")] public string DnnBin5 { get; set; }
|
||||
[JsonPropertyName("DnnBin6")] public string DnnBin6 { get; set; }
|
||||
[JsonPropertyName("DnnBin7")] public string DnnBin7 { get; set; }
|
||||
[JsonPropertyName("DnnBin8")] public string DnnBin8 { get; set; }
|
||||
[JsonPropertyName("DnnHazeAvg")] public string DnnHazeAvg { get; set; }
|
||||
[JsonPropertyName("DnnHazeMedian")] public string DnnHazeMedian { get; set; }
|
||||
[JsonPropertyName("DnnHazeStdDev")] public string DnnHazeStdDev { get; set; }
|
||||
[JsonPropertyName("DnnLpd")] public string DnnLpd { get; set; }
|
||||
[JsonPropertyName("DnnLpdES")] public string DnnLpdES { get; set; }
|
||||
[JsonPropertyName("DnnLpdN")] public string DnnLpdN { get; set; }
|
||||
[JsonPropertyName("DnnMicroScr")] public string DnnMicroScr { get; set; }
|
||||
[JsonPropertyName("DnnScr")] public string DnnScr { get; set; }
|
||||
[JsonPropertyName("DnnSlip")] public string DnnSlip { get; set; }
|
||||
[JsonPropertyName("DwnAll")] public string DwnAll { get; set; }
|
||||
[JsonPropertyName("DwnArea")] public string DwnArea { get; set; }
|
||||
[JsonPropertyName("DwnAreaCount")] public string DwnAreaCount { get; set; }
|
||||
[JsonPropertyName("DwnBin1")] public string DwnBin1 { get; set; }
|
||||
[JsonPropertyName("DwnBin2")] public string DwnBin2 { get; set; }
|
||||
[JsonPropertyName("DwnBin3")] public string DwnBin3 { get; set; }
|
||||
[JsonPropertyName("DwnBin4")] public string DwnBin4 { get; set; }
|
||||
[JsonPropertyName("DwnBin5")] public string DwnBin5 { get; set; }
|
||||
[JsonPropertyName("DwnBin6")] public string DwnBin6 { get; set; }
|
||||
[JsonPropertyName("DwnBin7")] public string DwnBin7 { get; set; }
|
||||
[JsonPropertyName("DwnBin8")] public string DwnBin8 { get; set; }
|
||||
[JsonPropertyName("DwnHazeAvg")] public string DwnHazeAvg { get; set; }
|
||||
[JsonPropertyName("DwnHazeMedian")] public string DwnHazeMedian { get; set; }
|
||||
[JsonPropertyName("DwnHazeStdDev")] public string DwnHazeStdDev { get; set; }
|
||||
[JsonPropertyName("DwnLpd")] public string DwnLpd { get; set; }
|
||||
[JsonPropertyName("DwnLpdES")] public string DwnLpdES { get; set; }
|
||||
[JsonPropertyName("DwnLpdN")] public string DwnLpdN { get; set; }
|
||||
[JsonPropertyName("DwnMicroScr")] public string DwnMicroScr { get; set; }
|
||||
[JsonPropertyName("DwnScr")] public string DwnScr { get; set; }
|
||||
[JsonPropertyName("DwnSlip")] public string DwnSlip { get; set; }
|
||||
|
||||
public Detail() => Data = "*Data*";
|
||||
|
||||
}
|
||||
|
||||
[JsonSourceGenerationOptions(WriteIndented = true, NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
|
||||
[JsonSerializable(typeof(Detail))]
|
||||
internal partial class DetailSourceGenerationContext : JsonSerializerContext
|
||||
{
|
||||
}
|
||||
|
||||
[JsonSourceGenerationOptions(WriteIndented = true, NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
|
||||
[JsonSerializable(typeof(Detail[]))]
|
||||
internal partial class DetailArraySourceGenerationContext : JsonSerializerContext
|
||||
{
|
||||
}
|
||||
@ -98,38 +98,37 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
|
||||
private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime)
|
||||
{
|
||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> results = new(string.Empty, Array.Empty<Test>(), Array.Empty<JsonElement>(), new List<FileInfo>());
|
||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
||||
Test[] tests = Array.Empty<Test>();
|
||||
List<JsonElement> jsonElements = new();
|
||||
List<FileInfo> fileInfoCollection = new();
|
||||
_TickOffset ??= 0; // new FileInfo(reportFullPath).LastWriteTime.Ticks - dateTime.Ticks;
|
||||
_Logistics = new Logistics(this, _TickOffset.Value, reportFullPath, useSplitForMID: true);
|
||||
fileInfoCollection.Add(_Logistics.FileInfo);
|
||||
SetFileParameterLotIDToLogisticsMID();
|
||||
if (_Logistics.FileInfo.Length < _MinFileLength)
|
||||
results.Item4.Add(_Logistics.FileInfo);
|
||||
results = new(string.Empty, tests, jsonElements.ToArray(), fileInfoCollection);
|
||||
else
|
||||
{
|
||||
Run? run = Run.Get(_Logistics, results.Item4);
|
||||
Run? run = Run.Get(_Logistics, fileInfoCollection);
|
||||
if (run is null)
|
||||
throw new Exception(string.Concat("A) No Data - ", dateTime.Ticks));
|
||||
IProcessData iProcessData = new ProcessData(this, _Logistics, results.Item4);
|
||||
if (iProcessData is not ProcessData processData)
|
||||
results = new(string.Concat("B) No Data - ", dateTime.Ticks), Array.Empty<Test>(), Array.Empty<JsonElement>(), results.Item4);
|
||||
results = new(string.Concat("A) No Data - ", dateTime.Ticks), tests, jsonElements.ToArray(), fileInfoCollection);
|
||||
else
|
||||
{
|
||||
string mid;
|
||||
if (!string.IsNullOrEmpty(processData.Lot) && string.IsNullOrEmpty(processData.Reactor) && string.IsNullOrEmpty(processData.RDS) && string.IsNullOrEmpty(processData.PSN))
|
||||
mid = processData.Lot;
|
||||
else if (!string.IsNullOrEmpty(processData.Employee) && string.IsNullOrEmpty(processData.Reactor) && string.IsNullOrEmpty(processData.RDS) && string.IsNullOrEmpty(processData.PSN))
|
||||
mid = processData.Employee;
|
||||
Descriptor descriptor = ProcessData.GetDescriptor(run.Header.Lot);
|
||||
if (!string.IsNullOrEmpty(descriptor.Lot) && string.IsNullOrEmpty(descriptor.Reactor) && string.IsNullOrEmpty(descriptor.RDS) && string.IsNullOrEmpty(descriptor.PSN))
|
||||
mid = descriptor.Lot;
|
||||
else if (!string.IsNullOrEmpty(descriptor.Employee) && string.IsNullOrEmpty(descriptor.Reactor) && string.IsNullOrEmpty(descriptor.RDS) && string.IsNullOrEmpty(descriptor.PSN))
|
||||
mid = descriptor.Employee;
|
||||
else
|
||||
{
|
||||
mid = string.Concat(processData.Reactor, "-", processData.RDS, "-", processData.PSN);
|
||||
mid = Regex.Replace(mid, @"[\\,\/,\:,\*,\?,\"",\<,\>,\|]", "_").Split('\r')[0].Split('\n')[0];
|
||||
}
|
||||
mid = string.Concat(descriptor.Reactor, "-", descriptor.RDS, "-", descriptor.PSN);
|
||||
mid = Regex.Replace(mid, @"[\\,\/,\:,\*,\?,\"",\<,\>,\|]", "_").Split('\r')[0].Split('\n')[0];
|
||||
SetFileParameterLotID(mid);
|
||||
_Logistics.Update(mid, processData.Reactor);
|
||||
if (iProcessData.Details.Count > 0)
|
||||
results = iProcessData.GetResults(this, _Logistics, results.Item4);
|
||||
else
|
||||
results = new(string.Concat("C) No Data - ", dateTime.Ticks), Array.Empty<Test>(), Array.Empty<JsonElement>(), results.Item4);
|
||||
_Logistics.Update(mid, descriptor.Reactor);
|
||||
JsonElement jsonElement = Description.GetDefaultJsonElement(this, _Logistics);
|
||||
jsonElements.Add(jsonElement);
|
||||
results = new(_Logistics.Logistics1[0], tests, jsonElements.ToArray(), fileInfoCollection);
|
||||
}
|
||||
}
|
||||
return results;
|
||||
|
||||
@ -69,7 +69,10 @@ public class Header
|
||||
Header result;
|
||||
string lot;
|
||||
string session;
|
||||
ScanPast(text, i, constant.LongWaferSummary);
|
||||
if (!text.Contains(constant.ShortWaferSummary))
|
||||
ScanPast(text, i, constant.LongWaferSummary);
|
||||
else
|
||||
ScanPast(text, i, constant.ShortWaferSummary);
|
||||
_ = GetToEOL(text, i);
|
||||
ScanPast(text, i, constant.Session);
|
||||
session = GetToEOL(text, i, true);
|
||||
|
||||
@ -1,13 +1,11 @@
|
||||
using Adaptation.Shared;
|
||||
using Adaptation.Shared.Methods;
|
||||
using log4net;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace Adaptation.FileHandlers.txt;
|
||||
@ -15,12 +13,6 @@ namespace Adaptation.FileHandlers.txt;
|
||||
public class ProcessData : IProcessData
|
||||
{
|
||||
|
||||
private int _I;
|
||||
private string _Data;
|
||||
|
||||
private readonly ILog _Log;
|
||||
private readonly List<object> _Details;
|
||||
|
||||
public string JobID { get; set; }
|
||||
public string MesEntity { get; set; }
|
||||
public DateTime Date { get; set; }
|
||||
@ -273,196 +265,17 @@ public class ProcessData : IProcessData
|
||||
public string Session { get; set; }
|
||||
public string UniqueID { get; set; }
|
||||
|
||||
List<object> Shared.Properties.IProcessData.Details => _Details;
|
||||
List<object> Shared.Properties.IProcessData.Details { get; }
|
||||
|
||||
public ProcessData(IFileRead fileRead, Logistics logistics, List<FileInfo> fileInfoCollection)
|
||||
{
|
||||
_Details = new List<object>();
|
||||
_I = 0;
|
||||
_Data = string.Empty;
|
||||
JobID = logistics.JobID;
|
||||
Date = GetDateTime(logistics);
|
||||
MesEntity = logistics.MesEntity;
|
||||
_Log = LogManager.GetLogger(typeof(ProcessData));
|
||||
Parse(fileRead, logistics, fileInfoCollection);
|
||||
}
|
||||
string IProcessData.GetCurrentReactor(IFileRead fileRead, Logistics logistics, Dictionary<string, string> reactors) =>
|
||||
throw new Exception(string.Concat("See ", nameof(ProcessData)));
|
||||
|
||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> IProcessData.GetResults(IFileRead fileRead, Logistics logistics, List<FileInfo> fileInfoCollection) =>
|
||||
throw new NotImplementedException();
|
||||
|
||||
private static DateTime GetDateTime(Logistics logistics) =>
|
||||
logistics.DateTimeFromSequence;
|
||||
|
||||
string IProcessData.GetCurrentReactor(IFileRead fileRead, Logistics logistics, Dictionary<string, string> reactors) => throw new Exception(string.Concat("See ", nameof(Parse)));
|
||||
|
||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> IProcessData.GetResults(IFileRead fileRead, Logistics logistics, List<FileInfo> fileInfoCollection)
|
||||
{
|
||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
||||
List<Test> tests = new();
|
||||
foreach (object item in _Details)
|
||||
tests.Add(Test.SP1);
|
||||
List<IDescription> descriptions = fileRead.GetDescriptions(fileRead, tests, this);
|
||||
if (tests.Count != descriptions.Count)
|
||||
throw new Exception();
|
||||
for (int i = 0; i < tests.Count; i++)
|
||||
{
|
||||
if (descriptions[i] is not Description description)
|
||||
throw new Exception();
|
||||
if (description.Test != (int)tests[i])
|
||||
throw new Exception();
|
||||
}
|
||||
FileInfo fileInfo = new($"{logistics.ReportFullPath}.descriptions.json");
|
||||
List<Description> fileReadDescriptions = (from l in descriptions select (Description)l).ToList();
|
||||
string json = JsonSerializer.Serialize(fileReadDescriptions, fileReadDescriptions.GetType());
|
||||
File.WriteAllText(fileInfo.FullName, 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);
|
||||
return results;
|
||||
}
|
||||
|
||||
private void ScanPast(string text)
|
||||
{
|
||||
int num = _Data.IndexOf(text, _I);
|
||||
if (num > -1)
|
||||
_I = num + text.Length;
|
||||
else
|
||||
_I = _Data.Length;
|
||||
}
|
||||
|
||||
private string GetBefore(string text)
|
||||
{
|
||||
int num = _Data.IndexOf(text, _I);
|
||||
if (num > -1)
|
||||
{
|
||||
string str = _Data.Substring(_I, num - _I);
|
||||
_I = num + text.Length;
|
||||
return str.Trim();
|
||||
}
|
||||
string str1 = _Data.Substring(_I);
|
||||
_I = _Data.Length;
|
||||
return str1.Trim();
|
||||
}
|
||||
|
||||
private string GetBefore(string text, bool trim)
|
||||
{
|
||||
if (trim)
|
||||
return GetBefore(text);
|
||||
int num = _Data.IndexOf(text, _I);
|
||||
if (num > -1)
|
||||
{
|
||||
string str = _Data.Substring(_I, num - _I);
|
||||
_I = num + text.Length;
|
||||
return str;
|
||||
}
|
||||
string str1 = _Data.Substring(_I);
|
||||
_I = _Data.Length;
|
||||
return str1;
|
||||
}
|
||||
|
||||
private static bool IsNullOrWhiteSpace(string text)
|
||||
{
|
||||
for (int index = 0; index < text.Length; ++index)
|
||||
{
|
||||
if (!char.IsWhiteSpace(text[index]))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool IsBlankLine()
|
||||
{
|
||||
int num = _Data.IndexOf("\n", _I);
|
||||
return IsNullOrWhiteSpace(num > -1 ? _Data.Substring(_I, num - _I) : _Data.Substring(_I));
|
||||
}
|
||||
|
||||
private string GetToEOL() => GetBefore("\n");
|
||||
|
||||
private string GetToEOL(bool trim)
|
||||
{
|
||||
if (trim)
|
||||
return GetToEOL();
|
||||
return GetBefore("\n", false);
|
||||
}
|
||||
|
||||
private string GetToText(string text) => _Data.Substring(_I, _Data.IndexOf(text, _I) - _I).Trim();
|
||||
|
||||
private string GetToken()
|
||||
{
|
||||
while (_I < _Data.Length && IsNullOrWhiteSpace(_Data.Substring(_I, 1)))
|
||||
++_I;
|
||||
int j = _I;
|
||||
while (j < _Data.Length && !IsNullOrWhiteSpace(_Data.Substring(j, 1)))
|
||||
++j;
|
||||
string str = _Data.Substring(_I, j - _I);
|
||||
_I = j;
|
||||
return str.Trim();
|
||||
}
|
||||
|
||||
private string PeekNextLine()
|
||||
{
|
||||
int j = _I;
|
||||
string toEol = GetToEOL();
|
||||
_I = j;
|
||||
return toEol;
|
||||
}
|
||||
|
||||
private void GetWaferSummaryInfo(List<WaferSummaryInfo> waferSummaryInfos, string whichInfo)
|
||||
{
|
||||
ScanPast(whichInfo);
|
||||
_ = GetToEOL();
|
||||
_ = GetToEOL();
|
||||
_ = GetToEOL();
|
||||
_ = GetToEOL();
|
||||
string[] segments;
|
||||
WaferSummaryInfo waferSummaryInfo;
|
||||
const string grade = "F Grade";
|
||||
const string reject = "F Reject";
|
||||
const string overLoad = "F OverLoad";
|
||||
for (string line = PeekNextLine(); line[0] != '-'; line = PeekNextLine())
|
||||
{
|
||||
line = GetToEOL();
|
||||
waferSummaryInfo = new WaferSummaryInfo();
|
||||
if (line.StartsWith(grade))
|
||||
line = line.Replace(grade, string.Concat("F -1", grade.Substring(4)));
|
||||
else if (line.StartsWith(reject))
|
||||
line = line.Replace(reject, string.Concat("F -1", reject.Substring(4)));
|
||||
else if (line.StartsWith(overLoad))
|
||||
line = line.Replace(overLoad, string.Concat("F -1", overLoad.Substring(4)));
|
||||
segments = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
waferSummaryInfo.Side = segments[0];
|
||||
waferSummaryInfo.WaferID = segments[1];
|
||||
waferSummaryInfo.Grade = segments[2];
|
||||
waferSummaryInfo.SrcDest = segments[3];
|
||||
if (segments.Length > 4)
|
||||
{
|
||||
waferSummaryInfo.Lpd = segments[5];
|
||||
waferSummaryInfo.LpdN = segments[6];
|
||||
waferSummaryInfo.LpdES = segments[7];
|
||||
waferSummaryInfo.MicroScr = segments[8];
|
||||
waferSummaryInfo.Scr = segments[9];
|
||||
waferSummaryInfo.Slip = segments[10];
|
||||
waferSummaryInfo.AreaNum = segments[11];
|
||||
waferSummaryInfo.Area = segments[12];
|
||||
waferSummaryInfo.HazeAvg = segments[13];
|
||||
waferSummaryInfo.HazeMedian = segments[14];
|
||||
waferSummaryInfo.HazeStdDev = segments[15];
|
||||
waferSummaryInfo.Bin1 = segments[16];
|
||||
waferSummaryInfo.Bin2 = segments[17];
|
||||
waferSummaryInfo.Bin3 = segments[18];
|
||||
waferSummaryInfo.Bin4 = segments[19];
|
||||
waferSummaryInfo.Bin5 = segments[20];
|
||||
waferSummaryInfo.Bin6 = segments[21];
|
||||
waferSummaryInfo.Bin7 = segments[22];
|
||||
waferSummaryInfo.Bin8 = segments[23];
|
||||
}
|
||||
if (waferSummaryInfo.WaferID == "-1")
|
||||
{
|
||||
segments = waferSummaryInfo.SrcDest.Split('-')[0].Split('/');
|
||||
waferSummaryInfo.WaferID = segments[segments.Length - 1];
|
||||
}
|
||||
waferSummaryInfos.Add(waferSummaryInfo);
|
||||
}
|
||||
}
|
||||
|
||||
private static (string, string) GetReactorAndRDS(string defaultReactor, string defaultRDS, string text, string formattedText, string[] segments)
|
||||
{
|
||||
string rds;
|
||||
@ -589,483 +402,17 @@ public class ProcessData : IProcessData
|
||||
return result;
|
||||
}
|
||||
|
||||
private void Set(ILogistics logistics, string summaryReportText)
|
||||
{
|
||||
_I = 0;
|
||||
string lot;
|
||||
string rds;
|
||||
string psn;
|
||||
string recipe;
|
||||
string reactor;
|
||||
string session;
|
||||
string employee;
|
||||
Descriptor descriptor;
|
||||
_Data = summaryReportText;
|
||||
_Log.Debug("HeaderFile() - Beginning");
|
||||
if (string.IsNullOrEmpty(summaryReportText))
|
||||
{
|
||||
recipe = string.Empty;
|
||||
session = string.Empty;
|
||||
descriptor = GetDescriptor(summaryReportText);
|
||||
lot = descriptor.Lot;
|
||||
psn = descriptor.PSN;
|
||||
rds = descriptor.RDS;
|
||||
reactor = descriptor.Reactor;
|
||||
employee = descriptor.Employee;
|
||||
}
|
||||
else
|
||||
{
|
||||
ScanPast("Long Wafer Summary");
|
||||
_ = GetToEOL();
|
||||
ScanPast("Session:");
|
||||
recipe = GetToEOL(true);
|
||||
session = recipe;
|
||||
ScanPast("Lot ID:");
|
||||
lot = GetToEOL(true);
|
||||
descriptor = GetDescriptor(lot);
|
||||
lot = descriptor.Lot;
|
||||
psn = descriptor.PSN;
|
||||
rds = descriptor.RDS;
|
||||
reactor = descriptor.Reactor;
|
||||
employee = descriptor.Employee;
|
||||
}
|
||||
Lot = lot;
|
||||
PSN = psn;
|
||||
RDS = rds;
|
||||
Recipe = recipe;
|
||||
Reactor = reactor;
|
||||
Session = session;
|
||||
Employee = employee;
|
||||
UniqueID = string.Format("{0}_{1}_{2}", logistics.JobID, lot, Path.GetFileNameWithoutExtension(logistics.ReportFullPath));
|
||||
}
|
||||
|
||||
private void ParseHeader(ILogistics logistics, List<WaferSummaryInfo> dcnTotals, List<WaferSummaryInfo> dwnTotals, List<WaferSummaryInfo> dnnTotals)
|
||||
{
|
||||
_I = 0;
|
||||
_Data = string.Empty;
|
||||
string summaryReportText = File.ReadAllText(logistics.ReportFullPath);
|
||||
Set(logistics, summaryReportText);
|
||||
if (!string.IsNullOrEmpty(summaryReportText))
|
||||
{
|
||||
_Log.Debug("HeaderFile() - Debug B");
|
||||
_I = 0;
|
||||
string[] segments;
|
||||
_Data = summaryReportText;
|
||||
GetWaferSummaryInfo(dcnTotals, "DCN Totals");
|
||||
ScanPast("Min");
|
||||
segments = GetToEOL().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
DcnAllMin = segments[0];
|
||||
DcnLpdMin = segments[1];
|
||||
DcnLpdNMin = segments[2];
|
||||
DcnLpdESMin = segments[3];
|
||||
DcnMicroScrMin = segments[4];
|
||||
DcnScrMin = segments[5];
|
||||
DcnSlipMin = segments[6];
|
||||
DcnAreaCountMin = segments[7];
|
||||
DcnAreaMin = segments[8];
|
||||
DcnHazeAvgMin = segments[9];
|
||||
DcnHazeMedianMin = segments[10];
|
||||
DcnHazeStdDevMin = segments[11];
|
||||
DcnBin1Min = segments[12];
|
||||
DcnBin2Min = segments[13];
|
||||
DcnBin3Min = segments[14];
|
||||
DcnBin4Min = segments[15];
|
||||
DcnBin5Min = segments[16];
|
||||
DcnBin6Min = segments[17];
|
||||
DcnBin7Min = segments[18];
|
||||
DcnBin8Min = segments[19];
|
||||
ScanPast("Max");
|
||||
segments = GetToEOL().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
DcnAllMax = segments[0];
|
||||
DcnLpdMax = segments[1];
|
||||
DcnLpdNMax = segments[2];
|
||||
DcnLpdESMax = segments[3];
|
||||
DcnMicroScrMax = segments[4];
|
||||
DcnScrMax = segments[5];
|
||||
DcnSlipMax = segments[6];
|
||||
DcnAreaCountMax = segments[7];
|
||||
DcnAreaMax = segments[8];
|
||||
DcnHazeAvgMax = segments[9];
|
||||
DcnHazeMedianMax = segments[10];
|
||||
DcnHazeStdDevMax = segments[11];
|
||||
DcnBin1Max = segments[12];
|
||||
DcnBin2Max = segments[13];
|
||||
DcnBin3Max = segments[14];
|
||||
DcnBin4Max = segments[15];
|
||||
DcnBin5Max = segments[16];
|
||||
DcnBin6Max = segments[17];
|
||||
DcnBin7Max = segments[18];
|
||||
DcnBin8Max = segments[19];
|
||||
ScanPast("Mean");
|
||||
segments = GetToEOL().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
DcnAllMean = segments[0];
|
||||
DcnLpdMean = segments[1];
|
||||
DcnLpdNMean = segments[2];
|
||||
DcnLpdESMean = segments[3];
|
||||
DcnMicroScrMean = segments[4];
|
||||
DcnScrMean = segments[5];
|
||||
DcnSlipMean = segments[6];
|
||||
DcnAreaCountMean = segments[7];
|
||||
DcnAreaMean = segments[8];
|
||||
DcnHazeAvgMean = segments[9];
|
||||
DcnHazeMedianMean = segments[10];
|
||||
DcnHazeStdDevMean = segments[11];
|
||||
DcnBin1Mean = segments[12];
|
||||
DcnBin2Mean = segments[13];
|
||||
DcnBin3Mean = segments[14];
|
||||
DcnBin4Mean = segments[15];
|
||||
DcnBin5Mean = segments[16];
|
||||
DcnBin6Mean = segments[17];
|
||||
DcnBin7Mean = segments[18];
|
||||
DcnBin8Mean = segments[19];
|
||||
ScanPast("Std. Dev.");
|
||||
segments = GetToEOL().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
DcnAllStdDev = segments[0];
|
||||
DcnLpdStdDev = segments[1];
|
||||
DcnLpdNStdDev = segments[2];
|
||||
DcnLpdESStdDev = segments[3];
|
||||
DcnMicroScrStdDev = segments[4];
|
||||
DcnScrStdDev = segments[5];
|
||||
DcnSlipStdDev = segments[6];
|
||||
DcnAreaCountStdDev = segments[7];
|
||||
DcnAreaStdDev = segments[8];
|
||||
DcnHazeAvgStdDev = segments[9];
|
||||
DcnHazeMedianStdDev = segments[10];
|
||||
DcnHazeStdDevStdDev = segments[11];
|
||||
DcnBin1StdDev = segments[12];
|
||||
DcnBin2StdDev = segments[13];
|
||||
DcnBin3StdDev = segments[14];
|
||||
DcnBin4StdDev = segments[15];
|
||||
DcnBin5StdDev = segments[16];
|
||||
DcnBin6StdDev = segments[17];
|
||||
DcnBin7StdDev = segments[18];
|
||||
DcnBin8StdDev = segments[19];
|
||||
_I = 0;
|
||||
_Data = summaryReportText;
|
||||
_Log.Debug("HeaderFile() - Debug C");
|
||||
if (!_Data.Contains("DWN Totals"))
|
||||
{
|
||||
for (int i = 0; i < dcnTotals.Count; i++)
|
||||
dwnTotals.Add(new WaferSummaryInfo());
|
||||
}
|
||||
else
|
||||
{
|
||||
GetWaferSummaryInfo(dwnTotals, "DWN Totals");
|
||||
ScanPast("Min");
|
||||
segments = GetToEOL().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
DwnAllMin = segments[0];
|
||||
DwnLpdMin = segments[1];
|
||||
DwnLpdNMin = segments[2];
|
||||
DwnLpdESMin = segments[3];
|
||||
DwnMicroScrMin = segments[4];
|
||||
DwnScrMin = segments[5];
|
||||
DwnSlipMin = segments[6];
|
||||
DwnAreaCountMin = segments[7];
|
||||
DwnAreaMin = segments[8];
|
||||
DwnHazeAvgMin = segments[9];
|
||||
DwnHazeMedianMin = segments[10];
|
||||
DwnHazeStdDevMin = segments[11];
|
||||
DwnBin1Min = segments[12];
|
||||
DwnBin2Min = segments[13];
|
||||
DwnBin3Min = segments[14];
|
||||
DwnBin4Min = segments[15];
|
||||
DwnBin5Min = segments[16];
|
||||
DwnBin6Min = segments[17];
|
||||
DwnBin7Min = segments[18];
|
||||
DwnBin8Min = segments[19];
|
||||
ScanPast("Max");
|
||||
segments = GetToEOL().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
DwnAllMax = segments[0];
|
||||
DwnLpdMax = segments[1];
|
||||
DwnLpdNMax = segments[2];
|
||||
DwnLpdESMax = segments[3];
|
||||
DwnMicroScrMax = segments[4];
|
||||
DwnScrMax = segments[5];
|
||||
DwnSlipMax = segments[6];
|
||||
DwnAreaCountMax = segments[7];
|
||||
DwnAreaMax = segments[8];
|
||||
DwnHazeAvgMax = segments[9];
|
||||
DwnHazeMedianMax = segments[10];
|
||||
DwnHazeStdDevMax = segments[11];
|
||||
DwnBin1Max = segments[12];
|
||||
DwnBin2Max = segments[13];
|
||||
DwnBin3Max = segments[14];
|
||||
DwnBin4Max = segments[15];
|
||||
DwnBin5Max = segments[16];
|
||||
DwnBin6Max = segments[17];
|
||||
DwnBin7Max = segments[18];
|
||||
DwnBin8Max = segments[19];
|
||||
ScanPast("Mean");
|
||||
segments = GetToEOL().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
DwnAllMean = segments[0];
|
||||
DwnLpdMean = segments[1];
|
||||
DwnLpdNMean = segments[2];
|
||||
DwnLpdESMean = segments[3];
|
||||
DwnMicroScrMean = segments[4];
|
||||
DwnScrMean = segments[5];
|
||||
DwnSlipMean = segments[6];
|
||||
DwnAreaCountMean = segments[7];
|
||||
DwnAreaMean = segments[8];
|
||||
DwnHazeAvgMean = segments[9];
|
||||
DwnHazeMedianMean = segments[10];
|
||||
DwnHazeStdDevMean = segments[11];
|
||||
DwnBin1Mean = segments[12];
|
||||
DwnBin2Mean = segments[13];
|
||||
DwnBin3Mean = segments[14];
|
||||
DwnBin4Mean = segments[15];
|
||||
DwnBin5Mean = segments[16];
|
||||
DwnBin6Mean = segments[17];
|
||||
DwnBin7Mean = segments[18];
|
||||
DwnBin8Mean = segments[19];
|
||||
ScanPast("Std. Dev.");
|
||||
segments = GetToEOL().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
DwnAllStdDev = segments[0];
|
||||
DwnLpdStdDev = segments[1];
|
||||
DwnLpdNStdDev = segments[2];
|
||||
DwnLpdESStdDev = segments[3];
|
||||
DwnMicroScrStdDev = segments[4];
|
||||
DwnScrStdDev = segments[5];
|
||||
DwnSlipStdDev = segments[6];
|
||||
DwnAreaCountStdDev = segments[7];
|
||||
DwnAreaStdDev = segments[8];
|
||||
DwnHazeAvgStdDev = segments[9];
|
||||
DwnHazeMedianStdDev = segments[10];
|
||||
DwnHazeStdDevStdDev = segments[11];
|
||||
DwnBin1StdDev = segments[12];
|
||||
DwnBin2StdDev = segments[13];
|
||||
DwnBin3StdDev = segments[14];
|
||||
DwnBin4StdDev = segments[15];
|
||||
DwnBin5StdDev = segments[16];
|
||||
DwnBin6StdDev = segments[17];
|
||||
DwnBin7StdDev = segments[18];
|
||||
DwnBin8StdDev = segments[19];
|
||||
}
|
||||
_I = 0;
|
||||
_Data = summaryReportText;
|
||||
_Log.Debug("HeaderFile() - Debug D");
|
||||
if (!_Data.Contains("DNN Totals"))
|
||||
{
|
||||
for (int i = 0; i < dcnTotals.Count; i++)
|
||||
dnnTotals.Add(new WaferSummaryInfo());
|
||||
}
|
||||
else
|
||||
{
|
||||
GetWaferSummaryInfo(dnnTotals, "DNN Totals");
|
||||
ScanPast("Min");
|
||||
segments = GetToEOL().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
DnnAllMin = segments[0];
|
||||
DnnLpdMin = segments[1];
|
||||
DnnLpdNMin = segments[2];
|
||||
DnnLpdESMin = segments[3];
|
||||
DnnMicroScrMin = segments[4];
|
||||
DnnScrMin = segments[5];
|
||||
DnnSlipMin = segments[6];
|
||||
DnnAreaCountMin = segments[7];
|
||||
DnnAreaMin = segments[8];
|
||||
DnnHazeAvgMin = segments[9];
|
||||
DnnHazeMedianMin = segments[10];
|
||||
DnnHazeStdDevMin = segments[11];
|
||||
DnnBin1Min = segments[12];
|
||||
DnnBin2Min = segments[13];
|
||||
DnnBin3Min = segments[14];
|
||||
DnnBin4Min = segments[15];
|
||||
DnnBin5Min = segments[16];
|
||||
DnnBin6Min = segments[17];
|
||||
DnnBin7Min = segments[18];
|
||||
DnnBin8Min = segments[19];
|
||||
ScanPast("Max");
|
||||
segments = GetToEOL().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
DnnAllMax = segments[0];
|
||||
DnnLpdMax = segments[1];
|
||||
DnnLpdNMax = segments[2];
|
||||
DnnLpdESMax = segments[3];
|
||||
DnnMicroScrMax = segments[4];
|
||||
DnnScrMax = segments[5];
|
||||
DnnSlipMax = segments[6];
|
||||
DnnAreaCountMax = segments[7];
|
||||
DnnAreaMax = segments[8];
|
||||
DnnHazeAvgMax = segments[9];
|
||||
DnnHazeMedianMax = segments[10];
|
||||
DnnHazeStdDevMax = segments[11];
|
||||
DnnBin1Max = segments[12];
|
||||
DnnBin2Max = segments[13];
|
||||
DnnBin3Max = segments[14];
|
||||
DnnBin4Max = segments[15];
|
||||
DnnBin5Max = segments[16];
|
||||
DnnBin6Max = segments[17];
|
||||
DnnBin7Max = segments[18];
|
||||
DnnBin8Max = segments[19];
|
||||
ScanPast("Mean");
|
||||
segments = GetToEOL().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
DnnAllMean = segments[0];
|
||||
DnnLpdMean = segments[1];
|
||||
DnnLpdNMean = segments[2];
|
||||
DnnLpdESMean = segments[3];
|
||||
DnnMicroScrMean = segments[4];
|
||||
DnnScrMean = segments[5];
|
||||
DnnSlipMean = segments[6];
|
||||
DnnAreaCountMean = segments[7];
|
||||
DnnAreaMean = segments[8];
|
||||
DnnHazeAvgMean = segments[9];
|
||||
DnnHazeMedianMean = segments[10];
|
||||
DnnHazeStdDevMean = segments[11];
|
||||
DnnBin1Mean = segments[12];
|
||||
DnnBin2Mean = segments[13];
|
||||
DnnBin3Mean = segments[14];
|
||||
DnnBin4Mean = segments[15];
|
||||
DnnBin5Mean = segments[16];
|
||||
DnnBin6Mean = segments[17];
|
||||
DnnBin7Mean = segments[18];
|
||||
DnnBin8Mean = segments[19];
|
||||
ScanPast("Std. Dev.");
|
||||
segments = GetToEOL().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
DnnAllStdDev = segments[0];
|
||||
DnnLpdStdDev = segments[1];
|
||||
DnnLpdNStdDev = segments[2];
|
||||
DnnLpdESStdDev = segments[3];
|
||||
DnnMicroScrStdDev = segments[4];
|
||||
DnnScrStdDev = segments[5];
|
||||
DnnSlipStdDev = segments[6];
|
||||
DnnAreaCountStdDev = segments[7];
|
||||
DnnAreaStdDev = segments[8];
|
||||
DnnHazeAvgStdDev = segments[9];
|
||||
DnnHazeMedianStdDev = segments[10];
|
||||
DnnHazeStdDevStdDev = segments[11];
|
||||
DnnBin1StdDev = segments[12];
|
||||
DnnBin2StdDev = segments[13];
|
||||
DnnBin3StdDev = segments[14];
|
||||
DnnBin4StdDev = segments[15];
|
||||
DnnBin5StdDev = segments[16];
|
||||
DnnBin6StdDev = segments[17];
|
||||
DnnBin7StdDev = segments[18];
|
||||
DnnBin8StdDev = segments[19];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Parse the wafer summary data
|
||||
/// </summary>
|
||||
/// <param name="headerFile">wafer data</param>
|
||||
/// <param name="i">wafer index</param>
|
||||
/// <returns></returns>
|
||||
private Detail ParseWaferSummary(int i, List<WaferSummaryInfo> dcnTotals, List<WaferSummaryInfo> dwnTotals, List<WaferSummaryInfo> dnnTotals)
|
||||
{
|
||||
Detail result = new()
|
||||
{
|
||||
// NOTE: get the UniqueID during DataCalculation in order to retrieve the SPCToolID from the cell component Tag field.
|
||||
// id
|
||||
|
||||
// General Wafer Info
|
||||
Side = dcnTotals[i].Side,
|
||||
WaferID = dcnTotals[i].WaferID,
|
||||
Grade = dcnTotals[i].Grade,
|
||||
SrcDest = dcnTotals[i].SrcDest,
|
||||
|
||||
// Dcn Info
|
||||
DcnAll = dcnTotals[i].All ?? string.Empty,
|
||||
DcnLpd = dcnTotals[i].Lpd ?? string.Empty,
|
||||
DcnLpdN = dcnTotals[i].LpdN ?? string.Empty,
|
||||
DcnLpdES = dcnTotals[i].LpdES ?? string.Empty,
|
||||
DcnMicroScr = dcnTotals[i].MicroScr ?? string.Empty,
|
||||
DcnScr = dcnTotals[i].Scr ?? string.Empty,
|
||||
DcnSlip = dcnTotals[i].Slip ?? string.Empty,
|
||||
DcnAreaCount = dcnTotals[i].AreaNum ?? string.Empty,
|
||||
DcnArea = dcnTotals[i].Area ?? string.Empty,
|
||||
DcnHazeAvg = dcnTotals[i].HazeAvg ?? string.Empty,
|
||||
DcnHazeMedian = dcnTotals[i].HazeMedian ?? string.Empty,
|
||||
DcnHazeStdDev = dcnTotals[i].HazeStdDev ?? string.Empty,
|
||||
DcnBin1 = dcnTotals[i].Bin1 ?? string.Empty,
|
||||
DcnBin2 = dcnTotals[i].Bin2 ?? string.Empty,
|
||||
DcnBin3 = dcnTotals[i].Bin3 ?? string.Empty,
|
||||
DcnBin4 = dcnTotals[i].Bin4 ?? string.Empty,
|
||||
DcnBin5 = dcnTotals[i].Bin5 ?? string.Empty,
|
||||
DcnBin6 = dcnTotals[i].Bin6 ?? string.Empty,
|
||||
DcnBin7 = dcnTotals[i].Bin7 ?? string.Empty,
|
||||
DcnBin8 = dcnTotals[i].Bin8 ?? string.Empty,
|
||||
|
||||
// Dwn Info
|
||||
DwnAll = dwnTotals[i].All ?? string.Empty,
|
||||
DwnLpd = dwnTotals[i].Lpd ?? string.Empty,
|
||||
DwnLpdN = dwnTotals[i].LpdN ?? string.Empty,
|
||||
DwnLpdES = dwnTotals[i].LpdES ?? string.Empty,
|
||||
DwnMicroScr = dwnTotals[i].MicroScr ?? string.Empty,
|
||||
DwnScr = dwnTotals[i].Scr ?? string.Empty,
|
||||
DwnSlip = dwnTotals[i].Slip ?? string.Empty,
|
||||
DwnAreaCount = dwnTotals[i].AreaNum ?? string.Empty,
|
||||
DwnArea = dwnTotals[i].Area ?? string.Empty,
|
||||
DwnHazeAvg = dwnTotals[i].HazeAvg ?? string.Empty,
|
||||
DwnHazeMedian = dwnTotals[i].HazeMedian ?? string.Empty,
|
||||
DwnHazeStdDev = dwnTotals[i].HazeStdDev ?? string.Empty,
|
||||
DwnBin1 = dwnTotals[i].Bin1 ?? string.Empty,
|
||||
DwnBin2 = dwnTotals[i].Bin2 ?? string.Empty,
|
||||
DwnBin3 = dwnTotals[i].Bin3 ?? string.Empty,
|
||||
DwnBin4 = dwnTotals[i].Bin4 ?? string.Empty,
|
||||
DwnBin5 = dwnTotals[i].Bin5 ?? string.Empty,
|
||||
DwnBin6 = dwnTotals[i].Bin6 ?? string.Empty,
|
||||
DwnBin7 = dwnTotals[i].Bin7 ?? string.Empty,
|
||||
DwnBin8 = dwnTotals[i].Bin8 ?? string.Empty,
|
||||
|
||||
// Dnn Info
|
||||
DnnAll = dnnTotals[i].All ?? string.Empty,
|
||||
DnnLpd = dnnTotals[i].Lpd ?? string.Empty,
|
||||
DnnLpdN = dnnTotals[i].LpdN ?? string.Empty,
|
||||
DnnLpdES = dnnTotals[i].LpdES ?? string.Empty,
|
||||
DnnMicroScr = dnnTotals[i].MicroScr ?? string.Empty,
|
||||
DnnScr = dnnTotals[i].Scr ?? string.Empty,
|
||||
DnnSlip = dnnTotals[i].Slip ?? string.Empty,
|
||||
DnnAreaCount = dnnTotals[i].AreaNum ?? string.Empty,
|
||||
DnnArea = dnnTotals[i].Area ?? string.Empty,
|
||||
DnnHazeAvg = dnnTotals[i].HazeAvg ?? string.Empty,
|
||||
DnnHazeMedian = dnnTotals[i].HazeMedian ?? string.Empty,
|
||||
DnnHazeStdDev = dnnTotals[i].HazeStdDev ?? string.Empty,
|
||||
DnnBin1 = dnnTotals[i].Bin1 ?? string.Empty,
|
||||
DnnBin2 = dnnTotals[i].Bin2 ?? string.Empty,
|
||||
DnnBin3 = dnnTotals[i].Bin3 ?? string.Empty,
|
||||
DnnBin4 = dnnTotals[i].Bin4 ?? string.Empty,
|
||||
DnnBin5 = dnnTotals[i].Bin5 ?? string.Empty,
|
||||
DnnBin6 = dnnTotals[i].Bin6 ?? string.Empty,
|
||||
DnnBin7 = dnnTotals[i].Bin7 ?? string.Empty,
|
||||
DnnBin8 = dnnTotals[i].Bin8 ?? string.Empty,
|
||||
HeaderUniqueID = UniqueID
|
||||
};
|
||||
result.UniqueID = string.Concat(result.HeaderUniqueID, "_", result.WaferID.PadLeft(2, '0'));
|
||||
return result;
|
||||
}
|
||||
|
||||
private void Parse(IFileRead fileRead, Logistics logistics, List<FileInfo> fileInfoCollection)
|
||||
{
|
||||
if (fileRead is null)
|
||||
throw new ArgumentNullException(nameof(fileRead));
|
||||
Detail dataFile;
|
||||
foreach (string file in Directory.GetFiles(Path.GetDirectoryName(logistics.ReportFullPath), "WaferMap*.prn", SearchOption.TopDirectoryOnly))
|
||||
fileInfoCollection.Add(new FileInfo(file));
|
||||
List<WaferSummaryInfo> dcnTotals = new();
|
||||
List<WaferSummaryInfo> dwnTotals = new();
|
||||
List<WaferSummaryInfo> dnnTotals = new();
|
||||
ParseHeader(logistics, dcnTotals, dwnTotals, dnnTotals);
|
||||
_Log.Debug($"Number of wafers: {dcnTotals.Count}");
|
||||
for (int i = 0; i < dcnTotals.Count; i++)
|
||||
{
|
||||
_Log.Debug($"****ParseData - Parsing wafer summary: {i}");
|
||||
dataFile = ParseWaferSummary(i, dcnTotals, dwnTotals, dnnTotals);
|
||||
_Details.Add(dataFile);
|
||||
}
|
||||
fileInfoCollection.Add(logistics.FileInfo);
|
||||
}
|
||||
|
||||
#nullable enable
|
||||
|
||||
internal static List<Description> GetDescriptions(JsonElement[] jsonElements)
|
||||
{
|
||||
List<Description> results = new();
|
||||
Description? description;
|
||||
JsonSerializerOptions jsonSerializerOptions = new() { NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString };
|
||||
foreach (JsonElement jsonElement in jsonElements)
|
||||
{
|
||||
if (jsonElement.ValueKind != JsonValueKind.Object)
|
||||
throw new Exception();
|
||||
description = JsonSerializer.Deserialize<Description>(jsonElement.ToString(), jsonSerializerOptions);
|
||||
description = JsonSerializer.Deserialize(jsonElement.ToString(), DescriptionSourceGenerationContext.Default.Description);
|
||||
if (description is null)
|
||||
continue;
|
||||
results.Add(description);
|
||||
|
||||
@ -90,6 +90,18 @@ internal class Run
|
||||
File.WriteAllText($"{logistics.ReportFullPath}.csv", string.Join(Environment.NewLine, lines));
|
||||
}
|
||||
|
||||
private static void AddPrintFiles(Logistics logistics, List<FileInfo> fileInfoCollection)
|
||||
{
|
||||
string sourceDirectory = Path.GetDirectoryName(logistics.ReportFullPath) ?? throw new Exception();
|
||||
string[] files;
|
||||
files = Directory.GetFiles(sourceDirectory, "*.xps", SearchOption.TopDirectoryOnly);
|
||||
foreach (string file in files)
|
||||
fileInfoCollection.Add(new FileInfo(file));
|
||||
files = Directory.GetFiles(sourceDirectory, "WaferMap*.prn", SearchOption.TopDirectoryOnly);
|
||||
foreach (string file in files)
|
||||
fileInfoCollection.Add(new FileInfo(file));
|
||||
}
|
||||
|
||||
internal static Run? Get(Logistics logistics, List<FileInfo> fileInfoCollection)
|
||||
{
|
||||
Run? result;
|
||||
@ -111,13 +123,13 @@ internal class Run
|
||||
else
|
||||
{
|
||||
result = new(header, summary, wafers);
|
||||
AddPrintFiles(logistics, fileInfoCollection);
|
||||
WriteJson(logistics, fileInfoCollection, result);
|
||||
WriteCommaSeparatedValues(logistics, result);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
[JsonSourceGenerationOptions(WriteIndented = true)]
|
||||
|
||||
@ -765,27 +765,43 @@ public class Summary
|
||||
waferSummaryInfo.WaferID = segments[1];
|
||||
waferSummaryInfo.Grade = segments[2];
|
||||
waferSummaryInfo.SrcDest = segments[3];
|
||||
if (segments.Length > 4)
|
||||
if (segments.Length > 8)
|
||||
{
|
||||
waferSummaryInfo.Lpd = segments[5];
|
||||
waferSummaryInfo.LpdN = segments[6];
|
||||
waferSummaryInfo.LpdES = segments[7];
|
||||
waferSummaryInfo.MicroScr = segments[8];
|
||||
waferSummaryInfo.Scr = segments[9];
|
||||
waferSummaryInfo.Slip = segments[10];
|
||||
waferSummaryInfo.AreaNum = segments[11];
|
||||
waferSummaryInfo.Area = segments[12];
|
||||
waferSummaryInfo.HazeAvg = segments[13];
|
||||
waferSummaryInfo.HazeMedian = segments[14];
|
||||
waferSummaryInfo.HazeStdDev = segments[15];
|
||||
waferSummaryInfo.Bin1 = segments[16];
|
||||
waferSummaryInfo.Bin2 = segments[17];
|
||||
waferSummaryInfo.Bin3 = segments[18];
|
||||
waferSummaryInfo.Bin4 = segments[19];
|
||||
waferSummaryInfo.Bin5 = segments[20];
|
||||
waferSummaryInfo.Bin6 = segments[21];
|
||||
waferSummaryInfo.Bin7 = segments[22];
|
||||
waferSummaryInfo.Bin8 = segments[23];
|
||||
if (text.Contains(constant.ShortWaferSummary))
|
||||
{
|
||||
waferSummaryInfo.Lpd = segments[5];
|
||||
waferSummaryInfo.LpdN = segments[6];
|
||||
waferSummaryInfo.LpdES = segments[7];
|
||||
waferSummaryInfo.MicroScr = segments[8];
|
||||
waferSummaryInfo.Scr = segments[9];
|
||||
waferSummaryInfo.Slip = segments[10];
|
||||
waferSummaryInfo.AreaNum = segments[11];
|
||||
waferSummaryInfo.Area = segments[12];
|
||||
}
|
||||
else if (text.Contains(constant.LongWaferSummary))
|
||||
{
|
||||
waferSummaryInfo.Lpd = segments[5];
|
||||
waferSummaryInfo.LpdN = segments[6];
|
||||
waferSummaryInfo.LpdES = segments[7];
|
||||
waferSummaryInfo.MicroScr = segments[8];
|
||||
waferSummaryInfo.Scr = segments[9];
|
||||
waferSummaryInfo.Slip = segments[10];
|
||||
waferSummaryInfo.AreaNum = segments[11];
|
||||
waferSummaryInfo.Area = segments[12];
|
||||
waferSummaryInfo.HazeAvg = segments[13];
|
||||
waferSummaryInfo.HazeMedian = segments[14];
|
||||
waferSummaryInfo.HazeStdDev = segments[15];
|
||||
waferSummaryInfo.Bin1 = segments[16];
|
||||
waferSummaryInfo.Bin2 = segments[17];
|
||||
waferSummaryInfo.Bin3 = segments[18];
|
||||
waferSummaryInfo.Bin4 = segments[19];
|
||||
waferSummaryInfo.Bin5 = segments[20];
|
||||
waferSummaryInfo.Bin6 = segments[21];
|
||||
waferSummaryInfo.Bin7 = segments[22];
|
||||
waferSummaryInfo.Bin8 = segments[23];
|
||||
}
|
||||
else
|
||||
throw new Exception(constant.FormatExceptionMessage);
|
||||
}
|
||||
if (waferSummaryInfo.WaferID == "-1")
|
||||
{
|
||||
@ -858,246 +874,495 @@ public class Summary
|
||||
Header.ScanPast(text, i, constant.StdDev);
|
||||
dnnTotalsStandardDevSegments = Header.GetToEOL(text, i).Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
}
|
||||
result = new(dcnAllMin: dncTotalsMinSegments[0],
|
||||
dcnLpdMin: dncTotalsMinSegments[1],
|
||||
dcnLpdNMin: dncTotalsMinSegments[2],
|
||||
dcnLpdESMin: dncTotalsMinSegments[3],
|
||||
dcnMicroScrMin: dncTotalsMinSegments[4],
|
||||
dcnScrMin: dncTotalsMinSegments[5],
|
||||
dcnSlipMin: dncTotalsMinSegments[6],
|
||||
dcnAreaCountMin: dncTotalsMinSegments[7],
|
||||
dcnAreaMin: dncTotalsMinSegments[8],
|
||||
dcnHazeAvgMin: dncTotalsMinSegments[9],
|
||||
dcnHazeMedianMin: dncTotalsMinSegments[10],
|
||||
dcnHazeStdDevMin: dncTotalsMinSegments[11],
|
||||
dcnBin1Min: dncTotalsMinSegments[12],
|
||||
dcnBin2Min: dncTotalsMinSegments[13],
|
||||
dcnBin3Min: dncTotalsMinSegments[14],
|
||||
dcnBin4Min: dncTotalsMinSegments[15],
|
||||
dcnBin5Min: dncTotalsMinSegments[16],
|
||||
dcnBin6Min: dncTotalsMinSegments[17],
|
||||
dcnBin7Min: dncTotalsMinSegments[18],
|
||||
dcnBin8Min: dncTotalsMinSegments[19],
|
||||
dcnAllMax: dncTotalsMaxSegments[0],
|
||||
dcnLpdMax: dncTotalsMaxSegments[1],
|
||||
dcnLpdNMax: dncTotalsMaxSegments[2],
|
||||
dcnLpdESMax: dncTotalsMaxSegments[3],
|
||||
dcnMicroScrMax: dncTotalsMaxSegments[4],
|
||||
dcnScrMax: dncTotalsMaxSegments[5],
|
||||
dcnSlipMax: dncTotalsMaxSegments[6],
|
||||
dcnAreaCountMax: dncTotalsMaxSegments[7],
|
||||
dcnAreaMax: dncTotalsMaxSegments[8],
|
||||
dcnHazeAvgMax: dncTotalsMaxSegments[9],
|
||||
dcnHazeMedianMax: dncTotalsMaxSegments[10],
|
||||
dcnHazeStdDevMax: dncTotalsMaxSegments[11],
|
||||
dcnBin1Max: dncTotalsMaxSegments[12],
|
||||
dcnBin2Max: dncTotalsMaxSegments[13],
|
||||
dcnBin3Max: dncTotalsMaxSegments[14],
|
||||
dcnBin4Max: dncTotalsMaxSegments[15],
|
||||
dcnBin5Max: dncTotalsMaxSegments[16],
|
||||
dcnBin6Max: dncTotalsMaxSegments[17],
|
||||
dcnBin7Max: dncTotalsMaxSegments[18],
|
||||
dcnBin8Max: dncTotalsMaxSegments[19],
|
||||
dcnAllMean: dncTotalsMeanSegments[0],
|
||||
dcnLpdMean: dncTotalsMeanSegments[1],
|
||||
dcnLpdNMean: dncTotalsMeanSegments[2],
|
||||
dcnLpdESMean: dncTotalsMeanSegments[3],
|
||||
dcnMicroScrMean: dncTotalsMeanSegments[4],
|
||||
dcnScrMean: dncTotalsMeanSegments[5],
|
||||
dcnSlipMean: dncTotalsMeanSegments[6],
|
||||
dcnAreaCountMean: dncTotalsMeanSegments[7],
|
||||
dcnAreaMean: dncTotalsMeanSegments[8],
|
||||
dcnHazeAvgMean: dncTotalsMeanSegments[9],
|
||||
dcnHazeMedianMean: dncTotalsMeanSegments[10],
|
||||
dcnHazeStdDevMean: dncTotalsMeanSegments[11],
|
||||
dcnBin1Mean: dncTotalsMeanSegments[12],
|
||||
dcnBin2Mean: dncTotalsMeanSegments[13],
|
||||
dcnBin3Mean: dncTotalsMeanSegments[14],
|
||||
dcnBin4Mean: dncTotalsMeanSegments[15],
|
||||
dcnBin5Mean: dncTotalsMeanSegments[16],
|
||||
dcnBin6Mean: dncTotalsMeanSegments[17],
|
||||
dcnBin7Mean: dncTotalsMeanSegments[18],
|
||||
dcnBin8Mean: dncTotalsMeanSegments[19],
|
||||
dcnAllStdDev: dncTotalsStandardDevSegments[0],
|
||||
dcnLpdStdDev: dncTotalsStandardDevSegments[1],
|
||||
dcnLpdNStdDev: dncTotalsStandardDevSegments[2],
|
||||
dcnLpdESStdDev: dncTotalsStandardDevSegments[3],
|
||||
dcnMicroScrStdDev: dncTotalsStandardDevSegments[4],
|
||||
dcnScrStdDev: dncTotalsStandardDevSegments[5],
|
||||
dcnSlipStdDev: dncTotalsStandardDevSegments[6],
|
||||
dcnAreaCountStdDev: dncTotalsStandardDevSegments[7],
|
||||
dcnAreaStdDev: dncTotalsStandardDevSegments[8],
|
||||
dcnHazeAvgStdDev: dncTotalsStandardDevSegments[9],
|
||||
dcnHazeMedianStdDev: dncTotalsStandardDevSegments[10],
|
||||
dcnHazeStdDevStdDev: dncTotalsStandardDevSegments[11],
|
||||
dcnBin1StdDev: dncTotalsStandardDevSegments[12],
|
||||
dcnBin2StdDev: dncTotalsStandardDevSegments[13],
|
||||
dcnBin3StdDev: dncTotalsStandardDevSegments[14],
|
||||
dcnBin4StdDev: dncTotalsStandardDevSegments[15],
|
||||
dcnBin5StdDev: dncTotalsStandardDevSegments[16],
|
||||
dcnBin6StdDev: dncTotalsStandardDevSegments[17],
|
||||
dcnBin7StdDev: dncTotalsStandardDevSegments[18],
|
||||
dcnBin8StdDev: dncTotalsStandardDevSegments[19],
|
||||
dwnAllMin: dwnTotalsMinSegments[0],
|
||||
dwnLpdMin: dwnTotalsMinSegments[1],
|
||||
dwnLpdNMin: dwnTotalsMinSegments[2],
|
||||
dwnLpdESMin: dwnTotalsMinSegments[3],
|
||||
dwnMicroScrMin: dwnTotalsMinSegments[4],
|
||||
dwnScrMin: dwnTotalsMinSegments[5],
|
||||
dwnSlipMin: dwnTotalsMinSegments[6],
|
||||
dwnAreaCountMin: dwnTotalsMinSegments[7],
|
||||
dwnAreaMin: dwnTotalsMinSegments[8],
|
||||
dwnHazeAvgMin: dwnTotalsMinSegments[9],
|
||||
dwnHazeMedianMin: dwnTotalsMinSegments[10],
|
||||
dwnHazeStdDevMin: dwnTotalsMinSegments[11],
|
||||
dwnBin1Min: dwnTotalsMinSegments[12],
|
||||
dwnBin2Min: dwnTotalsMinSegments[13],
|
||||
dwnBin3Min: dwnTotalsMinSegments[14],
|
||||
dwnBin4Min: dwnTotalsMinSegments[15],
|
||||
dwnBin5Min: dwnTotalsMinSegments[16],
|
||||
dwnBin6Min: dwnTotalsMinSegments[17],
|
||||
dwnBin7Min: dwnTotalsMinSegments[18],
|
||||
dwnBin8Min: dwnTotalsMinSegments[19],
|
||||
dwnAllMax: dwnTotalsMaxSegments[0],
|
||||
dwnLpdMax: dwnTotalsMaxSegments[1],
|
||||
dwnLpdNMax: dwnTotalsMaxSegments[2],
|
||||
dwnLpdESMax: dwnTotalsMaxSegments[3],
|
||||
dwnMicroScrMax: dwnTotalsMaxSegments[4],
|
||||
dwnScrMax: dwnTotalsMaxSegments[5],
|
||||
dwnSlipMax: dwnTotalsMaxSegments[6],
|
||||
dwnAreaCountMax: dwnTotalsMaxSegments[7],
|
||||
dwnAreaMax: dwnTotalsMaxSegments[8],
|
||||
dwnHazeAvgMax: dwnTotalsMaxSegments[9],
|
||||
dwnHazeMedianMax: dwnTotalsMaxSegments[10],
|
||||
dwnHazeStdDevMax: dwnTotalsMaxSegments[11],
|
||||
dwnBin1Max: dwnTotalsMaxSegments[12],
|
||||
dwnBin2Max: dwnTotalsMaxSegments[13],
|
||||
dwnBin3Max: dwnTotalsMaxSegments[14],
|
||||
dwnBin4Max: dwnTotalsMaxSegments[15],
|
||||
dwnBin5Max: dwnTotalsMaxSegments[16],
|
||||
dwnBin6Max: dwnTotalsMaxSegments[17],
|
||||
dwnBin7Max: dwnTotalsMaxSegments[18],
|
||||
dwnBin8Max: dwnTotalsMaxSegments[19],
|
||||
dwnAllMean: dwnTotalsMeanSegments[0],
|
||||
dwnLpdMean: dwnTotalsMeanSegments[1],
|
||||
dwnLpdNMean: dwnTotalsMeanSegments[2],
|
||||
dwnLpdESMean: dwnTotalsMeanSegments[3],
|
||||
dwnMicroScrMean: dwnTotalsMeanSegments[4],
|
||||
dwnScrMean: dwnTotalsMeanSegments[5],
|
||||
dwnSlipMean: dwnTotalsMeanSegments[6],
|
||||
dwnAreaCountMean: dwnTotalsMeanSegments[7],
|
||||
dwnAreaMean: dwnTotalsMeanSegments[8],
|
||||
dwnHazeAvgMean: dwnTotalsMeanSegments[9],
|
||||
dwnHazeMedianMean: dwnTotalsMeanSegments[10],
|
||||
dwnHazeStdDevMean: dwnTotalsMeanSegments[11],
|
||||
dwnBin1Mean: dwnTotalsMeanSegments[12],
|
||||
dwnBin2Mean: dwnTotalsMeanSegments[13],
|
||||
dwnBin3Mean: dwnTotalsMeanSegments[14],
|
||||
dwnBin4Mean: dwnTotalsMeanSegments[15],
|
||||
dwnBin5Mean: dwnTotalsMeanSegments[16],
|
||||
dwnBin6Mean: dwnTotalsMeanSegments[17],
|
||||
dwnBin7Mean: dwnTotalsMeanSegments[18],
|
||||
dwnBin8Mean: dwnTotalsMeanSegments[19],
|
||||
dwnAllStdDev: dwnTotalsStandardDevSegments[0],
|
||||
dwnLpdStdDev: dwnTotalsStandardDevSegments[1],
|
||||
dwnLpdNStdDev: dwnTotalsStandardDevSegments[2],
|
||||
dwnLpdESStdDev: dwnTotalsStandardDevSegments[3],
|
||||
dwnMicroScrStdDev: dwnTotalsStandardDevSegments[4],
|
||||
dwnScrStdDev: dwnTotalsStandardDevSegments[5],
|
||||
dwnSlipStdDev: dwnTotalsStandardDevSegments[6],
|
||||
dwnAreaCountStdDev: dwnTotalsStandardDevSegments[7],
|
||||
dwnAreaStdDev: dwnTotalsStandardDevSegments[8],
|
||||
dwnHazeAvgStdDev: dwnTotalsStandardDevSegments[9],
|
||||
dwnHazeMedianStdDev: dwnTotalsStandardDevSegments[10],
|
||||
dwnHazeStdDevStdDev: dwnTotalsStandardDevSegments[11],
|
||||
dwnBin1StdDev: dwnTotalsStandardDevSegments[12],
|
||||
dwnBin2StdDev: dwnTotalsStandardDevSegments[13],
|
||||
dwnBin3StdDev: dwnTotalsStandardDevSegments[14],
|
||||
dwnBin4StdDev: dwnTotalsStandardDevSegments[15],
|
||||
dwnBin5StdDev: dwnTotalsStandardDevSegments[16],
|
||||
dwnBin6StdDev: dwnTotalsStandardDevSegments[17],
|
||||
dwnBin7StdDev: dwnTotalsStandardDevSegments[18],
|
||||
dwnBin8StdDev: dwnTotalsStandardDevSegments[19],
|
||||
dnnAllMin: dnnTotalsMinSegments[0],
|
||||
dnnLpdMin: dnnTotalsMinSegments[1],
|
||||
dnnLpdNMin: dnnTotalsMinSegments[2],
|
||||
dnnLpdESMin: dnnTotalsMinSegments[3],
|
||||
dnnMicroScrMin: dnnTotalsMinSegments[4],
|
||||
dnnScrMin: dnnTotalsMinSegments[5],
|
||||
dnnSlipMin: dnnTotalsMinSegments[6],
|
||||
dnnAreaCountMin: dnnTotalsMinSegments[7],
|
||||
dnnAreaMin: dnnTotalsMinSegments[8],
|
||||
dnnHazeAvgMin: dnnTotalsMinSegments[9],
|
||||
dnnHazeMedianMin: dnnTotalsMinSegments[10],
|
||||
dnnHazeStdDevMin: dnnTotalsMinSegments[11],
|
||||
dnnBin1Min: dnnTotalsMinSegments[12],
|
||||
dnnBin2Min: dnnTotalsMinSegments[13],
|
||||
dnnBin3Min: dnnTotalsMinSegments[14],
|
||||
dnnBin4Min: dnnTotalsMinSegments[15],
|
||||
dnnBin5Min: dnnTotalsMinSegments[16],
|
||||
dnnBin6Min: dnnTotalsMinSegments[17],
|
||||
dnnBin7Min: dnnTotalsMinSegments[18],
|
||||
dnnBin8Min: dnnTotalsMinSegments[19],
|
||||
dnnAllMax: dnnTotalsMaxSegments[0],
|
||||
dnnLpdMax: dnnTotalsMaxSegments[1],
|
||||
dnnLpdNMax: dnnTotalsMaxSegments[2],
|
||||
dnnLpdESMax: dnnTotalsMaxSegments[3],
|
||||
dnnMicroScrMax: dnnTotalsMaxSegments[4],
|
||||
dnnScrMax: dnnTotalsMaxSegments[5],
|
||||
dnnSlipMax: dnnTotalsMaxSegments[6],
|
||||
dnnAreaCountMax: dnnTotalsMaxSegments[7],
|
||||
dnnAreaMax: dnnTotalsMaxSegments[8],
|
||||
dnnHazeAvgMax: dnnTotalsMaxSegments[9],
|
||||
dnnHazeMedianMax: dnnTotalsMaxSegments[10],
|
||||
dnnHazeStdDevMax: dnnTotalsMaxSegments[11],
|
||||
dnnBin1Max: dnnTotalsMaxSegments[12],
|
||||
dnnBin2Max: dnnTotalsMaxSegments[13],
|
||||
dnnBin3Max: dnnTotalsMaxSegments[14],
|
||||
dnnBin4Max: dnnTotalsMaxSegments[15],
|
||||
dnnBin5Max: dnnTotalsMaxSegments[16],
|
||||
dnnBin6Max: dnnTotalsMaxSegments[17],
|
||||
dnnBin7Max: dnnTotalsMaxSegments[18],
|
||||
dnnBin8Max: dnnTotalsMaxSegments[19],
|
||||
dnnAllMean: dnnTotalsMeanSegments[0],
|
||||
dnnLpdMean: dnnTotalsMeanSegments[1],
|
||||
dnnLpdNMean: dnnTotalsMeanSegments[2],
|
||||
dnnLpdESMean: dnnTotalsMeanSegments[3],
|
||||
dnnMicroScrMean: dnnTotalsMeanSegments[4],
|
||||
dnnScrMean: dnnTotalsMeanSegments[5],
|
||||
dnnSlipMean: dnnTotalsMeanSegments[6],
|
||||
dnnAreaCountMean: dnnTotalsMeanSegments[7],
|
||||
dnnAreaMean: dnnTotalsMeanSegments[8],
|
||||
dnnHazeAvgMean: dnnTotalsMeanSegments[9],
|
||||
dnnHazeMedianMean: dnnTotalsMeanSegments[10],
|
||||
dnnHazeStdDevMean: dnnTotalsMeanSegments[11],
|
||||
dnnBin1Mean: dnnTotalsMeanSegments[12],
|
||||
dnnBin2Mean: dnnTotalsMeanSegments[13],
|
||||
dnnBin3Mean: dnnTotalsMeanSegments[14],
|
||||
dnnBin4Mean: dnnTotalsMeanSegments[15],
|
||||
dnnBin5Mean: dnnTotalsMeanSegments[16],
|
||||
dnnBin6Mean: dnnTotalsMeanSegments[17],
|
||||
dnnBin7Mean: dnnTotalsMeanSegments[18],
|
||||
dnnBin8Mean: dnnTotalsMeanSegments[19],
|
||||
dnnAllStdDev: dnnTotalsStandardDevSegments[0],
|
||||
dnnLpdStdDev: dnnTotalsStandardDevSegments[1],
|
||||
dnnLpdNStdDev: dnnTotalsStandardDevSegments[2],
|
||||
dnnLpdESStdDev: dnnTotalsStandardDevSegments[3],
|
||||
dnnMicroScrStdDev: dnnTotalsStandardDevSegments[4],
|
||||
dnnScrStdDev: dnnTotalsStandardDevSegments[5],
|
||||
dnnSlipStdDev: dnnTotalsStandardDevSegments[6],
|
||||
dnnAreaCountStdDev: dnnTotalsStandardDevSegments[7],
|
||||
dnnAreaStdDev: dnnTotalsStandardDevSegments[8],
|
||||
dnnHazeAvgStdDev: dnnTotalsStandardDevSegments[9],
|
||||
dnnHazeMedianStdDev: dnnTotalsStandardDevSegments[10],
|
||||
dnnHazeStdDevStdDev: dnnTotalsStandardDevSegments[11],
|
||||
dnnBin1StdDev: dnnTotalsStandardDevSegments[12],
|
||||
dnnBin2StdDev: dnnTotalsStandardDevSegments[13],
|
||||
dnnBin3StdDev: dnnTotalsStandardDevSegments[14],
|
||||
dnnBin4StdDev: dnnTotalsStandardDevSegments[15],
|
||||
dnnBin5StdDev: dnnTotalsStandardDevSegments[16],
|
||||
dnnBin6StdDev: dnnTotalsStandardDevSegments[17],
|
||||
dnnBin7StdDev: dnnTotalsStandardDevSegments[18],
|
||||
dnnBin8StdDev: dnnTotalsStandardDevSegments[19]);
|
||||
if (text.Contains(constant.ShortWaferSummary))
|
||||
{
|
||||
result = new(dcnAllMin: dncTotalsMinSegments[0],
|
||||
dcnLpdMin: dncTotalsMinSegments[1],
|
||||
dcnLpdNMin: dncTotalsMinSegments[2],
|
||||
dcnLpdESMin: dncTotalsMinSegments[3],
|
||||
dcnMicroScrMin: dncTotalsMinSegments[4],
|
||||
dcnScrMin: dncTotalsMinSegments[5],
|
||||
dcnSlipMin: dncTotalsMinSegments[6],
|
||||
dcnAreaCountMin: dncTotalsMinSegments[7],
|
||||
dcnAreaMin: dncTotalsMinSegments[8],
|
||||
dcnHazeAvgMin: string.Empty,
|
||||
dcnHazeMedianMin: string.Empty,
|
||||
dcnHazeStdDevMin: string.Empty,
|
||||
dcnBin1Min: string.Empty,
|
||||
dcnBin2Min: string.Empty,
|
||||
dcnBin3Min: string.Empty,
|
||||
dcnBin4Min: string.Empty,
|
||||
dcnBin5Min: string.Empty,
|
||||
dcnBin6Min: string.Empty,
|
||||
dcnBin7Min: string.Empty,
|
||||
dcnBin8Min: string.Empty,
|
||||
dcnAllMax: dncTotalsMaxSegments[0],
|
||||
dcnLpdMax: dncTotalsMaxSegments[1],
|
||||
dcnLpdNMax: dncTotalsMaxSegments[2],
|
||||
dcnLpdESMax: dncTotalsMaxSegments[3],
|
||||
dcnMicroScrMax: dncTotalsMaxSegments[4],
|
||||
dcnScrMax: dncTotalsMaxSegments[5],
|
||||
dcnSlipMax: dncTotalsMaxSegments[6],
|
||||
dcnAreaCountMax: dncTotalsMaxSegments[7],
|
||||
dcnAreaMax: dncTotalsMaxSegments[8],
|
||||
dcnHazeAvgMax: string.Empty,
|
||||
dcnHazeMedianMax: string.Empty,
|
||||
dcnHazeStdDevMax: string.Empty,
|
||||
dcnBin1Max: string.Empty,
|
||||
dcnBin2Max: string.Empty,
|
||||
dcnBin3Max: string.Empty,
|
||||
dcnBin4Max: string.Empty,
|
||||
dcnBin5Max: string.Empty,
|
||||
dcnBin6Max: string.Empty,
|
||||
dcnBin7Max: string.Empty,
|
||||
dcnBin8Max: string.Empty,
|
||||
dcnAllMean: dncTotalsMeanSegments[0],
|
||||
dcnLpdMean: dncTotalsMeanSegments[1],
|
||||
dcnLpdNMean: dncTotalsMeanSegments[2],
|
||||
dcnLpdESMean: dncTotalsMeanSegments[3],
|
||||
dcnMicroScrMean: dncTotalsMeanSegments[4],
|
||||
dcnScrMean: dncTotalsMeanSegments[5],
|
||||
dcnSlipMean: dncTotalsMeanSegments[6],
|
||||
dcnAreaCountMean: dncTotalsMeanSegments[7],
|
||||
dcnAreaMean: dncTotalsMeanSegments[8],
|
||||
dcnHazeAvgMean: string.Empty,
|
||||
dcnHazeMedianMean: string.Empty,
|
||||
dcnHazeStdDevMean: string.Empty,
|
||||
dcnBin1Mean: string.Empty,
|
||||
dcnBin2Mean: string.Empty,
|
||||
dcnBin3Mean: string.Empty,
|
||||
dcnBin4Mean: string.Empty,
|
||||
dcnBin5Mean: string.Empty,
|
||||
dcnBin6Mean: string.Empty,
|
||||
dcnBin7Mean: string.Empty,
|
||||
dcnBin8Mean: string.Empty,
|
||||
dcnAllStdDev: dncTotalsStandardDevSegments[0],
|
||||
dcnLpdStdDev: dncTotalsStandardDevSegments[1],
|
||||
dcnLpdNStdDev: dncTotalsStandardDevSegments[2],
|
||||
dcnLpdESStdDev: dncTotalsStandardDevSegments[3],
|
||||
dcnMicroScrStdDev: dncTotalsStandardDevSegments[4],
|
||||
dcnScrStdDev: dncTotalsStandardDevSegments[5],
|
||||
dcnSlipStdDev: dncTotalsStandardDevSegments[6],
|
||||
dcnAreaCountStdDev: dncTotalsStandardDevSegments[7],
|
||||
dcnAreaStdDev: dncTotalsStandardDevSegments[8],
|
||||
dcnHazeAvgStdDev: string.Empty,
|
||||
dcnHazeMedianStdDev: string.Empty,
|
||||
dcnHazeStdDevStdDev: string.Empty,
|
||||
dcnBin1StdDev: string.Empty,
|
||||
dcnBin2StdDev: string.Empty,
|
||||
dcnBin3StdDev: string.Empty,
|
||||
dcnBin4StdDev: string.Empty,
|
||||
dcnBin5StdDev: string.Empty,
|
||||
dcnBin6StdDev: string.Empty,
|
||||
dcnBin7StdDev: string.Empty,
|
||||
dcnBin8StdDev: string.Empty,
|
||||
dwnAllMin: dwnTotalsMinSegments[0],
|
||||
dwnLpdMin: dwnTotalsMinSegments[1],
|
||||
dwnLpdNMin: dwnTotalsMinSegments[2],
|
||||
dwnLpdESMin: dwnTotalsMinSegments[3],
|
||||
dwnMicroScrMin: dwnTotalsMinSegments[4],
|
||||
dwnScrMin: dwnTotalsMinSegments[5],
|
||||
dwnSlipMin: dwnTotalsMinSegments[6],
|
||||
dwnAreaCountMin: dwnTotalsMinSegments[7],
|
||||
dwnAreaMin: dwnTotalsMinSegments[8],
|
||||
dwnHazeAvgMin: string.Empty,
|
||||
dwnHazeMedianMin: string.Empty,
|
||||
dwnHazeStdDevMin: string.Empty,
|
||||
dwnBin1Min: string.Empty,
|
||||
dwnBin2Min: string.Empty,
|
||||
dwnBin3Min: string.Empty,
|
||||
dwnBin4Min: string.Empty,
|
||||
dwnBin5Min: string.Empty,
|
||||
dwnBin6Min: string.Empty,
|
||||
dwnBin7Min: string.Empty,
|
||||
dwnBin8Min: string.Empty,
|
||||
dwnAllMax: dwnTotalsMaxSegments[0],
|
||||
dwnLpdMax: dwnTotalsMaxSegments[1],
|
||||
dwnLpdNMax: dwnTotalsMaxSegments[2],
|
||||
dwnLpdESMax: dwnTotalsMaxSegments[3],
|
||||
dwnMicroScrMax: dwnTotalsMaxSegments[4],
|
||||
dwnScrMax: dwnTotalsMaxSegments[5],
|
||||
dwnSlipMax: dwnTotalsMaxSegments[6],
|
||||
dwnAreaCountMax: dwnTotalsMaxSegments[7],
|
||||
dwnAreaMax: dwnTotalsMaxSegments[8],
|
||||
dwnHazeAvgMax: string.Empty,
|
||||
dwnHazeMedianMax: string.Empty,
|
||||
dwnHazeStdDevMax: string.Empty,
|
||||
dwnBin1Max: string.Empty,
|
||||
dwnBin2Max: string.Empty,
|
||||
dwnBin3Max: string.Empty,
|
||||
dwnBin4Max: string.Empty,
|
||||
dwnBin5Max: string.Empty,
|
||||
dwnBin6Max: string.Empty,
|
||||
dwnBin7Max: string.Empty,
|
||||
dwnBin8Max: string.Empty,
|
||||
dwnAllMean: dwnTotalsMeanSegments[0],
|
||||
dwnLpdMean: dwnTotalsMeanSegments[1],
|
||||
dwnLpdNMean: dwnTotalsMeanSegments[2],
|
||||
dwnLpdESMean: dwnTotalsMeanSegments[3],
|
||||
dwnMicroScrMean: dwnTotalsMeanSegments[4],
|
||||
dwnScrMean: dwnTotalsMeanSegments[5],
|
||||
dwnSlipMean: dwnTotalsMeanSegments[6],
|
||||
dwnAreaCountMean: dwnTotalsMeanSegments[7],
|
||||
dwnAreaMean: dwnTotalsMeanSegments[8],
|
||||
dwnHazeAvgMean: string.Empty,
|
||||
dwnHazeMedianMean: string.Empty,
|
||||
dwnHazeStdDevMean: string.Empty,
|
||||
dwnBin1Mean: string.Empty,
|
||||
dwnBin2Mean: string.Empty,
|
||||
dwnBin3Mean: string.Empty,
|
||||
dwnBin4Mean: string.Empty,
|
||||
dwnBin5Mean: string.Empty,
|
||||
dwnBin6Mean: string.Empty,
|
||||
dwnBin7Mean: string.Empty,
|
||||
dwnBin8Mean: string.Empty,
|
||||
dwnAllStdDev: dwnTotalsStandardDevSegments[0],
|
||||
dwnLpdStdDev: dwnTotalsStandardDevSegments[1],
|
||||
dwnLpdNStdDev: dwnTotalsStandardDevSegments[2],
|
||||
dwnLpdESStdDev: dwnTotalsStandardDevSegments[3],
|
||||
dwnMicroScrStdDev: dwnTotalsStandardDevSegments[4],
|
||||
dwnScrStdDev: dwnTotalsStandardDevSegments[5],
|
||||
dwnSlipStdDev: dwnTotalsStandardDevSegments[6],
|
||||
dwnAreaCountStdDev: dwnTotalsStandardDevSegments[7],
|
||||
dwnAreaStdDev: dwnTotalsStandardDevSegments[8],
|
||||
dwnHazeAvgStdDev: string.Empty,
|
||||
dwnHazeMedianStdDev: string.Empty,
|
||||
dwnHazeStdDevStdDev: string.Empty,
|
||||
dwnBin1StdDev: string.Empty,
|
||||
dwnBin2StdDev: string.Empty,
|
||||
dwnBin3StdDev: string.Empty,
|
||||
dwnBin4StdDev: string.Empty,
|
||||
dwnBin5StdDev: string.Empty,
|
||||
dwnBin6StdDev: string.Empty,
|
||||
dwnBin7StdDev: string.Empty,
|
||||
dwnBin8StdDev: string.Empty,
|
||||
dnnAllMin: string.Empty,
|
||||
dnnLpdMin: string.Empty,
|
||||
dnnLpdNMin: string.Empty,
|
||||
dnnLpdESMin: string.Empty,
|
||||
dnnMicroScrMin: string.Empty,
|
||||
dnnScrMin: string.Empty,
|
||||
dnnSlipMin: string.Empty,
|
||||
dnnAreaCountMin: string.Empty,
|
||||
dnnAreaMin: string.Empty,
|
||||
dnnHazeAvgMin: string.Empty,
|
||||
dnnHazeMedianMin: string.Empty,
|
||||
dnnHazeStdDevMin: string.Empty,
|
||||
dnnBin1Min: string.Empty,
|
||||
dnnBin2Min: string.Empty,
|
||||
dnnBin3Min: string.Empty,
|
||||
dnnBin4Min: string.Empty,
|
||||
dnnBin5Min: string.Empty,
|
||||
dnnBin6Min: string.Empty,
|
||||
dnnBin7Min: string.Empty,
|
||||
dnnBin8Min: string.Empty,
|
||||
dnnAllMax: string.Empty,
|
||||
dnnLpdMax: string.Empty,
|
||||
dnnLpdNMax: string.Empty,
|
||||
dnnLpdESMax: string.Empty,
|
||||
dnnMicroScrMax: string.Empty,
|
||||
dnnScrMax: string.Empty,
|
||||
dnnSlipMax: string.Empty,
|
||||
dnnAreaCountMax: string.Empty,
|
||||
dnnAreaMax: string.Empty,
|
||||
dnnHazeAvgMax: string.Empty,
|
||||
dnnHazeMedianMax: string.Empty,
|
||||
dnnHazeStdDevMax: string.Empty,
|
||||
dnnBin1Max: string.Empty,
|
||||
dnnBin2Max: string.Empty,
|
||||
dnnBin3Max: string.Empty,
|
||||
dnnBin4Max: string.Empty,
|
||||
dnnBin5Max: string.Empty,
|
||||
dnnBin6Max: string.Empty,
|
||||
dnnBin7Max: string.Empty,
|
||||
dnnBin8Max: string.Empty,
|
||||
dnnAllMean: string.Empty,
|
||||
dnnLpdMean: string.Empty,
|
||||
dnnLpdNMean: string.Empty,
|
||||
dnnLpdESMean: string.Empty,
|
||||
dnnMicroScrMean: string.Empty,
|
||||
dnnScrMean: string.Empty,
|
||||
dnnSlipMean: string.Empty,
|
||||
dnnAreaCountMean: string.Empty,
|
||||
dnnAreaMean: string.Empty,
|
||||
dnnHazeAvgMean: string.Empty,
|
||||
dnnHazeMedianMean: string.Empty,
|
||||
dnnHazeStdDevMean: string.Empty,
|
||||
dnnBin1Mean: string.Empty,
|
||||
dnnBin2Mean: string.Empty,
|
||||
dnnBin3Mean: string.Empty,
|
||||
dnnBin4Mean: string.Empty,
|
||||
dnnBin5Mean: string.Empty,
|
||||
dnnBin6Mean: string.Empty,
|
||||
dnnBin7Mean: string.Empty,
|
||||
dnnBin8Mean: string.Empty,
|
||||
dnnAllStdDev: string.Empty,
|
||||
dnnLpdStdDev: string.Empty,
|
||||
dnnLpdNStdDev: string.Empty,
|
||||
dnnLpdESStdDev: string.Empty,
|
||||
dnnMicroScrStdDev: string.Empty,
|
||||
dnnScrStdDev: string.Empty,
|
||||
dnnSlipStdDev: string.Empty,
|
||||
dnnAreaCountStdDev: string.Empty,
|
||||
dnnAreaStdDev: string.Empty,
|
||||
dnnHazeAvgStdDev: string.Empty,
|
||||
dnnHazeMedianStdDev: string.Empty,
|
||||
dnnHazeStdDevStdDev: string.Empty,
|
||||
dnnBin1StdDev: string.Empty,
|
||||
dnnBin2StdDev: string.Empty,
|
||||
dnnBin3StdDev: string.Empty,
|
||||
dnnBin4StdDev: string.Empty,
|
||||
dnnBin5StdDev: string.Empty,
|
||||
dnnBin6StdDev: string.Empty,
|
||||
dnnBin7StdDev: string.Empty,
|
||||
dnnBin8StdDev: string.Empty
|
||||
);
|
||||
}
|
||||
else if (text.Contains(constant.LongWaferSummary))
|
||||
{
|
||||
result = new(dcnAllMin: dncTotalsMinSegments[0],
|
||||
dcnLpdMin: dncTotalsMinSegments[1],
|
||||
dcnLpdNMin: dncTotalsMinSegments[2],
|
||||
dcnLpdESMin: dncTotalsMinSegments[3],
|
||||
dcnMicroScrMin: dncTotalsMinSegments[4],
|
||||
dcnScrMin: dncTotalsMinSegments[5],
|
||||
dcnSlipMin: dncTotalsMinSegments[6],
|
||||
dcnAreaCountMin: dncTotalsMinSegments[7],
|
||||
dcnAreaMin: dncTotalsMinSegments[8],
|
||||
dcnHazeAvgMin: dncTotalsMinSegments[9],
|
||||
dcnHazeMedianMin: dncTotalsMinSegments[10],
|
||||
dcnHazeStdDevMin: dncTotalsMinSegments[11],
|
||||
dcnBin1Min: dncTotalsMinSegments[12],
|
||||
dcnBin2Min: dncTotalsMinSegments[13],
|
||||
dcnBin3Min: dncTotalsMinSegments[14],
|
||||
dcnBin4Min: dncTotalsMinSegments[15],
|
||||
dcnBin5Min: dncTotalsMinSegments[16],
|
||||
dcnBin6Min: dncTotalsMinSegments[17],
|
||||
dcnBin7Min: dncTotalsMinSegments[18],
|
||||
dcnBin8Min: dncTotalsMinSegments[19],
|
||||
dcnAllMax: dncTotalsMaxSegments[0],
|
||||
dcnLpdMax: dncTotalsMaxSegments[1],
|
||||
dcnLpdNMax: dncTotalsMaxSegments[2],
|
||||
dcnLpdESMax: dncTotalsMaxSegments[3],
|
||||
dcnMicroScrMax: dncTotalsMaxSegments[4],
|
||||
dcnScrMax: dncTotalsMaxSegments[5],
|
||||
dcnSlipMax: dncTotalsMaxSegments[6],
|
||||
dcnAreaCountMax: dncTotalsMaxSegments[7],
|
||||
dcnAreaMax: dncTotalsMaxSegments[8],
|
||||
dcnHazeAvgMax: dncTotalsMaxSegments[9],
|
||||
dcnHazeMedianMax: dncTotalsMaxSegments[10],
|
||||
dcnHazeStdDevMax: dncTotalsMaxSegments[11],
|
||||
dcnBin1Max: dncTotalsMaxSegments[12],
|
||||
dcnBin2Max: dncTotalsMaxSegments[13],
|
||||
dcnBin3Max: dncTotalsMaxSegments[14],
|
||||
dcnBin4Max: dncTotalsMaxSegments[15],
|
||||
dcnBin5Max: dncTotalsMaxSegments[16],
|
||||
dcnBin6Max: dncTotalsMaxSegments[17],
|
||||
dcnBin7Max: dncTotalsMaxSegments[18],
|
||||
dcnBin8Max: dncTotalsMaxSegments[19],
|
||||
dcnAllMean: dncTotalsMeanSegments[0],
|
||||
dcnLpdMean: dncTotalsMeanSegments[1],
|
||||
dcnLpdNMean: dncTotalsMeanSegments[2],
|
||||
dcnLpdESMean: dncTotalsMeanSegments[3],
|
||||
dcnMicroScrMean: dncTotalsMeanSegments[4],
|
||||
dcnScrMean: dncTotalsMeanSegments[5],
|
||||
dcnSlipMean: dncTotalsMeanSegments[6],
|
||||
dcnAreaCountMean: dncTotalsMeanSegments[7],
|
||||
dcnAreaMean: dncTotalsMeanSegments[8],
|
||||
dcnHazeAvgMean: dncTotalsMeanSegments[9],
|
||||
dcnHazeMedianMean: dncTotalsMeanSegments[10],
|
||||
dcnHazeStdDevMean: dncTotalsMeanSegments[11],
|
||||
dcnBin1Mean: dncTotalsMeanSegments[12],
|
||||
dcnBin2Mean: dncTotalsMeanSegments[13],
|
||||
dcnBin3Mean: dncTotalsMeanSegments[14],
|
||||
dcnBin4Mean: dncTotalsMeanSegments[15],
|
||||
dcnBin5Mean: dncTotalsMeanSegments[16],
|
||||
dcnBin6Mean: dncTotalsMeanSegments[17],
|
||||
dcnBin7Mean: dncTotalsMeanSegments[18],
|
||||
dcnBin8Mean: dncTotalsMeanSegments[19],
|
||||
dcnAllStdDev: dncTotalsStandardDevSegments[0],
|
||||
dcnLpdStdDev: dncTotalsStandardDevSegments[1],
|
||||
dcnLpdNStdDev: dncTotalsStandardDevSegments[2],
|
||||
dcnLpdESStdDev: dncTotalsStandardDevSegments[3],
|
||||
dcnMicroScrStdDev: dncTotalsStandardDevSegments[4],
|
||||
dcnScrStdDev: dncTotalsStandardDevSegments[5],
|
||||
dcnSlipStdDev: dncTotalsStandardDevSegments[6],
|
||||
dcnAreaCountStdDev: dncTotalsStandardDevSegments[7],
|
||||
dcnAreaStdDev: dncTotalsStandardDevSegments[8],
|
||||
dcnHazeAvgStdDev: dncTotalsStandardDevSegments[9],
|
||||
dcnHazeMedianStdDev: dncTotalsStandardDevSegments[10],
|
||||
dcnHazeStdDevStdDev: dncTotalsStandardDevSegments[11],
|
||||
dcnBin1StdDev: dncTotalsStandardDevSegments[12],
|
||||
dcnBin2StdDev: dncTotalsStandardDevSegments[13],
|
||||
dcnBin3StdDev: dncTotalsStandardDevSegments[14],
|
||||
dcnBin4StdDev: dncTotalsStandardDevSegments[15],
|
||||
dcnBin5StdDev: dncTotalsStandardDevSegments[16],
|
||||
dcnBin6StdDev: dncTotalsStandardDevSegments[17],
|
||||
dcnBin7StdDev: dncTotalsStandardDevSegments[18],
|
||||
dcnBin8StdDev: dncTotalsStandardDevSegments[19],
|
||||
dwnAllMin: dwnTotalsMinSegments[0],
|
||||
dwnLpdMin: dwnTotalsMinSegments[1],
|
||||
dwnLpdNMin: dwnTotalsMinSegments[2],
|
||||
dwnLpdESMin: dwnTotalsMinSegments[3],
|
||||
dwnMicroScrMin: dwnTotalsMinSegments[4],
|
||||
dwnScrMin: dwnTotalsMinSegments[5],
|
||||
dwnSlipMin: dwnTotalsMinSegments[6],
|
||||
dwnAreaCountMin: dwnTotalsMinSegments[7],
|
||||
dwnAreaMin: dwnTotalsMinSegments[8],
|
||||
dwnHazeAvgMin: dwnTotalsMinSegments[9],
|
||||
dwnHazeMedianMin: dwnTotalsMinSegments[10],
|
||||
dwnHazeStdDevMin: dwnTotalsMinSegments[11],
|
||||
dwnBin1Min: dwnTotalsMinSegments[12],
|
||||
dwnBin2Min: dwnTotalsMinSegments[13],
|
||||
dwnBin3Min: dwnTotalsMinSegments[14],
|
||||
dwnBin4Min: dwnTotalsMinSegments[15],
|
||||
dwnBin5Min: dwnTotalsMinSegments[16],
|
||||
dwnBin6Min: dwnTotalsMinSegments[17],
|
||||
dwnBin7Min: dwnTotalsMinSegments[18],
|
||||
dwnBin8Min: dwnTotalsMinSegments[19],
|
||||
dwnAllMax: dwnTotalsMaxSegments[0],
|
||||
dwnLpdMax: dwnTotalsMaxSegments[1],
|
||||
dwnLpdNMax: dwnTotalsMaxSegments[2],
|
||||
dwnLpdESMax: dwnTotalsMaxSegments[3],
|
||||
dwnMicroScrMax: dwnTotalsMaxSegments[4],
|
||||
dwnScrMax: dwnTotalsMaxSegments[5],
|
||||
dwnSlipMax: dwnTotalsMaxSegments[6],
|
||||
dwnAreaCountMax: dwnTotalsMaxSegments[7],
|
||||
dwnAreaMax: dwnTotalsMaxSegments[8],
|
||||
dwnHazeAvgMax: dwnTotalsMaxSegments[9],
|
||||
dwnHazeMedianMax: dwnTotalsMaxSegments[10],
|
||||
dwnHazeStdDevMax: dwnTotalsMaxSegments[11],
|
||||
dwnBin1Max: dwnTotalsMaxSegments[12],
|
||||
dwnBin2Max: dwnTotalsMaxSegments[13],
|
||||
dwnBin3Max: dwnTotalsMaxSegments[14],
|
||||
dwnBin4Max: dwnTotalsMaxSegments[15],
|
||||
dwnBin5Max: dwnTotalsMaxSegments[16],
|
||||
dwnBin6Max: dwnTotalsMaxSegments[17],
|
||||
dwnBin7Max: dwnTotalsMaxSegments[18],
|
||||
dwnBin8Max: dwnTotalsMaxSegments[19],
|
||||
dwnAllMean: dwnTotalsMeanSegments[0],
|
||||
dwnLpdMean: dwnTotalsMeanSegments[1],
|
||||
dwnLpdNMean: dwnTotalsMeanSegments[2],
|
||||
dwnLpdESMean: dwnTotalsMeanSegments[3],
|
||||
dwnMicroScrMean: dwnTotalsMeanSegments[4],
|
||||
dwnScrMean: dwnTotalsMeanSegments[5],
|
||||
dwnSlipMean: dwnTotalsMeanSegments[6],
|
||||
dwnAreaCountMean: dwnTotalsMeanSegments[7],
|
||||
dwnAreaMean: dwnTotalsMeanSegments[8],
|
||||
dwnHazeAvgMean: dwnTotalsMeanSegments[9],
|
||||
dwnHazeMedianMean: dwnTotalsMeanSegments[10],
|
||||
dwnHazeStdDevMean: dwnTotalsMeanSegments[11],
|
||||
dwnBin1Mean: dwnTotalsMeanSegments[12],
|
||||
dwnBin2Mean: dwnTotalsMeanSegments[13],
|
||||
dwnBin3Mean: dwnTotalsMeanSegments[14],
|
||||
dwnBin4Mean: dwnTotalsMeanSegments[15],
|
||||
dwnBin5Mean: dwnTotalsMeanSegments[16],
|
||||
dwnBin6Mean: dwnTotalsMeanSegments[17],
|
||||
dwnBin7Mean: dwnTotalsMeanSegments[18],
|
||||
dwnBin8Mean: dwnTotalsMeanSegments[19],
|
||||
dwnAllStdDev: dwnTotalsStandardDevSegments[0],
|
||||
dwnLpdStdDev: dwnTotalsStandardDevSegments[1],
|
||||
dwnLpdNStdDev: dwnTotalsStandardDevSegments[2],
|
||||
dwnLpdESStdDev: dwnTotalsStandardDevSegments[3],
|
||||
dwnMicroScrStdDev: dwnTotalsStandardDevSegments[4],
|
||||
dwnScrStdDev: dwnTotalsStandardDevSegments[5],
|
||||
dwnSlipStdDev: dwnTotalsStandardDevSegments[6],
|
||||
dwnAreaCountStdDev: dwnTotalsStandardDevSegments[7],
|
||||
dwnAreaStdDev: dwnTotalsStandardDevSegments[8],
|
||||
dwnHazeAvgStdDev: dwnTotalsStandardDevSegments[9],
|
||||
dwnHazeMedianStdDev: dwnTotalsStandardDevSegments[10],
|
||||
dwnHazeStdDevStdDev: dwnTotalsStandardDevSegments[11],
|
||||
dwnBin1StdDev: dwnTotalsStandardDevSegments[12],
|
||||
dwnBin2StdDev: dwnTotalsStandardDevSegments[13],
|
||||
dwnBin3StdDev: dwnTotalsStandardDevSegments[14],
|
||||
dwnBin4StdDev: dwnTotalsStandardDevSegments[15],
|
||||
dwnBin5StdDev: dwnTotalsStandardDevSegments[16],
|
||||
dwnBin6StdDev: dwnTotalsStandardDevSegments[17],
|
||||
dwnBin7StdDev: dwnTotalsStandardDevSegments[18],
|
||||
dwnBin8StdDev: dwnTotalsStandardDevSegments[19],
|
||||
dnnAllMin: dnnTotalsMinSegments[0],
|
||||
dnnLpdMin: dnnTotalsMinSegments[1],
|
||||
dnnLpdNMin: dnnTotalsMinSegments[2],
|
||||
dnnLpdESMin: dnnTotalsMinSegments[3],
|
||||
dnnMicroScrMin: dnnTotalsMinSegments[4],
|
||||
dnnScrMin: dnnTotalsMinSegments[5],
|
||||
dnnSlipMin: dnnTotalsMinSegments[6],
|
||||
dnnAreaCountMin: dnnTotalsMinSegments[7],
|
||||
dnnAreaMin: dnnTotalsMinSegments[8],
|
||||
dnnHazeAvgMin: dnnTotalsMinSegments[9],
|
||||
dnnHazeMedianMin: dnnTotalsMinSegments[10],
|
||||
dnnHazeStdDevMin: dnnTotalsMinSegments[11],
|
||||
dnnBin1Min: dnnTotalsMinSegments[12],
|
||||
dnnBin2Min: dnnTotalsMinSegments[13],
|
||||
dnnBin3Min: dnnTotalsMinSegments[14],
|
||||
dnnBin4Min: dnnTotalsMinSegments[15],
|
||||
dnnBin5Min: dnnTotalsMinSegments[16],
|
||||
dnnBin6Min: dnnTotalsMinSegments[17],
|
||||
dnnBin7Min: dnnTotalsMinSegments[18],
|
||||
dnnBin8Min: dnnTotalsMinSegments[19],
|
||||
dnnAllMax: dnnTotalsMaxSegments[0],
|
||||
dnnLpdMax: dnnTotalsMaxSegments[1],
|
||||
dnnLpdNMax: dnnTotalsMaxSegments[2],
|
||||
dnnLpdESMax: dnnTotalsMaxSegments[3],
|
||||
dnnMicroScrMax: dnnTotalsMaxSegments[4],
|
||||
dnnScrMax: dnnTotalsMaxSegments[5],
|
||||
dnnSlipMax: dnnTotalsMaxSegments[6],
|
||||
dnnAreaCountMax: dnnTotalsMaxSegments[7],
|
||||
dnnAreaMax: dnnTotalsMaxSegments[8],
|
||||
dnnHazeAvgMax: dnnTotalsMaxSegments[9],
|
||||
dnnHazeMedianMax: dnnTotalsMaxSegments[10],
|
||||
dnnHazeStdDevMax: dnnTotalsMaxSegments[11],
|
||||
dnnBin1Max: dnnTotalsMaxSegments[12],
|
||||
dnnBin2Max: dnnTotalsMaxSegments[13],
|
||||
dnnBin3Max: dnnTotalsMaxSegments[14],
|
||||
dnnBin4Max: dnnTotalsMaxSegments[15],
|
||||
dnnBin5Max: dnnTotalsMaxSegments[16],
|
||||
dnnBin6Max: dnnTotalsMaxSegments[17],
|
||||
dnnBin7Max: dnnTotalsMaxSegments[18],
|
||||
dnnBin8Max: dnnTotalsMaxSegments[19],
|
||||
dnnAllMean: dnnTotalsMeanSegments[0],
|
||||
dnnLpdMean: dnnTotalsMeanSegments[1],
|
||||
dnnLpdNMean: dnnTotalsMeanSegments[2],
|
||||
dnnLpdESMean: dnnTotalsMeanSegments[3],
|
||||
dnnMicroScrMean: dnnTotalsMeanSegments[4],
|
||||
dnnScrMean: dnnTotalsMeanSegments[5],
|
||||
dnnSlipMean: dnnTotalsMeanSegments[6],
|
||||
dnnAreaCountMean: dnnTotalsMeanSegments[7],
|
||||
dnnAreaMean: dnnTotalsMeanSegments[8],
|
||||
dnnHazeAvgMean: dnnTotalsMeanSegments[9],
|
||||
dnnHazeMedianMean: dnnTotalsMeanSegments[10],
|
||||
dnnHazeStdDevMean: dnnTotalsMeanSegments[11],
|
||||
dnnBin1Mean: dnnTotalsMeanSegments[12],
|
||||
dnnBin2Mean: dnnTotalsMeanSegments[13],
|
||||
dnnBin3Mean: dnnTotalsMeanSegments[14],
|
||||
dnnBin4Mean: dnnTotalsMeanSegments[15],
|
||||
dnnBin5Mean: dnnTotalsMeanSegments[16],
|
||||
dnnBin6Mean: dnnTotalsMeanSegments[17],
|
||||
dnnBin7Mean: dnnTotalsMeanSegments[18],
|
||||
dnnBin8Mean: dnnTotalsMeanSegments[19],
|
||||
dnnAllStdDev: dnnTotalsStandardDevSegments[0],
|
||||
dnnLpdStdDev: dnnTotalsStandardDevSegments[1],
|
||||
dnnLpdNStdDev: dnnTotalsStandardDevSegments[2],
|
||||
dnnLpdESStdDev: dnnTotalsStandardDevSegments[3],
|
||||
dnnMicroScrStdDev: dnnTotalsStandardDevSegments[4],
|
||||
dnnScrStdDev: dnnTotalsStandardDevSegments[5],
|
||||
dnnSlipStdDev: dnnTotalsStandardDevSegments[6],
|
||||
dnnAreaCountStdDev: dnnTotalsStandardDevSegments[7],
|
||||
dnnAreaStdDev: dnnTotalsStandardDevSegments[8],
|
||||
dnnHazeAvgStdDev: dnnTotalsStandardDevSegments[9],
|
||||
dnnHazeMedianStdDev: dnnTotalsStandardDevSegments[10],
|
||||
dnnHazeStdDevStdDev: dnnTotalsStandardDevSegments[11],
|
||||
dnnBin1StdDev: dnnTotalsStandardDevSegments[12],
|
||||
dnnBin2StdDev: dnnTotalsStandardDevSegments[13],
|
||||
dnnBin3StdDev: dnnTotalsStandardDevSegments[14],
|
||||
dnnBin4StdDev: dnnTotalsStandardDevSegments[15],
|
||||
dnnBin5StdDev: dnnTotalsStandardDevSegments[16],
|
||||
dnnBin6StdDev: dnnTotalsStandardDevSegments[17],
|
||||
dnnBin7StdDev: dnnTotalsStandardDevSegments[18],
|
||||
dnnBin8StdDev: dnnTotalsStandardDevSegments[19]);
|
||||
}
|
||||
else
|
||||
throw new Exception(constant.FormatExceptionMessage);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@ -226,9 +226,9 @@ public class MonIn : IMonIn, IDisposable
|
||||
{
|
||||
StringBuilder stringBuilder = new();
|
||||
if (string.IsNullOrEmpty(subresource))
|
||||
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" {4} \n{5}", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : (object)"now", resource.Trim(), stateName.Trim(), state.Trim(), description.Trim());
|
||||
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" {4} \n{5}", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : "now", resource.Trim(), stateName.Trim(), state.Trim(), description.Trim());
|
||||
else
|
||||
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" \"{4}\" {5} \n{6}", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : (object)"now", resource.Trim(), subresource.Trim(), stateName.Trim(), state.Trim(), description.Trim());
|
||||
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" \"{4}\" {5} \n{6}", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : "now", resource.Trim(), subresource.Trim(), stateName.Trim(), state.Trim(), description.Trim());
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
@ -247,14 +247,14 @@ public class MonIn : IMonIn, IDisposable
|
||||
if (string.IsNullOrEmpty(subresource))
|
||||
{
|
||||
if (unit.Equals(string.Empty) && !interval.HasValue)
|
||||
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" {4} \n{5}", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : (object)"now", resource.Trim(), performanceName.Trim(), value, description.Trim());
|
||||
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" {4} \n{5}", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : "now", resource.Trim(), performanceName.Trim(), value, description.Trim());
|
||||
else
|
||||
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" {4} {5} {{interval={6}, unit={7}}}\n", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : (object)"now", resource.Trim(), performanceName.Trim(), value, description.Trim(), interval.HasValue ? interval.Value.ToString() : (object)string.Empty, unit.Trim());
|
||||
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" {4} {5} {{interval={6}, unit={7}}}\n", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : "now", resource.Trim(), performanceName.Trim(), value, description.Trim(), interval.HasValue ? interval.Value.ToString() : string.Empty, unit.Trim());
|
||||
}
|
||||
else if (unit.Equals(string.Empty) && !interval.HasValue)
|
||||
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" \"{4}\" {5} \n{6}", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : (object)"now", resource.Trim(), subresource.Trim(), performanceName.Trim(), value, description.Trim());
|
||||
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" \"{4}\" {5} \n{6}", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : "now", resource.Trim(), subresource.Trim(), performanceName.Trim(), value, description.Trim());
|
||||
else
|
||||
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" \"{4}\" {5} {6} {{interval={7}, unit={8}}}\n", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : (object)"now", resource.Trim(), subresource.Trim(), performanceName.Trim(), value, description.Trim(), interval.HasValue ? interval.Value.ToString() : (object)string.Empty, unit.Trim());
|
||||
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" \"{4}\" {5} {6} {{interval={7}, unit={8}}}\n", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : "now", resource.Trim(), subresource.Trim(), performanceName.Trim(), value, description.Trim(), interval.HasValue ? interval.Value.ToString() : string.Empty, unit.Trim());
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
<IsPackable>false</IsPackable>
|
||||
<Nullable>disable</Nullable>
|
||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<VSTestLogger>trx</VSTestLogger>
|
||||
@ -35,8 +35,8 @@
|
||||
<RuntimeHostConfigurationOption Include="AssemblyName" Value="MET08DDUPSP1TBI" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="coverlet.collector" Version="6.0.3" />
|
||||
<PackageReference Include="FFMpegCore" Version="5.1.0" />
|
||||
<PackageReference Include="coverlet.collector" Version="6.0.4" />
|
||||
<PackageReference Include="FFMpegCore" Version="5.4.0" />
|
||||
<PackageReference Include="IKVM.AWT.WinForms" Version="7.2.4630.5"><NoWarn>NU1701</NoWarn></PackageReference>
|
||||
<PackageReference Include="IKVM.OpenJDK.Core" Version="7.2.4630.5"><NoWarn>NU1701</NoWarn></PackageReference>
|
||||
<PackageReference Include="IKVM.OpenJDK.Media" Version="7.2.4630.5"><NoWarn>NU1701</NoWarn></PackageReference>
|
||||
@ -44,29 +44,28 @@
|
||||
<PackageReference Include="IKVM.OpenJDK.Util" Version="7.2.4630.5"><NoWarn>NU1701</NoWarn></PackageReference>
|
||||
<PackageReference Include="IKVM.OpenJDK.XML.API" Version="7.2.4630.5"><NoWarn>NU1701</NoWarn></PackageReference>
|
||||
<PackageReference Include="IKVM.Runtime" Version="7.2.4630.5"><NoWarn>NU1701</NoWarn></PackageReference>
|
||||
<PackageReference Include="Instances" Version="3.0.1" />
|
||||
<PackageReference Include="log4net" Version="3.0.3"></PackageReference>
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="9.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="9.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="9.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.json" Version="9.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration" Version="9.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="9.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="9.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
|
||||
<PackageReference Include="Microsoft.Win32.SystemEvents" Version="9.0.0" />
|
||||
<PackageReference Include="Instances" Version="3.0.2" />
|
||||
<PackageReference Include="log4net" Version="3.2.0"></PackageReference>
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="10.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="10.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="10.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="10.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.json" Version="10.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration" Version="10.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="10.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="10.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="10.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
|
||||
<PackageReference Include="Microsoft.Win32.SystemEvents" Version="10.0.0" />
|
||||
<PackageReference Include="MSTest.TestAdapter" Version="3.7.0" />
|
||||
<PackageReference Include="MSTest.TestFramework" Version="3.7.0" />
|
||||
<PackageReference Include="Pdfbox" Version="1.1.1"><NoWarn>NU1701</NoWarn></PackageReference>
|
||||
<PackageReference Include="RoboSharp" Version="1.6.0" />
|
||||
<PackageReference Include="System.Configuration.ConfigurationManager" Version="9.0.0" />
|
||||
<PackageReference Include="System.Data.OleDb" Version="9.0.0" />
|
||||
<PackageReference Include="System.Data.SqlClient" Version="4.8.6" />
|
||||
<PackageReference Include="System.Drawing.Common" Version="9.0.0" />
|
||||
<PackageReference Include="System.Text.Json" Version="9.0.0" />
|
||||
<PackageReference Include="System.Configuration.ConfigurationManager" Version="10.0.0" />
|
||||
<PackageReference Include="System.Data.OleDb" Version="10.0.0" />
|
||||
<PackageReference Include="System.Data.SqlClient" Version="4.9.0" />
|
||||
<PackageReference Include="System.Drawing.Common" Version="10.0.0" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Infineon.Mesa.PDF.Text.Stripper" Version="4.8.0.2"><NoWarn>NU1701</NoWarn></PackageReference>
|
||||
|
||||
@ -3,6 +3,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.Shared.Duplicator;
|
||||
|
||||
@ -178,4 +179,16 @@ public class Description : IDescription, Properties.IDescription
|
||||
|
||||
internal static string GetDateFormat() => "MM/dd/yyyy hh:mm:ss tt";
|
||||
|
||||
}
|
||||
|
||||
[JsonSourceGenerationOptions(WriteIndented = true, NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
|
||||
[JsonSerializable(typeof(Description))]
|
||||
internal partial class SharedDescriptionSourceGenerationContext : JsonSerializerContext
|
||||
{
|
||||
}
|
||||
|
||||
[JsonSourceGenerationOptions(WriteIndented = true, NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
|
||||
[JsonSerializable(typeof(Description[]))]
|
||||
internal partial class SharedDescriptionArraySourceGenerationContext : JsonSerializerContext
|
||||
{
|
||||
}
|
||||
@ -9,7 +9,6 @@ using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Threading;
|
||||
|
||||
namespace Adaptation.Shared;
|
||||
@ -447,12 +446,13 @@ public class FileRead : Properties.IFileRead
|
||||
{
|
||||
List<Properties.IDescription> results = new();
|
||||
Duplicator.Description description;
|
||||
JsonSerializerOptions jsonSerializerOptions = new() { NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString };
|
||||
foreach (JsonElement jsonElement in jsonElements)
|
||||
{
|
||||
if (jsonElement.ValueKind != JsonValueKind.Object)
|
||||
throw new Exception();
|
||||
description = JsonSerializer.Deserialize<Duplicator.Description>(jsonElement.ToString(), jsonSerializerOptions);
|
||||
description = JsonSerializer.Deserialize(jsonElement.ToString(), Duplicator.SharedDescriptionSourceGenerationContext.Default.Description);
|
||||
if (description is null)
|
||||
continue;
|
||||
results.Add(description);
|
||||
}
|
||||
return results;
|
||||
|
||||
@ -199,4 +199,31 @@ public class Logistics : ILogistics
|
||||
_ProcessJobID = processJobID;
|
||||
}
|
||||
|
||||
private static int GetCountFromFileName(Logistics logistics)
|
||||
{
|
||||
int result;
|
||||
string[] segments = logistics.FileInfo.Name.Split('.');
|
||||
string[] segmentsB = segments[0].Split('_');
|
||||
string countFromFileName = segmentsB.Length < 3 ? "0" : segmentsB[2];
|
||||
if (!int.TryParse(countFromFileName, out result))
|
||||
result = 0;
|
||||
return result;
|
||||
}
|
||||
|
||||
internal static long GetUniqueSequence(Logistics logistics)
|
||||
{
|
||||
long result;
|
||||
int countFromFileName = GetCountFromFileName(logistics);
|
||||
result = (logistics.Sequence * 10) + countFromFileName;
|
||||
return result;
|
||||
}
|
||||
|
||||
internal static string GetUniqueId(Logistics logistics)
|
||||
{
|
||||
string result;
|
||||
int countFromFileName = GetCountFromFileName(logistics);
|
||||
result = $"{logistics.JobID}_{logistics.MID}_{logistics.DateTimeFromSequence:yyyyMMddHHmmssffff}_{countFromFileName}";
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
@ -187,7 +187,7 @@ internal class ProcessDataStandardFormat
|
||||
break;
|
||||
}
|
||||
}
|
||||
string? linesOne = lines.Length > 0 && body.Count == 0 && columns.Count == 0 ? lines[1] : null;
|
||||
string? linesOne = lines.Length > 1 && body.Count == 0 && columns.Count == 0 ? lines[1] : null;
|
||||
logistics = GetLogistics(footer, linesOne: linesOne);
|
||||
if (logistics.Count == 0)
|
||||
sequence = null;
|
||||
@ -235,7 +235,7 @@ internal class ProcessDataStandardFormat
|
||||
const int columnsLine = 6;
|
||||
FileInfo fileInfo = new(reportFullPath);
|
||||
ProcessDataStandardFormat processDataStandardFormat = GetProcessDataStandardFormat(fileInfo.LastWriteTime, columnsLine, fileInfo.FullName, lines: null);
|
||||
JsonElement[]? jsonElements = processDataStandardFormatMapping.OldColumnNames.Count != processDataStandardFormatMapping.ColumnIndices.Count ? null : GetFullArray(processDataStandardFormat);
|
||||
JsonElement[]? jsonElements = processDataStandardFormatMapping.OldColumnNames.Count == 0 ? null : GetFullArray(processDataStandardFormat);
|
||||
JsonProperty[]? jsonProperties = jsonElements is null || jsonElements.Length == 0 ? null : jsonElements[0].EnumerateObject().ToArray();
|
||||
if (jsonElements is null || jsonProperties is null || jsonProperties.Length != processDataStandardFormatMapping.NewColumnNames.Count)
|
||||
result = processDataStandardFormat;
|
||||
@ -654,7 +654,18 @@ internal class ProcessDataStandardFormat
|
||||
return results;
|
||||
}
|
||||
|
||||
internal static string GetPDSFText(IFileRead fileRead, Logistics logistics, JsonElement[] jsonElements, string logisticsText)
|
||||
internal static JsonElement[] GetArray(string reportFullPath, string[] lines, ProcessDataStandardFormat processDataStandardFormat)
|
||||
{
|
||||
JsonElement[] results;
|
||||
string? json = GetRecordsJson(reportFullPath, lines);
|
||||
if (string.IsNullOrEmpty(json))
|
||||
results = GetArray(processDataStandardFormat);
|
||||
else
|
||||
results = JsonSerializer.Deserialize(json, JsonElementCollectionSourceGenerationContext.Default.JsonElementArray) ?? throw new Exception();
|
||||
return results;
|
||||
}
|
||||
|
||||
internal static string GetPDSFText(IFileRead fileRead, Logistics logistics, JsonElement[] jsonElements, string? logisticsText)
|
||||
{
|
||||
string result;
|
||||
if (jsonElements.Length == 0)
|
||||
@ -839,33 +850,6 @@ internal class ProcessDataStandardFormat
|
||||
return string.Concat(((int)searchFor).ToString().PadLeft(2, '0'), separator, searchFor.ToString().Replace("In", string.Concat(separator, "In")).Replace("Ex", string.Concat(separator, "Ex")));
|
||||
}
|
||||
|
||||
private static int? TryGetPropertyIndex(JsonProperty[] jsonProperties, string propertyName)
|
||||
{
|
||||
int? result = null;
|
||||
for (int i = 0; i < jsonProperties.Length; i++)
|
||||
{
|
||||
if (jsonProperties[i].Name != propertyName)
|
||||
continue;
|
||||
result = i;
|
||||
break;
|
||||
}
|
||||
if (result is null)
|
||||
{
|
||||
for (int i = 0; i < jsonProperties.Length; i++)
|
||||
{
|
||||
if (jsonProperties[i].Name[0] != propertyName[0])
|
||||
continue;
|
||||
if (jsonProperties[i].Name.Length != propertyName.Length)
|
||||
continue;
|
||||
if (jsonProperties[i].Name != propertyName)
|
||||
continue;
|
||||
result = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
internal static string GetXml(ProcessDataStandardFormat processDataStandardFormat)
|
||||
{
|
||||
string result;
|
||||
@ -903,7 +887,7 @@ internal class ProcessDataStandardFormat
|
||||
}
|
||||
foreach (KeyValuePair<string, List<string>> keyValuePair in results)
|
||||
{
|
||||
if (body.Count < 3)
|
||||
if (body.Count < 2)
|
||||
break;
|
||||
if (keyValuePair.Value.Count != body.Count)
|
||||
continue;
|
||||
@ -956,6 +940,26 @@ internal class ProcessDataStandardFormat
|
||||
return result;
|
||||
}
|
||||
|
||||
private static string? GetRecordsJson(string reportFullPath, string[] lines)
|
||||
{
|
||||
string? result;
|
||||
bool foundRecords = false;
|
||||
List<string> results = new();
|
||||
lines ??= File.ReadAllLines(reportFullPath);
|
||||
foreach (string line in lines)
|
||||
{
|
||||
if (line.StartsWith("\"Records\""))
|
||||
foundRecords = true;
|
||||
if (!foundRecords)
|
||||
continue;
|
||||
if (line == "],")
|
||||
break;
|
||||
results.Add(line);
|
||||
}
|
||||
result = results.Count == 0 ? null : $"{string.Join(Environment.NewLine, results.Skip(1))}{Environment.NewLine}]";
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
[JsonSourceGenerationOptions(WriteIndented = true)]
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
#if true
|
||||
#if v2_60_0
|
||||
using Adaptation._Tests.Shared;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
#if true
|
||||
#if v2_60_0
|
||||
using Adaptation._Tests.Shared;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
#if true
|
||||
#if v2_60_0
|
||||
using Adaptation._Tests.Shared;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
@ -0,0 +1,195 @@
|
||||
#if true
|
||||
using Adaptation._Tests.Shared;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Adaptation._Tests.CreateSelfDescription.Production.v2_61_1;
|
||||
|
||||
[TestClass]
|
||||
public class MET08DDUPSP1TBI : EAFLoggingUnitTesting
|
||||
{
|
||||
|
||||
#pragma warning disable CA2254
|
||||
#pragma warning disable IDE0060
|
||||
|
||||
internal static string DummyRoot { get; private set; }
|
||||
internal static MET08DDUPSP1TBI EAFLoggingUnitTesting { get; private set; }
|
||||
|
||||
static MET08DDUPSP1TBI() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||
|
||||
public MET08DDUPSP1TBI() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||
{
|
||||
if (EAFLoggingUnitTesting is null)
|
||||
throw new Exception();
|
||||
}
|
||||
|
||||
public MET08DDUPSP1TBI(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||
{
|
||||
}
|
||||
|
||||
[ClassInitialize]
|
||||
public static void ClassInitialize(TestContext testContext)
|
||||
{
|
||||
EAFLoggingUnitTesting ??= new MET08DDUPSP1TBI(testContext);
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(testContext.TestName, " - ClassInitialize"));
|
||||
string[] fileNameAndText = EAFLoggingUnitTesting.AdaptationTesting.GetCSharpText(testContext.TestName);
|
||||
File.WriteAllText(fileNameAndText[0], fileNameAndText[1]);
|
||||
File.WriteAllText(fileNameAndText[2], fileNameAndText[3]);
|
||||
}
|
||||
|
||||
[ClassCleanup()]
|
||||
public static void ClassCleanup()
|
||||
{
|
||||
EAFLoggingUnitTesting?.Logger?.LogInformation("Cleanup");
|
||||
EAFLoggingUnitTesting?.Dispose();
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__MoveMatchingFiles()
|
||||
{
|
||||
string check = "*.pdsf";
|
||||
MethodBase methodBase = new StackFrame().GetMethod();
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__OpenInsightMetrologyViewer()
|
||||
{
|
||||
string check = "*.pdsf";
|
||||
MethodBase methodBase = new StackFrame().GetMethod();
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__IQSSi()
|
||||
{
|
||||
string check = "*.pdsf";
|
||||
MethodBase methodBase = new StackFrame().GetMethod();
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__OpenInsight()
|
||||
{
|
||||
string check = "*.pdsf";
|
||||
MethodBase methodBase = new StackFrame().GetMethod();
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__OpenInsightMetrologyViewerAttachments()
|
||||
{
|
||||
string check = "*.pdsf";
|
||||
MethodBase methodBase = new StackFrame().GetMethod();
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__APC()
|
||||
{
|
||||
string check = "*.pdsf";
|
||||
MethodBase methodBase = new StackFrame().GetMethod();
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__SPaCe()
|
||||
{
|
||||
string check = "*.pdsf";
|
||||
MethodBase methodBase = new StackFrame().GetMethod();
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__Processed()
|
||||
{
|
||||
string check = "*.pdsf";
|
||||
MethodBase methodBase = new StackFrame().GetMethod();
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__Archive()
|
||||
{
|
||||
string check = "*.pdsf";
|
||||
MethodBase methodBase = new StackFrame().GetMethod();
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__Dummy()
|
||||
{
|
||||
string check = "637400748000000000.zip";
|
||||
MethodBase methodBase = new StackFrame().GetMethod();
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__TIBCO()
|
||||
{
|
||||
string check = "*.idc";
|
||||
MethodBase methodBase = new StackFrame().GetMethod();
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
@ -0,0 +1,70 @@
|
||||
#if true
|
||||
using Adaptation._Tests.Shared;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
namespace Adaptation._Tests.CreateSelfDescription.Production.v2_61_1;
|
||||
|
||||
[TestClass]
|
||||
public class SP101_EQPT : EAFLoggingUnitTesting
|
||||
{
|
||||
|
||||
#pragma warning disable CA2254
|
||||
#pragma warning disable IDE0060
|
||||
|
||||
internal static string DummyRoot { get; private set; }
|
||||
internal static SP101_EQPT EAFLoggingUnitTesting { get; private set; }
|
||||
|
||||
static SP101_EQPT() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||
|
||||
public SP101_EQPT() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||
{
|
||||
if (EAFLoggingUnitTesting is null)
|
||||
throw new Exception();
|
||||
}
|
||||
|
||||
public SP101_EQPT(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||
{
|
||||
}
|
||||
|
||||
[ClassInitialize]
|
||||
public static void ClassInitialize(TestContext testContext)
|
||||
{
|
||||
EAFLoggingUnitTesting ??= new SP101_EQPT(testContext);
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(testContext.TestName, " - ClassInitialize"));
|
||||
string[] fileNameAndText = EAFLoggingUnitTesting.AdaptationTesting.GetCSharpText(testContext.TestName);
|
||||
File.WriteAllText(fileNameAndText[0], fileNameAndText[1]);
|
||||
File.WriteAllText(fileNameAndText[2], fileNameAndText[3]);
|
||||
}
|
||||
|
||||
[ClassCleanup()]
|
||||
public static void ClassCleanup()
|
||||
{
|
||||
EAFLoggingUnitTesting?.Logger?.LogInformation("Cleanup");
|
||||
EAFLoggingUnitTesting?.Dispose();
|
||||
}
|
||||
|
||||
private static void NonThrowTryCatch()
|
||||
{
|
||||
try
|
||||
{ throw new Exception(); }
|
||||
catch (Exception) { }
|
||||
}
|
||||
|
||||
[Ignore]
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__SP101_EQPT__MoveAllFiles()
|
||||
{
|
||||
string check = "*";
|
||||
MethodBase methodBase = new StackFrame().GetMethod();
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||
NonThrowTryCatch();
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
@ -0,0 +1,65 @@
|
||||
#if true
|
||||
using Adaptation._Tests.Shared;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Adaptation._Tests.CreateSelfDescription.Production.v2_61_1;
|
||||
|
||||
[TestClass]
|
||||
public class SP101 : EAFLoggingUnitTesting
|
||||
{
|
||||
|
||||
#pragma warning disable CA2254
|
||||
#pragma warning disable IDE0060
|
||||
|
||||
internal static string DummyRoot { get; private set; }
|
||||
internal static SP101 EAFLoggingUnitTesting { get; private set; }
|
||||
|
||||
static SP101() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||
|
||||
public SP101() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||
{
|
||||
if (EAFLoggingUnitTesting is null)
|
||||
throw new Exception();
|
||||
}
|
||||
|
||||
public SP101(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||
{
|
||||
}
|
||||
|
||||
[ClassInitialize]
|
||||
public static void ClassInitialize(TestContext testContext)
|
||||
{
|
||||
EAFLoggingUnitTesting ??= new SP101(testContext);
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(testContext.TestName, " - ClassInitialize"));
|
||||
string[] fileNameAndText = EAFLoggingUnitTesting.AdaptationTesting.GetCSharpText(testContext.TestName);
|
||||
File.WriteAllText(fileNameAndText[0], fileNameAndText[1]);
|
||||
File.WriteAllText(fileNameAndText[2], fileNameAndText[3]);
|
||||
}
|
||||
|
||||
[ClassCleanup()]
|
||||
public static void ClassCleanup()
|
||||
{
|
||||
EAFLoggingUnitTesting?.Logger?.LogInformation("Cleanup");
|
||||
EAFLoggingUnitTesting?.Dispose();
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__SP101__txt()
|
||||
{
|
||||
string check = "*.txt";
|
||||
MethodBase methodBase = new StackFrame().GetMethod();
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
@ -0,0 +1,65 @@
|
||||
#if true
|
||||
using Adaptation._Tests.Shared;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Adaptation._Tests.CreateSelfDescription.Production.v2_61_1;
|
||||
|
||||
[TestClass]
|
||||
public class TBI01 : EAFLoggingUnitTesting
|
||||
{
|
||||
|
||||
#pragma warning disable CA2254
|
||||
#pragma warning disable IDE0060
|
||||
|
||||
internal static string DummyRoot { get; private set; }
|
||||
internal static TBI01 EAFLoggingUnitTesting { get; private set; }
|
||||
|
||||
static TBI01() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||
|
||||
public TBI01() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||
{
|
||||
if (EAFLoggingUnitTesting is null)
|
||||
throw new Exception();
|
||||
}
|
||||
|
||||
public TBI01(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||
{
|
||||
}
|
||||
|
||||
[ClassInitialize]
|
||||
public static void ClassInitialize(TestContext testContext)
|
||||
{
|
||||
EAFLoggingUnitTesting ??= new TBI01(testContext);
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(testContext.TestName, " - ClassInitialize"));
|
||||
string[] fileNameAndText = EAFLoggingUnitTesting.AdaptationTesting.GetCSharpText(testContext.TestName);
|
||||
File.WriteAllText(fileNameAndText[0], fileNameAndText[1]);
|
||||
File.WriteAllText(fileNameAndText[2], fileNameAndText[3]);
|
||||
}
|
||||
|
||||
[ClassCleanup()]
|
||||
public static void ClassCleanup()
|
||||
{
|
||||
EAFLoggingUnitTesting?.Logger?.LogInformation("Cleanup");
|
||||
EAFLoggingUnitTesting?.Dispose();
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__TBI01__txt()
|
||||
{
|
||||
string check = "*.txt";
|
||||
MethodBase methodBase = new StackFrame().GetMethod();
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
@ -1,4 +1,4 @@
|
||||
#if true
|
||||
#if v2_60_0
|
||||
using Adaptation.Shared;
|
||||
using Adaptation.Shared.Methods;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
#if true
|
||||
#if v2_60_0
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
namespace Adaptation._Tests.Extract.Production.v2_60_0;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
#if true
|
||||
#if v2_60_0
|
||||
using Adaptation.Shared;
|
||||
using Adaptation.Shared.Methods;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
146
Adaptation/_Tests/Extract/Production/v2.61.1/MET08DDUPSP1TBI.cs
Normal file
146
Adaptation/_Tests/Extract/Production/v2.61.1/MET08DDUPSP1TBI.cs
Normal file
@ -0,0 +1,146 @@
|
||||
#if true
|
||||
using Adaptation.Shared;
|
||||
using Adaptation.Shared.Methods;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Adaptation._Tests.Extract.Production.v2_61_1;
|
||||
|
||||
[TestClass]
|
||||
public class MET08DDUPSP1TBI
|
||||
{
|
||||
|
||||
#pragma warning disable CA2254
|
||||
#pragma warning disable IDE0060
|
||||
|
||||
private static CreateSelfDescription.Production.v2_61_1.MET08DDUPSP1TBI _MET08DDUPSP1TBI;
|
||||
|
||||
[ClassInitialize]
|
||||
public static void ClassInitialize(TestContext testContext)
|
||||
{
|
||||
CreateSelfDescription.Production.v2_61_1.MET08DDUPSP1TBI.ClassInitialize(testContext);
|
||||
_MET08DDUPSP1TBI = CreateSelfDescription.Production.v2_61_1.MET08DDUPSP1TBI.EAFLoggingUnitTesting;
|
||||
}
|
||||
|
||||
private static void NonThrowTryCatch()
|
||||
{
|
||||
try
|
||||
{ throw new Exception(); }
|
||||
catch (Exception) { }
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__MoveMatchingFiles() => _MET08DDUPSP1TBI.Production__v2_61_1__MET08DDUPSP1TBI__MoveMatchingFiles();
|
||||
|
||||
[Ignore]
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__MoveMatchingFiles637955319879801344__Normal()
|
||||
{
|
||||
string check = "*.pdsf";
|
||||
bool validatePDSF = false;
|
||||
MethodBase methodBase = new StackFrame().GetMethod();
|
||||
_MET08DDUPSP1TBI.Production__v2_61_1__MET08DDUPSP1TBI__MoveMatchingFiles();
|
||||
string[] variables = _MET08DDUPSP1TBI.AdaptationTesting.GetVariables(methodBase, check, validatePDSF);
|
||||
IFileRead fileRead = _MET08DDUPSP1TBI.AdaptationTesting.Get(methodBase, sourceFileLocation: variables[2], sourceFileFilter: variables[3], useCyclicalForDescription: false);
|
||||
Logistics logistics = new(fileRead);
|
||||
_ = Shared.AdaptationTesting.ReExtractCompareUpdatePassDirectory(variables, fileRead, logistics, validatePDSF);
|
||||
NonThrowTryCatch();
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__OpenInsightMetrologyViewer() => _MET08DDUPSP1TBI.Production__v2_61_1__MET08DDUPSP1TBI__OpenInsightMetrologyViewer();
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__IQSSi() => _MET08DDUPSP1TBI.Production__v2_61_1__MET08DDUPSP1TBI__IQSSi();
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__OpenInsight() => _MET08DDUPSP1TBI.Production__v2_61_1__MET08DDUPSP1TBI__OpenInsight();
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__OpenInsight638052814829645888__IqsSql()
|
||||
{
|
||||
string check = "*.pdsf";
|
||||
MethodBase methodBase = new StackFrame().GetMethod();
|
||||
_MET08DDUPSP1TBI.Production__v2_61_1__MET08DDUPSP1TBI__OpenInsight();
|
||||
string[] variables = _MET08DDUPSP1TBI.AdaptationTesting.GetVariables(methodBase, check, validatePDSF: false);
|
||||
IFileRead fileRead = _MET08DDUPSP1TBI.AdaptationTesting.Get(methodBase, sourceFileLocation: variables[2], sourceFileFilter: variables[3], useCyclicalForDescription: false);
|
||||
Logistics logistics = new(fileRead);
|
||||
_ = Shared.AdaptationTesting.ReExtractCompareUpdatePassDirectory(variables, fileRead, logistics);
|
||||
NonThrowTryCatch();
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__OpenInsightMetrologyViewerAttachments() => _MET08DDUPSP1TBI.Production__v2_61_1__MET08DDUPSP1TBI__OpenInsightMetrologyViewerAttachments();
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__APC() => _MET08DDUPSP1TBI.Production__v2_61_1__MET08DDUPSP1TBI__APC();
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__SPaCe() => _MET08DDUPSP1TBI.Production__v2_61_1__MET08DDUPSP1TBI__SPaCe();
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__Processed() => _MET08DDUPSP1TBI.Production__v2_61_1__MET08DDUPSP1TBI__Processed();
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__Archive() => _MET08DDUPSP1TBI.Production__v2_61_1__MET08DDUPSP1TBI__Archive();
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__Dummy() => _MET08DDUPSP1TBI.Production__v2_61_1__MET08DDUPSP1TBI__Dummy();
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__TIBCO() => _MET08DDUPSP1TBI.Production__v2_61_1__MET08DDUPSP1TBI__TIBCO();
|
||||
|
||||
[Ignore]
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__MET08DDUPSP1TBI__TIBCO638217888620242702__Normal()
|
||||
{
|
||||
string check = "*.idc";
|
||||
MethodBase methodBase = new StackFrame().GetMethod();
|
||||
_MET08DDUPSP1TBI.Production__v2_61_1__MET08DDUPSP1TBI__TIBCO();
|
||||
string[] variables = _MET08DDUPSP1TBI.AdaptationTesting.GetVariables(methodBase, check, validatePDSF: false);
|
||||
_ = _MET08DDUPSP1TBI.AdaptationTesting.Get(methodBase, sourceFileLocation: variables[2], sourceFileFilter: variables[3], useCyclicalForDescription: false);
|
||||
for (int i = 0; i < int.MaxValue; i++)
|
||||
System.Threading.Thread.Sleep(500);
|
||||
NonThrowTryCatch();
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
27
Adaptation/_Tests/Extract/Production/v2.61.1/SP101-EQPT.cs
Normal file
27
Adaptation/_Tests/Extract/Production/v2.61.1/SP101-EQPT.cs
Normal file
@ -0,0 +1,27 @@
|
||||
#if true
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
namespace Adaptation._Tests.Extract.Production.v2_61_1;
|
||||
|
||||
[TestClass]
|
||||
public class SP101_EQPT
|
||||
{
|
||||
|
||||
#pragma warning disable CA2254
|
||||
#pragma warning disable IDE0060
|
||||
|
||||
private static CreateSelfDescription.Production.v2_61_1.SP101_EQPT _SP101_EQPT;
|
||||
|
||||
[ClassInitialize]
|
||||
public static void ClassInitialize(TestContext testContext)
|
||||
{
|
||||
CreateSelfDescription.Production.v2_61_1.SP101_EQPT.ClassInitialize(testContext);
|
||||
_SP101_EQPT = CreateSelfDescription.Production.v2_61_1.SP101_EQPT.EAFLoggingUnitTesting;
|
||||
}
|
||||
|
||||
[Ignore]
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__SP101_EQPT__MoveAllFiles() => _SP101_EQPT.Production__v2_61_1__SP101_EQPT__MoveAllFiles();
|
||||
|
||||
}
|
||||
#endif
|
||||
58
Adaptation/_Tests/Extract/Production/v2.61.1/SP101.cs
Normal file
58
Adaptation/_Tests/Extract/Production/v2.61.1/SP101.cs
Normal file
@ -0,0 +1,58 @@
|
||||
#if true
|
||||
using Adaptation.Shared;
|
||||
using Adaptation.Shared.Methods;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Adaptation._Tests.Extract.Production.v2_61_1;
|
||||
|
||||
[TestClass]
|
||||
public class SP101
|
||||
{
|
||||
|
||||
#pragma warning disable CA2254
|
||||
#pragma warning disable IDE0060
|
||||
|
||||
private static CreateSelfDescription.Production.v2_61_1.SP101 _SP101;
|
||||
|
||||
[ClassInitialize]
|
||||
public static void ClassInitialize(TestContext testContext)
|
||||
{
|
||||
CreateSelfDescription.Production.v2_61_1.SP101.ClassInitialize(testContext);
|
||||
_SP101 = CreateSelfDescription.Production.v2_61_1.SP101.EAFLoggingUnitTesting;
|
||||
}
|
||||
|
||||
private static void NonThrowTryCatch()
|
||||
{
|
||||
try
|
||||
{ throw new Exception(); }
|
||||
catch (Exception) { }
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__SP101__txt() => _SP101.Production__v2_61_1__SP101__txt();
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__SP101__txt637955319879801344__Normal()
|
||||
{
|
||||
string check = "*.txt";
|
||||
bool validatePDSF = false;
|
||||
_SP101.Production__v2_61_1__SP101__txt();
|
||||
MethodBase methodBase = new StackFrame().GetMethod();
|
||||
string[] variables = _SP101.AdaptationTesting.GetVariables(methodBase, check, validatePDSF);
|
||||
IFileRead fileRead = _SP101.AdaptationTesting.Get(methodBase, sourceFileLocation: variables[2], sourceFileFilter: variables[3], useCyclicalForDescription: false);
|
||||
Logistics logistics = new(fileRead);
|
||||
_ = Shared.AdaptationTesting.ReExtractCompareUpdatePassDirectory(variables, fileRead, logistics, validatePDSF);
|
||||
NonThrowTryCatch();
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
58
Adaptation/_Tests/Extract/Production/v2.61.1/TBI01.cs
Normal file
58
Adaptation/_Tests/Extract/Production/v2.61.1/TBI01.cs
Normal file
@ -0,0 +1,58 @@
|
||||
#if true
|
||||
using Adaptation.Shared;
|
||||
using Adaptation.Shared.Methods;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Adaptation._Tests.Extract.Production.v2_61_1;
|
||||
|
||||
[TestClass]
|
||||
public class TBI01
|
||||
{
|
||||
|
||||
#pragma warning disable CA2254
|
||||
#pragma warning disable IDE0060
|
||||
|
||||
private static CreateSelfDescription.Production.v2_61_1.TBI01 _TBI01;
|
||||
|
||||
[ClassInitialize]
|
||||
public static void ClassInitialize(TestContext testContext)
|
||||
{
|
||||
CreateSelfDescription.Production.v2_61_1.TBI01.ClassInitialize(testContext);
|
||||
_TBI01 = CreateSelfDescription.Production.v2_61_1.TBI01.EAFLoggingUnitTesting;
|
||||
}
|
||||
|
||||
private static void NonThrowTryCatch()
|
||||
{
|
||||
try
|
||||
{ throw new Exception(); }
|
||||
catch (Exception) { }
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__TBI01__txt() => _TBI01.Production__v2_61_1__TBI01__txt();
|
||||
|
||||
#if DEBUG
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
public void Production__v2_61_1__TBI01__txt638997515742136250__Normal()
|
||||
{
|
||||
string check = "*.txt";
|
||||
bool validatePDSF = false;
|
||||
_TBI01.Production__v2_61_1__TBI01__txt();
|
||||
MethodBase methodBase = new StackFrame().GetMethod();
|
||||
string[] variables = _TBI01.AdaptationTesting.GetVariables(methodBase, check, validatePDSF);
|
||||
IFileRead fileRead = _TBI01.AdaptationTesting.Get(methodBase, sourceFileLocation: variables[2], sourceFileFilter: variables[3], useCyclicalForDescription: false);
|
||||
Logistics logistics = new(fileRead);
|
||||
_ = Shared.AdaptationTesting.ReExtractCompareUpdatePassDirectory(variables, fileRead, logistics, validatePDSF);
|
||||
NonThrowTryCatch();
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
@ -193,7 +193,12 @@ public class AdaptationTesting : ISMTP
|
||||
segments = withActualCICN.Split(new string[] { ticks }, StringSplitOptions.None);
|
||||
dummyDirectory = Path.Combine(dummyRoot, cellInstanceName, ticks, string.Join(null, segments));
|
||||
if (!Directory.Exists(dummyDirectory))
|
||||
{
|
||||
_ = Directory.CreateDirectory(dummyDirectory);
|
||||
try
|
||||
{ Directory.SetLastWriteTime(Path.Combine(dummyRoot, cellInstanceName), DateTime.Now); }
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
if (string.IsNullOrEmpty(ticks))
|
||||
{
|
||||
@ -996,22 +1001,22 @@ public class AdaptationTesting : ISMTP
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.ErrorTargetFileLocation))
|
||||
if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.ErrorTargetFileLocation) && !fileConnectorConfigurationTuple.Item2.ErrorTargetFileLocation.Contains("10."))
|
||||
{
|
||||
if (!Directory.Exists(fileConnectorConfigurationTuple.Item2.ErrorTargetFileLocation))
|
||||
_ = Directory.CreateDirectory(fileConnectorConfigurationTuple.Item2.ErrorTargetFileLocation);
|
||||
}
|
||||
if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.SourceFileLocation))
|
||||
if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.SourceFileLocation) && !fileConnectorConfigurationTuple.Item2.SourceFileLocation.Contains("10."))
|
||||
{
|
||||
if (!Directory.Exists(fileConnectorConfigurationTuple.Item2.SourceFileLocation))
|
||||
_ = Directory.CreateDirectory(fileConnectorConfigurationTuple.Item2.SourceFileLocation);
|
||||
}
|
||||
if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.TargetFileLocation))
|
||||
if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.TargetFileLocation) && !fileConnectorConfigurationTuple.Item2.TargetFileLocation.Contains("10."))
|
||||
{
|
||||
if (!Directory.Exists(fileConnectorConfigurationTuple.Item2.TargetFileLocation))
|
||||
_ = Directory.CreateDirectory(fileConnectorConfigurationTuple.Item2.TargetFileLocation);
|
||||
}
|
||||
if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.AlternateTargetFolder))
|
||||
if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.AlternateTargetFolder) && !fileConnectorConfigurationTuple.Item2.AlternateTargetFolder.Contains("10."))
|
||||
{
|
||||
if (!Directory.Exists(fileConnectorConfigurationTuple.Item2.AlternateTargetFolder.Split('|')[0]))
|
||||
_ = Directory.CreateDirectory(fileConnectorConfigurationTuple.Item2.AlternateTargetFolder.Split('|')[0]);
|
||||
|
||||
@ -44,7 +44,7 @@ public class Job : LoggingUnitTesting, IDisposable
|
||||
catch (Exception) { }
|
||||
}
|
||||
|
||||
#if !Always
|
||||
#if Always
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
@ -57,41 +57,42 @@ public class Job : LoggingUnitTesting, IDisposable
|
||||
DateTime loadSignatureDateTimeFilter = new(2023, 05, 01);
|
||||
string metrologyFileShare = FileHandlers.TIBCO.FileRead.MetrologyFileShare;
|
||||
string barcodeHostFileShare = FileHandlers.TIBCO.FileRead.BarcodeHostFileShare;
|
||||
string iqsSQLConnectionString = FileHandlers.TIBCO.FileRead.IQSConnectionString;
|
||||
string lsl2SQLConnectionString = FileHandlers.TIBCO.FileRead.LSL2SQLConnectionString;
|
||||
HttpClient httpClient = new() { BaseAddress = new("http://messa020ec.infineon.com/api/oiWizard") };
|
||||
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, enteredDateTimeFilter, loadSignatureDateTimeFilter);
|
||||
job = new(iqsSQLConnectionString, 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, enteredDateTimeFilter, loadSignatureDateTimeFilter);
|
||||
job = new(iqsSQLConnectionString, 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, enteredDateTimeFilter, loadSignatureDateTimeFilter);
|
||||
job = new(iqsSQLConnectionString, 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, enteredDateTimeFilter, loadSignatureDateTimeFilter);
|
||||
job = new(iqsSQLConnectionString, 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, enteredDateTimeFilter, loadSignatureDateTimeFilter);
|
||||
job = new(iqsSQLConnectionString, 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");
|
||||
@ -99,7 +100,7 @@ public class Job : LoggingUnitTesting, IDisposable
|
||||
mid = """
|
||||
{"Area": "Si", "EquipmentType": "MET08RESIMAPCDE", "MesEntity": "CDE5", "Sequence": "638163023363575829", "MID": "B48", "Recipe": "lsl_6in "}
|
||||
""";
|
||||
job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter);
|
||||
job = new(iqsSQLConnectionString, 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");
|
||||
@ -118,13 +119,14 @@ public class Job : LoggingUnitTesting, IDisposable
|
||||
DateTime loadSignatureDateTimeFilter = new(2023, 05, 01);
|
||||
string metrologyFileShare = FileHandlers.TIBCO.FileRead.MetrologyFileShare;
|
||||
string barcodeHostFileShare = FileHandlers.TIBCO.FileRead.BarcodeHostFileShare;
|
||||
string iqsSQLConnectionString = FileHandlers.TIBCO.FileRead.IQSConnectionString;
|
||||
string lsl2SQLConnectionString = FileHandlers.TIBCO.FileRead.LSL2SQLConnectionString;
|
||||
HttpClient httpClient = new() { BaseAddress = new("http://messa020ec.infineon.com/api/oiWizard") };
|
||||
LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||
HttpClient httpClient = new() { BaseAddress = new(FileHandlers.TIBCO.FileRead.OpenInsightApplicationProgrammingInterface) };
|
||||
string mid = """
|
||||
{"Area": "Si", "EquipmentType": "MET08THFTIRQS408M", "MesEntity": "BIORAD2", "Sequence": "123456789", "MID": "37--", "Recipe": "Recipe"}
|
||||
""";
|
||||
job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter);
|
||||
job = new(iqsSQLConnectionString, 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");
|
||||
@ -132,7 +134,7 @@ public class Job : LoggingUnitTesting, IDisposable
|
||||
NonThrowTryCatch();
|
||||
}
|
||||
|
||||
#if !Always
|
||||
#if Always
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
@ -144,13 +146,14 @@ public class Job : LoggingUnitTesting, IDisposable
|
||||
DateTime loadSignatureDateTimeFilter = new(2023, 05, 01);
|
||||
string metrologyFileShare = FileHandlers.TIBCO.FileRead.MetrologyFileShare;
|
||||
string barcodeHostFileShare = FileHandlers.TIBCO.FileRead.BarcodeHostFileShare;
|
||||
string iqsSQLConnectionString = FileHandlers.TIBCO.FileRead.IQSConnectionString;
|
||||
string lsl2SQLConnectionString = FileHandlers.TIBCO.FileRead.LSL2SQLConnectionString;
|
||||
HttpClient httpClient = new() { BaseAddress = new("http://messa020ec.infineon.com/api/oiWizard") };
|
||||
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, enteredDateTimeFilter, loadSignatureDateTimeFilter);
|
||||
job = new(iqsSQLConnectionString, 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));
|
||||
@ -170,13 +173,14 @@ public class Job : LoggingUnitTesting, IDisposable
|
||||
DateTime loadSignatureDateTimeFilter = new(2023, 05, 01);
|
||||
string metrologyFileShare = FileHandlers.TIBCO.FileRead.MetrologyFileShare;
|
||||
string barcodeHostFileShare = FileHandlers.TIBCO.FileRead.BarcodeHostFileShare;
|
||||
string iqsSQLConnectionString = FileHandlers.TIBCO.FileRead.IQSConnectionString;
|
||||
string lsl2SQLConnectionString = FileHandlers.TIBCO.FileRead.LSL2SQLConnectionString;
|
||||
HttpClient httpClient = new() { BaseAddress = new("http://messa020ec.infineon.com/api/oiWizard") };
|
||||
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, enteredDateTimeFilter, loadSignatureDateTimeFilter);
|
||||
job = new(iqsSQLConnectionString, 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));
|
||||
@ -184,7 +188,7 @@ public class Job : LoggingUnitTesting, IDisposable
|
||||
NonThrowTryCatch();
|
||||
}
|
||||
|
||||
#if !Always
|
||||
#if Always
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
@ -196,13 +200,14 @@ public class Job : LoggingUnitTesting, IDisposable
|
||||
DateTime loadSignatureDateTimeFilter = new(2023, 05, 01);
|
||||
string metrologyFileShare = FileHandlers.TIBCO.FileRead.MetrologyFileShare;
|
||||
string barcodeHostFileShare = FileHandlers.TIBCO.FileRead.BarcodeHostFileShare;
|
||||
string iqsSQLConnectionString = FileHandlers.TIBCO.FileRead.IQSConnectionString;
|
||||
string lsl2SQLConnectionString = FileHandlers.TIBCO.FileRead.LSL2SQLConnectionString;
|
||||
HttpClient httpClient = new() { BaseAddress = new("http://messa020ec.infineon.com/api/oiWizard") };
|
||||
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, enteredDateTimeFilter, loadSignatureDateTimeFilter);
|
||||
job = new(iqsSQLConnectionString, 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));
|
||||
@ -211,7 +216,7 @@ public class Job : LoggingUnitTesting, IDisposable
|
||||
NonThrowTryCatch();
|
||||
}
|
||||
|
||||
#if !Always
|
||||
#if Always
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
@ -223,13 +228,14 @@ public class Job : LoggingUnitTesting, IDisposable
|
||||
DateTime loadSignatureDateTimeFilter = new(2023, 05, 01);
|
||||
string metrologyFileShare = FileHandlers.TIBCO.FileRead.MetrologyFileShare;
|
||||
string barcodeHostFileShare = FileHandlers.TIBCO.FileRead.BarcodeHostFileShare;
|
||||
string iqsSQLConnectionString = FileHandlers.TIBCO.FileRead.IQSConnectionString;
|
||||
string lsl2SQLConnectionString = FileHandlers.TIBCO.FileRead.LSL2SQLConnectionString;
|
||||
HttpClient httpClient = new() { BaseAddress = new("http://messa020ec.infineon.com/api/oiWizard") };
|
||||
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": "638756365880000000", "MID": "38-660275-5095.1", "Recipe": "IRC6mm"}
|
||||
""";
|
||||
job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter);
|
||||
job = new(iqsSQLConnectionString, 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));
|
||||
@ -238,7 +244,7 @@ public class Job : LoggingUnitTesting, IDisposable
|
||||
NonThrowTryCatch();
|
||||
}
|
||||
|
||||
#if !Always
|
||||
#if Always
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
@ -250,13 +256,14 @@ public class Job : LoggingUnitTesting, IDisposable
|
||||
DateTime loadSignatureDateTimeFilter = new(2023, 05, 01);
|
||||
string metrologyFileShare = FileHandlers.TIBCO.FileRead.MetrologyFileShare;
|
||||
string barcodeHostFileShare = FileHandlers.TIBCO.FileRead.BarcodeHostFileShare;
|
||||
string iqsSQLConnectionString = FileHandlers.TIBCO.FileRead.IQSConnectionString;
|
||||
string lsl2SQLConnectionString = FileHandlers.TIBCO.FileRead.LSL2SQLConnectionString;
|
||||
HttpClient httpClient = new() { BaseAddress = new("http://messa020ec.infineon.com/api/oiWizard") };
|
||||
LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||
HttpClient httpClient = new() { BaseAddress = new(FileHandlers.TIBCO.FileRead.OpenInsightApplicationProgrammingInterface) };
|
||||
string mid = """
|
||||
{"Area": "Si", "EquipmentType": "MET08THFTIRQS408M", "MesEntity": "BIORAD2", "Sequence": "638757112479659597", "MID": "173308.1.5", "Recipe": "6inTHICK"}
|
||||
""";
|
||||
job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter);
|
||||
job = new(iqsSQLConnectionString, 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));
|
||||
@ -265,7 +272,7 @@ public class Job : LoggingUnitTesting, IDisposable
|
||||
NonThrowTryCatch();
|
||||
}
|
||||
|
||||
#if !Always
|
||||
#if Always
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
@ -277,13 +284,14 @@ public class Job : LoggingUnitTesting, IDisposable
|
||||
DateTime loadSignatureDateTimeFilter = new(2023, 05, 01);
|
||||
string metrologyFileShare = FileHandlers.TIBCO.FileRead.MetrologyFileShare;
|
||||
string barcodeHostFileShare = FileHandlers.TIBCO.FileRead.BarcodeHostFileShare;
|
||||
string iqsSQLConnectionString = FileHandlers.TIBCO.FileRead.IQSConnectionString;
|
||||
string lsl2SQLConnectionString = FileHandlers.TIBCO.FileRead.LSL2SQLConnectionString;
|
||||
HttpClient httpClient = new() { BaseAddress = new("http://messa020ec.infineon.com/api/oiWizard") };
|
||||
LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||
HttpClient httpClient = new() { BaseAddress = new(FileHandlers.TIBCO.FileRead.OpenInsightApplicationProgrammingInterface) };
|
||||
string mid = """
|
||||
{"Area": "Si", "EquipmentType": "MET08DDUPSFS6420", "MesEntity": "TENCOR1", "Sequence": "638765945581765554", "MID": "1T661282", "Recipe": "8IN_THIN ROTR"}
|
||||
""";
|
||||
job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter);
|
||||
job = new(iqsSQLConnectionString, 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));
|
||||
@ -292,7 +300,7 @@ public class Job : LoggingUnitTesting, IDisposable
|
||||
NonThrowTryCatch();
|
||||
}
|
||||
|
||||
#if !Always
|
||||
#if Always
|
||||
[Ignore]
|
||||
#endif
|
||||
[TestMethod]
|
||||
@ -304,13 +312,14 @@ public class Job : LoggingUnitTesting, IDisposable
|
||||
DateTime loadSignatureDateTimeFilter = new(2023, 05, 01);
|
||||
string metrologyFileShare = FileHandlers.TIBCO.FileRead.MetrologyFileShare;
|
||||
string barcodeHostFileShare = FileHandlers.TIBCO.FileRead.BarcodeHostFileShare;
|
||||
string iqsSQLConnectionString = FileHandlers.TIBCO.FileRead.IQSConnectionString;
|
||||
string lsl2SQLConnectionString = FileHandlers.TIBCO.FileRead.LSL2SQLConnectionString;
|
||||
HttpClient httpClient = new() { BaseAddress = new("http://messa020ec.infineon.com/api/oiWizard") };
|
||||
LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||
HttpClient httpClient = new() { BaseAddress = new(FileHandlers.TIBCO.FileRead.OpenInsightApplicationProgrammingInterface) };
|
||||
string mid = """
|
||||
{"Area": "Si", "EquipmentType": "MET08DDUPSFS6420", "MesEntity": "TENCOR1", "Sequence": "638765945581765554", "MID": "AK1PL2", "Recipe": "8INCLEAN"}
|
||||
""";
|
||||
job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter);
|
||||
job = new(iqsSQLConnectionString, 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));
|
||||
@ -328,13 +337,14 @@ public class Job : LoggingUnitTesting, IDisposable
|
||||
DateTime loadSignatureDateTimeFilter = new(2023, 05, 01);
|
||||
string metrologyFileShare = FileHandlers.TIBCO.FileRead.MetrologyFileShare;
|
||||
string barcodeHostFileShare = FileHandlers.TIBCO.FileRead.BarcodeHostFileShare;
|
||||
string iqsSQLConnectionString = FileHandlers.TIBCO.FileRead.IQSConnectionString;
|
||||
string lsl2SQLConnectionString = FileHandlers.TIBCO.FileRead.LSL2SQLConnectionString;
|
||||
HttpClient httpClient = new() { BaseAddress = new("http://messa020ec.infineon.com/api/oiWizard") };
|
||||
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 "}
|
||||
{"Area": "Si", "EquipmentType": "MET08RESIMAPCDE", "MesEntity": "CDE5", "Sequence": "638163023363575829", "MID": "1T1014894", "Recipe": "lsl_6in "}
|
||||
""";
|
||||
job = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, httpClient, mid, enteredDateTimeFilter, loadSignatureDateTimeFilter);
|
||||
job = new(iqsSQLConnectionString, 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");
|
||||
|
||||
@ -64,7 +64,7 @@ public class MET08DDUPSP1TBI : LoggingUnitTesting, IDisposable
|
||||
StringBuilder results = new();
|
||||
(string cellInstanceName, string cellInstanceVersionName)[] collection = new (string, string)[]
|
||||
{
|
||||
new("MET08DDUPSP1TBI", "v2.60.0"),
|
||||
new("MET08DDUPSP1TBI", "v2.61.1"),
|
||||
};
|
||||
string production = "http://messa08ec.infineon.com:9003/CellInstanceServiceV2";
|
||||
Shared.PasteSpecialXml.EAF.XML.API.CellInstance.CellInstanceVersion cellInstanceVersion;
|
||||
|
||||
115
Adaptation/_Tests/Static/recipes-and-patterns.js
Normal file
115
Adaptation/_Tests/Static/recipes-and-patterns.js
Normal file
@ -0,0 +1,115 @@
|
||||
// Recipe 1 = Matched
|
||||
// recipes-and-patterns.js under IndexOf
|
||||
// RecipesAndPatternsMatch
|
||||
// ($('dcp.SP101/csv/Index', 0) + 1) == $('dcp.SP101/csv/Count', 0)
|
||||
// getValue('TENCOR', $('dcp.SP101/csv/Count', 0), $('dcp.SP101/csv/Session', ''), 'pattern', getContextData('2', 'cds.NULL_DATA', ''));
|
||||
|
||||
function getValue(tool, patternSize, recipe, pattern, json) {
|
||||
let result;
|
||||
if (tool == undefined || tool.length === 0 || patternSize == undefined || patternSize.length === 0 || recipe == undefined || recipe.length === 0 || pattern == undefined || pattern.length === 0 || json == undefined || json.length === 0)
|
||||
result = 'A) Invalid input!';
|
||||
else {
|
||||
let parsed;
|
||||
try {
|
||||
parsed = JSON.parse(json);
|
||||
} catch (error) {
|
||||
parsed = null;
|
||||
}
|
||||
if (parsed == null)
|
||||
result = 'B) Invalid input!';
|
||||
else if (parsed.rds == undefined || parsed.rds.prodSpec == undefined || parsed.rds.prodSpec.recipesAndPatterns == undefined)
|
||||
result = 'C) No Spec!';
|
||||
else {
|
||||
let toolMatches = [];
|
||||
for (let index = 0; index < parsed.rds.prodSpec.recipesAndPatterns.length; index++) {
|
||||
if (parsed.rds.prodSpec.recipesAndPatterns[index].tool === tool) {
|
||||
toolMatches.push(parsed.rds.prodSpec.recipesAndPatterns[index]);
|
||||
}
|
||||
}
|
||||
if (toolMatches == null || toolMatches.length === 0)
|
||||
result = 'Tool [' + tool + '] not found in OI API results!';
|
||||
else {
|
||||
let debug = '';
|
||||
let matches = 0;
|
||||
for (let index = 0; index < toolMatches.length; index++) {
|
||||
debug += 'patternSize: ' + toolMatches[index].patternSize +
|
||||
'; recipe: ' + toolMatches[index].recipe +
|
||||
'; pattern: ' + toolMatches[index].pattern + ';~';
|
||||
if (toolMatches[index].recipe.toLowerCase() == recipe.toLowerCase()) {
|
||||
matches++;
|
||||
}
|
||||
}
|
||||
if (matches > 0)
|
||||
result = '1';
|
||||
else
|
||||
result = 'Value not matched~Run~patternSize: ' + patternSize + '; recipe: ' + recipe + '; pattern: ' + pattern + ';~API~' + debug;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
getValue('TENCOR', 0, 'AS_IFX100_ROTR', 'pattern', '{"rds":{"prodSpec":{"recipesAndPatterns":[]}}}');
|
||||
|
||||
let json;
|
||||
let tool;
|
||||
let recipe;
|
||||
let pattern;
|
||||
let patternSize;
|
||||
|
||||
tool = 'TENCOR'
|
||||
patternSize = 9;
|
||||
recipe = 'lr8in.SET';
|
||||
pattern = '4_108IN.PAT';
|
||||
json = '{"rds":{"prodSpec":{"recipesAndPatterns":[]}}}';
|
||||
const testA = getValue(tool, patternSize, recipe, pattern, json);
|
||||
if (testA !== '1')
|
||||
throw 'Test A failed: ' + testA;
|
||||
tool = null;
|
||||
const testB = getValue(tool, patternSize, recipe, pattern, json);
|
||||
if (testB !== 'A) Invalid input!')
|
||||
throw 'Test L failed: ' + testB;
|
||||
tool = '';
|
||||
const testC = getValue(tool, patternSize, recipe, pattern, json);
|
||||
if (testC !== 'A) Invalid input!')
|
||||
throw 'Test M failed: ' + testC;
|
||||
patternSize = null;
|
||||
const testD = getValue(tool, patternSize, recipe, pattern, json);
|
||||
if (testD !== 'A) Invalid input!')
|
||||
throw 'Test J failed: ' + testD;
|
||||
patternSize = '';
|
||||
const testE = getValue(tool, patternSize, recipe, pattern, json);
|
||||
if (testE !== 'A) Invalid input!')
|
||||
throw 'Test K failed: ' + testE;
|
||||
recipe = null;
|
||||
const testF = getValue(tool, patternSize, recipe, pattern, json);
|
||||
if (testF !== 'A) Invalid input!')
|
||||
throw 'Test F failed: ' + testF;
|
||||
recipe = '';
|
||||
const testG = getValue(tool, patternSize, recipe, pattern, json);
|
||||
if (testG !== 'A) Invalid input!')
|
||||
throw 'Test G failed: ' + testG;
|
||||
pattern = null;
|
||||
const testH = getValue(tool, patternSize, recipe, pattern, json);
|
||||
if (testH !== 'A) Invalid input!')
|
||||
throw 'Test H failed: ' + testH;
|
||||
pattern = '';
|
||||
const testI = getValue(tool, patternSize, recipe, pattern, json);
|
||||
if (testI !== 'A) Invalid input!')
|
||||
throw 'Test I failed: ' + testI;
|
||||
json = '';
|
||||
const testK = getValue(tool, patternSize, recipe, pattern, json);
|
||||
if (testK !== 'A) Invalid input!')
|
||||
throw 'Test B failed: ' + testK;
|
||||
json = 'invalid';
|
||||
const testL = getValue(tool, patternSize, recipe, pattern, json);
|
||||
if (testL !== 'B) Invalid input!')
|
||||
throw 'Test C failed: ' + testL;
|
||||
json = '{"rds":{}}';
|
||||
const testM = getValue(tool, patternSize, recipe, pattern, json);
|
||||
if (testM !== 'C) No Spec!')
|
||||
throw 'Test D failed: ' + testM;
|
||||
json = '{"rds":{"prodSpec":{"recipesAndPatterns":[]}}}';
|
||||
const testN = getValue(tool, patternSize, recipe, pattern, json);
|
||||
if (testN !== 'Tool [TENCOR] not found in OI API results!')
|
||||
throw 'Test E failed: ' + testN;
|
||||
@ -203,8 +203,8 @@ public class TXT : LoggingUnitTesting, IDisposable
|
||||
StringBuilder results = new();
|
||||
(string cellInstanceName, string cellInstanceVersionName)[] collection = new (string, string)[]
|
||||
{
|
||||
new("SP101", "v2.60.0"),
|
||||
new("SP101-EQPT", "v2.60.0"),
|
||||
new("SP101", "v2.61.1"),
|
||||
new("SP101-EQPT", "v2.61.1"),
|
||||
};
|
||||
string production = "http://messa08ec.infineon.com:9003/CellInstanceServiceV2";
|
||||
Shared.PasteSpecialXml.EAF.XML.API.CellInstance.CellInstanceVersion cellInstanceVersion;
|
||||
|
||||
@ -108,8 +108,9 @@
|
||||
<Compile Include="Adaptation\FileHandlers\CellInstanceConnectionName.cs" />
|
||||
<Compile Include="Adaptation\FileHandlers\Dummy\FileRead.cs" />
|
||||
<Compile Include="Adaptation\FileHandlers\IQSSi\FileRead.cs" />
|
||||
<Compile Include="Adaptation\FileHandlers\MoveAllFiles\FileRead.cs" />
|
||||
<Compile Include="Adaptation\FileHandlers\MoveMapFiles\FileRead.cs" />
|
||||
<Compile Include="Adaptation\FileHandlers\MoveMatchingFiles\FileRead.cs" />
|
||||
<Compile Include="Adaptation\FileHandlers\MoveTextFiles\FileRead.cs" />
|
||||
<Compile Include="Adaptation\FileHandlers\OpenInsight\FileRead.cs" />
|
||||
<Compile Include="Adaptation\FileHandlers\OpenInsight\FromIQS.cs" />
|
||||
<Compile Include="Adaptation\FileHandlers\OpenInsight\Root.cs" />
|
||||
@ -196,13 +197,13 @@
|
||||
<Version>7.2.4630.5</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Infineon.EAF.Runtime">
|
||||
<Version>2.60.0</Version>
|
||||
<Version>2.61.1</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Pdfbox">
|
||||
<Version>1.1.1</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="System.Text.Json">
|
||||
<Version>8.0.5</Version>
|
||||
<Version>8.0.3</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
|
||||
@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("2.60.0.0")]
|
||||
[assembly: AssemblyFileVersion("2.60.0.0")]
|
||||
[assembly: AssemblyVersion("2.61.1.0")]
|
||||
[assembly: AssemblyFileVersion("2.61.1.0")]
|
||||
|
||||
Reference in New Issue
Block a user