feat(esppOrderManager): методы для изменения статуса наряда в еспп

This commit is contained in:
Mikhail Trubnikov
2023-11-17 16:25:12 +10:00
parent ea91eb6abc
commit 1c02f9978a
4 changed files with 46 additions and 4 deletions

View File

@@ -10,21 +10,25 @@ namespace PARR.EsppApi
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
Task<EsppResultBase<IEnumerable<EsppOrder>>> FindOrdersAsync(FindOrdersQuery query); Task<EsppResultBase<IEnumerable<EsppOrder>>> FindOrdersAsync(FindOrdersQuery query);
/// <summary> /// <summary>
/// Поиск наряда по номеру /// Поиск наряда по номеру
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
Task<EsppResultBase<EsppOrder>> FindOrderByRecordIdAsync(string recordId); Task<EsppResultBase<EsppOrder>> FindOrderByRecordIdAsync(string recordId);
/// <summary> /// <summary>
/// Взять наряд в работу /// Взять наряд в работу
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
Task<EsppResultBase<EsppResponse>> SetStatusInWorkAsync(string recordId); Task<EsppResultBase<EsppResponse>> SetStatusInWorkAsync(string recordId);
/// <summary> /// <summary>
/// Установить статус наряда как выполнен /// Установить статус наряда как выполнен
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
Task<EsppResultBase<EsppResponse>> SetStatusIsDone(string recordId); Task<EsppResultBase<EsppResponse>> SetStatusIsDone(string recordId);
/// <summary> /// <summary>
/// Списание трудозатрат по модульным ТНК /// Списание трудозатрат по модульным ТНК
/// </summary> /// </summary>

View File

@@ -2,8 +2,10 @@
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using PARR.BLL.Domain.Mq; using PARR.BLL.Domain.Mq;
using PARR.BLL.Services.Interfaces; using PARR.BLL.Services.Interfaces;
using PARR.DAL.Contracts;
using PARR.DAL.Models; using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces; using PARR.DAL.Services.Interfaces;
using PARR.EsppApi;
using PARR.EsppOrderManager.Settings; using PARR.EsppOrderManager.Settings;
namespace PARR.EsppOrderManager namespace PARR.EsppOrderManager
@@ -15,13 +17,15 @@ namespace PARR.EsppOrderManager
private readonly ILogger<EsppOrderManager> logger; private readonly ILogger<EsppOrderManager> logger;
private readonly ITransformService transformService; private readonly ITransformService transformService;
private readonly IOrderService orderService; private readonly IOrderService orderService;
private readonly IEsppApiService esppApiService;
public EsppOrderManager( public EsppOrderManager(
MqSettings mqSettings, MqSettings mqSettings,
IMqService mqService, IMqService mqService,
ILogger<EsppOrderManager> logger, ILogger<EsppOrderManager> logger,
ITransformService transformService, ITransformService transformService,
IOrderService orderService IOrderService orderService,
IEsppApiService esppApiService
) )
{ {
this.mqSettings = mqSettings; this.mqSettings = mqSettings;
@@ -29,6 +33,7 @@ namespace PARR.EsppOrderManager
this.logger = logger; this.logger = logger;
this.transformService = transformService; this.transformService = transformService;
this.orderService = orderService; this.orderService = orderService;
this.esppApiService = esppApiService;
} }
public async void Start() public async void Start()
@@ -77,8 +82,9 @@ namespace PARR.EsppOrderManager
} }
var resultMsg = GenerateResultMsg(order); var resultMsg = GenerateResultMsg(order);
var workDuration = CalcWorkDuration(order);
//todo:!!! //todo:!!! менять статус наряда. Можн ли закрыть не беря в работу?
} }
@@ -93,16 +99,39 @@ namespace PARR.EsppOrderManager
.OrderBy(t => t.DateCreated) .OrderBy(t => t.DateCreated)
.Select(t => $"{t.DateCreated} :: {t.AgentHistoryLevel?.Name} :: {t.Message}"); .Select(t => $"{t.DateCreated} :: {t.AgentHistoryLevel?.Name} :: {t.Message}");
string msgAgent = "Работы выполнены средствами автоматизации. \r\n" + var msgAgent = "Работы выполнены средствами автоматизации. \r\n" +
"Журнал работы: \r\n" + "Журнал работы: \r\n" +
$"{string.Join("\r\n", agentHistory)}"; $"{string.Join("\r\n", agentHistory)}";
string msgAgentEmpty = "Работы должны были выполниться средствами автоматизации. " + var msgAgentEmpty = "Работы должны были выполниться средствами автоматизации. " +
"Но от средств автоматизации не поступило сообщений. " + "Но от средств автоматизации не поступило сообщений. " +
"Работы не выполнены."; "Работы не выполнены.";
return agentHistory.Any() ? msgAgent : 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;
}
} }
} }

View File

@@ -1,4 +1,5 @@
using Elastic.CommonSchema.Serilog; using Elastic.CommonSchema.Serilog;
using PARR.EsppApi;
using PARR.EsppOrderManager; using PARR.EsppOrderManager;
using PARR.EsppOrderManagerWorker; using PARR.EsppOrderManagerWorker;
using Serilog; using Serilog;
@@ -24,6 +25,7 @@ builder.Services.AddLogging(config =>
builder.Services.InstallEsppOrderManagerServices(builder.Configuration); builder.Services.InstallEsppOrderManagerServices(builder.Configuration);
builder.Configuration.AddEsppOrderManagerConfigurations(builder.Services); builder.Configuration.AddEsppOrderManagerConfigurations(builder.Services);
builder.Services.AddEsppOrderManagerSettings(builder.Configuration); builder.Services.AddEsppOrderManagerSettings(builder.Configuration);
builder.Services.InstallEsppApiServices(builder.Configuration);
builder.Services.AddHostedService<Worker>(); builder.Services.AddHostedService<Worker>();

View File

@@ -31,5 +31,12 @@
"QueueName": "parr-orders", "QueueName": "parr-orders",
"User": "espp_orders_manager", "User": "espp_orders_manager",
"Password": "Lfhsdkfg*&%9sdfgf23" "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
} }
} }