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>
/// <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>

View File

@@ -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;
}
}
}

View File

@@ -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>();

View File

@@ -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
}
}