feat(esppOrderManager): методы для изменения статуса наряда в еспп
This commit is contained in:
@@ -10,21 +10,25 @@ namespace PARR.EsppApi
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<EsppResultBase<IEnumerable<EsppOrder>>> FindOrdersAsync(FindOrdersQuery query);
|
||||
|
||||
/// <summary>
|
||||
/// Поиск наряда по номеру
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<EsppResultBase<EsppOrder>> FindOrderByRecordIdAsync(string recordId);
|
||||
|
||||
/// <summary>
|
||||
/// Взять наряд в работу
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<EsppResultBase<EsppResponse>> SetStatusInWorkAsync(string recordId);
|
||||
|
||||
/// <summary>
|
||||
/// Установить статус наряда как выполнен
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<EsppResultBase<EsppResponse>> SetStatusIsDone(string recordId);
|
||||
|
||||
/// <summary>
|
||||
/// Списание трудозатрат по модульным ТНК
|
||||
/// </summary>
|
||||
|
||||
@@ -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<EsppOrderManager> logger;
|
||||
private readonly ITransformService transformService;
|
||||
private readonly IOrderService orderService;
|
||||
private readonly IEsppApiService esppApiService;
|
||||
|
||||
public EsppOrderManager(
|
||||
MqSettings mqSettings,
|
||||
IMqService mqService,
|
||||
ILogger<EsppOrderManager> 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;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Рассчиать трудозатраты
|
||||
/// </summary>
|
||||
/// <param name="order"></param>
|
||||
/// <returns></returns>
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<Worker>();
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user