v2.49.2 30 Tests Passed

SRP and nuget server name
Date consistency
Delay for RAMS
This commit is contained in:
2023-05-23 12:53:37 -07:00
parent a5a44a62c0
commit 05b7f32605
20 changed files with 502 additions and 97 deletions

View File

@ -62,10 +62,10 @@ public class Job
(int? workOrderNumber, int? _, int? workOrderCassette, int? slotNumber, bool isWorkOrder) = GetWorkOrder(input);
if (isWorkOrder || reactorNumber.HasValue)
(layer, psn, rdsNumber, zone) = (string.Empty, string.Empty, null, string.Empty);
else if (!string.IsNullOrEmpty(input.MID) && input.MID.Length is not 2 and not 3 and not 5)
(layer, psn, rdsNumber, reactorNumber, zone) = Get(input);
else
else if (!string.IsNullOrEmpty(input.MID) && input.MID.Length is 2 or 3 && Regex.IsMatch(input.MID, "^[a-zA-z]{2,3}"))
(layer, psn, rdsNumber, reactorNumber, zone) = Get(metrologyFileShare, input);
else
(layer, psn, rdsNumber, reactorNumber, zone) = Get(input);
if (IsValid(rdsNumber))
(comment, layer, rdsNumber, psn, reactorNumber, zone) = GetWithValidRDS(lsl2SQLConnectionString, layer, psn, rdsNumber, reactorNumber, zone);
else if (isWorkOrder || reactorNumber.HasValue)
@ -150,15 +150,15 @@ public class Job
private static bool IsInvalid(int? rdsNumber) => rdsNumber is null or < 100000 or > 100000000;
private static (string, string) GetReactorAndRDS(string defaultReactor, string defaultRDS, string text, string formattedText, string[] segments, bool hasRDS)
private static (string, string) GetReactorAndRDS(string defaultReactor, string defaultRDS, string text, string formattedText, string[] segments)
{
string rds;
string reactor;
if (string.IsNullOrEmpty(text) || segments.Length == 0 || string.IsNullOrEmpty(formattedText) || (segments.Length > 1 && !hasRDS))
if (string.IsNullOrEmpty(text) || segments.Length == 0 || string.IsNullOrEmpty(formattedText))
reactor = defaultReactor;
else
reactor = segments[0];
if (segments.Length <= 1 || !int.TryParse(segments[1].Replace("QP", string.Empty), out int rdsValue) || rdsValue < 99)
if (segments.Length <= 1 || !int.TryParse(segments[1], out int rdsValue) || rdsValue < 99)
rds = defaultRDS;
else
rds = segments[1];
@ -170,11 +170,11 @@ public class Job
return new(reactor, rds);
}
private static (string, string) GetLayerAndPSN(string defaultLayer, string defaultPSN, string[] segments, bool hasRDS)
private static (string, string) GetLayerAndPSN(string defaultLayer, string defaultPSN, string[] segments)
{
string psn;
string layer;
if (segments.Length <= 2 || (segments.Length > 1 && !hasRDS))
if (segments.Length <= 2)
{
psn = defaultPSN;
layer = defaultLayer;
@ -223,10 +223,10 @@ public class Job
string defaultLayer = string.Empty;
string defaultReactor = string.Empty;
string[] segments = input.MID.Split(new char[] { '-' });
bool hasRDS = Regex.IsMatch(input.MID, "[-]?([QP][0-9]{4,}|[0-9]{5,})[-]?");
// bool hasRDS = Regex.IsMatch(input.MID, "[-]?([QP][0-9]{4,}|[0-9]{5,})[-]?");
string formattedText = Regex.Replace(input.MID, @"[\\,\/,\:,\*,\?,\"",\<,\>,\|]", "_").Split('\r')[0].Split('\n')[0];
(reactor, rds) = GetReactorAndRDS(defaultReactor, defaultRDS, input.MID, formattedText, segments, hasRDS);
if (string.IsNullOrEmpty(rds))
(reactor, rds) = GetReactorAndRDS(defaultReactor, defaultRDS, input.MID, formattedText, segments);
if (string.IsNullOrEmpty(rds) || segments.Length < 2)
rdsNumber = 0;
else
_ = int.TryParse(segments[1], out rdsNumber);
@ -240,7 +240,7 @@ public class Job
else
{
reactorNumber = reactorCheck;
(layer, psn) = GetLayerAndPSN(defaultLayer, defaultPSN, segments, hasRDS);
(layer, psn) = GetLayerAndPSN(defaultLayer, defaultPSN, segments);
zone = GetZone(segments);
}
return new(layer, psn, rdsNumber, reactorNumber, zone);
@ -265,6 +265,7 @@ public class Job
private static (string, string, int?, int?, string) Get(string metrologyFileShare, Input input)
{
string lines;
const int zero = 0;
int? reactor = null;
int? rdsNumber = null;
string psn = string.Empty;
@ -272,9 +273,9 @@ public class Job
string zone = string.Empty;
string layer = string.Empty;
WorkMaterialOut? workMaterialOut;
if (!Directory.Exists(metrologyFileShare))
if (string.IsNullOrEmpty(metrologyFileShare) || !Directory.Exists(metrologyFileShare))
throw new Exception($"Unable to access file-share <{metrologyFileShare}>");
if (!string.IsNullOrEmpty(input.MID))
if (!string.IsNullOrEmpty(input.MID) && input.MID.Length is 3)
{
string[] checkDirectories = GetDirectories(metrologyFileShare);
foreach (string checkDirectory in checkDirectories)
@ -282,6 +283,7 @@ public class Job
if (!Directory.Exists(checkDirectory))
_ = Directory.CreateDirectory(checkDirectory);
files.AddRange(Directory.GetFiles(checkDirectory, $"WMO-{input.MID}.json", SearchOption.TopDirectoryOnly));
files.AddRange(Directory.GetFiles(checkDirectory, $"WMO-{input.MID.Substring(1, 2)}{input.MID[zero]}.json", SearchOption.TopDirectoryOnly));
}
}
foreach (string file in files.OrderByDescending(l => new FileInfo(l).LastWriteTime))