From aaf349cd22fb4830815bda4a61ee15be5ca513e7 Mon Sep 17 00:00:00 2001 From: Mikhail Trubnikov Date: Tue, 30 Dec 2025 11:57:15 +1000 Subject: [PATCH] =?UTF-8?q?feat(AIHITMainSyncer):=20=D0=BE=D0=B1=D1=80?= =?UTF-8?q?=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B0=20=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B7=D0=B0=D0=BC=D0=B5=D0=BD=D1=8B=20=D0=B7?= =?UTF-8?q?=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D1=88=D0=B5=D0=B4=D1=88=D0=B8=D1=85=20=D0=B8=D0=B7=20=D0=90?= =?UTF-8?q?=D0=98=D0=A5=D0=98=D0=A2=20=D0=B4=D0=BB=D1=8F=20null?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PARR.AIHITLoaderWorker.csproj | 1 - .../Services/SyncerService.cs | 15 ++- .../appsettings.Development.json | 8 ++ PARR.AIHITSyncerWorker/appsettings.json | 115 +++++++++--------- PARR.API.sln | 12 -- .../Services/Implementations/MqServiceV2.cs | 4 +- 6 files changed, 80 insertions(+), 75 deletions(-) diff --git a/PARR.AIHITLoaderWorker/PARR.AIHITLoaderWorker.csproj b/PARR.AIHITLoaderWorker/PARR.AIHITLoaderWorker.csproj index b8f7f8d5..61fa09c4 100644 --- a/PARR.AIHITLoaderWorker/PARR.AIHITLoaderWorker.csproj +++ b/PARR.AIHITLoaderWorker/PARR.AIHITLoaderWorker.csproj @@ -18,7 +18,6 @@ - diff --git a/PARR.AIHITMainSyncer/Services/SyncerService.cs b/PARR.AIHITMainSyncer/Services/SyncerService.cs index a87a1f37..6de34d88 100644 --- a/PARR.AIHITMainSyncer/Services/SyncerService.cs +++ b/PARR.AIHITMainSyncer/Services/SyncerService.cs @@ -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 не может хранить 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; } + } } } diff --git a/PARR.AIHITSyncerWorker/appsettings.Development.json b/PARR.AIHITSyncerWorker/appsettings.Development.json index b9e602d5..6a9c166d 100644 --- a/PARR.AIHITSyncerWorker/appsettings.Development.json +++ b/PARR.AIHITSyncerWorker/appsettings.Development.json @@ -1,4 +1,12 @@ { + "Logging": { + "LogLevel": { + "Default": "Debug", + "Microsoft.EntityFrameworkCore": "Debug", + "Microsoft.EntityFrameworkCore.Database.Command": "Warning", + "Microsoft.AspNetCore": "Warning" + } + }, "Serilog": { "MinimumLevel": { "Default": "Debug", diff --git a/PARR.AIHITSyncerWorker/appsettings.json b/PARR.AIHITSyncerWorker/appsettings.json index 6d0d80ce..e542b89c 100644 --- a/PARR.AIHITSyncerWorker/appsettings.json +++ b/PARR.AIHITSyncerWorker/appsettings.json @@ -1,58 +1,63 @@ { - "ConnectionStrings": { - "DefaultConnection": "Server=10.99.253.184;Database=parr;User Id=app_parr; Password=PosdfkhT&)%sdfligL&%5546;" - }, - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.EntityFrameworkCore": "Error", - "Microsoft.EntityFrameworkCore.Database.Command": "Warning", - "Microsoft.AspNetCore": "Warning" - } - }, - "Serilog": { - "MinimumLevel": { - "Default": "Information", - "Override": { - "Microsoft": "Warning", - "Microsoft.EntityFrameworkCore": "Error", - "Microsoft.EntityFrameworkCore.Database.Command": "Warning", - "Microsoft.Hosting.Lifetime": "Information" - } - } - }, - "WorkerSettings": { - "RepeatEvery": "00:10:00" - }, - "MqSettings": { - "HostName": "parr-rabbitmq", - "QueueName": "parr-aihit-data", - "User": "aihit_syncer", - "Password": "afsdgDGjhfiU76496as42!@", - "PrefetchCount": 100 - }, - "FieldValueReplacementsSettings": { - "Replacements": [ - { - "FieldName": "АКТИВЕН", - "OldValues": [ "t" ], - "NewValue": "1" - }, - { - "FieldName": "АКТИВЕН", - "OldValues": [ "f" ], - "NewValue": "0" - }, - { - "FieldName": "НЕУНИКАЛЬНЫЙ_ЭК", - "OldValues": [ "t" ], - "NewValue": "1" - }, - { - "FieldName": "НЕУНИКАЛЬНЫЙ_ЭК", - "OldValues": [ "f" ], - "NewValue": "0" - } - ] + "ConnectionStrings": { + "DefaultConnection": "Server=10.99.253.184;Database=parr;User Id=app_parr; Password=PosdfkhT&)%sdfligL&%5546;" + }, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.EntityFrameworkCore": "Error", + "Microsoft.EntityFrameworkCore.Database.Command": "Warning", + "Microsoft.AspNetCore": "Warning" } + }, + "Serilog": { + "MinimumLevel": { + "Default": "Information", + "Override": { + "Microsoft": "Warning", + "Microsoft.EntityFrameworkCore": "Error", + "Microsoft.EntityFrameworkCore.Database.Command": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + } + }, + "WorkerSettings": { + "RepeatEvery": "00:10:00" + }, + "MqSettings": { + "HostName": "parr-rabbitmq", + "QueueName": "parr-aihit-data", + "User": "aihit_syncer", + "Password": "afsdgDGjhfiU76496as42!@", + "PrefetchCount": 100 + }, + "FieldValueReplacementsSettings": { + "Replacements": [ + { + "FieldName": "АКТИВЕН", + "OldValues": [ "t" ], + "NewValue": "1" + }, + { + "FieldName": "АКТИВЕН", + "OldValues": [ "f" ], + "NewValue": "0" + }, + { + "FieldName": "НЕУНИКАЛЬНЫЙ_ЭК", + "OldValues": [ "t" ], + "NewValue": "1" + }, + { + "FieldName": "НЕУНИКАЛЬНЫЙ_ЭК", + "OldValues": [ "f" ], + "NewValue": "0" + }, + { + "FieldName": "НЕУНИКАЛЬНЫЙ_ЭК", + "OldValues": [ "null" ], + "NewValue": "пусто" + } + ] + } } diff --git a/PARR.API.sln b/PARR.API.sln index 393cb427..1c482b16 100644 --- a/PARR.API.sln +++ b/PARR.API.sln @@ -56,12 +56,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PARR.EsppScheduleSync", "PA EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PARR.EsppScheduleSyncWorker", "PARR.EsppScheduleSyncWorker\PARR.EsppScheduleSyncWorker.csproj", "{C597A1D7-1BC5-493B-BC29-03EC830FB090}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PARR.AIHITLoader", "PARR.AIHITLoader\PARR.AIHITLoader.csproj", "{E7F3C8FB-445B-4711-8F89-0B7DA7DB4537}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PARR.AIHITLoaderWorker", "PARR.AIHITLoaderWorker\PARR.AIHITLoaderWorker.csproj", "{E9434123-E697-42E2-B7C0-FE08766B98D1}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PARR.AIHITSyncer", "PARR.AIHITSyncer\PARR.AIHITSyncer.csproj", "{4177B13B-585C-44C7-B3C1-6B6E46D6BABC}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PARR.AIHITSyncerWorker", "PARR.AIHITSyncerWorker\PARR.AIHITSyncerWorker.csproj", "{4FA79176-F833-4879-8437-37EA053BAA94}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PARR.NextRun", "PARR.NextRun\PARR.NextRun.csproj", "{92400205-B781-4C6C-BDA3-6D3652C2B62F}" @@ -200,18 +196,10 @@ Global {C597A1D7-1BC5-493B-BC29-03EC830FB090}.Debug|Any CPU.Build.0 = Debug|Any CPU {C597A1D7-1BC5-493B-BC29-03EC830FB090}.Release|Any CPU.ActiveCfg = Release|Any CPU {C597A1D7-1BC5-493B-BC29-03EC830FB090}.Release|Any CPU.Build.0 = Release|Any CPU - {E7F3C8FB-445B-4711-8F89-0B7DA7DB4537}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E7F3C8FB-445B-4711-8F89-0B7DA7DB4537}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E7F3C8FB-445B-4711-8F89-0B7DA7DB4537}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E7F3C8FB-445B-4711-8F89-0B7DA7DB4537}.Release|Any CPU.Build.0 = Release|Any CPU {E9434123-E697-42E2-B7C0-FE08766B98D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E9434123-E697-42E2-B7C0-FE08766B98D1}.Debug|Any CPU.Build.0 = Debug|Any CPU {E9434123-E697-42E2-B7C0-FE08766B98D1}.Release|Any CPU.ActiveCfg = Release|Any CPU {E9434123-E697-42E2-B7C0-FE08766B98D1}.Release|Any CPU.Build.0 = Release|Any CPU - {4177B13B-585C-44C7-B3C1-6B6E46D6BABC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4177B13B-585C-44C7-B3C1-6B6E46D6BABC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4177B13B-585C-44C7-B3C1-6B6E46D6BABC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4177B13B-585C-44C7-B3C1-6B6E46D6BABC}.Release|Any CPU.Build.0 = Release|Any CPU {4FA79176-F833-4879-8437-37EA053BAA94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4FA79176-F833-4879-8437-37EA053BAA94}.Debug|Any CPU.Build.0 = Debug|Any CPU {4FA79176-F833-4879-8437-37EA053BAA94}.Release|Any CPU.ActiveCfg = Release|Any CPU diff --git a/PARR.BLL/Services/Implementations/MqServiceV2.cs b/PARR.BLL/Services/Implementations/MqServiceV2.cs index b37f827d..11282afd 100644 --- a/PARR.BLL/Services/Implementations/MqServiceV2.cs +++ b/PARR.BLL/Services/Implementations/MqServiceV2.cs @@ -25,7 +25,7 @@ namespace PARR.BLL.Services.Implementations public async Task InitConsumerAsync(IMqSettings mqSettings, MqMessageHandlerDelegate messageHandler) { - logger.LogInformation($"Устанавливаю соединение с RabbitMQ: {mqSettings.HostName}, {mqSettings.QueueName}"); + logger.LogInformation("Устанавливаю соединение с RabbitMQ. HostName: {HostName}, QueueName: {QueueName}", mqSettings.HostName, mqSettings.QueueName); var factory = new ConnectionFactory { @@ -77,7 +77,7 @@ namespace PARR.BLL.Services.Implementations { //var content = Encoding.UTF8.GetString(ea.Body.ToArray()); var content = Encoding.UTF8.GetString(ea.Body.Span); - logger.LogDebug($"Получено сообщение: {content}"); + logger.LogDebug("Получено сообщение: {content}", content); try {