feat(aihitMainSyncer): исключено удаление полей не приходивиших в сообщении
This commit is contained in:
@@ -57,7 +57,6 @@ namespace PARR.AIHITMainSyncer.Services
|
||||
var listAihitData = new List<KeyValuePair<string, string?>>();
|
||||
|
||||
var propertisWithSimpleValues = objFromQuery.Properties
|
||||
//.Where(t => fieldsFromDB.Any(a => IsStringEqual(t.Key.Trim(), a.Name) && a.IsMultipleValue != true))
|
||||
.Where(t => fieldsFromDB.Any(a => IsStringEqual(t.Key.Trim(), a.AihitName) && a.IsMultipleValue != true))
|
||||
.Select(s => new KeyValuePair<string, string?>(s.Key.Trim(), s.Value?.Trim())).ToList();
|
||||
|
||||
@@ -75,10 +74,21 @@ namespace PARR.AIHITMainSyncer.Services
|
||||
.Select(kv => new { kv.Key, kv.Value })
|
||||
.ToList();
|
||||
|
||||
// Определяем, какие ПОЛЯ обновляются этим сообщением
|
||||
var fieldsInMessage = listAihitData
|
||||
.Select(kv => kv.Key)
|
||||
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||
.ToHashSet();
|
||||
|
||||
var unitValuesToRemove = unit.UnitValues
|
||||
.Where(uv => !incomingPairs.Any(ip =>
|
||||
IsStringEqual(uv.Field!.AihitName, ip.Key) &&
|
||||
IsStringEqual(uv.Value!.Value, ip.Value)))
|
||||
.Where(uv =>
|
||||
uv.Field != null &&
|
||||
fieldsInMessage.Contains(uv.Field.AihitName) &&
|
||||
!listAihitData.Any(kv =>
|
||||
IsStringEqual(uv.Field.AihitName, kv.Key) &&
|
||||
IsStringEqual(uv.Value?.Value, kv.Value)
|
||||
)
|
||||
)
|
||||
.ToList();
|
||||
|
||||
unitValuesToRemove.ForEach(uv => unit.UnitValues.Remove(uv));
|
||||
|
||||
@@ -16,8 +16,40 @@ namespace PARR.AIHITSyncerWorker
|
||||
|
||||
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
||||
{
|
||||
await aihitSyncer.StartAsync();
|
||||
await Task.Delay(Timeout.Infinite, stoppingToken);
|
||||
//await aihitSyncer.StartAsync();
|
||||
//await Task.Delay(Timeout.Infinite, stoppingToken);
|
||||
while (!stoppingToken.IsCancellationRequested)
|
||||
{
|
||||
try
|
||||
{
|
||||
await aihitSyncer.StartAsync();
|
||||
await Task.Delay(Timeout.Infinite, stoppingToken);
|
||||
// <20><><EFBFBD><EFBFBD> StartAsync <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>),
|
||||
// <20><>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Task.Delay <20><><EFBFBD> break.
|
||||
// <20><> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20> StartAsync <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> **<2A><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>** <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
_logger.LogWarning("AihitMainSyncer <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 10 <20><><EFBFBD>...");
|
||||
}
|
||||
catch (OperationCanceledException) when (stoppingToken.IsCancellationRequested)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
break;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> Worker. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 10 <20><><EFBFBD>...");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
await Task.Delay(TimeSpan.FromSeconds(10), stoppingToken);
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user