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