From bebbfab317b48fe15dae97c26a72adb6d929427c Mon Sep 17 00:00:00 2001 From: Mikhail Trubnikov Date: Tue, 2 Dec 2025 09:49:08 +1000 Subject: [PATCH] =?UTF-8?q?feat(api,=20allLogs):=20=D0=B2=20TemplateRespon?= =?UTF-8?q?se=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20Templat?= =?UTF-8?q?eStatusType.=20=D0=A8=D0=B0=D0=B1=D0=BB=D0=BE=D0=BD=D1=8B=20?= =?UTF-8?q?=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE=20=D1=84=D0=B8=D0=BB=D1=8C=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BF=D0=BE=20statusTyp?= =?UTF-8?q?e.=20=D0=9F=D1=80=D0=B8=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B8=20=D0=BC=D0=B0=D1=81=D0=BA=D0=B8=20=D0=B8?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=B8=20=D1=88=D0=B0=D0=B1=D0=BB=D0=BE=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=B2=20Job,=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D1=8F=D0=B5=D1=82=D1=81=D1=8F=20=D0=B7=D0=B0=D0=B4=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B2=20=D0=BE=D1=87=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D0=B4=D1=8C=20=D0=BD=D0=B0=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B8?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D1=81?= =?UTF-8?q?=D0=B2=D1=8F=D0=B7=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D1=88=D0=B0?= =?UTF-8?q?=D0=B1=D0=BB=D0=BE=D0=BD=D0=BE=D0=B2.=20=D0=92=D0=BE=20=D0=B2?= =?UTF-8?q?=D1=81=D0=B5=D1=85=20=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=B0?= =?UTF-8?q?=D1=85=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=B0=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=BE=D0=B5=D0=BD=D1=8B=20=D0=BB=D0=BE=D0=B3=D0=B8,=20=D0=B2?= =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D0=B4=D0=B5,=20=D0=BD=D0=B5=20=D0=BF?= =?UTF-8?q?=D0=B8=D1=88=D1=83=D1=82=D1=81=D1=8F=20=D0=BB=D0=BE=D0=B3=D0=B8?= =?UTF-8?q?=20=D0=B2=D0=BD=D1=83=D1=82=D1=80=D1=8C=20=D0=BA=D0=BE=D0=BD?= =?UTF-8?q?=D1=82=D0=B5=D0=B9=D0=BD=D0=B5=D1=80=D0=B0,=20=D1=82=D0=BE?= =?UTF-8?q?=D0=BB=D1=8C=D0=BA=D0=BE=20=D0=B2=20stdout.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../appsettings.Development.json | 11 +++- .../appsettings.json | 11 +--- .../appsettings.Development.json | 11 +++- PARR.AIHITSyncerWorker/appsettings.json | 11 +--- PARR.API/Contracts/V1/ApiRoutes.cs | 5 ++ .../V1/Requests/Queries/TemplateQuery.cs | 9 ++- .../V1/Responses/TemplateResponse.cs | 2 + .../Responses/TemplateStatusTypeResponse.cs | 11 ++++ .../V1/GeneratorTemplateController.cs | 3 + PARR.API/Controllers/V1/JobController.cs | 62 ++++++++++++++++++- PARR.API/Controllers/V1/SyncTaskController.cs | 1 - PARR.API/Controllers/V1/TemplateController.cs | 7 +++ .../V1/TemplateStatusTypeController.cs | 50 +++++++++++++++ .../DomainToResponseProfile.cs | 9 ++- PARR.API/Settings/MqSettings.cs | 10 +++ PARR.API/appsettings.Development.json | 14 ++++- PARR.API/appsettings.json | 17 +++-- PARR.DAL/ParrDalInstaller.cs | 1 + .../TemplateStatusTypeService.cs | 22 +++++++ .../Interfaces/ITemplateStatusTypeService.cs | 9 +++ .../appsettings.Development.json | 18 ++++++ PARR.EsppOrderLoaderWorker/appsettings.json | 11 +--- .../appsettings.Development.json | 18 ++++++ PARR.EsppOrderManagerWorker/appsettings.json | 11 +--- .../appsettings.Development.json | 18 ++++++ PARR.EsppScheduleSyncWorker/appsettings.json | 11 +--- PARR.EsppTemplateSyncWorker/appsettings.json | 11 +--- .../appsettings.Development.json | 18 ++++++ .../appsettings.json | 11 +--- .../appsettings.Development.json | 18 ++++++ PARR.JobAutoControlWorker/appsettings.json | 11 +--- .../appsettings.Development.json | 18 ++++++ PARR.MasterWorker/appsettings.json | 11 +--- .../appsettings.Development.json | 18 ++++++ PARR.NextRunWorker/appsettings.json | 11 +--- .../appsettings.Development.json | 18 ++++++ PARR.TemplateActivatorWorker/appsettings.json | 11 +--- .../appsettings.Development.json | 18 ++++++ .../appsettings.json | 11 +--- .../appsettings.Development.json | 40 ++++++++---- PARR.TemplateGeneratorWorker/appsettings.json | 11 +--- .../appsettings.Development.json | 11 +++- PARR.TemplateMatcherWorker/appsettings.json | 11 +--- .../appsettings.Development.json | 18 ++++++ .../appsettings.json | 11 +--- docker-compose.yml | 2 +- 46 files changed, 472 insertions(+), 180 deletions(-) create mode 100644 PARR.API/Contracts/V1/Responses/TemplateStatusTypeResponse.cs create mode 100644 PARR.API/Controllers/V1/TemplateStatusTypeController.cs create mode 100644 PARR.DAL/Services/Implementations/TemplateStatusTypeService.cs create mode 100644 PARR.DAL/Services/Interfaces/ITemplateStatusTypeService.cs diff --git a/PARR.AIHITRelationshipsSyncerWorker/appsettings.Development.json b/PARR.AIHITRelationshipsSyncerWorker/appsettings.Development.json index a8276f5c..4dfac283 100644 --- a/PARR.AIHITRelationshipsSyncerWorker/appsettings.Development.json +++ b/PARR.AIHITRelationshipsSyncerWorker/appsettings.Development.json @@ -6,6 +6,15 @@ "Microsoft": "Debug", "Microsoft.Hosting.Lifetime": "Information" } - } + }, + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "log/log-.txt", + "rollingInterval": "Day" + } + } + ] } } diff --git a/PARR.AIHITRelationshipsSyncerWorker/appsettings.json b/PARR.AIHITRelationshipsSyncerWorker/appsettings.json index 9d239867..dd2eb2b6 100644 --- a/PARR.AIHITRelationshipsSyncerWorker/appsettings.json +++ b/PARR.AIHITRelationshipsSyncerWorker/appsettings.json @@ -16,16 +16,7 @@ "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } - }, - "WriteTo": [ - { - "Name": "File", - "Args": { - "path": "log/log-.txt", - "rollingInterval": "Day" - } - } - ] + } }, "WorkerSettings": { "RepeatEvery": "12:00:00", diff --git a/PARR.AIHITSyncerWorker/appsettings.Development.json b/PARR.AIHITSyncerWorker/appsettings.Development.json index 4aa89aed..b9e602d5 100644 --- a/PARR.AIHITSyncerWorker/appsettings.Development.json +++ b/PARR.AIHITSyncerWorker/appsettings.Development.json @@ -6,7 +6,16 @@ //"Microsoft": "Information", "Microsoft.Hosting.Lifetime": "Information" } - } + }, + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "log/log-.txt", + "rollingInterval": "Day" + } + } + ] }, "MqSettings": { "HostName": "10.99.253.216" diff --git a/PARR.AIHITSyncerWorker/appsettings.json b/PARR.AIHITSyncerWorker/appsettings.json index 994553b4..21e753da 100644 --- a/PARR.AIHITSyncerWorker/appsettings.json +++ b/PARR.AIHITSyncerWorker/appsettings.json @@ -15,16 +15,7 @@ "Microsoft": "Warning", "Microsoft.EntityFrameworkCore.Database.Command": "Warning" } - }, - "WriteTo": [ - { - "Name": "File", - "Args": { - "path": "log/log-.txt", - "rollingInterval": "Day" - } - } - ] + } }, "WorkerSettings": { "RepeatEvery": "00:10:00" diff --git a/PARR.API/Contracts/V1/ApiRoutes.cs b/PARR.API/Contracts/V1/ApiRoutes.cs index 1d87ec35..419a5000 100644 --- a/PARR.API/Contracts/V1/ApiRoutes.cs +++ b/PARR.API/Contracts/V1/ApiRoutes.cs @@ -75,6 +75,11 @@ public const string getParam = "{id}"; } + public static class TemplateStatusType + { + public const string GetAll = Base + "/template-status-types/"; + } + public static class TemplateHistory { public const string GetAll = Base + "/template-histories/"; diff --git a/PARR.API/Contracts/V1/Requests/Queries/TemplateQuery.cs b/PARR.API/Contracts/V1/Requests/Queries/TemplateQuery.cs index 4070f272..ce7bc843 100644 --- a/PARR.API/Contracts/V1/Requests/Queries/TemplateQuery.cs +++ b/PARR.API/Contracts/V1/Requests/Queries/TemplateQuery.cs @@ -1,4 +1,6 @@ -namespace PARR.API.Contracts.V1.Requests.Queries +using PARR.Constants; + +namespace PARR.API.Contracts.V1.Requests.Queries { public class TemplateQuery { @@ -17,5 +19,10 @@ /// Поиск по ИД Задания (JobId) /// public Guid? JobId { get; set; } + + /// + /// StatusType + /// + public TemplateStatusTypeEnum? StatusTypeId { get; set; } } } diff --git a/PARR.API/Contracts/V1/Responses/TemplateResponse.cs b/PARR.API/Contracts/V1/Responses/TemplateResponse.cs index b39ffb2c..7ba30d6a 100644 --- a/PARR.API/Contracts/V1/Responses/TemplateResponse.cs +++ b/PARR.API/Contracts/V1/Responses/TemplateResponse.cs @@ -51,5 +51,7 @@ public EsppScheduleResponse? Schedule { get; set; } public int OrderCount { get; set; } + + public TemplateStatusTypeResponse? StatusType { get; set; } } } diff --git a/PARR.API/Contracts/V1/Responses/TemplateStatusTypeResponse.cs b/PARR.API/Contracts/V1/Responses/TemplateStatusTypeResponse.cs new file mode 100644 index 00000000..3981bcf4 --- /dev/null +++ b/PARR.API/Contracts/V1/Responses/TemplateStatusTypeResponse.cs @@ -0,0 +1,11 @@ +namespace PARR.API.Contracts.V1.Responses +{ + public class TemplateStatusTypeResponse + { + public int Id { get; set; } + + public required string Name { get; set; } + + public required string Description { get; set; } + } +} diff --git a/PARR.API/Controllers/V1/GeneratorTemplateController.cs b/PARR.API/Controllers/V1/GeneratorTemplateController.cs index 4a6540a8..396ec4db 100644 --- a/PARR.API/Controllers/V1/GeneratorTemplateController.cs +++ b/PARR.API/Controllers/V1/GeneratorTemplateController.cs @@ -39,6 +39,9 @@ namespace PARR.API.Controllers.V1 this.clientService = clientService; } + /// !!!!!!!!!! Это старый контроллер, удалить !!!!!!!!!! + + /// /// Запрос на генерацию шаблонов /// diff --git a/PARR.API/Controllers/V1/JobController.cs b/PARR.API/Controllers/V1/JobController.cs index 91da3249..58eea03a 100644 --- a/PARR.API/Controllers/V1/JobController.cs +++ b/PARR.API/Controllers/V1/JobController.cs @@ -11,6 +11,10 @@ using PARR.API.Contracts.V1.Responses.Base; using PARR.API.Controllers.V1.Base; using PARR.API.Extensions; 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 PARR.DAL.Contracts; using PARR.DAL.DomainModels; @@ -19,6 +23,7 @@ using PARR.DAL.Models.Job; using PARR.DAL.Services.Interfaces; using PARR.DAL.Services.Interfaces.Job; using PARR.DAL.Services.Interfaces.Unit; +using System.Text.Json; namespace PARR.API.Controllers.V1 { @@ -34,6 +39,9 @@ namespace PARR.API.Controllers.V1 private readonly IJobService jobService; private readonly ITemplateService templateService; private readonly IValidator jobValidator; + private readonly IMqService mqService; + private readonly MqSettings mqSettings; + private readonly IClientService clientService; public JobController( ILogger logger, @@ -44,7 +52,10 @@ namespace PARR.API.Controllers.V1 IJobGroupService jobGroupService, IValidator jobValidator, IUnitFilterService unitFilterService, - IUnitService unitService + IUnitService unitService, + IMqService mqService, + MqSettings mqSettings, + IClientService clientService ) { this.logger = logger; @@ -53,6 +64,9 @@ namespace PARR.API.Controllers.V1 this.jobService = jobService; this.templateService = templateService; this.jobValidator = jobValidator; + this.mqService = mqService; + this.mqSettings = mqSettings; + this.clientService = clientService; } /// @@ -225,7 +239,13 @@ namespace PARR.API.Controllers.V1 if (orig == null) return BadRequest(new Response(false, new List { new ErrorModel { Message = $"Ошибка при изменении задания на выполнение работ. Не найдено задание с Id: {id}" } })); + // если изменили маску шаблона, ниже отправим в очередь, на изменение связанных имен шаблонов + var isChangedTemplateNameMask = orig.TemplateNameMask != request.TemplateNameMask.Trim(); + #region обновление полей задания на работу + + //TODO: ниже if-ы какая то странная история. зачем if-ы, просто приравниваем сразу и все... + var changed = false; if (orig.Name != request.Name.Trim()) @@ -294,6 +314,13 @@ namespace PARR.API.Controllers.V1 if (!await jobService.CommitAsync()) return BadRequest(new Response(false, new List { new ErrorModel { Message = "Ошибка при изменении задания на выполнение работ." } })); + // если изменили маску, отправим задание на переименование связанных шаблонов + if (isChangedTemplateNameMask) + { + var mqResult = await SendRequestToUpdateTemplates(id); + //todo: если ошибка. пользователя не предупреждаем... возможно ему это и не нужно знать...ну не переименуются шаблоны, может они переименуются позже... + } + logger.LogInformation($"Пользователь {User.Identity?.Name} обновил задание на выполнение работ: {orig.Id}," + $" {orig.Name}, {orig.WorkName}, {orig.MinValueRelationships}, {orig.MaxValueRelationships}," + $" {orig.TemplateNameMask}, {orig.TnkId}, {nameof(orig.GroupId)}"); @@ -556,12 +583,45 @@ namespace PARR.API.Controllers.V1 }; } + private void BindStatistics(JobResponse job, JobStatModel statistics) { //job.TemplateStatistics = new TemplateStats { Activated = statistics.TemplateStatistics.Activated, Errors = statistics.TemplateStatistics.Errors, Synchronized = statistics.TemplateStatistics.Synchronized }; //job.ScheduleStatistics = new ScheduleStats { Activated = statistics.ScheduleStatistics.Activated, Errors = statistics.ScheduleStatistics.Errors, Synchronized = statistics.ScheduleStatistics.Synchronized }; } + + private async Task SendRequestToUpdateTemplates(Guid jobId) + { + var request = new TemplateMatcherMq + { + Id = jobId, + EntityType = SyncTaskEntityTypeEnum.Job, + Action = TemplateMatcherActionEnum.Update, + Initiator = new HistoryInitiator + { + InitiatorIp = clientService.GetClientIp()?.ToString(), + InitiatorParrComponentId = ParrComponentsEnum.Api, + InitiatorComment = $"В GUI изменено имя шаблона, при сохранении Job отправлен запрос на обновление связанных шаблонов" + } + }; + + var msg = JsonSerializer.Serialize(request); + + var result = await mqService.SendAsync(mqSettings.TemplatesMatcher, new[] { msg }); + logger.LogDebug("Получен код отпрвки: {IsSuccess}", result.IsSuccess); + + if (!result.IsSuccess) + { + logger.LogError($"Ошибка при отправке запроса в очередь на обновление связанных шаблонов, после обновления маски шаблона. {msg}"); + return false; + } + + logger.LogInformation($"После изменения маски шаблона в jobId: {jobId}, отправлен запрос в очередь на переименование связанных шаблонов: {msg}"); + + return true; + } + } diff --git a/PARR.API/Controllers/V1/SyncTaskController.cs b/PARR.API/Controllers/V1/SyncTaskController.cs index 96ab79d5..beaaa3d3 100644 --- a/PARR.API/Controllers/V1/SyncTaskController.cs +++ b/PARR.API/Controllers/V1/SyncTaskController.cs @@ -40,7 +40,6 @@ namespace PARR.API.Controllers.V1 /// /// Сопоставить текущие шаблоны для Job, создать недостущие шаблоны /// - /// ИД шаблона [HttpPost(ApiRoutes.SyncTask.MatchTemplatesForJob)] public async Task MatchTemplatesForJob([FromRoute] Guid jobId, [FromBody] MatchTemplatesForJobRequest request) { diff --git a/PARR.API/Controllers/V1/TemplateController.cs b/PARR.API/Controllers/V1/TemplateController.cs index 78e56fdf..c0c9faa7 100644 --- a/PARR.API/Controllers/V1/TemplateController.cs +++ b/PARR.API/Controllers/V1/TemplateController.cs @@ -62,6 +62,7 @@ namespace PARR.API.Controllers.V1 .Include(t => t.RobotConfigurations).ThenInclude(t => t.TaskStatus) .Include(t => t.RobotConfigurations).ThenInclude(t => t.RobotStatus) .Include(t => t.Orders) + .Include(t => t.StatusType) .OrderBy(t => t.Name) .AsSplitQuery(); @@ -72,6 +73,9 @@ namespace PARR.API.Controllers.V1 if (filter.JobId.HasValue) query = query.Where(t => t.JobId == filter.JobId); + if (filter.StatusTypeId.HasValue) + query = query.Where(t => t.StatusTypeId == filter.StatusTypeId); + var templates = await templateService.GetPage(query, paginationFilter).ToListAsync(); if (!templates.Any()) @@ -98,6 +102,7 @@ namespace PARR.API.Controllers.V1 .Include(t => t.RobotConfigurations).ThenInclude(t => t.TaskStatus) .Include(t => t.RobotConfigurations).ThenInclude(t => t.RobotStatus) .Include(t => t.Orders) + .Include(t => t.StatusType) .AsSplitQuery() .FirstOrDefaultAsync(t => t.Id == id); @@ -128,6 +133,7 @@ namespace PARR.API.Controllers.V1 .Include(t => t.RobotConfigurations).ThenInclude(t => t.TaskStatus) .Include(t => t.RobotConfigurations).ThenInclude(t => t.RobotStatus) .Include(t => t.Orders) + .Include(t => t.StatusType) .AsSplitQuery() .FirstOrDefaultAsync(t => t.Id == id); @@ -160,6 +166,7 @@ namespace PARR.API.Controllers.V1 .Include(t => t.RobotConfigurations).ThenInclude(t => t.TaskStatus) .Include(t => t.RobotConfigurations).ThenInclude(t => t.RobotStatus) .Include(t => t.Orders) + .Include(t => t.StatusType) .AsSplitQuery() .FirstOrDefaultAsync(t => t.Id == id); diff --git a/PARR.API/Controllers/V1/TemplateStatusTypeController.cs b/PARR.API/Controllers/V1/TemplateStatusTypeController.cs new file mode 100644 index 00000000..06e2d9fd --- /dev/null +++ b/PARR.API/Controllers/V1/TemplateStatusTypeController.cs @@ -0,0 +1,50 @@ +using AutoMapper; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using PARR.API.Contracts.V1; +using PARR.API.Contracts.V1.Responses; +using PARR.API.Contracts.V1.Responses.Base; +using PARR.API.Controllers.V1.Base; +using PARR.Constants; +using PARR.DAL.Services.Interfaces; + +namespace PARR.API.Controllers.V1 +{ + /// + /// Типы статусов шаблонов + /// + [Authorize(Roles = ParrRoles.Administrator.Role)] + public class TemplateStatusTypeController : BaseApiController + { + private readonly IMapper mapper; + private readonly ITemplateStatusTypeService templateStatusTypeService; + + public TemplateStatusTypeController( + IMapper mapper, + ITemplateStatusTypeService templateStatusTypeService + ) + { + this.mapper = mapper; + this.templateStatusTypeService = templateStatusTypeService; + } + + + /// + /// Типы статусов шаблонов + /// + /// + [HttpGet(ApiRoutes.TemplateStatusType.GetAll)] + public async Task GetAll() + { + var statusTypes = await templateStatusTypeService.Get().OrderBy(t => t.Description).ToListAsync(); + + if (!statusTypes.Any()) + return NoContent(); + + var response = mapper.Map>(statusTypes); + + return Ok(new Response>(response, true)); + } + } +} diff --git a/PARR.API/MappingProfiles/DomainToResponseProfile.cs b/PARR.API/MappingProfiles/DomainToResponseProfile.cs index 60654bbe..a721c2d7 100644 --- a/PARR.API/MappingProfiles/DomainToResponseProfile.cs +++ b/PARR.API/MappingProfiles/DomainToResponseProfile.cs @@ -38,7 +38,8 @@ namespace PARR.API.MappingProfiles .ForMember(d => d.NextRun, o => o.MapFrom(s => s.NextRun)) .ForMember(d => d.LastRun, o => o.MapFrom(s => s.LastRun)) .ForMember(d => d.OrderCount, o => o.MapFrom(s => s.Orders.Count())) - .ForMember(d => d.IsAutoDistributionEnabled, o => o.MapFrom(s => s.Job!.Group!.IsAutoDistributionEnabled)); + .ForMember(d => d.IsAutoDistributionEnabled, o => o.MapFrom(s => s.Job!.Group!.IsAutoDistributionEnabled)) + .ForMember(d => d.StatusType, o => o.MapFrom(s => s.StatusType)); // === Template === @@ -55,6 +56,12 @@ namespace PARR.API.MappingProfiles CreateMap(); + #region StatusTypeResponse + + CreateMap(); + + #endregion + #region Tnk CreateMap(); diff --git a/PARR.API/Settings/MqSettings.cs b/PARR.API/Settings/MqSettings.cs index 7835d679..7d019ef8 100644 --- a/PARR.API/Settings/MqSettings.cs +++ b/PARR.API/Settings/MqSettings.cs @@ -9,6 +9,7 @@ namespace PARR.API.Settings public MqTemplateActivator TemplateActivator { get; set; } = new MqTemplateActivator(); public MqStatistics Statistics { get; set; } = new MqStatistics(); public MqTemplatesMatcher TemplatesMatcher { get; set; } = new MqTemplatesMatcher(); + public MqTemplatesUpdater TemplatesUpdater { get; set; } = new MqTemplatesUpdater(); } public class MqGenerateTemplates : IMqSettings @@ -60,4 +61,13 @@ namespace PARR.API.Settings public string Password { get; set; } = string.Empty; public ushort? PrefetchCount { get; set; } = 0; } + + public class MqTemplatesUpdater : IMqSettings + { + public string HostName { get; set; } = string.Empty; + public string QueueName { get; set; } = string.Empty; + public string User { get; set; } = string.Empty; + public string Password { get; set; } = string.Empty; + public ushort? PrefetchCount { get; set; } = 0; + } } diff --git a/PARR.API/appsettings.Development.json b/PARR.API/appsettings.Development.json index 23cc8200..0ae41385 100644 --- a/PARR.API/appsettings.Development.json +++ b/PARR.API/appsettings.Development.json @@ -15,7 +15,16 @@ "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } - } + }, + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "log/log-.txt", + "rollingInterval": "Day" + } + } + ] }, "StorageSettings": { "StoragePath": "W:\\" @@ -33,6 +42,9 @@ "TemplatesMatcher": { "HostName": "10.99.253.216" }, + "TemplatesUpdater": { + "HostName": "10.99.253.216" + }, "Statistics": { "StatMqAuth": { "HostName": "10.99.253.216" diff --git a/PARR.API/appsettings.json b/PARR.API/appsettings.json index c303035b..c1568d59 100644 --- a/PARR.API/appsettings.json +++ b/PARR.API/appsettings.json @@ -16,16 +16,7 @@ "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } - }, - "WriteTo": [ - { - "Name": "File", - "Args": { - "path": "log/log-.txt", - "rollingInterval": "Day" - } - } - ] + } }, "AllowedHosts": "*", "CorsSettings": { @@ -63,6 +54,12 @@ "User": "template_matcher_writer", "Password": "8ndd%BpP61Ias;ldk23CkvZM" }, + "TemplatesUpdater": { + "HostName": "parr-rabbitmq", + "QueueName": "parr-template-updater", + "User": "template_updater_writer", + "Password": "sjdhgfkJHGIUFDi14asd^12" + }, "Statistics": { "StatMqAuth": { "HostName": "parr-rabbitmq", diff --git a/PARR.DAL/ParrDalInstaller.cs b/PARR.DAL/ParrDalInstaller.cs index c47a722a..30240ce1 100644 --- a/PARR.DAL/ParrDalInstaller.cs +++ b/PARR.DAL/ParrDalInstaller.cs @@ -94,6 +94,7 @@ namespace PARR.DAL services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); #region Unit diff --git a/PARR.DAL/Services/Implementations/TemplateStatusTypeService.cs b/PARR.DAL/Services/Implementations/TemplateStatusTypeService.cs new file mode 100644 index 00000000..4e5dc682 --- /dev/null +++ b/PARR.DAL/Services/Implementations/TemplateStatusTypeService.cs @@ -0,0 +1,22 @@ +using PARR.DAL.Context; +using PARR.DAL.Models; +using PARR.DAL.Services.Interfaces; + +namespace PARR.DAL.Services.Implementations +{ + internal class TemplateStatusTypeService : ITemplateStatusTypeService + { + private readonly DataContext dataContext; + + public TemplateStatusTypeService(DataContext dataContext) + { + this.dataContext = dataContext; + } + + + public IQueryable Get() + { + return dataContext.TemplateStatusTypes; + } + } +} diff --git a/PARR.DAL/Services/Interfaces/ITemplateStatusTypeService.cs b/PARR.DAL/Services/Interfaces/ITemplateStatusTypeService.cs new file mode 100644 index 00000000..f2d138d4 --- /dev/null +++ b/PARR.DAL/Services/Interfaces/ITemplateStatusTypeService.cs @@ -0,0 +1,9 @@ +using PARR.DAL.Models; + +namespace PARR.DAL.Services.Interfaces +{ + public interface ITemplateStatusTypeService + { + IQueryable Get(); + } +} diff --git a/PARR.EsppOrderLoaderWorker/appsettings.Development.json b/PARR.EsppOrderLoaderWorker/appsettings.Development.json index 25ba5027..b2733ea8 100644 --- a/PARR.EsppOrderLoaderWorker/appsettings.Development.json +++ b/PARR.EsppOrderLoaderWorker/appsettings.Development.json @@ -7,5 +7,23 @@ "Default": "Information", "Microsoft.Hosting.Lifetime": "Information" } + }, + "Serilog": { + "MinimumLevel": { + "Default": "Information", + "Override": { + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "log/log-.txt", + "rollingInterval": "Day" + } + } + ] } } diff --git a/PARR.EsppOrderLoaderWorker/appsettings.json b/PARR.EsppOrderLoaderWorker/appsettings.json index f476e425..ae5591e0 100644 --- a/PARR.EsppOrderLoaderWorker/appsettings.json +++ b/PARR.EsppOrderLoaderWorker/appsettings.json @@ -16,16 +16,7 @@ "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } - }, - "WriteTo": [ - { - "Name": "File", - "Args": { - "path": "log/log-.txt", - "rollingInterval": "Day" - } - } - ] + } }, "WorkerSettings": { "RepeatEvery": "1:00:00" diff --git a/PARR.EsppOrderManagerWorker/appsettings.Development.json b/PARR.EsppOrderManagerWorker/appsettings.Development.json index bec97d50..89fc256d 100644 --- a/PARR.EsppOrderManagerWorker/appsettings.Development.json +++ b/PARR.EsppOrderManagerWorker/appsettings.Development.json @@ -8,6 +8,24 @@ "Microsoft.Hosting.Lifetime": "Information" } }, + "Serilog": { + "MinimumLevel": { + "Default": "Information", + "Override": { + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "log/log-.txt", + "rollingInterval": "Day" + } + } + ] + }, "MqSettings": { "HostName": "10.99.253.216" } diff --git a/PARR.EsppOrderManagerWorker/appsettings.json b/PARR.EsppOrderManagerWorker/appsettings.json index 332181ac..a13af0e8 100644 --- a/PARR.EsppOrderManagerWorker/appsettings.json +++ b/PARR.EsppOrderManagerWorker/appsettings.json @@ -16,16 +16,7 @@ "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } - }, - "WriteTo": [ - { - "Name": "File", - "Args": { - "path": "log/log-.txt", - "rollingInterval": "Day" - } - } - ] + } }, "MqSettings": { "HostName": "parr-rabbitmq", diff --git a/PARR.EsppScheduleSyncWorker/appsettings.Development.json b/PARR.EsppScheduleSyncWorker/appsettings.Development.json index 91c52de8..528af8d3 100644 --- a/PARR.EsppScheduleSyncWorker/appsettings.Development.json +++ b/PARR.EsppScheduleSyncWorker/appsettings.Development.json @@ -8,6 +8,24 @@ "Microsoft.Hosting.Lifetime": "Information" } }, + "Serilog": { + "MinimumLevel": { + "Default": "Information", + "Override": { + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "log/log-.txt", + "rollingInterval": "Day" + } + } + ] + }, "GlobalSettings": { "MqSettings": { "HostName": "10.99.253.216" diff --git a/PARR.EsppScheduleSyncWorker/appsettings.json b/PARR.EsppScheduleSyncWorker/appsettings.json index 2a15a19d..5c56b72c 100644 --- a/PARR.EsppScheduleSyncWorker/appsettings.json +++ b/PARR.EsppScheduleSyncWorker/appsettings.json @@ -16,16 +16,7 @@ "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } - }, - "WriteTo": [ - { - "Name": "File", - "Args": { - "path": "log/log-.txt", - "rollingInterval": "Day" - } - } - ] + } }, "GlobalSettings": { "MqSettings": { diff --git a/PARR.EsppTemplateSyncWorker/appsettings.json b/PARR.EsppTemplateSyncWorker/appsettings.json index 2964fd35..47bb0ebd 100644 --- a/PARR.EsppTemplateSyncWorker/appsettings.json +++ b/PARR.EsppTemplateSyncWorker/appsettings.json @@ -16,16 +16,7 @@ "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } - }, - "WriteTo": [ - { - "Name": "File", - "Args": { - "path": "log/log-.txt", - "rollingInterval": "Day" - } - } - ] + } }, "StorageSettings": { "StoragePath": "Data", diff --git a/PARR.GeneratorTemplatesWorker/appsettings.Development.json b/PARR.GeneratorTemplatesWorker/appsettings.Development.json index bec97d50..89fc256d 100644 --- a/PARR.GeneratorTemplatesWorker/appsettings.Development.json +++ b/PARR.GeneratorTemplatesWorker/appsettings.Development.json @@ -8,6 +8,24 @@ "Microsoft.Hosting.Lifetime": "Information" } }, + "Serilog": { + "MinimumLevel": { + "Default": "Information", + "Override": { + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "log/log-.txt", + "rollingInterval": "Day" + } + } + ] + }, "MqSettings": { "HostName": "10.99.253.216" } diff --git a/PARR.GeneratorTemplatesWorker/appsettings.json b/PARR.GeneratorTemplatesWorker/appsettings.json index cd382c1a..349afdd7 100644 --- a/PARR.GeneratorTemplatesWorker/appsettings.json +++ b/PARR.GeneratorTemplatesWorker/appsettings.json @@ -16,16 +16,7 @@ "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } - }, - "WriteTo": [ - { - "Name": "File", - "Args": { - "path": "log/log-.txt", - "rollingInterval": "Day" - } - } - ] + } }, "MqSettings": { "HostName": "parr-rabbitmq", diff --git a/PARR.JobAutoControlWorker/appsettings.Development.json b/PARR.JobAutoControlWorker/appsettings.Development.json index c51102f2..709394af 100644 --- a/PARR.JobAutoControlWorker/appsettings.Development.json +++ b/PARR.JobAutoControlWorker/appsettings.Development.json @@ -8,6 +8,24 @@ "Microsoft.Hosting.Lifetime": "Information" } }, + "Serilog": { + "MinimumLevel": { + "Default": "Information", + "Override": { + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "log/log-.txt", + "rollingInterval": "Day" + } + } + ] + }, "MqSettings": { "Generator": { "HostName": "10.99.253.216" diff --git a/PARR.JobAutoControlWorker/appsettings.json b/PARR.JobAutoControlWorker/appsettings.json index 8c528967..6e12c6f5 100644 --- a/PARR.JobAutoControlWorker/appsettings.json +++ b/PARR.JobAutoControlWorker/appsettings.json @@ -16,16 +16,7 @@ "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } - }, - "WriteTo": [ - { - "Name": "File", - "Args": { - "path": "log/log-.txt", - "rollingInterval": "Day" - } - } - ] + } }, "WorkerSettings": { "RepeatEvery": "6:00:00" diff --git a/PARR.MasterWorker/appsettings.Development.json b/PARR.MasterWorker/appsettings.Development.json index bec97d50..89fc256d 100644 --- a/PARR.MasterWorker/appsettings.Development.json +++ b/PARR.MasterWorker/appsettings.Development.json @@ -8,6 +8,24 @@ "Microsoft.Hosting.Lifetime": "Information" } }, + "Serilog": { + "MinimumLevel": { + "Default": "Information", + "Override": { + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "log/log-.txt", + "rollingInterval": "Day" + } + } + ] + }, "MqSettings": { "HostName": "10.99.253.216" } diff --git a/PARR.MasterWorker/appsettings.json b/PARR.MasterWorker/appsettings.json index 5a27f981..baf48798 100644 --- a/PARR.MasterWorker/appsettings.json +++ b/PARR.MasterWorker/appsettings.json @@ -16,16 +16,7 @@ "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } - }, - "WriteTo": [ - { - "Name": "File", - "Args": { - "path": "log/log-.txt", - "rollingInterval": "Day" - } - } - ] + } }, "MqSettings": { "HostName": "parr-rabbitmq", diff --git a/PARR.NextRunWorker/appsettings.Development.json b/PARR.NextRunWorker/appsettings.Development.json index 25ba5027..b2733ea8 100644 --- a/PARR.NextRunWorker/appsettings.Development.json +++ b/PARR.NextRunWorker/appsettings.Development.json @@ -7,5 +7,23 @@ "Default": "Information", "Microsoft.Hosting.Lifetime": "Information" } + }, + "Serilog": { + "MinimumLevel": { + "Default": "Information", + "Override": { + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "log/log-.txt", + "rollingInterval": "Day" + } + } + ] } } diff --git a/PARR.NextRunWorker/appsettings.json b/PARR.NextRunWorker/appsettings.json index 4bdb0a54..73008d31 100644 --- a/PARR.NextRunWorker/appsettings.json +++ b/PARR.NextRunWorker/appsettings.json @@ -16,16 +16,7 @@ "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } - }, - "WriteTo": [ - { - "Name": "File", - "Args": { - "path": "log/log-.txt", - "rollingInterval": "Day" - } - } - ] + } }, "WorkerSettings": { "RepeatEvery": "0:50:00" diff --git a/PARR.TemplateActivatorWorker/appsettings.Development.json b/PARR.TemplateActivatorWorker/appsettings.Development.json index bec97d50..89fc256d 100644 --- a/PARR.TemplateActivatorWorker/appsettings.Development.json +++ b/PARR.TemplateActivatorWorker/appsettings.Development.json @@ -8,6 +8,24 @@ "Microsoft.Hosting.Lifetime": "Information" } }, + "Serilog": { + "MinimumLevel": { + "Default": "Information", + "Override": { + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "log/log-.txt", + "rollingInterval": "Day" + } + } + ] + }, "MqSettings": { "HostName": "10.99.253.216" } diff --git a/PARR.TemplateActivatorWorker/appsettings.json b/PARR.TemplateActivatorWorker/appsettings.json index 374e1323..da790cfb 100644 --- a/PARR.TemplateActivatorWorker/appsettings.json +++ b/PARR.TemplateActivatorWorker/appsettings.json @@ -16,16 +16,7 @@ "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } - }, - "WriteTo": [ - { - "Name": "File", - "Args": { - "path": "log/log-.txt", - "rollingInterval": "Day" - } - } - ] + } }, "MqSettings": { "HostName": "parr-rabbitmq", diff --git a/PARR.TemplateDistributorWorker/appsettings.Development.json b/PARR.TemplateDistributorWorker/appsettings.Development.json index bec97d50..89fc256d 100644 --- a/PARR.TemplateDistributorWorker/appsettings.Development.json +++ b/PARR.TemplateDistributorWorker/appsettings.Development.json @@ -8,6 +8,24 @@ "Microsoft.Hosting.Lifetime": "Information" } }, + "Serilog": { + "MinimumLevel": { + "Default": "Information", + "Override": { + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "log/log-.txt", + "rollingInterval": "Day" + } + } + ] + }, "MqSettings": { "HostName": "10.99.253.216" } diff --git a/PARR.TemplateDistributorWorker/appsettings.json b/PARR.TemplateDistributorWorker/appsettings.json index f23cf39f..0b4d9c7b 100644 --- a/PARR.TemplateDistributorWorker/appsettings.json +++ b/PARR.TemplateDistributorWorker/appsettings.json @@ -16,16 +16,7 @@ "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } - }, - "WriteTo": [ - { - "Name": "File", - "Args": { - "path": "log/log-.txt", - "rollingInterval": "Day" - } - } - ] + } }, "MqSettings": { "HostName": "parr-rabbitmq", diff --git a/PARR.TemplateGeneratorWorker/appsettings.Development.json b/PARR.TemplateGeneratorWorker/appsettings.Development.json index 765d80dd..89fc256d 100644 --- a/PARR.TemplateGeneratorWorker/appsettings.Development.json +++ b/PARR.TemplateGeneratorWorker/appsettings.Development.json @@ -1,14 +1,32 @@ { - "ConnectionStrings": { - "RedisConnection": "10.99.253.216:6379,password=ParrP@ssPtk202MMdevDvs" - }, - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.Hosting.Lifetime": "Information" - } - }, - "MqSettings": { - "HostName": "10.99.253.216" + "ConnectionStrings": { + "RedisConnection": "10.99.253.216:6379,password=ParrP@ssPtk202MMdevDvs" + }, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.Hosting.Lifetime": "Information" } + }, + "Serilog": { + "MinimumLevel": { + "Default": "Information", + "Override": { + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "log/log-.txt", + "rollingInterval": "Day" + } + } + ] + }, + "MqSettings": { + "HostName": "10.99.253.216" + } } diff --git a/PARR.TemplateGeneratorWorker/appsettings.json b/PARR.TemplateGeneratorWorker/appsettings.json index 5223963b..f8bea384 100644 --- a/PARR.TemplateGeneratorWorker/appsettings.json +++ b/PARR.TemplateGeneratorWorker/appsettings.json @@ -16,16 +16,7 @@ "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } - }, - "WriteTo": [ - { - "Name": "File", - "Args": { - "path": "log/log-.txt", - "rollingInterval": "Day" - } - } - ] + } }, "MqSettings": { "HostName": "parr-rabbitmq", diff --git a/PARR.TemplateMatcherWorker/appsettings.Development.json b/PARR.TemplateMatcherWorker/appsettings.Development.json index 665526f1..6ac38b03 100644 --- a/PARR.TemplateMatcherWorker/appsettings.Development.json +++ b/PARR.TemplateMatcherWorker/appsettings.Development.json @@ -6,7 +6,16 @@ "Microsoft": "Debug", "Microsoft.Hosting.Lifetime": "Debug" } - } + }, + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "log/log-.txt", + "rollingInterval": "Day" + } + } + ] }, "MqSettings": { "TemplateMatcher": { "HostName": "10.99.253.216" }, diff --git a/PARR.TemplateMatcherWorker/appsettings.json b/PARR.TemplateMatcherWorker/appsettings.json index 6a9f0599..123c8bca 100644 --- a/PARR.TemplateMatcherWorker/appsettings.json +++ b/PARR.TemplateMatcherWorker/appsettings.json @@ -10,16 +10,7 @@ "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } - }, - "WriteTo": [ - { - "Name": "File", - "Args": { - "path": "log/log-.txt", - "rollingInterval": "Day" - } - } - ] + } }, "MqSettings": { "TemplateMatcher": { diff --git a/PARR.TemplateTaskGeneratorWorker/appsettings.Development.json b/PARR.TemplateTaskGeneratorWorker/appsettings.Development.json index 95ce520b..9a9bacbb 100644 --- a/PARR.TemplateTaskGeneratorWorker/appsettings.Development.json +++ b/PARR.TemplateTaskGeneratorWorker/appsettings.Development.json @@ -5,6 +5,24 @@ "Microsoft.Hosting.Lifetime": "Information" } }, + "Serilog": { + "MinimumLevel": { + "Default": "Information", + "Override": { + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "log/log-.txt", + "rollingInterval": "Day" + } + } + ] + }, "MqSettings": { "TemplateTaskGenerator": { "HostName": "10.99.253.216" }, "TemplateGeneratorWorker": { "HostName": "10.99.253.216" } diff --git a/PARR.TemplateTaskGeneratorWorker/appsettings.json b/PARR.TemplateTaskGeneratorWorker/appsettings.json index e94ac8af..350034d9 100644 --- a/PARR.TemplateTaskGeneratorWorker/appsettings.json +++ b/PARR.TemplateTaskGeneratorWorker/appsettings.json @@ -16,16 +16,7 @@ "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } - }, - "WriteTo": [ - { - "Name": "File", - "Args": { - "path": "log/log-.txt", - "rollingInterval": "Day" - } - } - ] + } }, "MqSettings": { "TemplateTaskGenerator": { diff --git a/docker-compose.yml b/docker-compose.yml index 11cf5c24..bb4dc106 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -33,7 +33,7 @@ services: retries: 3 start_period: 120s deploy: - replicas: 4 + replicas: 3 update_config: parallelism: 1 delay: 5s