feat(esppOrderManager): отладка

This commit is contained in:
Mikhail Trubnikov
2023-11-20 16:59:58 +10:00
parent 113a801060
commit 7f3a2441c9
6 changed files with 168 additions and 62 deletions

View File

@@ -1,8 +1,8 @@
using Microsoft.Extensions.Logging;
using PARR.DAL.Models;
using PARR.EsppApi.Models.Query;
using PARR.EsppApi;
using PARR.Constants;
using PARR.DAL.Models;
using PARR.EsppApi;
using PARR.EsppApi.Models.Query;
namespace PARR.EsppOrderManager.Services
{
@@ -37,7 +37,7 @@ namespace PARR.EsppOrderManager.Services
}
// проверяем, совпадает ли NextStatus со статусом в ЕСПП
// Если совпадают, значит в еспп поменяли, и не изменили в БД раньше (может ошибка была, может руками кто сделал)
// Если совпадают, значит в еспп поменяли и не изменили в БД раньше (может ошибка была, может руками кто сделал)
// так что говорим, как будто бы все ок
if (IsEquelEsppStatusAndNextStatus(order.NextStatusCode!.Value, esppOrderResult.Data.StatusEnum))
{
@@ -47,34 +47,107 @@ namespace PARR.EsppOrderManager.Services
return true;
}
//todo:
// Установить статус 2-В работе
if (order.NextStatusCode == (int)OrderStatusEnum.InWork)
if (esppOrderResult.Data.StatusEnum == OrderStatusEnum.New || esppOrderResult.Data.StatusEnum == OrderStatusEnum.Stop)
return await SetInWorkStatusAsync(order.Number, resultMsg);
//var resultInWork = await esppApiService.SetStatusInWorkAsync(order.Number, resultMsg);
// Списать трудозатраты и установить статус 4-Выполнен
if (order.NextStatusCode == (int)OrderStatusEnum.Complete)
{
var statusIsWork = esppOrderResult.Data.StatusEnum == OrderStatusEnum.InWork;
//if (!resultInWork.IsSuccess)
//{
// return false;
//}
// если текущий статус != 2-В работе, сначала меняем статус на 2-В работе, а затем уже списываем трудозатраты и меняем на 4-Выполнен
if (!statusIsWork)
statusIsWork = await SetInWorkStatusAsync(order.Number, resultMsg);
if (statusIsWork)
{
// заполняем ТНК
var tnk = new AddMtnkQuery
{
JobOperation = order!.Template!.ApplicationsInWork!.Work!.Name,
RecordId = order.Number,
Time = duration.ToString("HH:mm")
};
return await SetCompleteStatusAsync(order.Number, resultMsg, tnk);
}
else
{
logger.LogError($"Для наряда {order.Number} не могу изменить статус на {OrderStatusEnum.Complete}, так как текущий статус не {OrderStatusEnum.InWork}. " +
$"Текущий статус в ЕСПП: {esppOrderResult.Data.Status}");
//var tnk = new AddMtnkQuery
//{
// JobOperation = order!.Template!.ApplicationsInWork!.Work!.Tnk!.Name,
// RecordId = order.Number,
// Time = duration.ToString()
//};
//var resultTnk = await esppApiService.AddMTnkAsync(tnk);
//var resultIsDone = await esppApiService.SetStatusIsDoneAsync(order.Number, resultMsg);
return false;
}
}
return false;
}
/// <summary>
/// Установка статуса 4-Выполнен
/// </summary>
/// <param name="orderNumber"></param>
/// <param name="resultMsg"></param>
/// <param name="tnk"></param>
/// <returns></returns>
private async Task<bool> SetCompleteStatusAsync(string orderNumber, string resultMsg, AddMtnkQuery tnk)
{
// списываем трудозатраты
var resultTnk = await esppApiService.AddMTnkAsync(tnk);
if (!resultTnk.IsSuccess)
{
logger.LogError(resultTnk.Exception, $"Ошибка при списывании трудозатрат для наряда {orderNumber}.");
return false;
}
// выполняем наряд
var result = await esppApiService.SetStatusIsDoneAsync(orderNumber, resultMsg);
if (result.IsSuccess)
{
logger.LogDebug($"В ЕСПП, для наряда {orderNumber} установлен статус {OrderStatusEnum.Complete}");
return true;
}
else
{
logger.LogError(result.Exception, $"В ЕСПП, для наряда {orderNumber} не удалось установить статус {OrderStatusEnum.Complete}.");
return false;
}
}
/// <summary>
/// Установка статуса 2-В работе
/// </summary>
/// <param name="orderNumber"></param>
/// <param name="resultMsg"></param>
/// <returns></returns>
private async Task<bool> SetInWorkStatusAsync(string orderNumber, string resultMsg)
{
var result = await esppApiService.SetStatusInWorkAsync(orderNumber, resultMsg);
if (result.IsSuccess)
{
logger.LogDebug($"В ЕСПП, для наряда {orderNumber} установлен статус {OrderStatusEnum.InWork}");
return true;
}
else
{
logger.LogError(result.Exception, $"В ЕСПП, для наряда {orderNumber} не удалось установить статус {OrderStatusEnum.InWork}.");
return false;
}
}
/// <summary>
/// Совпадает ли NextStatus и Еспп статусом
/// </summary>