From 71d4318e3ae6427afd9089d4b90c163a50589979 Mon Sep 17 00:00:00 2001 From: Mikhail Trubnikov Date: Thu, 16 Nov 2023 16:19:47 +1000 Subject: [PATCH] =?UTF-8?q?feat(master):=20=D0=B4=D0=BE=D1=80=D0=B0=D0=B1?= =?UTF-8?q?=D0=BE=D1=82=D0=BA=D0=B0=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PARR.Master/Services/OrderMasterService.cs | 22 ++++++++++++++----- .../appsettings.Development.json | 3 +++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/PARR.Master/Services/OrderMasterService.cs b/PARR.Master/Services/OrderMasterService.cs index 94f78d48..81909d7a 100644 --- a/PARR.Master/Services/OrderMasterService.cs +++ b/PARR.Master/Services/OrderMasterService.cs @@ -42,7 +42,7 @@ namespace PARR.Master.Services { // логика работы описана в документации проекта - logger.LogInformation($"--- Начало поиска нарядов ---"); + logger.LogInformation($"--- --- Начало поиска нарядов --- ---"); //ищем наряды в статусе 1 и 2 var ordersToManage = await GetOrdersNewOrWorkStatusesAsync(); @@ -52,7 +52,7 @@ namespace PARR.Master.Services foreach (var order in ordersToManage) { //присваиваем им историю работы агента, меняем стаус наряда - logger.LogInformation($"Найден наряд id: {order.Id}, {order.Number}"); + logger.LogInformation($"--- Найден наряд id: {order.Id}, {order.Number} ---"); await SetHistoryAndUpdateOrderStatus(order); } @@ -72,7 +72,7 @@ namespace PARR.Master.Services logger.LogDebug($"Список нардов переданных в RabbitMQ: {string.Join(", ", objs)}"); } else - logger.LogError($"Ошибка при передаче нарядов в Rabbit, неперадынные сообщения: {string.Join(", ", sendResult!.NotSendMessages)}"); + logger.LogError($"Ошибка при передаче нарядов в Rabbit, не переданные сообщения: {string.Join(", ", sendResult!.NotSendMessages)}"); } @@ -130,6 +130,9 @@ namespace PARR.Master.Services //2 Ищем статус "Агент завершил выполнение задания" var isAgentEnded = allHistory.Any(t => t.HistoryLevelId == (int)AgentHistoryLevelEnum.End); + + //todo: !!! если nextStatus= желаемому статусу, то не заходить внутрь ИФА!!! + if (isAgentEnded) { order.NextStatusCode = (int)OrderStatusEnum.Complete; @@ -157,10 +160,13 @@ namespace PARR.Master.Services { logger.LogDebug($"Для наряда {order.Id}, {order.Number} оставляю статус прежним, ожидаю завершение работы агента. Время старта агента: {lastStrartDate}, допустимый timeOut: {timeout} сек."); } - } //TODO: тут можно подумать, и закрывать наряды, у которых нет истории агента. сейчас мы такие наряды пропускаем, их будет закрывать руками админ. + if (!allHistory.Any()) + { + logger.LogInformation($"Для наряда {order.Id}, {order.Number} нет истории агента. Ничего не делаем."); + } if (!await orderService.CommitAsync()) { @@ -172,12 +178,16 @@ namespace PARR.Master.Services /// - /// Получить список нарядов, со статусами 1 или 2 + /// Получить список нарядов, со статусами 1 или 2 и у которых nextStatus<3 /// private async Task> GetOrdersNewOrWorkStatusesAsync() { return await GetOrdres() - .Where(t => t.StatusCode == (int)OrderStatusEnum.New || t.StatusCode == (int)OrderStatusEnum.InWork) + .Where(t => + (t.StatusCode == (int)OrderStatusEnum.New || t.StatusCode == (int)OrderStatusEnum.InWork) + && (!t.NextStatusCode.HasValue || t.NextStatusCode < (int)OrderStatusEnum.Stop) + ) + .OrderBy(t => t.DateCreated) .ToListAsync(); } diff --git a/PARR.MasterWorker/appsettings.Development.json b/PARR.MasterWorker/appsettings.Development.json index b2dcdb67..992d2719 100644 --- a/PARR.MasterWorker/appsettings.Development.json +++ b/PARR.MasterWorker/appsettings.Development.json @@ -4,5 +4,8 @@ "Default": "Information", "Microsoft.Hosting.Lifetime": "Information" } + }, + "MqSettings": { + "HostName": "10.99.253.216" } }