UniqueId replacement for attachments

Write input PDSF in output after EOF

MoveMatchingFile

GetPropertyValue for MoveMatchingFiles

ProcessDataStandardFormat over Tuple

MoveMatchingFiles to use ProcessDataStandardFormatMapping
This commit is contained in:
Mike Phares 2025-04-14 09:41:36 -07:00
parent 8235e80035
commit e0298fb8f5
3 changed files with 37 additions and 4 deletions

View File

@ -221,7 +221,7 @@ public class WSRequest
throw new Exception("Invalid *.pdf file count!"); throw new Exception("Invalid *.pdf file count!");
List<WS.Attachment> headerAttachments = new() List<WS.Attachment> headerAttachments = new()
{ {
new WS.Attachment(subGroupId, headerId, headerIdDirectory, descriptions[0].HeaderUniqueId, "Data.pdf", pdfFiles[0]) new WS.Attachment(subGroupId, headerId, headerIdDirectory, $"{logistics.JobID}_{logistics.MID}_{logistics.DateTimeFromSequence:yyyyMMddHHmmssffff}", "Data.pdf", pdfFiles[0])
}; };
WS.AttachFiles(openInsightMetrologyViewerAPI, headerAttachments, dataAttachments: null); WS.AttachFiles(openInsightMetrologyViewerAPI, headerAttachments, dataAttachments: null);
} }

View File

@ -129,6 +129,7 @@ public class FileRead : Shared.FileRead, IFileRead
string destinationJobIdDirectory = Path.Combine(_JobIdProcessParentDirectory, _Logistics.JobID, directoryName); string destinationJobIdDirectory = Path.Combine(_JobIdProcessParentDirectory, _Logistics.JobID, directoryName);
string sequenceDirectory = Path.Combine(destinationJobIdDirectory, logisticsSequence); string sequenceDirectory = Path.Combine(destinationJobIdDirectory, logisticsSequence);
string jsonFileName = Path.Combine(sequenceDirectory, $"{Path.GetFileNameWithoutExtension(reportFullPath)}.json"); string jsonFileName = Path.Combine(sequenceDirectory, $"{Path.GetFileNameWithoutExtension(reportFullPath)}.json");
MoveMatchingFile(jobIdDirectory, matchDirectories[0]);
Directory.Move(matchDirectories[0], destinationJobIdDirectory); Directory.Move(matchDirectories[0], destinationJobIdDirectory);
if (!Directory.Exists(sequenceDirectory)) if (!Directory.Exists(sequenceDirectory))
_ = Directory.CreateDirectory(sequenceDirectory); _ = Directory.CreateDirectory(sequenceDirectory);
@ -136,6 +137,30 @@ public class FileRead : Shared.FileRead, IFileRead
File.WriteAllText(jsonFileName, json); File.WriteAllText(jsonFileName, json);
} }
private static void MoveMatchingFile(string jobIdDirectory, string matchDirectory)
{
string checkFile;
string jobIdDirectoryFileName;
string matchDirectoryFileName;
string[] jobIdDirectoryFiles = Directory.GetFiles(jobIdDirectory, "*", SearchOption.TopDirectoryOnly);
string[] matchDirectoryFiles = Directory.GetFiles(matchDirectory, "*", SearchOption.TopDirectoryOnly);
foreach (string jobIdDirectoryFile in jobIdDirectoryFiles)
{
jobIdDirectoryFileName = Path.GetFileName(jobIdDirectoryFile);
foreach (string matchDirectoryFile in matchDirectoryFiles)
{
matchDirectoryFileName = Path.GetFileName(matchDirectoryFile);
if (jobIdDirectoryFileName.StartsWith(matchDirectoryFileName))
{
checkFile = Path.Combine(matchDirectory, Path.GetFileName(matchDirectoryFile));
if (File.Exists(checkFile))
continue;
File.Move(jobIdDirectoryFile, checkFile);
}
}
}
}
private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime) private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime)
{ {
Tuple<string, Test[], JsonElement[], List<FileInfo>> results; Tuple<string, Test[], JsonElement[], List<FileInfo>> results;

View File

@ -28,14 +28,17 @@ internal class ProcessDataStandardFormat
internal ReadOnlyCollection<string> Body { get; private set; } internal ReadOnlyCollection<string> Body { get; private set; }
internal ReadOnlyCollection<string> Columns { get; private set; } internal ReadOnlyCollection<string> Columns { get; private set; }
internal ReadOnlyCollection<string> Logistics { get; private set; } internal ReadOnlyCollection<string> Logistics { get; private set; }
internal ReadOnlyCollection<string> InputLines { get; private set; }
internal ProcessDataStandardFormat(ReadOnlyCollection<string> body, internal ProcessDataStandardFormat(ReadOnlyCollection<string> body,
ReadOnlyCollection<string> columns, ReadOnlyCollection<string> columns,
ReadOnlyCollection<string> inputLines,
ReadOnlyCollection<string> logistics, ReadOnlyCollection<string> logistics,
long? sequence) long? sequence)
{ {
Body = body; Body = body;
Columns = columns; Columns = columns;
InputLines = inputLines;
Logistics = logistics; Logistics = logistics;
Sequence = sequence; Sequence = sequence;
} }
@ -53,7 +56,7 @@ internal class ProcessDataStandardFormat
GetString(SearchFor.Archive, addSpaces, separator); GetString(SearchFor.Archive, addSpaces, separator);
internal static ProcessDataStandardFormat GetEmpty() => internal static ProcessDataStandardFormat GetEmpty() =>
new(new(Array.Empty<string>()), new(Array.Empty<string>()), new(Array.Empty<string>()), null); new(new(Array.Empty<string>()), new(Array.Empty<string>()), new(Array.Empty<string>()), new(Array.Empty<string>()), null);
internal static List<string> PDSFToFixedWidth(string reportFullPath) internal static List<string> PDSFToFixedWidth(string reportFullPath)
{ {
@ -169,7 +172,7 @@ internal class ProcessDataStandardFormat
{ {
for (int i = r; i < lines.Length; i++) for (int i = r; i < lines.Length; i++)
{ {
if (lines[i].StartsWith("END_HEADER")) if (!lines[i].StartsWith("LOGISTICS_") || lines[i].StartsWith("END_HEADER"))
break; break;
logistics.Add(lines[i]); logistics.Add(lines[i]);
} }
@ -180,6 +183,7 @@ internal class ProcessDataStandardFormat
logistics.Add(lines[1]); logistics.Add(lines[1]);
result = new(body: body.AsReadOnly(), result = new(body: body.AsReadOnly(),
columns: columns.AsReadOnly(), columns: columns.AsReadOnly(),
inputLines: lines.ToList().AsReadOnly(),
logistics: logistics.AsReadOnly(), logistics: logistics.AsReadOnly(),
sequence: null); sequence: null);
return result; return result;
@ -234,7 +238,7 @@ internal class ProcessDataStandardFormat
{ {
for (int i = r; i < lines.Length; i++) for (int i = r; i < lines.Length; i++)
{ {
if (lines[i].StartsWith("END_HEADER")) if (!lines[i].StartsWith("LOGISTICS_") || lines[i].StartsWith("END_HEADER"))
break; break;
logistics.Add(lines[i]); logistics.Add(lines[i]);
} }
@ -250,6 +254,7 @@ internal class ProcessDataStandardFormat
} }
result = new(body: body.AsReadOnly(), result = new(body: body.AsReadOnly(),
columns: new(columns), columns: new(columns),
inputLines: lines.ToList().AsReadOnly(),
logistics: logistics.AsReadOnly(), logistics: logistics.AsReadOnly(),
sequence: sequence); sequence: sequence);
return result; return result;
@ -341,6 +346,7 @@ internal class ProcessDataStandardFormat
} }
result = new(body: new(results), result = new(body: new(results),
columns: processDataStandardFormatMapping.OldColumnNames, columns: processDataStandardFormatMapping.OldColumnNames,
inputLines: processDataStandardFormat.InputLines,
logistics: processDataStandardFormat.Logistics, logistics: processDataStandardFormat.Logistics,
sequence: processDataStandardFormat.Sequence); sequence: processDataStandardFormat.Sequence);
return result; return result;
@ -372,6 +378,8 @@ internal class ProcessDataStandardFormat
results.Add("LOGISTICS_COLUMN\tA_LOGISTICS"); results.Add("LOGISTICS_COLUMN\tA_LOGISTICS");
results.Add("LOGISTICS_COLUMN\tB_LOGISTICS"); results.Add("LOGISTICS_COLUMN\tB_LOGISTICS");
results.AddRange(processDataStandardFormat.Logistics); results.AddRange(processDataStandardFormat.Logistics);
results.Add("EOF");
results.AddRange(processDataStandardFormat.InputLines.Select(l => l.Replace('\t', '|')));
File.WriteAllText(path, string.Join(Environment.NewLine, results)); File.WriteAllText(path, string.Join(Environment.NewLine, results));
} }