Delete SelfHost PackageReference
cellInstanceVersion.EdaConnection.PortNumber Convert before throwing the error CA1862 and GetWeekOfYear for WritePDSF Removed Open Insight API IFX Directory from Save dotnet_diagnostic Delete File if Exists yml ec fix net8.0
This commit is contained in:
@ -128,7 +128,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
string jobIdDirectory = Path.Combine(_JobIdParentDirectory, _Logistics.JobID);
|
||||
if (!Directory.Exists(jobIdDirectory))
|
||||
_ = Directory.CreateDirectory(jobIdDirectory);
|
||||
if (!Directory.GetDirectories(jobIdDirectory).Any())
|
||||
if (Directory.GetDirectories(jobIdDirectory).Length == 0)
|
||||
File.Copy(reportFullPath, Path.Combine(destinationArchiveDirectory, Path.GetFileName(reportFullPath)));
|
||||
else
|
||||
{
|
||||
|
@ -157,7 +157,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
if (!Directory.Exists(inProcessDirectory))
|
||||
_ = Directory.CreateDirectory(inProcessDirectory);
|
||||
files = Directory.GetFiles(inProcessDirectory, "*", SearchOption.AllDirectories);
|
||||
if (files.Any())
|
||||
if (files.Length != 0)
|
||||
{
|
||||
if (files.Length > 250)
|
||||
throw new Exception("Safety net!");
|
||||
|
@ -111,7 +111,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
|
||||
private void SaveIQSFile(string reportFullPath, DateTime dateTime, List<txt.Description> descriptions, Test[] tests)
|
||||
{
|
||||
if (!tests.Any())
|
||||
if (tests.Length == 0)
|
||||
_LastLines = string.Empty;
|
||||
else
|
||||
{
|
||||
|
@ -1,31 +0,0 @@
|
||||
#if NETFRAMEWORK && NET48
|
||||
using System.Web.Http;
|
||||
using System.Web.Http.Results;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.ApiController;
|
||||
|
||||
[Route("api/[controller]")]
|
||||
public class BarcodeController : System.Web.Http.ApiController
|
||||
{
|
||||
|
||||
#nullable enable
|
||||
|
||||
#pragma warning disable CA1822
|
||||
public OkNegotiatedContentResult<string> Get()
|
||||
#pragma warning restore CA1822
|
||||
{
|
||||
string result = "record";
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
[Route("{id}")]
|
||||
#pragma warning disable CA1822
|
||||
public JsonResult<PostReplay?> Post(string id)
|
||||
#pragma warning restore CA1822
|
||||
{
|
||||
PostReplay? postReplay = BarcodeHelper.Post(id, Request.Content);
|
||||
return Json(postReplay);
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
@ -1,120 +0,0 @@
|
||||
using Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
|
||||
using Adaptation.FileHandlers.TIBCO.Transport;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Net.Http;
|
||||
using System.Text.Json;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.ApiController;
|
||||
|
||||
public class BarcodeHelper
|
||||
{
|
||||
|
||||
#nullable enable
|
||||
|
||||
private static string? GetJson(HttpContent? httpContent)
|
||||
{
|
||||
string? result;
|
||||
if (httpContent is null)
|
||||
result = null;
|
||||
else
|
||||
{
|
||||
Task<string> task = httpContent.ReadAsStringAsync();
|
||||
task.Wait();
|
||||
result = task.Result;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private static void Write(string barcodeHostFileShare, string cellInstanceConnectionName, Notification notification)
|
||||
{
|
||||
DateTime dateTime = DateTime.Now;
|
||||
Calendar calendar = new CultureInfo("en-US").Calendar;
|
||||
string weekOfYear = $"{dateTime:yyyy}_Week_{calendar.GetWeekOfYear(dateTime, CalendarWeekRule.FirstDay, DayOfWeek.Sunday):00}";
|
||||
string directory = Path.Combine(barcodeHostFileShare, weekOfYear, dateTime.ToString("yyyy-MM-dd_HH"));
|
||||
if (!Directory.Exists(directory))
|
||||
_ = Directory.CreateDirectory(directory);
|
||||
File.WriteAllText(Path.Combine(directory, $"{cellInstanceConnectionName}.csv"), notification.LastScanServiceResultValue);
|
||||
}
|
||||
|
||||
private static Job GetJob(string lsl2SQLConnectionString, string metrologyFileShare, string barcodeHostFileShare, string id, Notification notification)
|
||||
{
|
||||
Job result;
|
||||
string lastScan = notification.LastScanServiceResultValue.Length < 3 || notification.LastScanServiceResultValue[1] is not 't' and not 'T' || notification.LastScanServiceResultValue[0] != '1' ? notification.LastScanServiceResultValue : notification.LastScanServiceResultValue.Substring(2);
|
||||
string json = string.Concat("{\"Area\": \"Si\", \"EquipmentType\": \"MET08THFTIRQS408M\", \"MesEntity\": \"", id, "\", \"Sequence\": \"", notification.KeyPressEvent.DateTime.Ticks, "\", \"MID\": \"-", lastScan, "-\", \"Recipe\": \"Recipe\"}");
|
||||
result = new(lsl2SQLConnectionString, metrologyFileShare, barcodeHostFileShare, json);
|
||||
return result;
|
||||
}
|
||||
|
||||
private static Root? GetRoot(string rds)
|
||||
{
|
||||
HttpClient httpClient = new();
|
||||
string url = $"{FileRead.OpenInsightApplicationProgrammingInterface}/materials/rds/{rds}";
|
||||
string httpClientResult = httpClient.GetStringAsync(url).Result;
|
||||
Root? root = JsonSerializer.Deserialize<Root>(httpClientResult);
|
||||
httpClient.Dispose();
|
||||
return root;
|
||||
}
|
||||
|
||||
private static void SetQaMetTests(string toolClass, Root root, Dictionary<string, List<QaMetTest>> qaMetTests)
|
||||
{
|
||||
List<QaMetTest>? collection;
|
||||
foreach (PrsStage prsStage in root.Rds.ProdSpec.PrsStages)
|
||||
{
|
||||
if (prsStage.QaMetTests is null)
|
||||
continue;
|
||||
foreach (QaMetTest qaMetTest in prsStage.QaMetTests)
|
||||
{
|
||||
if (qaMetTest.ToolClass != toolClass)
|
||||
continue;
|
||||
if (!qaMetTests.TryGetValue(prsStage.Stage, out collection))
|
||||
{
|
||||
qaMetTests.Add(prsStage.Stage, new());
|
||||
if (!qaMetTests.TryGetValue(prsStage.Stage, out collection))
|
||||
throw new Exception();
|
||||
}
|
||||
collection.Add(qaMetTest);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal static PostReplay? Post(string id, HttpContent? httpContent)
|
||||
{
|
||||
PostReplay? result;
|
||||
string? json = GetJson(httpContent);
|
||||
if (json is null)
|
||||
result = null;
|
||||
else
|
||||
{
|
||||
Notification? notification = JsonSerializer.Deserialize<Notification>(json);
|
||||
if (notification is null)
|
||||
result = null;
|
||||
else
|
||||
{
|
||||
Job? job;
|
||||
string? mid;
|
||||
Dictionary<string, List<QaMetTest>> qaMetTests = new();
|
||||
Write(TIBCO.FileRead.BarcodeHostFileShare, id, notification.Value);
|
||||
try
|
||||
{
|
||||
const string hyphen = "-";
|
||||
job = GetJob(TIBCO.FileRead.LSL2SQLConnectionString, TIBCO.FileRead.MetrologyFileShare, TIBCO.FileRead.BarcodeHostFileShare, id, notification.Value);
|
||||
mid = job.SpecName == hyphen || job.ProcessSpecName == hyphen ? $"{job.ProcessType}" : $"{job.ProcessType}.{job.SpecName}.{job.ProcessSpecName}";
|
||||
Root? root = GetRoot(job.LotName);
|
||||
if (root is not null)
|
||||
SetQaMetTests(notification.Value.ToolClass, root, qaMetTests);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
mid = string.Concat(ex.Message, Environment.NewLine, ex.StackTrace);
|
||||
}
|
||||
result = new(mid, qaMetTests); // .ProdSpec.PrsStages[0].QaMetTests[0].Recipe);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
@ -1,277 +0,0 @@
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.ApiController;
|
||||
|
||||
/// <summary>
|
||||
/// Mapping for this can be found here: https://github.com/torvalds/linux/blob/master/include/uapi/linux/input-event-codes.h
|
||||
/// </summary>
|
||||
public enum EventCode
|
||||
{
|
||||
Reserved = 0,
|
||||
Esc = 1,
|
||||
Num1 = 2,
|
||||
Num2 = 3,
|
||||
Num3 = 4,
|
||||
Num4 = 5,
|
||||
Num5 = 6,
|
||||
Num6 = 7,
|
||||
Num7 = 8,
|
||||
Num8 = 9,
|
||||
Num9 = 10,
|
||||
Num0 = 11,
|
||||
Minus = 12,
|
||||
Equal = 13,
|
||||
Backspace = 14,
|
||||
Tab = 15,
|
||||
Q = 16,
|
||||
W = 17,
|
||||
E = 18,
|
||||
R = 19,
|
||||
T = 20,
|
||||
Y = 21,
|
||||
U = 22,
|
||||
I = 23,
|
||||
O = 24,
|
||||
P = 25,
|
||||
LeftBrace = 26,
|
||||
RightBrace = 27,
|
||||
Enter = 28,
|
||||
LeftCtrl = 29,
|
||||
A = 30,
|
||||
S = 31,
|
||||
D = 32,
|
||||
F = 33,
|
||||
G = 34,
|
||||
H = 35,
|
||||
J = 36,
|
||||
K = 37,
|
||||
L = 38,
|
||||
Semicolon = 39,
|
||||
Apostrophe = 40,
|
||||
Grave = 41,
|
||||
LeftShift = 42,
|
||||
Backslash = 43,
|
||||
Z = 44,
|
||||
X = 45,
|
||||
C = 46,
|
||||
V = 47,
|
||||
B = 48,
|
||||
N = 49,
|
||||
M = 50,
|
||||
Comma = 51,
|
||||
Dot = 52,
|
||||
Slash = 53,
|
||||
RightShift = 54,
|
||||
KpAsterisk = 55,
|
||||
LeftAlt = 56,
|
||||
Space = 57,
|
||||
Capslock = 58,
|
||||
F1 = 59,
|
||||
Pf2 = 60,
|
||||
F3 = 61,
|
||||
F4 = 62,
|
||||
F5 = 63,
|
||||
F6 = 64,
|
||||
F7 = 65,
|
||||
F8 = 66,
|
||||
Pf9 = 67,
|
||||
F10 = 68,
|
||||
Numlock = 69,
|
||||
ScrollLock = 70,
|
||||
Kp7 = 71,
|
||||
Kp8 = 72,
|
||||
Kp9 = 73,
|
||||
PkpMinus = 74,
|
||||
Kp4 = 75,
|
||||
Kp5 = 76,
|
||||
Kp6 = 77,
|
||||
KpPlus = 78,
|
||||
Kp1 = 79,
|
||||
Kp2 = 80,
|
||||
Kp3 = 81,
|
||||
Kp0 = 82,
|
||||
KpDot = 83,
|
||||
|
||||
Zenkakuhankaku = 85,
|
||||
//102ND = 86,
|
||||
F11 = 87,
|
||||
F12 = 88,
|
||||
Ro = 89,
|
||||
Katakana = 90,
|
||||
Hiragana = 91,
|
||||
Henkan = 92,
|
||||
Katakanahiragana = 93,
|
||||
Muhenkan = 94,
|
||||
KpJpComma = 95,
|
||||
KpEnter = 96,
|
||||
RightCtrl = 97,
|
||||
KpSlash = 98,
|
||||
SysRq = 99,
|
||||
RightAlt = 100,
|
||||
LineFeed = 101,
|
||||
Home = 102,
|
||||
Up = 103,
|
||||
Pageup = 104,
|
||||
Left = 105,
|
||||
Right = 106,
|
||||
End = 107,
|
||||
Down = 108,
|
||||
Pagedown = 109,
|
||||
Insert = 110,
|
||||
Delete = 111,
|
||||
Macro = 112,
|
||||
Mute = 113,
|
||||
VolumeDown = 114,
|
||||
VolumeUp = 115,
|
||||
Power = 116, // SC System Power Down
|
||||
KpEqual = 117,
|
||||
KpPlusMinus = 118,
|
||||
Pause = 119,
|
||||
Scale = 120, // AL Compiz Scale (Expose)
|
||||
|
||||
KpComma = 121,
|
||||
Hangeul = 122,
|
||||
Hanja = 123,
|
||||
Yen = 124,
|
||||
LeftMeta = 125,
|
||||
RightMeta = 126,
|
||||
Compose = 127,
|
||||
|
||||
Stop = 128, // AC Stop
|
||||
Again = 129,
|
||||
Props = 130, // AC Properties
|
||||
Undo = 131, // AC Undo
|
||||
Front = 132,
|
||||
Copy = 133, // AC Copy
|
||||
Open = 134, // AC Open
|
||||
Paste = 135, // AC Paste
|
||||
Find = 136, // AC Search
|
||||
Cut = 137, // AC Cut
|
||||
Help = 138, // AL Integrated Help Center
|
||||
Menu = 139, // Menu (show menu)
|
||||
Calc = 140, // AL Calculator
|
||||
Setup = 141,
|
||||
Sleep = 142, // SC System Sleep
|
||||
Wakeup = 143, // System Wake Up
|
||||
File = 144, // AL Local Machine Browser
|
||||
Sendfile = 145,
|
||||
DeleteFile = 146,
|
||||
Xfer = 147,
|
||||
Prog1 = 148,
|
||||
Prog2 = 149,
|
||||
Www = 150, // AL Internet Browser
|
||||
MsDos = 151,
|
||||
Coffee = 152, // AL Terminal Lock/Screensaver
|
||||
RotateDisplay = 153, // Display orientation for e.g. tablets
|
||||
CycleWindows = 154,
|
||||
Mail = 155,
|
||||
Bookmarks = 156, // AC Bookmarks
|
||||
Computer = 157,
|
||||
Back = 158, // AC Back
|
||||
Forward = 159, // AC Forward
|
||||
CloseCd = 160,
|
||||
EjectCd = 161,
|
||||
EjectCloseCd = 162,
|
||||
NextSong = 163,
|
||||
PlayPause = 164,
|
||||
PreviousSong = 165,
|
||||
StopCd = 166,
|
||||
Record = 167,
|
||||
Rewind = 168,
|
||||
Phone = 169, // Media Select Telephone
|
||||
Iso = 170,
|
||||
Config = 171, // AL Consumer Control Configuration
|
||||
Homepage = 172, // AC Home
|
||||
Refresh = 173, // AC Refresh
|
||||
Exit = 174, // AC Exit
|
||||
Move = 175,
|
||||
Edit = 176,
|
||||
ScrollUp = 177,
|
||||
ScrollDown = 178,
|
||||
KpLeftParen = 179,
|
||||
KpRightParen = 180,
|
||||
New = 181, // AC New
|
||||
Redo = 182, // AC Redo/Repeat
|
||||
|
||||
F13 = 183,
|
||||
F14 = 184,
|
||||
F15 = 185,
|
||||
F16 = 186,
|
||||
F17 = 187,
|
||||
F18 = 188,
|
||||
F19 = 189,
|
||||
F20 = 190,
|
||||
F21 = 191,
|
||||
F22 = 192,
|
||||
F23 = 193,
|
||||
F24 = 194,
|
||||
|
||||
PlayCd = 200,
|
||||
PauseCd = 201,
|
||||
Prog3 = 202,
|
||||
Prog4 = 203,
|
||||
Dashboard = 204, // AL Dashboard
|
||||
Suspend = 205,
|
||||
Close = 206, // AC Close
|
||||
Play = 207,
|
||||
FastForward = 208,
|
||||
BassBoost = 209,
|
||||
Print = 210, // AC Print
|
||||
Hp = 211,
|
||||
Camera = 212,
|
||||
Sound = 213,
|
||||
Question = 214,
|
||||
Email = 215,
|
||||
Chat = 216,
|
||||
Search = 217,
|
||||
Connect = 218,
|
||||
Finance = 219, // AL Checkbook/Finance
|
||||
Sport = 220,
|
||||
Shop = 221,
|
||||
AltErase = 222,
|
||||
Cancel = 223, // AC Cancel
|
||||
BrightnessDown = 224,
|
||||
BrightnessUp = 225,
|
||||
Media = 226,
|
||||
|
||||
SwitchVideoMode = 227, // Cycle between available video outputs (Monitor/LCD/TV-out/etc)
|
||||
KbdIllumToggle = 228,
|
||||
KbdIllumDown = 229,
|
||||
KbdIllumUp = 230,
|
||||
|
||||
Send = 231, // AC Send
|
||||
Reply = 232, // AC Reply
|
||||
ForwardMail = 233, // AC Forward Msg
|
||||
Save = 234, // AC Save
|
||||
Documents = 235,
|
||||
|
||||
Battery = 236,
|
||||
|
||||
Bluetooth = 237,
|
||||
Wlan = 238,
|
||||
Uwb = 239,
|
||||
|
||||
Unknown = 240,
|
||||
|
||||
VideoNext = 241, // drive next video source
|
||||
VideoPrev = 242, // drive previous video source
|
||||
BrightnessCycle = 243, // brightness up, after max is min
|
||||
BrightnessAuto = 244, // Set Auto Brightness: manual brightness control is off, rely on ambient
|
||||
DisplayOff = 245, // display device to off state
|
||||
|
||||
Wwan = 246, // Wireless WAN (LTE, UMTS, GSM, etc.)
|
||||
RfKill = 247, // Key that controls all radios
|
||||
|
||||
MicMute = 248, // Mute / unmute the microphone
|
||||
LeftMouse = 272,
|
||||
RightMouse = 273,
|
||||
MiddleMouse = 274,
|
||||
MouseBack = 275,
|
||||
MouseForward = 276,
|
||||
|
||||
ToolFinger = 325,
|
||||
ToolQuintTap = 328,
|
||||
Touch = 330,
|
||||
ToolDoubleTap = 333,
|
||||
ToolTripleTap = 334,
|
||||
ToolQuadTap = 335,
|
||||
Mic = 582
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.ApiController;
|
||||
|
||||
public readonly struct KeyPressEvent
|
||||
{
|
||||
public DateTime DateTime { get; }
|
||||
public EventCode EventCode { get; }
|
||||
public KeyState KeyState { get; }
|
||||
public TimeSpan TimeSpan { get; }
|
||||
|
||||
public KeyPressEvent(DateTime dateTime, EventCode eventCode, KeyState keyState, TimeSpan timeSpan)
|
||||
{
|
||||
DateTime = dateTime;
|
||||
EventCode = eventCode;
|
||||
KeyState = keyState;
|
||||
TimeSpan = timeSpan;
|
||||
}
|
||||
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.ApiController;
|
||||
|
||||
public enum KeyState
|
||||
{
|
||||
KeyUp,
|
||||
KeyDown,
|
||||
KeyHold
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.ApiController;
|
||||
|
||||
public readonly struct Notification
|
||||
{
|
||||
|
||||
public KeyPressEvent KeyPressEvent { get; }
|
||||
public string LastScanServiceResultValue { get; }
|
||||
public string ToolClass { get; }
|
||||
public string HttpContentBody { get; }
|
||||
|
||||
[System.Text.Json.Serialization.JsonConstructor]
|
||||
public Notification(KeyPressEvent keyPressEvent, string lastScanServiceResultValue, string toolClass, string httpContentBody)
|
||||
{
|
||||
KeyPressEvent = keyPressEvent;
|
||||
LastScanServiceResultValue = lastScanServiceResultValue;
|
||||
ToolClass = toolClass;
|
||||
HttpContentBody = httpContentBody;
|
||||
}
|
||||
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
using Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.ApiController;
|
||||
|
||||
public class PostReplay
|
||||
{
|
||||
|
||||
#nullable enable
|
||||
|
||||
public string? MId { get; }
|
||||
public Dictionary<string, List<QaMetTest>> QaMetTests { get; }
|
||||
|
||||
[System.Text.Json.Serialization.JsonConstructor]
|
||||
public PostReplay(string? mid, Dictionary<string, List<QaMetTest>> qaMetTests)
|
||||
{
|
||||
MId = mid;
|
||||
QaMetTests = qaMetTests;
|
||||
}
|
||||
|
||||
}
|
@ -7,10 +7,6 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text.Json;
|
||||
#if NETFRAMEWORK && NET48
|
||||
using System.Web.Http;
|
||||
using System.Web.Http.SelfHost;
|
||||
#endif
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles;
|
||||
|
||||
@ -19,13 +15,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
|
||||
#nullable enable
|
||||
|
||||
public const string HttpSelfHostConfigurationBaseAddress = "http://localhost:8080/";
|
||||
public const string OpenInsightApplicationProgrammingInterface = "https://oi-prod-ec-api.mes.infineon.com/api/oiWizard";
|
||||
|
||||
private long? _TickOffset;
|
||||
#if NETFRAMEWORK && NET48
|
||||
private readonly HttpSelfHostServer? _HttpSelfHostServer;
|
||||
#endif
|
||||
|
||||
public FileRead(ISMTP smtp, Dictionary<string, string> fileParameter, string cellInstanceName, int? connectionCount, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList<ModelObjectParameterDefinition> modelObjectParameters, string equipmentDictionaryName, Dictionary<string, List<long>> dummyRuns, Dictionary<long, List<string>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
|
||||
base(new Description(), false, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
||||
@ -39,32 +29,6 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
throw new Exception(cellInstanceConnectionName);
|
||||
if (_IsDuplicator)
|
||||
throw new Exception(cellInstanceConnectionName);
|
||||
string barcodeHostFileShare = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "Barcode.Host.FileShare");
|
||||
if (barcodeHostFileShare != TIBCO.FileRead.BarcodeHostFileShare)
|
||||
throw new NotSupportedException($"Update configuration for [{nameof(TIBCO.FileRead.BarcodeHostFileShare)}]");
|
||||
string httpSelfHostConfigurationBaseAddress = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "Http.Self.Host.Configuration.Base.Address");
|
||||
if (httpSelfHostConfigurationBaseAddress != HttpSelfHostConfigurationBaseAddress)
|
||||
throw new NotSupportedException($"Update configuration for [{nameof(HttpSelfHostConfigurationBaseAddress)}]");
|
||||
string lsl2SQLConnectionString = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "ConnectionString.LSL2SQL");
|
||||
if (lsl2SQLConnectionString != TIBCO.FileRead.LSL2SQLConnectionString)
|
||||
throw new NotSupportedException($"Update configuration for [{nameof(TIBCO.FileRead.LSL2SQLConnectionString)}]");
|
||||
string metrologyFileShare = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "Metrology.FileShare");
|
||||
if (metrologyFileShare != TIBCO.FileRead.MetrologyFileShare)
|
||||
throw new NotSupportedException($"Update configuration for [{nameof(TIBCO.FileRead.MetrologyFileShare)}]");
|
||||
string openInsightApplicationProgrammingInterface = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "OpenInsight.Application.Programming.Interface");
|
||||
if (openInsightApplicationProgrammingInterface != OpenInsightApplicationProgrammingInterface)
|
||||
throw new NotSupportedException($"Update configuration for [{nameof(OpenInsightApplicationProgrammingInterface)}]");
|
||||
#if NETFRAMEWORK && NET48
|
||||
if (!_IsEAFHosted)
|
||||
_HttpSelfHostServer = null;
|
||||
else
|
||||
{
|
||||
HttpSelfHostConfiguration config = new(httpSelfHostConfigurationBaseAddress);
|
||||
_ = config.Routes.MapHttpRoute("API Default", "api/{controller}/{id}", new { id = RouteParameter.Optional });
|
||||
_HttpSelfHostServer = new(config);
|
||||
_HttpSelfHostServer.OpenAsync().Wait();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#nullable disable
|
||||
|
@ -1,18 +0,0 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
|
||||
|
||||
public class BackSide
|
||||
{
|
||||
[JsonPropertyName("scratches")]
|
||||
public int? Scratches { get; set; }
|
||||
|
||||
[JsonPropertyName("scratchLen")]
|
||||
public int? ScratchLen { get; set; }
|
||||
|
||||
[JsonPropertyName("nodules")]
|
||||
public object Nodules { get; set; }
|
||||
|
||||
[JsonPropertyName("spikes")]
|
||||
public object Spikes { get; set; }
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
|
||||
|
||||
public class CleanInsp
|
||||
{
|
||||
[JsonPropertyName("keyId")]
|
||||
public int KeyId { get; set; }
|
||||
|
||||
[JsonPropertyName("stage")]
|
||||
public string Stage { get; set; }
|
||||
|
||||
[JsonPropertyName("cleans")]
|
||||
public Cleans Cleans { get; set; }
|
||||
|
||||
[JsonPropertyName("inspection")]
|
||||
public Inspection Inspection { get; set; }
|
||||
|
||||
[JsonPropertyName("surfScan")]
|
||||
public SurfScan SurfScan { get; set; }
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
|
||||
|
||||
public class Cleans
|
||||
{
|
||||
[JsonPropertyName("cleanRecipe")]
|
||||
public object CleanRecipe { get; set; }
|
||||
|
||||
[JsonPropertyName("cleanSigReq")]
|
||||
public bool CleanSigReq { get; set; }
|
||||
|
||||
[JsonPropertyName("cleanTools")]
|
||||
public List<object> CleanTools { get; set; }
|
||||
|
||||
[JsonPropertyName("specs")]
|
||||
public Spec Specs { get; set; }
|
||||
|
||||
[JsonPropertyName("operations")]
|
||||
public List<object> Operations { get; set; }
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
|
||||
|
||||
public class CustEpiPart
|
||||
{
|
||||
[JsonPropertyName("keyId")]
|
||||
public string KeyId { get; set; }
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
|
||||
|
||||
public class EpiPart
|
||||
{
|
||||
[JsonPropertyName("keyID")]
|
||||
public int KeyID { get; set; }
|
||||
|
||||
[JsonPropertyName("waferSize")]
|
||||
public string WaferSize { get; set; }
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
|
||||
|
||||
public class FrontSide
|
||||
{
|
||||
[JsonPropertyName("lpd")]
|
||||
public int? Lpd { get; set; }
|
||||
|
||||
[JsonPropertyName("scratches")]
|
||||
public int? Scratches { get; set; }
|
||||
|
||||
[JsonPropertyName("scratchLen")]
|
||||
public string ScratchLen { get; set; }
|
||||
|
||||
[JsonPropertyName("pits")]
|
||||
public int? Pits { get; set; }
|
||||
|
||||
[JsonPropertyName("mounds")]
|
||||
public int? Mounds { get; set; }
|
||||
|
||||
[JsonPropertyName("stackFaults")]
|
||||
public int? StackFaults { get; set; }
|
||||
|
||||
[JsonPropertyName("spikes")]
|
||||
public int? Spikes { get; set; }
|
||||
|
||||
[JsonPropertyName("spots")]
|
||||
public int? Spots { get; set; }
|
||||
|
||||
[JsonPropertyName("blDefects")]
|
||||
public int? BlDefects { get; set; }
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
|
||||
|
||||
public class Inspection
|
||||
{
|
||||
[JsonPropertyName("microscope")]
|
||||
public bool Microscope { get; set; }
|
||||
|
||||
[JsonPropertyName("brightlight")]
|
||||
public bool Brightlight { get; set; }
|
||||
|
||||
[JsonPropertyName("inspSigReq")]
|
||||
public bool InspSigReq { get; set; }
|
||||
|
||||
[JsonPropertyName("inspInterval")]
|
||||
public int? InspInterval { get; set; }
|
||||
|
||||
[JsonPropertyName("frontSide")]
|
||||
public FrontSide FrontSide { get; set; }
|
||||
|
||||
[JsonPropertyName("backSide")]
|
||||
public BackSide BackSide { get; set; }
|
||||
|
||||
[JsonPropertyName("specs")]
|
||||
public Spec Specs { get; set; }
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
|
||||
|
||||
public class ProdSpec
|
||||
{
|
||||
// [JsonPropertyName("keyId")]
|
||||
// public int KeyId { get; set; }
|
||||
|
||||
// [JsonPropertyName("specType")]
|
||||
// public string SpecType { get; set; }
|
||||
|
||||
// [JsonPropertyName("status")]
|
||||
// public string Status { get; set; }
|
||||
|
||||
// [JsonPropertyName("minutesPerWafer")]
|
||||
// public double MinutesPerWafer { get; set; }
|
||||
|
||||
// [JsonPropertyName("proveInTime")]
|
||||
// public double ProveInTime { get; set; }
|
||||
|
||||
// [JsonPropertyName("layerType")]
|
||||
// public string LayerType { get; set; }
|
||||
|
||||
// [JsonPropertyName("reactorType")]
|
||||
// public string ReactorType { get; set; }
|
||||
|
||||
// [JsonPropertyName("susceptorType")]
|
||||
// public string SusceptorType { get; set; }
|
||||
|
||||
// [JsonPropertyName("tubePressureType")]
|
||||
// public string TubePressureType { get; set; }
|
||||
|
||||
// [JsonPropertyName("recipeLayers")]
|
||||
// public List<RecipeLayer> RecipeLayers { get; set; }
|
||||
|
||||
// [JsonPropertyName("prodVers")]
|
||||
// public List<ProdVer> ProdVers { get; set; }
|
||||
|
||||
// [JsonPropertyName("epiPart")]
|
||||
// public EpiPart EpiPart { get; set; }
|
||||
|
||||
// [JsonPropertyName("custEpiParts")]
|
||||
// public List<CustEpiPart> CustEpiParts { get; set; }
|
||||
|
||||
[JsonPropertyName("prsStages")]
|
||||
public List<PrsStage> PrsStages { get; set; }
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
|
||||
|
||||
public class ProdVer
|
||||
{
|
||||
[JsonPropertyName("keyId")]
|
||||
public int KeyId { get; set; }
|
||||
}
|
@ -1,28 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
|
||||
|
||||
public class PrsStage
|
||||
{
|
||||
// [JsonPropertyName("keyId")]
|
||||
// public string KeyId { get; set; }
|
||||
|
||||
// [JsonPropertyName("psn")]
|
||||
// public int Psn { get; set; }
|
||||
|
||||
[JsonPropertyName("stage")]
|
||||
public string Stage { get; set; }
|
||||
|
||||
// [JsonPropertyName("cleans")]
|
||||
// public Cleans Cleans { get; set; }
|
||||
|
||||
// [JsonPropertyName("inspection")]
|
||||
// public Inspection Inspection { get; set; }
|
||||
|
||||
// [JsonPropertyName("surfscan")]
|
||||
// public SurfScan Surfscan { get; set; }
|
||||
|
||||
[JsonPropertyName("qaMetTests")]
|
||||
public List<QaMetTest> QaMetTests { get; set; }
|
||||
}
|
@ -1,51 +0,0 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
|
||||
|
||||
public class QaMetTest
|
||||
{
|
||||
[JsonPropertyName("test")]
|
||||
public string Test { get; set; }
|
||||
|
||||
[JsonPropertyName("property")]
|
||||
public string Property { get; set; }
|
||||
|
||||
[JsonPropertyName("propertyDesc")]
|
||||
public string PropertyDesc { get; set; }
|
||||
|
||||
[JsonPropertyName("toolClass")]
|
||||
public string ToolClass { get; set; }
|
||||
|
||||
[JsonPropertyName("recipe")]
|
||||
public string Recipe { get; set; }
|
||||
|
||||
[JsonPropertyName("recipePattern")]
|
||||
public string RecipePattern { get; set; }
|
||||
|
||||
[JsonPropertyName("min")]
|
||||
public object Min { get; set; }
|
||||
|
||||
[JsonPropertyName("max")]
|
||||
public object Max { get; set; }
|
||||
|
||||
[JsonPropertyName("phaseMin")]
|
||||
public object PhaseMin { get; set; }
|
||||
|
||||
[JsonPropertyName("slots")]
|
||||
public object Slots { get; set; }
|
||||
|
||||
[JsonPropertyName("wfrQty")]
|
||||
public int? WfrQty { get; set; }
|
||||
|
||||
[JsonPropertyName("reactSched")]
|
||||
public bool? ReactSched { get; set; }
|
||||
|
||||
[JsonPropertyName("interval")]
|
||||
public int? Interval { get; set; }
|
||||
|
||||
[JsonPropertyName("start")]
|
||||
public int? Start { get; set; }
|
||||
|
||||
[JsonPropertyName("sequence")]
|
||||
public string Sequence { get; set; }
|
||||
}
|
@ -1,96 +0,0 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
|
||||
|
||||
public class Rds
|
||||
{
|
||||
[JsonPropertyName("keyId")]
|
||||
public int KeyId { get; set; }
|
||||
|
||||
[JsonPropertyName("reactor")]
|
||||
public int Reactor { get; set; }
|
||||
|
||||
// [JsonPropertyName("workOrder")]
|
||||
// public int WorkOrder { get; set; }
|
||||
|
||||
// [JsonPropertyName("cassNo")]
|
||||
// public int CassNo { get; set; }
|
||||
|
||||
// [JsonPropertyName("combStatus")]
|
||||
// public string CombStatus { get; set; }
|
||||
|
||||
// [JsonPropertyName("partNo")]
|
||||
// public int PartNo { get; set; }
|
||||
|
||||
// [JsonPropertyName("PSN")]
|
||||
// public int PSN { get; set; }
|
||||
|
||||
// [JsonPropertyName("entryId")]
|
||||
// public string EntryId { get; set; }
|
||||
|
||||
// [JsonPropertyName("entryDtm")]
|
||||
// public string EntryDtm { get; set; }
|
||||
|
||||
// [JsonPropertyName("preEpiSig")]
|
||||
// public string PreEpiSig { get; set; }
|
||||
|
||||
// [JsonPropertyName("preEpiSigDtm")]
|
||||
// public string PreEpiSigDtm { get; set; }
|
||||
|
||||
// [JsonPropertyName("operatorIn")]
|
||||
// public string OperatorIn { get; set; }
|
||||
|
||||
// [JsonPropertyName("dtmIn")]
|
||||
// public string DtmIn { get; set; }
|
||||
|
||||
// [JsonPropertyName("operatorOut")]
|
||||
// public string OperatorOut { get; set; }
|
||||
|
||||
// [JsonPropertyName("dtmOut")]
|
||||
// public string DtmOut { get; set; }
|
||||
|
||||
// [JsonPropertyName("postEpiSig")]
|
||||
// public string PostEpiSig { get; set; }
|
||||
|
||||
// [JsonPropertyName("postEpiSigDtm")]
|
||||
// public string PostEpiSigDtm { get; set; }
|
||||
|
||||
// [JsonPropertyName("supVerSig")]
|
||||
// public string SupVerSig { get; set; }
|
||||
|
||||
// [JsonPropertyName("supVerSigDtm")]
|
||||
// public string SupVerSigDtm { get; set; }
|
||||
|
||||
// [JsonPropertyName("shipDtm")]
|
||||
// public object ShipDtm { get; set; }
|
||||
|
||||
// [JsonPropertyName("subPartNo")]
|
||||
// public int SubPartNo { get; set; }
|
||||
|
||||
// [JsonPropertyName("shipNo")]
|
||||
// public object ShipNo { get; set; }
|
||||
|
||||
// [JsonPropertyName("cassWaferQty")]
|
||||
// public int CassWaferQty { get; set; }
|
||||
|
||||
// [JsonPropertyName("loadLockSide")]
|
||||
// public string LoadLockSide { get; set; }
|
||||
|
||||
// [JsonPropertyName("waferSize")]
|
||||
// public string WaferSize { get; set; }
|
||||
|
||||
// [JsonPropertyName("reactorType")]
|
||||
// public string ReactorType { get; set; }
|
||||
|
||||
[JsonPropertyName("prodSpec")]
|
||||
public ProdSpec ProdSpec { get; set; }
|
||||
|
||||
// [JsonPropertyName("cleanInsp")]
|
||||
// public List<CleanInsp> CleanInsp { get; set; }
|
||||
|
||||
// [JsonPropertyName("woMatQA")]
|
||||
// public WoMatQA WoMatQA { get; set; }
|
||||
|
||||
// [JsonPropertyName("rdsLayers")]
|
||||
// public List<RdsLayer> RdsLayers { get; set; }
|
||||
}
|
@ -1,63 +0,0 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
|
||||
|
||||
public class RdsLayer
|
||||
{
|
||||
[JsonPropertyName("keyID")]
|
||||
public string KeyID { get; set; }
|
||||
|
||||
[JsonPropertyName("EpiTime")]
|
||||
public double EpiTime { get; set; }
|
||||
|
||||
[JsonPropertyName("DiluentAdjParam")]
|
||||
public int DiluentAdjParam { get; set; }
|
||||
|
||||
[JsonPropertyName("DopantFlow")]
|
||||
public double DopantFlow { get; set; }
|
||||
|
||||
[JsonPropertyName("HCLFlow")]
|
||||
public object HCLFlow { get; set; }
|
||||
|
||||
[JsonPropertyName("BakeTime")]
|
||||
public string BakeTime { get; set; }
|
||||
|
||||
[JsonPropertyName("EpiH2Flow")]
|
||||
public int EpiH2Flow { get; set; }
|
||||
|
||||
[JsonPropertyName("TCSFlow")]
|
||||
public int TCSFlow { get; set; }
|
||||
|
||||
[JsonPropertyName("DCSFlow")]
|
||||
public object DCSFlow { get; set; }
|
||||
|
||||
[JsonPropertyName("FOffset")]
|
||||
public int FOffset { get; set; }
|
||||
|
||||
[JsonPropertyName("SOffset")]
|
||||
public int SOffset { get; set; }
|
||||
|
||||
[JsonPropertyName("ROffset")]
|
||||
public int ROffset { get; set; }
|
||||
|
||||
[JsonPropertyName("Etch1")]
|
||||
public string Etch1 { get; set; }
|
||||
|
||||
[JsonPropertyName("Etch2")]
|
||||
public string Etch2 { get; set; }
|
||||
|
||||
[JsonPropertyName("Etch3")]
|
||||
public string Etch3 { get; set; }
|
||||
|
||||
[JsonPropertyName("AUX1")]
|
||||
public object AUX1 { get; set; }
|
||||
|
||||
[JsonPropertyName("AUX2")]
|
||||
public object AUX2 { get; set; }
|
||||
|
||||
[JsonPropertyName("ULTemp")]
|
||||
public int ULTemp { get; set; }
|
||||
|
||||
[JsonPropertyName("SuscEtch")]
|
||||
public object SuscEtch { get; set; }
|
||||
}
|
@ -1,69 +0,0 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
|
||||
|
||||
public class RecipeLayer
|
||||
{
|
||||
[JsonPropertyName("layerNo")]
|
||||
public int LayerNo { get; set; }
|
||||
|
||||
[JsonPropertyName("layerId")]
|
||||
public string LayerId { get; set; }
|
||||
|
||||
[JsonPropertyName("layerType")]
|
||||
public string LayerType { get; set; }
|
||||
|
||||
[JsonPropertyName("layerRecipe")]
|
||||
public int LayerRecipe { get; set; }
|
||||
|
||||
[JsonPropertyName("layerDopant")]
|
||||
public string LayerDopant { get; set; }
|
||||
|
||||
[JsonPropertyName("layerThickMin")]
|
||||
public double LayerThickMin { get; set; }
|
||||
|
||||
[JsonPropertyName("layerThickTarget")]
|
||||
public double LayerThickTarget { get; set; }
|
||||
|
||||
[JsonPropertyName("layerThickMax")]
|
||||
public double LayerThickMax { get; set; }
|
||||
|
||||
[JsonPropertyName("layerThickUnits")]
|
||||
public string LayerThickUnits { get; set; }
|
||||
|
||||
[JsonPropertyName("layerThickAMin")]
|
||||
public object LayerThickAMin { get; set; }
|
||||
|
||||
[JsonPropertyName("layerThickATarget")]
|
||||
public object LayerThickATarget { get; set; }
|
||||
|
||||
[JsonPropertyName("layerThickAMaxes")]
|
||||
public object LayerThickAMaxes { get; set; }
|
||||
|
||||
[JsonPropertyName("layerThickAUnits")]
|
||||
public object LayerThickAUnits { get; set; }
|
||||
|
||||
[JsonPropertyName("layerResMin")]
|
||||
public double LayerResMin { get; set; }
|
||||
|
||||
[JsonPropertyName("layerResTarget")]
|
||||
public int LayerResTarget { get; set; }
|
||||
|
||||
[JsonPropertyName("layerResMax")]
|
||||
public double LayerResMax { get; set; }
|
||||
|
||||
[JsonPropertyName("layerResUnits")]
|
||||
public string LayerResUnits { get; set; }
|
||||
|
||||
[JsonPropertyName("layerSResMin")]
|
||||
public object LayerSResMin { get; set; }
|
||||
|
||||
[JsonPropertyName("layerSResTarget")]
|
||||
public object LayerSResTarget { get; set; }
|
||||
|
||||
[JsonPropertyName("layerSResMax")]
|
||||
public object LayerSResMax { get; set; }
|
||||
|
||||
[JsonPropertyName("layerSResUnits")]
|
||||
public object LayerSResUnits { get; set; }
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
|
||||
|
||||
public class Root
|
||||
{
|
||||
[JsonPropertyName("rds")]
|
||||
public Rds Rds { get; set; }
|
||||
|
||||
[JsonPropertyName("_links")]
|
||||
public object Links { get; set; }
|
||||
|
||||
[JsonPropertyName("_class")]
|
||||
public string Class { get; set; }
|
||||
}
|
@ -1,73 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
|
||||
|
||||
public class Spec
|
||||
{
|
||||
[JsonPropertyName("recipe")]
|
||||
public string Recipe { get; set; }
|
||||
|
||||
[JsonPropertyName("defect")]
|
||||
public int Defect { get; set; }
|
||||
|
||||
[JsonPropertyName("haze")]
|
||||
public int Haze { get; set; }
|
||||
|
||||
[JsonPropertyName("sampleQty")]
|
||||
public int SampleQty { get; set; }
|
||||
|
||||
[JsonPropertyName("tools")]
|
||||
public List<object> Tools { get; set; }
|
||||
|
||||
[JsonPropertyName("recipes")]
|
||||
public List<object> Recipes { get; set; }
|
||||
|
||||
[JsonPropertyName("microscopeReq")]
|
||||
public bool MicroscopeReq { get; set; }
|
||||
|
||||
[JsonPropertyName("brightlightReq")]
|
||||
public bool BrightlightReq { get; set; }
|
||||
|
||||
[JsonPropertyName("lpd")]
|
||||
public int Lpd { get; set; }
|
||||
|
||||
[JsonPropertyName("scratches")]
|
||||
public int Scratches { get; set; }
|
||||
|
||||
[JsonPropertyName("scratchLen")]
|
||||
public int ScratchLen { get; set; }
|
||||
|
||||
[JsonPropertyName("pits")]
|
||||
public int Pits { get; set; }
|
||||
|
||||
[JsonPropertyName("mounds")]
|
||||
public int Mounds { get; set; }
|
||||
|
||||
[JsonPropertyName("stackFaults")]
|
||||
public int StackFaults { get; set; }
|
||||
|
||||
[JsonPropertyName("spikes")]
|
||||
public int Spikes { get; set; }
|
||||
|
||||
[JsonPropertyName("spots")]
|
||||
public int Spots { get; set; }
|
||||
|
||||
[JsonPropertyName("fov")]
|
||||
public int Fov { get; set; }
|
||||
|
||||
[JsonPropertyName("blDefects")]
|
||||
public int BlDefects { get; set; }
|
||||
|
||||
[JsonPropertyName("bsideScratches")]
|
||||
public int BsideScratches { get; set; }
|
||||
|
||||
[JsonPropertyName("bsideScratchLen")]
|
||||
public int BsideScratchLen { get; set; }
|
||||
|
||||
[JsonPropertyName("bsideNodules")]
|
||||
public object BsideNodules { get; set; }
|
||||
|
||||
[JsonPropertyName("bsideSpikes")]
|
||||
public object BsideSpikes { get; set; }
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
|
||||
|
||||
public class SurfScan
|
||||
{
|
||||
[JsonPropertyName("surfscanSigReq")]
|
||||
public bool SurfscanSigReq { get; set; }
|
||||
|
||||
[JsonPropertyName("surfscanRecipes")]
|
||||
public List<SurfscanRecipe> SurfscanRecipes { get; set; }
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
|
||||
|
||||
public class SurfScan2
|
||||
{
|
||||
[JsonPropertyName("specs")]
|
||||
public List<Spec> Specs { get; set; }
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
|
||||
|
||||
public class SurfscanRecipe
|
||||
{
|
||||
[JsonPropertyName("recipe")]
|
||||
public string Recipe { get; set; }
|
||||
|
||||
[JsonPropertyName("defects")]
|
||||
public int Defects { get; set; }
|
||||
|
||||
[JsonPropertyName("haze")]
|
||||
public int Haze { get; set; }
|
||||
|
||||
[JsonPropertyName("sampleSize")]
|
||||
public int SampleSize { get; set; }
|
||||
}
|
@ -1,73 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
|
||||
|
||||
public class Test
|
||||
{
|
||||
[JsonPropertyName("stage")]
|
||||
public string Stage { get; set; }
|
||||
|
||||
[JsonPropertyName("profile")]
|
||||
public string Profile { get; set; }
|
||||
|
||||
[JsonPropertyName("prop")]
|
||||
public string Prop { get; set; }
|
||||
|
||||
[JsonPropertyName("toolClass")]
|
||||
public string ToolClass { get; set; }
|
||||
|
||||
[JsonPropertyName("recipe")]
|
||||
public string Recipe { get; set; }
|
||||
|
||||
[JsonPropertyName("recipePattern")]
|
||||
public string RecipePattern { get; set; }
|
||||
|
||||
[JsonPropertyName("specMin")]
|
||||
public double SpecMin { get; set; }
|
||||
|
||||
[JsonPropertyName("specMax")]
|
||||
public double SpecMax { get; set; }
|
||||
|
||||
[JsonPropertyName("specSlot")]
|
||||
public object SpecSlot { get; set; }
|
||||
|
||||
[JsonPropertyName("testSlot")]
|
||||
public object TestSlot { get; set; }
|
||||
|
||||
[JsonPropertyName("testResult")]
|
||||
public List<double> TestResult { get; set; }
|
||||
|
||||
[JsonPropertyName("testSig")]
|
||||
public string TestSig { get; set; }
|
||||
|
||||
[JsonPropertyName("testSigDtm")]
|
||||
public string TestSigDtm { get; set; }
|
||||
|
||||
[JsonPropertyName("specStdDev")]
|
||||
public object SpecStdDev { get; set; }
|
||||
|
||||
[JsonPropertyName("testStdDev")]
|
||||
public object TestStdDev { get; set; }
|
||||
|
||||
[JsonPropertyName("specWfrQty")]
|
||||
public int SpecWfrQty { get; set; }
|
||||
|
||||
[JsonPropertyName("dataPoints")]
|
||||
public List<List<object>> DataPoints { get; set; }
|
||||
|
||||
[JsonPropertyName("testResultMin")]
|
||||
public List<object> TestResultMin { get; set; }
|
||||
|
||||
[JsonPropertyName("testResultMax")]
|
||||
public List<object> TestResultMax { get; set; }
|
||||
|
||||
[JsonPropertyName("testOutOfSpec")]
|
||||
public bool TestOutOfSpec { get; set; }
|
||||
|
||||
[JsonPropertyName("phaseMin")]
|
||||
public object PhaseMin { get; set; }
|
||||
|
||||
[JsonPropertyName("failReason")]
|
||||
public object FailReason { get; set; }
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
|
||||
|
||||
public class WoMatQA
|
||||
{
|
||||
[JsonPropertyName("keyId")]
|
||||
public string KeyId { get; set; }
|
||||
|
||||
[JsonPropertyName("tests")]
|
||||
public List<Test> Tests { get; set; }
|
||||
}
|
@ -6,7 +6,6 @@ using Adaptation.Shared.Methods;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Threading;
|
||||
@ -129,7 +128,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
for (int i = 0; i < int.MaxValue; i++)
|
||||
{
|
||||
found = Directory.GetFiles(searchDirectory, fileName, SearchOption.AllDirectories);
|
||||
if (found.Any())
|
||||
if (found.Length != 0)
|
||||
{
|
||||
results.AddRange(found);
|
||||
break;
|
||||
@ -205,7 +204,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
Thread.Sleep(500);
|
||||
}
|
||||
}
|
||||
if (postCollection.Any())
|
||||
if (postCollection.Count != 0)
|
||||
{
|
||||
Thread.Sleep(500);
|
||||
StringBuilder stringBuilder = new();
|
||||
|
@ -21,7 +21,6 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
private readonly string _IqsConnectionString;
|
||||
private readonly string _OpenInsightFilePattern;
|
||||
private readonly string _OpenInsightApiECDirectory;
|
||||
private readonly string _OpenInsightApiIFXDirectory;
|
||||
|
||||
public FileRead(ISMTP smtp, Dictionary<string, string> fileParameter, string cellInstanceName, int? connectionCount, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList<ModelObjectParameterDefinition> modelObjectParameters, string equipmentDictionaryName, Dictionary<string, List<long>> dummyRuns, Dictionary<long, List<string>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
|
||||
base(new Description(), false, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
||||
@ -38,7 +37,6 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
_LastLines = string.Empty;
|
||||
_IqsConnectionString = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "IQS.ConnectionString");
|
||||
_OpenInsightApiECDirectory = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "API.EC.Directory");
|
||||
_OpenInsightApiIFXDirectory = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "API.IFX.Directory");
|
||||
_OpenInsightFilePattern = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "OpenInsight.FilePattern");
|
||||
}
|
||||
|
||||
@ -188,7 +186,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
_ = Directory.CreateDirectory(duplicateDirectory);
|
||||
}
|
||||
string duplicateFile = Path.Combine(duplicateDirectory, Path.GetFileName(reportFullPath));
|
||||
if (!descriptions.Any() || !tests.Any())
|
||||
if (descriptions.Count == 0 || tests.Length == 0)
|
||||
_LastLines = string.Empty;
|
||||
else
|
||||
{
|
||||
@ -210,7 +208,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
else
|
||||
collection.Add(new(new ScopeInfo(tests[0], $"{subGroupId.Value} {_OpenInsightFilePattern}"), lines.Item1));
|
||||
string weekOfYear = _Calendar.GetWeekOfYear(_Logistics.DateTimeFromSequence, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00");
|
||||
FromIQS.Save(_OpenInsightApiECDirectory, _OpenInsightApiIFXDirectory, _Logistics, reportFullPath, logistics, descriptions.First(), lines.Item1, subGroupId, weekOfYear);
|
||||
FromIQS.Save(_OpenInsightApiECDirectory, _Logistics, reportFullPath, logistics, descriptions.First(), lines.Item1, subGroupId, weekOfYear);
|
||||
}
|
||||
if (!Directory.Exists(duplicateDirectory))
|
||||
_ = Directory.CreateDirectory(duplicateDirectory);
|
||||
|
@ -17,7 +17,7 @@ public class FromIQS
|
||||
#nullable enable
|
||||
|
||||
private static string GetCommandText(Logistics logistics, txt.Description description, string dateTime, long? subGroupId)
|
||||
{
|
||||
{ // cSpell:disable
|
||||
StringBuilder result = new();
|
||||
_ = result
|
||||
.AppendLine(" select iq.ev_count, iq.cl_count, iq.sl_count, iq.se_sgrp, iq.se_sgtm, iq.se_tsno, iq.td_test, iq.pr_name, iq.jd_name, iq.pl_name, iq.pd_name, iq.td_name, iq.se_val ")
|
||||
@ -58,7 +58,7 @@ public class FromIQS
|
||||
.AppendLine(" on se.f_lot = pl.f_lot ")
|
||||
.AppendLine(" join [spcepiworld].[dbo].[part_dat] pd ")
|
||||
.AppendLine(" on se.f_part = pd.f_part ")
|
||||
.AppendLine(" join [spcepiworld].[dbo].[test_dat] td ")
|
||||
.AppendLine(" join [spcepiworld].[dbo].[test_dat] td ")
|
||||
.AppendLine(" on se.f_test = td.f_test ")
|
||||
.AppendLine(" where se.f_flag = 0 ");
|
||||
if (subGroupId is not null)
|
||||
@ -75,7 +75,7 @@ public class FromIQS
|
||||
.AppendLine(" order by iq.ev_count desc, iq.cl_count desc, iq.sl_count desc, iq.se_sgrp, iq.se_tsno, iq.td_test ")
|
||||
.AppendLine(" for json path ");
|
||||
return result.ToString();
|
||||
}
|
||||
} // cSpell:restore
|
||||
|
||||
private static StringBuilder GetForJsonPath(string connectionString, string commandText)
|
||||
{
|
||||
@ -135,17 +135,17 @@ public class FromIQS
|
||||
else
|
||||
{
|
||||
JsonElement[]? jsonElements = JsonSerializer.Deserialize<JsonElement[]>(stringBuilder.ToString());
|
||||
if (jsonElements is null || !jsonElements.Any() || jsonElements[0].ValueKind != JsonValueKind.Object)
|
||||
if (jsonElements is null || jsonElements.Length == 0 || jsonElements[0].ValueKind != JsonValueKind.Object)
|
||||
commandText = stringBuilder.ToString();
|
||||
else
|
||||
{
|
||||
JsonProperty[] jsonProperties = jsonElements[0].EnumerateObject().ToArray();
|
||||
if (!jsonProperties.Any() || jsonProperties[3].Name != "se_sgrp" || !long.TryParse(jsonProperties[3].Value.ToString(), out long subGroupId))
|
||||
if (jsonProperties.Length == 0 || jsonProperties[3].Name != "se_sgrp" || !long.TryParse(jsonProperties[3].Value.ToString(), out long subGroupId))
|
||||
commandText = stringBuilder.ToString();
|
||||
else
|
||||
{
|
||||
result = subGroupId;
|
||||
if (jsonProperties.Any() && jsonProperties[0].Name == "ev_count" && int.TryParse(jsonProperties[0].Value.ToString(), out int evCount))
|
||||
if (jsonProperties.Length != 0 && jsonProperties[0].Name == "ev_count" && int.TryParse(jsonProperties[0].Value.ToString(), out int evCount))
|
||||
count = evCount;
|
||||
}
|
||||
}
|
||||
@ -204,40 +204,26 @@ public class FromIQS
|
||||
return result;
|
||||
}
|
||||
|
||||
internal static void Save(string openInsightApiECDirectory, string openInsightApiIFXDirectory, Logistics logistics, string reportFullPath, string logisticLines, txt.Description description, string lines, long? subGroupId, string weekOfYear)
|
||||
internal static void Save(string openInsightApiECDirectory, Logistics logistics, string reportFullPath, string logisticLines, txt.Description description, string lines, long? subGroupId, string weekOfYear)
|
||||
{
|
||||
string checkFile;
|
||||
string fileName = Path.GetFileName(reportFullPath);
|
||||
string json = GetJson(logistics, logisticLines, description);
|
||||
string? ecPathRoot = Path.GetPathRoot(openInsightApiECDirectory);
|
||||
string? ifxPathRoot = Path.GetPathRoot(openInsightApiIFXDirectory);
|
||||
bool ecExists = ecPathRoot is not null && Directory.Exists(ecPathRoot);
|
||||
bool ifxExists = ifxPathRoot is not null && Directory.Exists(ifxPathRoot);
|
||||
string weekYear = $"{logistics.DateTimeFromSequence:yyyy}_Week_{weekOfYear}";
|
||||
string ecDirectory = Path.Combine(openInsightApiECDirectory, weekYear, $"-{description.PSN}", $"-{description.Reactor}", $"-{description.RDS}", $"-{subGroupId}");
|
||||
string ifxDirectory = Path.Combine(openInsightApiIFXDirectory, weekYear, $"-{description.PSN}", $"-{description.Reactor}", $"-{description.RDS}", $"-{subGroupId}");
|
||||
if (ecExists && !Directory.Exists(ecDirectory))
|
||||
_ = Directory.CreateDirectory(ecDirectory);
|
||||
if (ifxExists && !Directory.Exists(ifxDirectory))
|
||||
_ = Directory.CreateDirectory(ifxDirectory);
|
||||
checkFile = Path.Combine(ecDirectory, fileName);
|
||||
if (ecExists && !File.Exists(checkFile))
|
||||
File.Copy(reportFullPath, checkFile);
|
||||
checkFile = Path.Combine(ifxDirectory, fileName);
|
||||
if (ifxExists && !File.Exists(checkFile))
|
||||
File.Copy(reportFullPath, checkFile);
|
||||
checkFile = Path.Combine(ecDirectory, $"{logistics.DateTimeFromSequence.Ticks}.txt");
|
||||
if (ecExists && !File.Exists(checkFile))
|
||||
File.WriteAllText(checkFile, lines);
|
||||
checkFile = Path.Combine(ifxDirectory, $"{logistics.DateTimeFromSequence.Ticks}.txt");
|
||||
if (ifxExists && !File.Exists(checkFile))
|
||||
File.WriteAllText(checkFile, lines);
|
||||
checkFile = Path.Combine(ecDirectory, $"{logistics.DateTimeFromSequence.Ticks}.json");
|
||||
if (ecExists && !File.Exists(checkFile))
|
||||
File.WriteAllText(checkFile, json);
|
||||
checkFile = Path.Combine(ifxDirectory, $"{logistics.DateTimeFromSequence.Ticks}.json");
|
||||
if (ifxExists && !File.Exists(checkFile))
|
||||
File.WriteAllText(checkFile, json);
|
||||
}
|
||||
|
||||
#nullable disable
|
||||
|
@ -31,7 +31,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
throw new Exception(cellInstanceConnectionName);
|
||||
if (!_IsDuplicator)
|
||||
throw new Exception(cellInstanceConnectionName);
|
||||
_OpenInsightMetrologyViewerFileShare = @"\\messv02ecc1.ec.local\EC_Metrology_Si\MetrologyAttachments\SP1RunHeader_";
|
||||
_OpenInsightMetrologyViewerFileShare = @"\\mesfs.infineon.com\EC_Metrology_Si\MetrologyAttachments\SP1RunHeader_";
|
||||
_OpenInsightMetrologyViewerAPI = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "OpenInsight.MetrologyViewerAPI");
|
||||
}
|
||||
|
||||
@ -117,6 +117,8 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
if (!Directory.Exists(directory))
|
||||
_ = Directory.CreateDirectory(directory);
|
||||
string fullPath = Path.Combine(directory, Path.GetFileName(reportFullPath));
|
||||
if (File.Exists(fullPath))
|
||||
File.Delete(fullPath);
|
||||
File.Copy(reportFullPath, fullPath);
|
||||
WSRequest wsRequest = new(this, _Logistics, descriptions, fullPath);
|
||||
(string json, WS.Results wsResults) = WS.SendData(_OpenInsightMetrologyViewerAPI, wsRequest);
|
||||
|
@ -609,7 +609,7 @@ public class WSRequest
|
||||
Details.Add(detail);
|
||||
}
|
||||
Date = logistics.DateTimeFromSequence.ToString();
|
||||
if (UniqueID is null && Details.Any())
|
||||
if (UniqueID is null && Details.Count != 0)
|
||||
UniqueID = Details[0].HeaderUniqueID;
|
||||
}
|
||||
|
||||
@ -651,8 +651,6 @@ public class WSRequest
|
||||
if (summaryFiles.Length != 1)
|
||||
throw new Exception($"Invalid source file count for <{wsResultsHeaderID}>!{Environment.NewLine}{json}");
|
||||
string[] prnFiles = Directory.GetFiles(matchDirectory, "WaferMap*.prn", SearchOption.TopDirectoryOnly);
|
||||
if (prnFiles.Length == 0 || prnFiles.Length != descriptions.Count)
|
||||
throw new Exception("Invalid WaferMap*.prn file count!");
|
||||
List<string> pdfFiles = new();
|
||||
foreach (string prnFile in prnFiles.OrderBy(l => l))
|
||||
pdfFiles.Add(ConvertSourceFileToPdf(ghostPCLFileName, prnFile));
|
||||
|
@ -121,13 +121,13 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
_ = Directory.CreateDirectory(jobIdDirectory);
|
||||
string json;
|
||||
string[] matchDirectories = GetInProcessDirectory(jobIdDirectory);
|
||||
if (!_StaticRuns.ContainsKey(_Logistics.Sequence))
|
||||
if (!_StaticRuns.TryGetValue(_Logistics.Sequence, out List<string> collection))
|
||||
json = string.Empty;
|
||||
else
|
||||
{
|
||||
if (_StaticRuns[_Logistics.Sequence].Count != 1)
|
||||
if (collection.Count != 1)
|
||||
throw new Exception($"{nameof(_StaticRuns)} has too many values for {_Logistics.Sequence}!");
|
||||
json = _StaticRuns[_Logistics.Sequence][0];
|
||||
json = collection[0];
|
||||
lock (_StaticRuns)
|
||||
_ = _StaticRuns.Remove(_Logistics.Sequence);
|
||||
}
|
||||
|
@ -15,9 +15,9 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
|
||||
#nullable enable
|
||||
|
||||
public const string BarcodeHostFileShare = @"\\messv02ecc1.ec.local\EC_Metrology_Si\BarcodeHost\API";
|
||||
public const string MetrologyFileShare = @"\\messv02ecc1.ec.local\EC_Metrology_Si\WorkMaterialOut\API";
|
||||
public const string LSL2SQLConnectionString = @"Data Source=10.95.128.28\PROD1,53959;Initial Catalog=LSL2SQL;Persist Security Info=True;User ID=srpadmin;Password=0okm9ijn;";
|
||||
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 LSL2SQLConnectionString = @"Data Source=messqlec1.infineon.com\PROD1,53959;Initial Catalog=LSL2SQL;Persist Security Info=True;User ID=srpadmin;Password=0okm9ijn;";
|
||||
|
||||
private long? _TickOffset;
|
||||
|
||||
|
@ -362,7 +362,7 @@ public class Job
|
||||
if (fileInfo.LastWriteTime.Ticks > sequence)
|
||||
continue;
|
||||
lines = File.ReadAllLines(file);
|
||||
if (!lines.Any())
|
||||
if (lines.Length == 0)
|
||||
continue;
|
||||
text = lines.First();
|
||||
if (string.IsNullOrEmpty(text) || text.Length < 3 || text[0] != '1' || (text[1] != 't' && text[1] != 'T'))
|
||||
@ -437,7 +437,7 @@ public class Job
|
||||
}
|
||||
|
||||
private static string GetCommandText(int? rds, int? workOrderNumber, int? workOrderCassette, int? slot, int? reactor)
|
||||
{
|
||||
{ // cSpell:disable
|
||||
StringBuilder result = new();
|
||||
_ = result.Append(" select ").
|
||||
Append(" rr.rds_no ").
|
||||
@ -512,7 +512,7 @@ public class Job
|
||||
Append(" ) ").
|
||||
Append(" for json path ");
|
||||
return result.ToString();
|
||||
}
|
||||
} // cSpell:restore
|
||||
|
||||
private static (string, string, int?, string, int?, string) Get(string lsl2SQLConnectionString, string layer, string psn, int? reactorNumber, int? slotNumber, int? workOrderNumber, int? workOrderCassette, string zone)
|
||||
{
|
||||
@ -535,7 +535,7 @@ public class Job
|
||||
{ runs = JsonSerializer.Deserialize<Run[]>(json); }
|
||||
catch (Exception)
|
||||
{ runs = Array.Empty<Run>(); }
|
||||
if (!runs.Any())
|
||||
if (runs.Length == 0)
|
||||
{
|
||||
rdsNumber = null;
|
||||
comment = hyphen;
|
||||
@ -583,7 +583,7 @@ public class Job
|
||||
{ runs = JsonSerializer.Deserialize<Run[]>(json); }
|
||||
catch (Exception)
|
||||
{ runs = Array.Empty<Run>(); }
|
||||
if (!runs.Any())
|
||||
if (runs.Length == 0)
|
||||
{
|
||||
comment = hyphen;
|
||||
zone = string.Empty;
|
||||
|
@ -746,7 +746,7 @@ public class Description : IDescription, Shared.Properties.IDescription
|
||||
List<IDescription> IDescription.GetDescriptions(IFileRead fileRead, Logistics logistics, List<Test> tests, IProcessData iProcessData)
|
||||
{
|
||||
List<IDescription> results = new();
|
||||
if (iProcessData is null || !iProcessData.Details.Any() || iProcessData is not ProcessData processData)
|
||||
if (iProcessData is null || iProcessData.Details.Count == 0 || iProcessData is not ProcessData processData)
|
||||
results.Add(GetDefault(fileRead, logistics));
|
||||
else
|
||||
{
|
||||
|
@ -5,7 +5,6 @@ using Adaptation.Shared.Methods;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text.Json;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
@ -120,7 +119,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
}
|
||||
SetFileParameterLotID(mid);
|
||||
_Logistics.Update(mid, processData.Reactor);
|
||||
if (!iProcessData.Details.Any())
|
||||
if (iProcessData.Details.Count == 0)
|
||||
throw new Exception(string.Concat("B) No Data - ", dateTime.Ticks));
|
||||
results = iProcessData.GetResults(this, _Logistics, results.Item4);
|
||||
}
|
||||
|
Reference in New Issue
Block a user