feat(aihitMainSyncer): исключено удаление полей не приходивиших в сообщении
This commit is contained in:
@@ -57,7 +57,6 @@ namespace PARR.AIHITMainSyncer.Services
|
|||||||
var listAihitData = new List<KeyValuePair<string, string?>>();
|
var listAihitData = new List<KeyValuePair<string, string?>>();
|
||||||
|
|
||||||
var propertisWithSimpleValues = objFromQuery.Properties
|
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))
|
.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();
|
.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 })
|
.Select(kv => new { kv.Key, kv.Value })
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
|
// Определяем, какие ПОЛЯ обновляются этим сообщением
|
||||||
|
var fieldsInMessage = listAihitData
|
||||||
|
.Select(kv => kv.Key)
|
||||||
|
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||||
|
.ToHashSet();
|
||||||
|
|
||||||
var unitValuesToRemove = unit.UnitValues
|
var unitValuesToRemove = unit.UnitValues
|
||||||
.Where(uv => !incomingPairs.Any(ip =>
|
.Where(uv =>
|
||||||
IsStringEqual(uv.Field!.AihitName, ip.Key) &&
|
uv.Field != null &&
|
||||||
IsStringEqual(uv.Value!.Value, ip.Value)))
|
fieldsInMessage.Contains(uv.Field.AihitName) &&
|
||||||
|
!listAihitData.Any(kv =>
|
||||||
|
IsStringEqual(uv.Field.AihitName, kv.Key) &&
|
||||||
|
IsStringEqual(uv.Value?.Value, kv.Value)
|
||||||
|
)
|
||||||
|
)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
unitValuesToRemove.ForEach(uv => unit.UnitValues.Remove(uv));
|
unitValuesToRemove.ForEach(uv => unit.UnitValues.Remove(uv));
|
||||||
|
|||||||
@@ -16,8 +16,40 @@ namespace PARR.AIHITSyncerWorker
|
|||||||
|
|
||||||
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
||||||
{
|
{
|
||||||
await aihitSyncer.StartAsync();
|
//await aihitSyncer.StartAsync();
|
||||||
await Task.Delay(Timeout.Infinite, stoppingToken);
|
//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