feat(templateDistributor, BLL): доделал распределение шаблонов. Сохраняет в БД + ставит задания роботам на обновление. MqService - может принимать список объектов для отправки, доработана кодировка отправки сообщений.

This commit is contained in:
Mikhail Trubnikov
2026-01-22 10:35:27 +10:00
parent e5bc42741c
commit b7fca08d28
8 changed files with 132 additions and 19 deletions

View File

@@ -5,10 +5,13 @@ using PARR.API.Contracts.V1;
using PARR.API.Contracts.V1.Requests;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Services.Interfaces;
using PARR.API.Settings;
using PARR.BLL.Domain.Mq;
using PARR.BLL.Services.Interfaces;
using PARR.Common.Domain;
using PARR.Constants;
using System.Text.Encodings.Web;
using System.Text.Json;
namespace PARR.API.Controllers.V1
@@ -22,16 +25,19 @@ namespace PARR.API.Controllers.V1
private readonly IMqService mqService;
private readonly MqSettings mqSettings;
private readonly IValidator<DistributeRequest> validator;
private readonly IClientService clientService;
public DistributorController(
IMqService mqService,
MqSettings mqSettings,
IValidator<DistributeRequest> validator
IValidator<DistributeRequest> validator,
IClientService clientService
)
{
this.mqService = mqService;
this.mqSettings = mqSettings;
this.validator = validator;
this.clientService = clientService;
}
@@ -48,12 +54,23 @@ namespace PARR.API.Controllers.V1
var requestToMq = new TemplateDistributorMq
{
JobGroupId = request.JobGroupId
JobGroupId = request.JobGroupId,
Initiator = new HistoryInitiator
{
InitiatorComment = "Через API отправлен запрос на распределение шаблонов",
InitiatorIp = clientService.GetClientIp()?.ToString(),
InitiatorParrComponentId = ParrComponentsEnum.Api
}
};
var msg = JsonSerializer.Serialize(requestToMq);
//var jsonOptions = new JsonSerializerOptions
//{
// Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
//};
//var msg = JsonSerializer.Serialize(requestToMq, jsonOptions);
var sendResult = await mqService.SendAsync(mqSettings.TemplateDistributor, new[] { msg });
//var sendResult = await mqService.SendAsync(mqSettings.TemplateDistributor, new[] { msg });
var sendResult = await mqService.SendAsync(mqSettings.TemplateDistributor, new List<object> { requestToMq });
if (sendResult.IsSuccess)
return Created("", new Response<string?>(null, true, new List<ErrorModel>(), "Отправлен запрос на перераспределение регламентных работ."));