feat(esppOrderManager): методы для изменения статуса наряда в еспп
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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>();
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user