Moved HelperInfinityQS.DisableMaxDuplicates to EAF

This commit is contained in:
Mike Phares 2024-10-10 10:30:46 -07:00
parent 61008fd9cf
commit 9fff0541ae

View File

@ -4,7 +4,6 @@ using System.Data;
using System.Data.SqlClient;
using System.Diagnostics;
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;
namespace File_Watcher.Helpers;
@ -28,47 +27,6 @@ internal static partial class HelperInfinityQS
{
}
private static string GetCommandText(InfinityQSConfiguration infinityQSConfiguration, Test test)
{ // cSpell:disable
List<string> results = [];
results.Add(" select min_se_sgrp, ");
results.Add(" max_se_sgrp, ");
results.Add(" max_se_prcs, ");
results.Add(" max_se_lot, ");
results.Add(" max_se_test, ");
results.Add(" max_se_val, ");
results.Add($" '{test.Name}' test, ");
results.Add(" dateadd(HH, -7, (dateadd(SS, convert(bigint, max_se_sgtm), '19700101'))) date_time, ");
results.Add(" count_se_sgtm ");
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_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_prcs) min_se_prcs, ");
results.Add(" min(se.f_sgrp) min_se_sgrp, ");
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_val <> 0 ");
results.Add(" and se.f_flag = 0 ");
results.Add($" and se.f_test = {test.Value} ");
results.Add($" and se.f_sgtm > {infinityQSConfiguration.SubGroupTime} ");
results.Add(" group by se.f_sgtm, se.f_prcs, se.f_lot ");
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_prcs = max_se_prcs ");
results.Add(" for json path ");
return string.Join(' ', results);
} // cSpell:enable
private static string GetCommandText(ReadOnlyCollection<int> subGroups)
{ // cSpell:disable
List<string> results = [];
@ -91,94 +49,6 @@ internal static partial class HelperInfinityQS
return stringBuilder;
}
private static int? ExecuteNonQuery(InfinityQSConfiguration infinityQSConfiguration, string commandText)
{
int? result;
if (!string.IsNullOrEmpty(infinityQSConfiguration.ConnectionString))
result = null;
else
{
using SqlConnection sqlConnection = new(infinityQSConfiguration.ConnectionString);
sqlConnection.Open();
using SqlCommand sqlCommand = new(commandText, sqlConnection);
result = sqlCommand.ExecuteNonQuery();
}
return result;
}
private static void Disable(InfinityQSConfiguration infinityQSConfiguration, string checkFile, ReadOnlyCollection<int> collection)
{
string commandText = GetCommandText(collection);
File.WriteAllText(checkFile, commandText);
_ = ExecuteNonQuery(infinityQSConfiguration, commandText);
}
private static ReadOnlyCollection<Test> GetTests(InfinityQSConfiguration infinityQSConfiguration)
{
List<Test> results = new(infinityQSConfiguration.Tests);
if (File.Exists(infinityQSConfiguration.TestsFile))
{
string json = File.ReadAllText(infinityQSConfiguration.TestsFile);
List<long> distinct = infinityQSConfiguration.Tests.Select(l => l.Value).ToList();
Test[]? tests = JsonSerializer.Deserialize(json, TestCollectionSourceGenerationContext.Default.TestArray);
if (tests is not null)
{
foreach (Test test in tests)
{
if (distinct.Contains(test.Value))
continue;
distinct.Add(test.Value);
results.AddRange(tests);
}
}
}
return new(results);
}
private static void DisableMaxDuplicates(AppSettings appSettings)
{
Record[]? records;
bool added;
string json;
string commandText;
StringBuilder result;
List<int> collection = [];
ReadOnlyCollection<Test> tests = GetTests(appSettings.InfinityQSConfiguration);
if (!Directory.Exists(appSettings.InfinityQSConfiguration.DestinationDirectory))
_ = Directory.CreateDirectory(appSettings.InfinityQSConfiguration.DestinationDirectory);
string checkFile = Path.Combine(appSettings.InfinityQSConfiguration.DestinationDirectory, ".sql");
foreach (Test test in tests)
{
added = false;
if (File.Exists(checkFile))
continue;
commandText = GetCommandText(appSettings.InfinityQSConfiguration, test);
result = GetForJsonPath(appSettings.InfinityQSConfiguration, commandText);
if (result.Length == 0)
continue;
records = JsonSerializer.Deserialize(result.ToString(), RecordCollectionSourceGenerationContext.Default.RecordArray);
if (records is null || records.Length < 1)
continue;
foreach (Record record in records)
{
if (collection.Contains(record.MaxSeSubgroup))
continue;
if (!added)
added = true;
collection.Add(record.MaxSeSubgroup);
}
if (!added)
continue;
json = JsonSerializer.Serialize(records, RecordCollectionSourceGenerationContext.Default.RecordArray);
File.WriteAllText(Path.Combine(appSettings.InfinityQSConfiguration.DestinationDirectory, $"{DateTime.Now.Ticks}.json"), json);
Thread.Sleep(500);
if (collection.Count > 1000)
break;
}
if (collection.Count > 0)
Disable(appSettings.InfinityQSConfiguration, checkFile, new(collection));
}
private static void RunMI()
{
#pragma warning disable CA1416
@ -198,10 +68,7 @@ internal static partial class HelperInfinityQS
internal static bool Select(AppSettings appSettings, ILogger<Worker> logger)
{
logger.LogInformation(appSettings.Company);
if (string.IsNullOrEmpty(appSettings.InfinityQSConfiguration.ConnectionString))
RunMI();
else
DisableMaxDuplicates(appSettings);
RunMI();
return true;
}
}