Ready to test
This commit is contained in:
parent
791fe5b010
commit
aaefffd3d2
@ -1,5 +1,6 @@
|
||||
using Adaptation.Shared;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Globalization;
|
||||
@ -16,65 +17,174 @@ public class FromIQS
|
||||
|
||||
#nullable enable
|
||||
|
||||
private static string GetCommandText(DateTime dateTime)
|
||||
{ // cSpell:disable
|
||||
List<string> results = new();
|
||||
TimeSpan timeSpan = new(dateTime.ToUniversalTime().AddDays(-1).Ticks - new DateTime(1970, 01, 01).Ticks);
|
||||
long infinityQS = (long)Math.Floor(timeSpan.TotalSeconds);
|
||||
results.Add(" select count_se_sgtm CountSeSgtm, ");
|
||||
results.Add(" dateadd(HH, -7, (dateadd(SS, convert(bigint, max_se_sgtm), '19700101'))) DateTime, ");
|
||||
results.Add(" max_max_se_test MaxMaxSeTest, ");
|
||||
results.Add(" ( ");
|
||||
results.Add(" select td.f_name ");
|
||||
results.Add(" from [SPCEPIWORLD].[dbo].[TEST_DAT] td ");
|
||||
results.Add(" where td.f_test = max_max_se_test ");
|
||||
results.Add(" ) MaxMaxSeTestName, ");
|
||||
results.Add(" max_max_se_val MaxMaxSeVal, ");
|
||||
results.Add(" max_se_lot MaxSeLot, ");
|
||||
results.Add(" ( ");
|
||||
results.Add(" select pl.f_name ");
|
||||
results.Add(" from [SPCEPIWORLD].[dbo].[PART_LOT] pl ");
|
||||
results.Add(" where max_se_lot = pl.f_lot ");
|
||||
results.Add(" ) MaxSeLotName, ");
|
||||
results.Add(" max_se_part MaxSePart, ");
|
||||
results.Add(" ( ");
|
||||
results.Add(" select rd.f_name ");
|
||||
results.Add(" from [SPCEPIWORLD].[dbo].[PART_DAT] rd ");
|
||||
results.Add(" where max_se_part = rd.f_part ");
|
||||
results.Add(" ) MaxSePartName, ");
|
||||
results.Add(" max_se_prcs MaxSePrcs, ");
|
||||
results.Add(" ( ");
|
||||
results.Add(" select rd.f_name ");
|
||||
results.Add(" from [SPCEPIWORLD].[dbo].[PRCS_DAT] rd ");
|
||||
results.Add(" where max_se_prcs = rd.f_prcs ");
|
||||
results.Add(" ) MaxSePrcsName, ");
|
||||
results.Add(" max_se_sgrp MaxSeSgrp, ");
|
||||
results.Add(" min_min_se_test MinMinSeTest, ");
|
||||
results.Add(" ( ");
|
||||
results.Add(" select td.f_name ");
|
||||
results.Add(" from [SPCEPIWORLD].[dbo].[TEST_DAT] td ");
|
||||
results.Add(" where td.f_test = min_min_se_test ");
|
||||
results.Add(" ) MinMinSeTestName, ");
|
||||
results.Add(" min_min_se_val MinMinSeVal, ");
|
||||
results.Add(" min_se_sgrp MinSeSgrp ");
|
||||
results.Add(" from ( ");
|
||||
results.Add(" select count_se_sgtm, ");
|
||||
results.Add(" max_se_lot, ");
|
||||
results.Add(" max_se_part, ");
|
||||
results.Add(" max_se_prcs, ");
|
||||
results.Add(" max_se_sgrp, ");
|
||||
results.Add(" max_se_sgtm, ");
|
||||
results.Add(" min_se_sgrp, ");
|
||||
results.Add(" max(max_se_val) max_max_se_val, ");
|
||||
results.Add(" min(min_se_val) min_min_se_val, ");
|
||||
results.Add(" max(max_se_test) max_max_se_test, ");
|
||||
results.Add(" min(min_se_test) min_min_se_test ");
|
||||
results.Add(" from ( ");
|
||||
results.Add(" select count_se_sgtm, ");
|
||||
results.Add(" max_se_lot, ");
|
||||
results.Add(" max_se_val, ");
|
||||
results.Add(" min_se_val, ");
|
||||
results.Add(" max_se_part, ");
|
||||
results.Add(" max_se_prcs, ");
|
||||
results.Add(" max_se_sgrp, ");
|
||||
results.Add(" max_se_sgtm, ");
|
||||
results.Add(" max_se_test, ");
|
||||
results.Add(" min_se_sgrp, ");
|
||||
results.Add(" min_se_test ");
|
||||
results.Add(" from ( ");
|
||||
results.Add(" select ");
|
||||
results.Add(" max(se.f_lot) max_se_lot, ");
|
||||
results.Add(" max(se.f_val) max_se_val, ");
|
||||
results.Add(" min(se.f_lot) min_se_lot, ");
|
||||
results.Add(" min(se.f_val) min_se_val, ");
|
||||
results.Add(" max(se.f_part) max_se_part, ");
|
||||
results.Add(" max(se.f_prcs) max_se_prcs, ");
|
||||
results.Add(" max(se.f_sgrp) max_se_sgrp, ");
|
||||
results.Add(" max(se.f_sgtm) max_se_sgtm, ");
|
||||
results.Add(" max(se.f_test) max_se_test, ");
|
||||
results.Add(" min(se.f_part) min_se_part, ");
|
||||
results.Add(" min(se.f_prcs) min_se_prcs, ");
|
||||
results.Add(" min(se.f_sgrp) min_se_sgrp, ");
|
||||
results.Add(" min(se.f_sgtm) min_se_sgtm, ");
|
||||
results.Add(" min(se.f_test) min_se_test, ");
|
||||
results.Add(" count(se.f_sgtm) count_se_sgtm ");
|
||||
results.Add(" from [spcepiworld].[dbo].[sgrp_ext] se ");
|
||||
results.Add(" where se.f_tsno = 1 ");
|
||||
results.Add(" and se.f_flag = 0 ");
|
||||
results.Add($" and se.f_sgtm > {infinityQS} ");
|
||||
results.Add(" group by se.f_sgtm, se.f_prcs, se.f_lot, se.f_test, se.f_val ");
|
||||
results.Add(" ) qa ");
|
||||
results.Add(" where qa.count_se_sgtm > 1 ");
|
||||
results.Add(" and min_se_lot = max_se_lot ");
|
||||
results.Add(" and min_se_val = max_se_val ");
|
||||
results.Add(" and min_se_val = max_se_val ");
|
||||
results.Add(" and min_se_part = max_se_part ");
|
||||
results.Add(" and min_se_prcs = max_se_prcs ");
|
||||
results.Add(" and min_se_sgtm = max_se_sgtm ");
|
||||
results.Add(" and min_se_test = max_se_test ");
|
||||
results.Add(" ) qb ");
|
||||
results.Add(" group by count_se_sgtm, ");
|
||||
results.Add(" max_se_lot, ");
|
||||
results.Add(" max_se_part, ");
|
||||
results.Add(" max_se_prcs, ");
|
||||
results.Add(" max_se_sgrp, ");
|
||||
results.Add(" max_se_sgtm, ");
|
||||
results.Add(" min_se_sgrp ");
|
||||
results.Add(" ");
|
||||
results.Add(" ) qc ");
|
||||
results.Add(" order by max_se_sgrp desc ");
|
||||
results.Add(" for json path ");
|
||||
return string.Join(Environment.NewLine, results);
|
||||
} // cSpell:restore
|
||||
|
||||
private static string GetCommandText(Logistics logistics, pcl.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 ")
|
||||
.AppendLine(" from ( ")
|
||||
.AppendLine(" select ")
|
||||
.AppendLine(" se.f_sgrp se_sgrp, ")
|
||||
.AppendLine(" se.f_sgtm se_sgtm, ")
|
||||
.AppendLine(" se.f_tsno se_tsno, ")
|
||||
.AppendLine(" se.f_val se_val, ")
|
||||
.AppendLine(" pr.f_name pr_name, ")
|
||||
.AppendLine(" jd.f_name jd_name, ")
|
||||
.AppendLine(" pl.f_name pl_name, ")
|
||||
.AppendLine(" pd.f_name pd_name, ")
|
||||
.AppendLine(" td.f_test td_test, ")
|
||||
.AppendLine(" td.f_name td_name, ")
|
||||
.AppendLine(" (select count(cl.f_part) ")
|
||||
.AppendLine(" from [spcepiworld].[dbo].[ctrl_lim] cl ")
|
||||
.AppendLine(" where cl.f_part = pd.f_part ")
|
||||
.AppendLine(" and cl.f_test = td.f_test ")
|
||||
.AppendLine(" ) cl_count, ")
|
||||
.AppendLine(" (select count(sl.f_part) ")
|
||||
.AppendLine(" from [spcepiworld].[dbo].[spec_lim] sl ")
|
||||
.AppendLine(" where sl.f_part = pd.f_part ")
|
||||
.AppendLine(" and sl.f_test = td.f_test ")
|
||||
.AppendLine(" ) sl_count, ")
|
||||
.AppendLine(" (select count(ev.f_evnt) ")
|
||||
.AppendLine(" from [spcepiworld].[dbo].[evnt_inf] ev ")
|
||||
.AppendLine(" where ev.f_prcs = pr.f_prcs ")
|
||||
.AppendLine(" and ev.f_part = pd.f_part ")
|
||||
.AppendLine(" and ev.f_sgtm = se.f_sgtm ")
|
||||
.AppendLine(" ) ev_count ")
|
||||
.AppendLine(" from [spcepiworld].[dbo].[sgrp_ext] se ")
|
||||
.AppendLine(" join [spcepiworld].[dbo].[prcs_dat] pr ")
|
||||
.AppendLine(" on se.f_prcs = pr.f_prcs ")
|
||||
.AppendLine(" join [spcepiworld].[dbo].[job_dat] jd ")
|
||||
.AppendLine(" on se.f_job = jd.f_job ")
|
||||
.AppendLine(" join [spcepiworld].[dbo].[part_lot] pl ")
|
||||
.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(" on se.f_test = td.f_test ")
|
||||
.AppendLine(" where se.f_flag = 0 ");
|
||||
List<string> results = new();
|
||||
results.Add(" 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 ");
|
||||
results.Add(" from ( ");
|
||||
results.Add(" select ");
|
||||
results.Add(" se.f_sgrp se_sgrp, ");
|
||||
results.Add(" se.f_sgtm se_sgtm, ");
|
||||
results.Add(" se.f_tsno se_tsno, ");
|
||||
results.Add(" se.f_val se_val, ");
|
||||
results.Add(" pr.f_name pr_name, ");
|
||||
results.Add(" jd.f_name jd_name, ");
|
||||
results.Add(" pl.f_name pl_name, ");
|
||||
results.Add(" pd.f_name pd_name, ");
|
||||
results.Add(" td.f_test td_test, ");
|
||||
results.Add(" td.f_name td_name, ");
|
||||
results.Add(" (select count(cl.f_part) ");
|
||||
results.Add(" from [spcepiworld].[dbo].[ctrl_lim] cl ");
|
||||
results.Add(" where cl.f_part = pd.f_part ");
|
||||
results.Add(" and cl.f_test = td.f_test ");
|
||||
results.Add(" ) cl_count, ");
|
||||
results.Add(" (select count(sl.f_part) ");
|
||||
results.Add(" from [spcepiworld].[dbo].[spec_lim] sl ");
|
||||
results.Add(" where sl.f_part = pd.f_part ");
|
||||
results.Add(" and sl.f_test = td.f_test ");
|
||||
results.Add(" ) sl_count, ");
|
||||
results.Add(" (select count(ev.f_evnt) ");
|
||||
results.Add(" from [spcepiworld].[dbo].[evnt_inf] ev ");
|
||||
results.Add(" where ev.f_prcs = pr.f_prcs ");
|
||||
results.Add(" and ev.f_part = pd.f_part ");
|
||||
results.Add(" and ev.f_sgtm = se.f_sgtm ");
|
||||
results.Add(" ) ev_count ");
|
||||
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(" where se.f_flag = 0 ");
|
||||
if (subGroupId is not null)
|
||||
_ = result.Append(" and se.f_sgrp = ").Append(subGroupId).AppendLine(" ");
|
||||
results.Add($" and se.f_sgrp = {subGroupId} ");
|
||||
if (!string.IsNullOrEmpty(description.RDS))
|
||||
_ = result.Append(" and pl.f_name = '").Append(description.RDS).AppendLine("' ");
|
||||
_ = result
|
||||
.Append(" and pr.f_name = '").Append(description.Reactor).AppendLine("' ")
|
||||
.Append(" and pd.f_name = '").Append(description.PSN).AppendLine("' ")
|
||||
.AppendLine(" and jd.f_name in ('TENCOR1', 'TENCOR2', 'TENCOR3') ")
|
||||
.Append(" and jd.f_name = '").Append(logistics.MesEntity).AppendLine("' ")
|
||||
.Append(" and dateadd(HH, -7, (dateadd(SS, convert(bigint, se.f_sgtm), '19700101'))) = '").Append(dateTime).AppendLine("' ")
|
||||
.AppendLine(" ) as iq ")
|
||||
.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();
|
||||
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 ('TENCOR1', 'TENCOR2', 'TENCOR3') ");
|
||||
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 ");
|
||||
results.Add(" order by iq.ev_count desc, iq.cl_count desc, iq.sl_count desc, iq.se_sgrp, iq.se_tsno, iq.td_test ");
|
||||
results.Add(" for json path ");
|
||||
return string.Join(Environment.NewLine, results);
|
||||
} // cSpell:restore
|
||||
|
||||
private static StringBuilder GetForJsonPath(string connectionString, string commandText)
|
||||
@ -89,27 +199,88 @@ public class FromIQS
|
||||
return stringBuilder;
|
||||
}
|
||||
|
||||
private static string GetCommandText(List<long> subGroups)
|
||||
{ // cSpell:disable
|
||||
List<string> results = new();
|
||||
results.Add(" update [spcepiworld].[dbo].[sgrp_ext] ");
|
||||
results.Add(" set f_flag = 1 ");
|
||||
results.Add(" where f_flag = 0 ");
|
||||
results.Add($" and f_sgrp in ({string.Join($",{Environment.NewLine} ", subGroups)}) ");
|
||||
return string.Join(Environment.NewLine, results);
|
||||
} // cSpell:enable
|
||||
|
||||
private static int? ExecuteNonQuery(string connectionString, string commandText)
|
||||
{
|
||||
int? result;
|
||||
if (string.IsNullOrEmpty(connectionString))
|
||||
result = null;
|
||||
else
|
||||
{
|
||||
using SqlConnection sqlConnection = new(connectionString);
|
||||
sqlConnection.Open();
|
||||
using SqlCommand sqlCommand = new(commandText, sqlConnection);
|
||||
result = sqlCommand.ExecuteNonQuery();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private static void FlagDuplicates(string connectionString, string json)
|
||||
{
|
||||
JsonElement[]? jsonElements = JsonSerializer.Deserialize<JsonElement[]>(json);
|
||||
JsonSerializerOptions jsonSerializerOptions = new() { PropertyNameCaseInsensitive = true};
|
||||
if (jsonElements is not null && jsonElements.Length != 0 && jsonElements[0].ValueKind == JsonValueKind.Object)
|
||||
{
|
||||
Root? root;
|
||||
List<long> collection = new();
|
||||
JsonElement[] array = jsonElements.ToArray();
|
||||
foreach (JsonElement jsonElement in array)
|
||||
{
|
||||
root = JsonSerializer.Deserialize<Root>(jsonElement.ToString(), jsonSerializerOptions);
|
||||
if (root is null || root.MaxSeSgrp < 1)
|
||||
continue;
|
||||
if (collection.Count > 99)
|
||||
break;
|
||||
collection.Add(root.MaxSeSgrp);
|
||||
}
|
||||
if (collection.Count > 0)
|
||||
{
|
||||
try
|
||||
{
|
||||
string commandText = GetCommandText(collection);
|
||||
File.WriteAllText("D:/.sql", commandText);
|
||||
_ = ExecuteNonQuery(connectionString, commandText);
|
||||
}
|
||||
catch (Exception)
|
||||
{ }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal static (long?, int?, string) GetCommandText(string connectionString, Logistics logistics, pcl.Description description, long breakAfter, long preWait)
|
||||
{
|
||||
string dateTime;
|
||||
DateTime dateTime;
|
||||
int? count = null;
|
||||
string commandText;
|
||||
long? result = null;
|
||||
StringBuilder stringBuilder;
|
||||
string dateFormat = pcl.Description.GetDateFormat();
|
||||
if (DateTime.TryParseExact(description.Date, dateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime dateTimeParsed))
|
||||
dateTime = dateTimeParsed.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
dateTime = dateTimeParsed;
|
||||
else if (DateTime.TryParse(description.Date, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTimeParsed))
|
||||
dateTime = dateTimeParsed.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
dateTime = dateTimeParsed;
|
||||
else
|
||||
dateTime = logistics.DateTimeFromSequence.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
commandText = GetCommandText(logistics, description, dateTime, subGroupId: null);
|
||||
dateTime = logistics.DateTimeFromSequence;
|
||||
commandText = GetCommandText(dateTime);
|
||||
stringBuilder = GetForJsonPath(connectionString, commandText);
|
||||
if (stringBuilder.Length > 0)
|
||||
FlagDuplicates(connectionString, stringBuilder.ToString());
|
||||
commandText = GetCommandText(logistics, description, dateTime.ToString("yyyy-MM-dd HH:mm:ss"), subGroupId: null);
|
||||
for (short i = 0; i < short.MaxValue; i++)
|
||||
{
|
||||
if (DateTime.Now.Ticks > preWait)
|
||||
break;
|
||||
Thread.Sleep(100);
|
||||
}
|
||||
StringBuilder stringBuilder = new();
|
||||
for (short z = 0; z < short.MaxValue; z++)
|
||||
{
|
||||
stringBuilder = GetForJsonPath(connectionString, commandText);
|
||||
@ -228,81 +399,80 @@ public class FromIQS
|
||||
|
||||
private static string GetCommandText(string[] iqsCopyValues)
|
||||
{ // cSpell:disable
|
||||
StringBuilder result = new();
|
||||
List<string> results = new();
|
||||
if (iqsCopyValues.Length != 4)
|
||||
throw new NotSupportedException();
|
||||
string find = iqsCopyValues[1];
|
||||
string replace = iqsCopyValues[3];
|
||||
_ = result
|
||||
.AppendLine(" select pd.f_name [Part Name], ")
|
||||
.AppendLine(" null [Part Revision], ")
|
||||
.Append(" '").Append(replace).AppendLine("' [Test Name], ")
|
||||
.AppendLine(" null [Description], ")
|
||||
.AppendLine(" null [Lot Number], ")
|
||||
.AppendLine(" null [Job Name], ")
|
||||
.AppendLine(" null [Process Name], ")
|
||||
.AppendLine(" case when sl.f_url = 0 then null else sl.f_url end [Reasonable Limit (Upper)], ")
|
||||
.AppendLine(" case when sl.f_url = 0 then 0 else 1 end [Alarm Reasonable Limit (Upper)], ")
|
||||
.AppendLine(" case when sl.f_usl = 0 then null else sl.f_usl end [Specification Limit (Upper)], ")
|
||||
.AppendLine(" case when sl.f_usl = 0 then 0 else 1 end [Alarm Specification Limit (Upper)], ")
|
||||
.AppendLine(" case when sl.f_ugb = 0 then null else sl.f_ugb end [Warning Limit (Upper)], ")
|
||||
.AppendLine(" case when sl.f_ugb = 0 then 0 else 1 end [Alarm Warning Limit (Upper)], ")
|
||||
.AppendLine(" case when sl.f_tar = 0 then null else sl.f_tar end [Specification Limit (Target)], ")
|
||||
.AppendLine(" case when sl.f_lgb = 0 then null else sl.f_lgb end [Warning Limit (Lower)], ")
|
||||
.AppendLine(" case when sl.f_lgb = 0 then 0 else 1 end [Alarm Warning Limit (Lower)], ")
|
||||
.AppendLine(" case when sl.f_lsl = 0 then null else sl.f_lsl end [Specification Limit (Lower)], ")
|
||||
.AppendLine(" case when sl.f_lsl = 0 then 0 else 1 end [Alarm Specification Limit (Lower)], ")
|
||||
.AppendLine(" case when sl.f_lrl = 0 then null else sl.f_lrl end [Reasonable Limit (Lower)], ")
|
||||
.AppendLine(" case when sl.f_lrl = 0 then 0 else 1 end [Alarm Reasonable Limit (Lower)], ")
|
||||
.AppendLine(" td.f_name [Original Test Name], ")
|
||||
.AppendLine(" td.f_test [Test Id], ")
|
||||
.AppendLine(" ( ")
|
||||
.AppendLine(" select count(sl_b.f_spec) ")
|
||||
.AppendLine(" from [spcepiworld].[dbo].[spec_lim] sl_b ")
|
||||
.AppendLine(" join [spcepiworld].[dbo].[part_dat] pd_b ")
|
||||
.AppendLine(" on sl_b.f_part = pd_b.f_part ")
|
||||
.AppendLine(" join [spcepiworld].[dbo].[test_dat] td_b ")
|
||||
.AppendLine(" on sl_b.f_test = td_b.f_test ")
|
||||
.AppendLine(" where sl_b.f_prcs = 0 ")
|
||||
.Append(" and td_b.f_name = '").Append(replace).AppendLine("' ")
|
||||
.AppendLine(" and pd_b.f_name = pd.f_name ")
|
||||
.AppendLine(" and sl_b.f_url = sl.f_url ")
|
||||
.AppendLine(" and sl_b.f_usl = sl.f_usl ")
|
||||
.AppendLine(" and sl_b.f_ugb = sl.f_ugb ")
|
||||
.AppendLine(" and sl_b.f_tar = sl.f_tar ")
|
||||
.AppendLine(" and sl_b.f_lgb = sl.f_lgb ")
|
||||
.AppendLine(" and sl_b.f_lsl = sl.f_lsl ")
|
||||
.AppendLine(" and sl_b.f_lrl = sl.f_lrl ")
|
||||
.AppendLine(" group by sl_b.f_spec ")
|
||||
.AppendLine(" ) count ")
|
||||
.AppendLine(" from [spcepiworld].[dbo].[spec_lim] sl ")
|
||||
.AppendLine(" join [spcepiworld].[dbo].[part_dat] pd ")
|
||||
.AppendLine(" on sl.f_part = pd.f_part ")
|
||||
.AppendLine(" join [spcepiworld].[dbo].[test_dat] td ")
|
||||
.AppendLine(" on sl.f_test = td.f_test ")
|
||||
.AppendLine(" where sl.f_prcs = 0 ")
|
||||
.Append(" and td.f_name = '").Append(find).AppendLine("' ")
|
||||
.AppendLine(" and isnull(( ")
|
||||
.AppendLine(" select count(sl_b.f_spec) ")
|
||||
.AppendLine(" from [spcepiworld].[dbo].[spec_lim] sl_b ")
|
||||
.AppendLine(" join [spcepiworld].[dbo].[part_dat] pd_b ")
|
||||
.AppendLine(" on sl_b.f_part = pd_b.f_part ")
|
||||
.AppendLine(" join [spcepiworld].[dbo].[test_dat] td_b ")
|
||||
.AppendLine(" on sl_b.f_test = td_b.f_test ")
|
||||
.AppendLine(" where sl_b.f_prcs = 0 ")
|
||||
.Append(" and td_b.f_name = '").Append(replace).AppendLine("' ")
|
||||
.AppendLine(" and pd_b.f_name = pd.f_name ")
|
||||
.AppendLine(" and sl_b.f_url = sl.f_url ")
|
||||
.AppendLine(" and sl_b.f_usl = sl.f_usl ")
|
||||
.AppendLine(" and sl_b.f_ugb = sl.f_ugb ")
|
||||
.AppendLine(" and sl_b.f_tar = sl.f_tar ")
|
||||
.AppendLine(" and sl_b.f_lgb = sl.f_lgb ")
|
||||
.AppendLine(" and sl_b.f_lsl = sl.f_lsl ")
|
||||
.AppendLine(" and sl_b.f_lrl = sl.f_lrl ")
|
||||
.AppendLine(" group by sl_b.f_spec ")
|
||||
.AppendLine(" ), 0) = 0 ")
|
||||
.AppendLine(" for json path ");
|
||||
return result.ToString();
|
||||
results.Add(" select pd.f_name [Part Name], ");
|
||||
results.Add(" null [Part Revision], ");
|
||||
results.Add($" '{replace}' [Test Name], ");
|
||||
results.Add(" null [Description], ");
|
||||
results.Add(" null [Lot Number], ");
|
||||
results.Add(" null [Job Name], ");
|
||||
results.Add(" null [Process Name], ");
|
||||
results.Add(" case when sl.f_url = 0 then null else sl.f_url end [Reasonable Limit (Upper)], ");
|
||||
results.Add(" case when sl.f_url = 0 then 0 else 1 end [Alarm Reasonable Limit (Upper)], ");
|
||||
results.Add(" case when sl.f_usl = 0 then null else sl.f_usl end [Specification Limit (Upper)], ");
|
||||
results.Add(" case when sl.f_usl = 0 then 0 else 1 end [Alarm Specification Limit (Upper)], ");
|
||||
results.Add(" case when sl.f_ugb = 0 then null else sl.f_ugb end [Warning Limit (Upper)], ");
|
||||
results.Add(" case when sl.f_ugb = 0 then 0 else 1 end [Alarm Warning Limit (Upper)], ");
|
||||
results.Add(" case when sl.f_tar = 0 then null else sl.f_tar end [Specification Limit (Target)], ");
|
||||
results.Add(" case when sl.f_lgb = 0 then null else sl.f_lgb end [Warning Limit (Lower)], ");
|
||||
results.Add(" case when sl.f_lgb = 0 then 0 else 1 end [Alarm Warning Limit (Lower)], ");
|
||||
results.Add(" case when sl.f_lsl = 0 then null else sl.f_lsl end [Specification Limit (Lower)], ");
|
||||
results.Add(" case when sl.f_lsl = 0 then 0 else 1 end [Alarm Specification Limit (Lower)], ");
|
||||
results.Add(" case when sl.f_lrl = 0 then null else sl.f_lrl end [Reasonable Limit (Lower)], ");
|
||||
results.Add(" case when sl.f_lrl = 0 then 0 else 1 end [Alarm Reasonable Limit (Lower)], ");
|
||||
results.Add(" td.f_name [Original Test Name], ");
|
||||
results.Add(" td.f_test [Test Id], ");
|
||||
results.Add(" ( ");
|
||||
results.Add(" select count(sl_b.f_spec) ");
|
||||
results.Add(" from [spcepiworld].[dbo].[spec_lim] sl_b ");
|
||||
results.Add(" join [spcepiworld].[dbo].[part_dat] pd_b ");
|
||||
results.Add(" on sl_b.f_part = pd_b.f_part ");
|
||||
results.Add(" join [spcepiworld].[dbo].[test_dat] td_b ");
|
||||
results.Add(" on sl_b.f_test = td_b.f_test ");
|
||||
results.Add(" where sl_b.f_prcs = 0 ");
|
||||
results.Add($" and td_b.f_name = '{replace}' ");
|
||||
results.Add(" and pd_b.f_name = pd.f_name ");
|
||||
results.Add(" and sl_b.f_url = sl.f_url ");
|
||||
results.Add(" and sl_b.f_usl = sl.f_usl ");
|
||||
results.Add(" and sl_b.f_ugb = sl.f_ugb ");
|
||||
results.Add(" and sl_b.f_tar = sl.f_tar ");
|
||||
results.Add(" and sl_b.f_lgb = sl.f_lgb ");
|
||||
results.Add(" and sl_b.f_lsl = sl.f_lsl ");
|
||||
results.Add(" and sl_b.f_lrl = sl.f_lrl ");
|
||||
results.Add(" group by sl_b.f_spec ");
|
||||
results.Add(" ) count ");
|
||||
results.Add(" from [spcepiworld].[dbo].[spec_lim] sl ");
|
||||
results.Add(" join [spcepiworld].[dbo].[part_dat] pd ");
|
||||
results.Add(" on sl.f_part = pd.f_part ");
|
||||
results.Add(" join [spcepiworld].[dbo].[test_dat] td ");
|
||||
results.Add(" on sl.f_test = td.f_test ");
|
||||
results.Add(" where sl.f_prcs = 0 ");
|
||||
results.Add($" and td.f_name = '{find}' ");
|
||||
results.Add(" and isnull(( ");
|
||||
results.Add(" select count(sl_b.f_spec) ");
|
||||
results.Add(" from [spcepiworld].[dbo].[spec_lim] sl_b ");
|
||||
results.Add(" join [spcepiworld].[dbo].[part_dat] pd_b ");
|
||||
results.Add(" on sl_b.f_part = pd_b.f_part ");
|
||||
results.Add(" join [spcepiworld].[dbo].[test_dat] td_b ");
|
||||
results.Add(" on sl_b.f_test = td_b.f_test ");
|
||||
results.Add(" where sl_b.f_prcs = 0 ");
|
||||
results.Add($" and td_b.f_name = '{replace}' ");
|
||||
results.Add(" and pd_b.f_name = pd.f_name ");
|
||||
results.Add(" and sl_b.f_url = sl.f_url ");
|
||||
results.Add(" and sl_b.f_usl = sl.f_usl ");
|
||||
results.Add(" and sl_b.f_ugb = sl.f_ugb ");
|
||||
results.Add(" and sl_b.f_tar = sl.f_tar ");
|
||||
results.Add(" and sl_b.f_lgb = sl.f_lgb ");
|
||||
results.Add(" and sl_b.f_lsl = sl.f_lsl ");
|
||||
results.Add(" and sl_b.f_lrl = sl.f_lrl ");
|
||||
results.Add(" group by sl_b.f_spec ");
|
||||
results.Add(" ), 0) = 0 ");
|
||||
results.Add(" for json path ");
|
||||
return string.Join(Environment.NewLine, results);
|
||||
} // cSpell:restore
|
||||
|
||||
internal static void SaveCopy(string fileConnectorConfigurationSourceFileLocation, string connectionString, string name, string[] iqsCopyValues)
|
||||
|
47
Adaptation/FileHandlers/OpenInsight/Root.cs
Normal file
47
Adaptation/FileHandlers/OpenInsight/Root.cs
Normal file
@ -0,0 +1,47 @@
|
||||
using System;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Adaptation.FileHandlers.OpenInsight;
|
||||
|
||||
public class Root
|
||||
{
|
||||
|
||||
[JsonPropertyName("count_se_sgtm")] public long CountSeSgtm { get; }
|
||||
[JsonPropertyName("date_time")] public DateTime DateTime { get; }
|
||||
[JsonPropertyName("max_max_se_test")] public long MaxMaxSeTest { get; }
|
||||
[JsonPropertyName("max_max_se_test_name")] public string MaxMaxSeTestName { get; }
|
||||
[JsonPropertyName("max_max_se_val")] public double MaxMaxSeVal { get; }
|
||||
[JsonPropertyName("max_se_lot")] public long MaxSeLot { get; }
|
||||
[JsonPropertyName("max_se_lot_name")] public string MaxSeLotName { get; }
|
||||
[JsonPropertyName("max_se_part")] public long MaxSePart { get; }
|
||||
[JsonPropertyName("max_se_part_name")] public string MaxSePartName { get; }
|
||||
[JsonPropertyName("max_se_prcs")] public long MaxSePrcs { get; }
|
||||
[JsonPropertyName("max_se_prcs_name")] public string MaxSePrcsName { get; }
|
||||
[JsonPropertyName("max_se_sgrp")] public long MaxSeSgrp { get; }
|
||||
[JsonPropertyName("min_min_se_test")] public long MinMinSeTest { get; }
|
||||
[JsonPropertyName("min_min_se_test_name")] public string MinMinSeTestName { get; }
|
||||
[JsonPropertyName("min_min_se_val")] public double MinMinSeVal { get; }
|
||||
[JsonPropertyName("min_se_sgrp")] public long MinSeSgrp { get; }
|
||||
|
||||
[JsonConstructor]
|
||||
public Root(long countSeSgtm, DateTime dateTime, long maxMaxSeTest, string maxMaxSeTestName, double maxMaxSeVal, long maxSeLot, string maxSeLotName, long maxSePart, string maxSePartName, long maxSePrcs, string maxSePrcsName, long maxSeSgrp, long minMinSeTest, string minMinSeTestName, double minMinSeVal, long minSeSgrp)
|
||||
{
|
||||
CountSeSgtm = countSeSgtm;
|
||||
DateTime = dateTime;
|
||||
MaxMaxSeTest = maxMaxSeTest;
|
||||
MaxMaxSeTestName = maxMaxSeTestName;
|
||||
MaxMaxSeVal = maxMaxSeVal;
|
||||
MaxSeLot = maxSeLot;
|
||||
MaxSeLotName = maxSeLotName;
|
||||
MaxSePart = maxSePart;
|
||||
MaxSePartName = maxSePartName;
|
||||
MaxSePrcs = maxSePrcs;
|
||||
MaxSePrcsName = maxSePrcsName;
|
||||
MaxSeSgrp = maxSeSgrp;
|
||||
MinMinSeTest = minMinSeTest;
|
||||
MinMinSeTestName = minMinSeTestName;
|
||||
MinMinSeVal = minMinSeVal;
|
||||
MinSeSgrp = minSeSgrp;
|
||||
}
|
||||
|
||||
}
|
@ -31,6 +31,8 @@ public class FileRead : Shared.FileRead, IFileRead
|
||||
_GhostPCLFileName = Path.Combine(AppContext.BaseDirectory, "gpcl6win64.exe");
|
||||
if (!File.Exists(_GhostPCLFileName))
|
||||
throw new Exception("Ghost PCL FileName doesn't Exist!");
|
||||
if (_IsEAFHosted)
|
||||
NestExistingFiles(_FileConnectorConfiguration);
|
||||
}
|
||||
|
||||
void IFileRead.Move(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults, Exception exception) => Move(extractResults);
|
||||
|
@ -49,23 +49,23 @@
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="8.0.1" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.json" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.json" Version="8.0.1" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="8.0.1" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="8.0.1" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.1" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
||||
<PackageReference Include="Microsoft.Win32.SystemEvents" Version="8.0.0" />
|
||||
<PackageReference Include="MSTest.TestAdapter" Version="3.5.1" />
|
||||
<PackageReference Include="MSTest.TestFramework" Version="3.5.1" />
|
||||
<PackageReference Include="MSTest.TestAdapter" Version="3.6.1" />
|
||||
<PackageReference Include="MSTest.TestFramework" Version="3.6.1" />
|
||||
<PackageReference Include="Pdfbox" Version="1.1.1"><NoWarn>NU1701</NoWarn></PackageReference>
|
||||
<PackageReference Include="RoboSharp" Version="1.5.3" />
|
||||
<PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
|
||||
<PackageReference Include="System.Data.OleDb" Version="8.0.0" />
|
||||
<PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.1" />
|
||||
<PackageReference Include="System.Data.OleDb" Version="8.0.1" />
|
||||
<PackageReference Include="System.Data.SqlClient" Version="4.8.6" />
|
||||
<PackageReference Include="System.Drawing.Common" Version="8.0.7" />
|
||||
<PackageReference Include="System.Text.Json" Version="8.0.4" />
|
||||
<PackageReference Include="System.Drawing.Common" Version="8.0.10" />
|
||||
<PackageReference Include="System.Text.Json" Version="8.0.5" />
|
||||
<PackageReference Include="Tesseract" Version="5.2.0" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
@ -489,6 +489,43 @@ public class FileRead : Properties.IFileRead
|
||||
}
|
||||
}
|
||||
|
||||
protected static void NestExistingFiles(FileConnectorConfiguration fileConnectorConfiguration)
|
||||
{
|
||||
if (!fileConnectorConfiguration.IncludeSubDirectories.Value)
|
||||
{
|
||||
string[] matches = GetMatches(fileConnectorConfiguration);
|
||||
if (matches is not null && matches.Length > 0)
|
||||
{
|
||||
string fileName;
|
||||
string nestedDirectory = Path.Combine(fileConnectorConfiguration.SourceFileLocation, DateTime.Now.Ticks.ToString());
|
||||
if (!Directory.Exists(nestedDirectory))
|
||||
_ = Directory.CreateDirectory(nestedDirectory);
|
||||
foreach (string match in matches)
|
||||
{
|
||||
fileName = Path.GetFileName(match);
|
||||
File.Move(match, Path.Combine(nestedDirectory, fileName));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected static string[] GetMatches(FileConnectorConfiguration fileConnectorConfiguration)
|
||||
{
|
||||
string[] segments;
|
||||
string[] results = null;
|
||||
foreach (string subSourceFileFilter in fileConnectorConfiguration.SourceFileFilters)
|
||||
{
|
||||
segments = subSourceFileFilter.Split('\\');
|
||||
if (fileConnectorConfiguration.IncludeSubDirectories.Value)
|
||||
results = Directory.GetFiles(fileConnectorConfiguration.SourceFileLocation, segments.Last(), SearchOption.AllDirectories);
|
||||
else
|
||||
results = Directory.GetFiles(fileConnectorConfiguration.SourceFileLocation, segments.Last(), SearchOption.TopDirectoryOnly);
|
||||
if (results.Length != 0)
|
||||
break;
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
protected Tuple<string, Test[], JsonElement[], List<FileInfo>> ReExtract(IFileRead fileRead, List<string> headerNames, Dictionary<string, string> keyValuePairs)
|
||||
{
|
||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
||||
@ -496,18 +533,7 @@ public class FileRead : Properties.IFileRead
|
||||
results = null;
|
||||
else
|
||||
{
|
||||
string[] segments;
|
||||
string[] matches = null;
|
||||
foreach (string subSourceFileFilter in _FileConnectorConfiguration.SourceFileFilters)
|
||||
{
|
||||
segments = subSourceFileFilter.Split('\\');
|
||||
if (_FileConnectorConfiguration.IncludeSubDirectories.Value)
|
||||
matches = Directory.GetFiles(_FileConnectorConfiguration.SourceFileLocation, segments.Last(), SearchOption.AllDirectories);
|
||||
else
|
||||
matches = Directory.GetFiles(_FileConnectorConfiguration.SourceFileLocation, segments.Last(), SearchOption.TopDirectoryOnly);
|
||||
if (matches.Length != 0)
|
||||
break;
|
||||
}
|
||||
string[] matches = GetMatches(_FileConnectorConfiguration);
|
||||
if (matches is null || matches.Length == 0)
|
||||
results = null;
|
||||
else
|
||||
|
@ -974,8 +974,8 @@ public class AdaptationTesting : ISMTP
|
||||
}
|
||||
if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.AlternateTargetFolder))
|
||||
{
|
||||
if (!Directory.Exists(fileConnectorConfigurationTuple.Item2.AlternateTargetFolder))
|
||||
_ = Directory.CreateDirectory(fileConnectorConfigurationTuple.Item2.AlternateTargetFolder);
|
||||
if (!Directory.Exists(fileConnectorConfigurationTuple.Item2.AlternateTargetFolder.Split('|')[0]))
|
||||
_ = Directory.CreateDirectory(fileConnectorConfigurationTuple.Item2.AlternateTargetFolder.Split('|')[0]);
|
||||
}
|
||||
}
|
||||
catch (IOException ex)
|
||||
|
@ -119,6 +119,7 @@
|
||||
<Compile Include="Adaptation\FileHandlers\OpenInsightMetrologyViewer\WSRequest.cs" />
|
||||
<Compile Include="Adaptation\FileHandlers\OpenInsight\FileRead.cs" />
|
||||
<Compile Include="Adaptation\FileHandlers\OpenInsight\FromIQS.cs" />
|
||||
<Compile Include="Adaptation\FileHandlers\OpenInsight\Root.cs" />
|
||||
<Compile Include="Adaptation\FileHandlers\pcl\Description.cs" />
|
||||
<Compile Include="Adaptation\FileHandlers\pcl\Descriptor.cs" />
|
||||
<Compile Include="Adaptation\FileHandlers\pcl\Detail.cs" />
|
||||
|
Loading…
x
Reference in New Issue
Block a user