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

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