feat(AIHITMainSyncer): обработка правил замены значений пришедших из АИХИТ для null
This commit is contained in:
@@ -87,15 +87,15 @@ namespace PARR.AIHITMainSyncer.Services
|
||||
|
||||
// Определяем, какие ПОЛЯ обновляются этим сообщением чтобы случайно не удалить не наши
|
||||
var fieldsInMessage = listAihitData
|
||||
.Select(kv => kv.Key)
|
||||
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||
.Select(kv => kv.Key)
|
||||
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||
.ToHashSet();
|
||||
|
||||
var unitValuesToRemove = unit.UnitValues
|
||||
.Where(uv =>
|
||||
uv.Field != null &&
|
||||
fieldsInMessage.Contains(uv.Field.AihitName) &&
|
||||
!listAihitData.Any(kv =>
|
||||
fieldsInMessage.Contains(uv.Field.AihitName) &&
|
||||
!listAihitData.Any(kv =>
|
||||
IsStringEqual(uv.Field.AihitName, kv.Key) &&
|
||||
IsStringEqual(uv.Value?.Value, kv.Value)
|
||||
)
|
||||
@@ -340,13 +340,18 @@ namespace PARR.AIHITMainSyncer.Services
|
||||
if (properties.ContainsKey(replacement.FieldName))
|
||||
{
|
||||
var currentValue = properties[replacement.FieldName];
|
||||
|
||||
// Это костыль, List<string?> не может хранить null, вместо null он хранит ""
|
||||
var stringNull = "null";
|
||||
|
||||
// Проверяем, содержится ли текущее значение в списке OldValues (с учетом регистра)
|
||||
if (replacement.OldValues.Contains(currentValue, StringComparer.OrdinalIgnoreCase))
|
||||
if (replacement.OldValues.Contains(currentValue ?? stringNull, StringComparer.OrdinalIgnoreCase))
|
||||
{
|
||||
logger.LogDebug("Заменяем значение поля '{FieldName}' с '{OldValue}' на '{NewValue}'",
|
||||
replacement.FieldName, currentValue, replacement.NewValue);
|
||||
properties[replacement.FieldName] = replacement.NewValue;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user