diff --git a/PARR.EsppApi/IEsppApiService.cs b/PARR.EsppApi/IEsppApiService.cs
index 819017c3..ceb5160f 100644
--- a/PARR.EsppApi/IEsppApiService.cs
+++ b/PARR.EsppApi/IEsppApiService.cs
@@ -10,21 +10,25 @@ namespace PARR.EsppApi
///
///
Task>> FindOrdersAsync(FindOrdersQuery query);
+
///
/// Поиск наряда по номеру
///
///
Task> FindOrderByRecordIdAsync(string recordId);
+
///
/// Взять наряд в работу
///
///
Task> SetStatusInWorkAsync(string recordId);
+
///
/// Установить статус наряда как выполнен
///
///
Task> SetStatusIsDone(string recordId);
+
///
/// Списание трудозатрат по модульным ТНК
///
diff --git a/PARR.EsppOrderManager/EsppOrderManager.cs b/PARR.EsppOrderManager/EsppOrderManager.cs
index 89ce2323..3db37191 100644
--- a/PARR.EsppOrderManager/EsppOrderManager.cs
+++ b/PARR.EsppOrderManager/EsppOrderManager.cs
@@ -2,8 +2,10 @@
using Microsoft.Extensions.Logging;
using PARR.BLL.Domain.Mq;
using PARR.BLL.Services.Interfaces;
+using PARR.DAL.Contracts;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
+using PARR.EsppApi;
using PARR.EsppOrderManager.Settings;
namespace PARR.EsppOrderManager
@@ -15,13 +17,15 @@ namespace PARR.EsppOrderManager
private readonly ILogger logger;
private readonly ITransformService transformService;
private readonly IOrderService orderService;
+ private readonly IEsppApiService esppApiService;
public EsppOrderManager(
MqSettings mqSettings,
IMqService mqService,
ILogger logger,
ITransformService transformService,
- IOrderService orderService
+ IOrderService orderService,
+ IEsppApiService esppApiService
)
{
this.mqSettings = mqSettings;
@@ -29,6 +33,7 @@ namespace PARR.EsppOrderManager
this.logger = logger;
this.transformService = transformService;
this.orderService = orderService;
+ this.esppApiService = esppApiService;
}
public async void Start()
@@ -77,8 +82,9 @@ namespace PARR.EsppOrderManager
}
var resultMsg = GenerateResultMsg(order);
+ var workDuration = CalcWorkDuration(order);
- //todo:!!!
+ //todo:!!! менять статус наряда. Можн ли закрыть не беря в работу?
}
@@ -93,16 +99,39 @@ namespace PARR.EsppOrderManager
.OrderBy(t => t.DateCreated)
.Select(t => $"{t.DateCreated} :: {t.AgentHistoryLevel?.Name} :: {t.Message}");
- string msgAgent = "Работы выполнены средствами автоматизации. \r\n" +
+ var msgAgent = "Работы выполнены средствами автоматизации. \r\n" +
"Журнал работы: \r\n" +
$"{string.Join("\r\n", agentHistory)}";
- string msgAgentEmpty = "Работы должны были выполниться средствами автоматизации. " +
+ var msgAgentEmpty = "Работы должны были выполниться средствами автоматизации. " +
"Но от средств автоматизации не поступило сообщений. " +
"Работы не выполнены.";
return agentHistory.Any() ? msgAgent : msgAgentEmpty;
}
+
+ ///
+ /// Рассчиать трудозатраты
+ ///
+ ///
+ ///
+ private TimeSpan CalcWorkDuration(Order order)
+ {
+ var agentHistory = order.AgentHistories
+ .OrderBy(t => t.DateCreated);
+
+ if (!agentHistory.Any())
+ return TimeSpan.Zero;
+
+ var dateStart = agentHistory.LastOrDefault(t => t.HistoryLevelId == (int)AgentHistoryLevelEnum.Start)?.DateCreated;
+ var dateEnd = agentHistory.LastOrDefault(t => t.HistoryLevelId == (int)AgentHistoryLevelEnum.End)?.DateCreated;
+
+ if (dateStart.HasValue && dateEnd.HasValue)
+ return dateEnd.Value - dateStart.Value;
+
+ return TimeSpan.Zero;
+ }
+
}
}
diff --git a/PARR.EsppOrderManagerWorker/Program.cs b/PARR.EsppOrderManagerWorker/Program.cs
index 271e8644..e7f99edb 100644
--- a/PARR.EsppOrderManagerWorker/Program.cs
+++ b/PARR.EsppOrderManagerWorker/Program.cs
@@ -1,4 +1,5 @@
using Elastic.CommonSchema.Serilog;
+using PARR.EsppApi;
using PARR.EsppOrderManager;
using PARR.EsppOrderManagerWorker;
using Serilog;
@@ -24,6 +25,7 @@ builder.Services.AddLogging(config =>
builder.Services.InstallEsppOrderManagerServices(builder.Configuration);
builder.Configuration.AddEsppOrderManagerConfigurations(builder.Services);
builder.Services.AddEsppOrderManagerSettings(builder.Configuration);
+builder.Services.InstallEsppApiServices(builder.Configuration);
builder.Services.AddHostedService();
diff --git a/PARR.EsppOrderManagerWorker/appsettings.json b/PARR.EsppOrderManagerWorker/appsettings.json
index 2b3068b4..a907daf7 100644
--- a/PARR.EsppOrderManagerWorker/appsettings.json
+++ b/PARR.EsppOrderManagerWorker/appsettings.json
@@ -31,5 +31,12 @@
"QueueName": "parr-orders",
"User": "espp_orders_manager",
"Password": "Lfhsdkfg*&%9sdfgf23"
+ },
+ "EsppOrderSettings": {
+ "Url": "http://rzd-espp-t-rpa-app-1.gvc.oao.rzd:8080/espp_api/OperationExecutor/",
+ "UserName": "Auto-PTK-DVS",
+ "AccountName": "АВТО ТЕХНОЛОГ ПТК-ДВС (AUTO-PTK-DVS)",
+ "Password": "123456789",
+ "EsppUserTimeZone": 10
}
}