Moved HelperInfinityQS.DisableMaxDuplicates to EAF
This commit is contained in:
parent
61008fd9cf
commit
9fff0541ae
@ -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);
|
||||
return true;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user