eregister tasks execution

This commit is contained in:
Stoyan Zlatev 2026-02-05 08:50:14 +01:00
parent f2109e577d
commit 2abd383fcd
2 changed files with 13 additions and 53 deletions

View File

@ -18,7 +18,7 @@
{
const string SENSUS_STANDARD = "E6C88800DEB868C0D6A84880CE982840";
private readonly ConcurrentQueue<EregisterTask> runningTasks;
private readonly ICollection<EregisterTask> runningTasks;
private readonly EregisterProgrammingParameters parameters;
private readonly EregisterHistory history;
private readonly EregisterState state;
@ -36,14 +36,10 @@
this.sirtHub = sirtHub;
this.state = new EregisterState();
this.history = new EregisterHistory();
this.runningTasks = new ConcurrentQueue<EregisterTask>();
this.runningTasks = new List<EregisterTask>();
}
public void Clear()
{
// Just clear the queue
while (this.runningTasks.TryDequeue(out var _)) ;
}
public void Clear() => this.runningTasks.Clear();
internal IEnumerable<EregisterTask> LoadInspectionInitializationTasks()
{
@ -62,7 +58,7 @@
if (this.runningTasks.Any())
{
this.runningTasks.Enqueue(new EregisterChangeMeterTypeTask(features.Frequency)
this.runningTasks.Add(new EregisterChangeMeterTypeTask(features.Frequency)
{
SlotNr = features.SlotNr,
PoNr = features.PoNr,
@ -90,7 +86,7 @@
if (this.parameters.StatusFertigung == 30)
{
this.runningTasks.Enqueue(new EregisterCheckFinalizationTask(this.parameters, features.Frequency)
this.runningTasks.Add(new EregisterCheckFinalizationTask(this.parameters, features.Frequency)
{
WakeUpModul = true,
SlotNr = features.SlotNr,
@ -102,7 +98,7 @@
EncryptionKeyII = SENSUS_STANDARD.GetEncryptionKey(),
});
this.runningTasks.Enqueue(new EregisterTask(this.parameters.Frequency)
this.runningTasks.Add(new EregisterTask(this.parameters.Frequency)
{
Name = "0, 2, 16",
SlotNr = features.SlotNr,
@ -132,13 +128,14 @@
this.history.SerienNr = this.parameters.SerienNr;
this.history.Adresse = this.parameters.Adresse;
this.history.TempAdresse = this.parameters.TempAdresse;
var tasks = new ConcurrentQueue<EregisterTask>(this.runningTasks);
var factoryState = FactoryState.Production;
var lat = default(LAT);
var debug = default(DEBUG);
var semi = default(SEMI);
while (!cancellationToken.IsCancellationRequested && this.runningTasks.TryDequeue(out var task))
while (!cancellationToken.IsCancellationRequested && tasks.TryDequeue(out var task))
{
task.MessageReceived += this.history.Push;
@ -246,7 +243,7 @@
var frequency = this.parameters.Frequency;
this.runningTasks.Enqueue(new EregisterTask(frequency)
this.runningTasks.Add(new EregisterTask(frequency)
{
Name = "WUP",
WakeUpCmd = true,
@ -265,7 +262,7 @@
Timeout = 10_000
});
this.runningTasks.Enqueue(new EregisterCheckInitializationTask(this.parameters, frequency)
this.runningTasks.Add(new EregisterCheckInitializationTask(this.parameters, frequency)
{
SlotNr = features.SlotNr,
PoNr = features.PoNr,
@ -278,7 +275,7 @@
foreach (var pam in features.BuildPams())
{
this.runningTasks.Enqueue(new EregisterTask(frequency)
this.runningTasks.Add(new EregisterTask(frequency)
{
SlotNr = features.SlotNr,
PoNr = features.PoNr,

View File

@ -80,7 +80,7 @@
}
}
internal class Eregister_Shared
internal class eRegister_Shared
{
internal static List<EregisterShared> LoadActions(int sharedId)
=> sqlConnection.LoadActions(sharedId);
@ -122,42 +122,5 @@
return xmlDeserialized as EregisterProgrammingParametersList ?? new EregisterProgrammingParametersList();
}
internal static EregisterProgrammingParametersList LoadEregisterProgrammingParametersListForSerialNr(int serialNr)
{
var xmlList = sqlConnection
.CreateCommand($@"
SELECT CAST((SELECT ersh.P2000_Shared_Id
, ersh.Slotno
, erpp.*
FROM eRegister_Shared AS ersh
JOIN VieweRegisterProgrammingParameters AS erpp
ON ersh.Serialno = erpp.SerienNr
WHERE ersh.Serialno = @{nameof(serialNr)}
AND ersh.Completed = 0
FOR XML PATH('{nameof(EregisterProgrammingParameters)}')
, ROOT('{nameof(EregisterProgrammingParametersList)}'))
AS XML)")
.SetParameter(nameof(serialNr), serialNr)
.FirstOrDefault(x => x.GetValue<string>(0));
var xmlDeserialized = default(object);
if (!string.IsNullOrWhiteSpace(xmlList))
{
var xmlSerializer = new XmlSerializer(typeof(EregisterProgrammingParametersList));
var xmlReader = new StringReader(xmlList);
try
{
xmlDeserialized = xmlSerializer.Deserialize(xmlReader);
}
catch (Exception e)
{
AppHost.NLogger.Error(e.ToString());
}
}
return xmlDeserialized as EregisterProgrammingParametersList ?? new EregisterProgrammingParametersList();
}
}
}