diff --git a/PARR.EsppApi/Constants/EsppOrderClosingCodeEnum.cs b/PARR.EsppApi/Constants/EsppOrderClosingCodeEnum.cs new file mode 100644 index 00000000..41f2d62a --- /dev/null +++ b/PARR.EsppApi/Constants/EsppOrderClosingCodeEnum.cs @@ -0,0 +1,25 @@ +namespace PARR.EsppApi.Constants +{ + /// + /// Код закрытия наряда + /// + public enum EsppOrderClosingCodeEnum + { + /// + /// Выполнен + /// + Complete, + + /// + /// Прекращен + /// + Breake, + + /// + /// Выполнен при помощи средств автоматизации + /// + Auto + } + + +} diff --git a/PARR.EsppApi/EsppApiService.cs b/PARR.EsppApi/EsppApiService.cs index 433a3b52..98786e6f 100644 --- a/PARR.EsppApi/EsppApiService.cs +++ b/PARR.EsppApi/EsppApiService.cs @@ -30,13 +30,13 @@ namespace PARR.EsppApi } - public Task> SetStatusIsDoneAsync(string recordId, string resultMsg)//TODO упростить можно без RecordIdQuery + public Task> SetStatusIsDoneAsync(string recordId, string resultMsg, EsppOrderClosingCodeEnum closingCode)//TODO упростить можно без RecordIdQuery { - return SetStatusAsync(recordId, "4-Выполнен", resultMsg); + return SetStatusAsync(recordId, "4-Выполнен", resultMsg, closingCode); } - private async Task> SetStatusAsync(string recordId, string newStatusStr, string resultMsg) + private async Task> SetStatusAsync(string recordId, string newStatusStr, string resultMsg, EsppOrderClosingCodeEnum? closingCode = null) { //TODO assignee сразу назначаем принудительно, чтобы было понятно кто менял объект //var query = $"{{" + @@ -48,7 +48,7 @@ namespace PARR.EsppApi //var result = await esppHttpService.SendAsync(QuerySanitize(query)); - var request = new SetStatusRequest + var request = new SetStatusRequest(closingCode ?? EsppOrderClosingCodeEnum.Complete) { recordid = recordId, status = newStatusStr, diff --git a/PARR.EsppApi/IEsppApiService.cs b/PARR.EsppApi/IEsppApiService.cs index 4b851002..1ecf8256 100644 --- a/PARR.EsppApi/IEsppApiService.cs +++ b/PARR.EsppApi/IEsppApiService.cs @@ -1,4 +1,5 @@ -using PARR.EsppApi.Models; +using PARR.EsppApi.Constants; +using PARR.EsppApi.Models; using PARR.EsppApi.Models.Query; namespace PARR.EsppApi @@ -27,7 +28,7 @@ namespace PARR.EsppApi /// Установить статус наряда как выполнен /// /// - Task> SetStatusIsDoneAsync(string recordId, string resultMsg); + Task> SetStatusIsDoneAsync(string recordId, string resultMsg, EsppOrderClosingCodeEnum closingCode); /// /// Списание трудозатрат по модульным ТНК diff --git a/PARR.EsppApi/Requests/SetStatusRequest.cs b/PARR.EsppApi/Requests/SetStatusRequest.cs index e4418912..6d411ed9 100644 --- a/PARR.EsppApi/Requests/SetStatusRequest.cs +++ b/PARR.EsppApi/Requests/SetStatusRequest.cs @@ -1,10 +1,31 @@ -namespace PARR.EsppApi.Requests +using PARR.EsppApi.Constants; + +namespace PARR.EsppApi.Requests { /// /// Изменить статус наряда /// internal class SetStatusRequest { + public SetStatusRequest(EsppOrderClosingCodeEnum closingCode) + { + switch (closingCode) + { + case EsppOrderClosingCodeEnum.Complete: + resolutionCode = "выполнен"; + break; + case EsppOrderClosingCodeEnum.Breake: + resolutionCode = "прекращен"; + break; + case EsppOrderClosingCodeEnum.Auto: + resolutionCode = "выполнен при помощи средств автоматизации"; + break; + default: + resolutionCode = "выполнен"; + break; + } + } + public required string recordid { get; set; } public required string status { get; set; } @@ -12,5 +33,7 @@ public required string assignee { get; set; } public required string resolution { get; set; } + + public string resolutionCode { get; private set; } } } diff --git a/PARR.EsppOrderManager/Services/EsppOrderService.cs b/PARR.EsppOrderManager/Services/EsppOrderService.cs index b8682820..ce56a416 100644 --- a/PARR.EsppOrderManager/Services/EsppOrderService.cs +++ b/PARR.EsppOrderManager/Services/EsppOrderService.cs @@ -2,6 +2,7 @@ using PARR.Constants; using PARR.DAL.Models; using PARR.EsppApi; +using PARR.EsppApi.Constants; using PARR.EsppApi.Models.Query; using PARR.EsppOrderManager.Settings; @@ -118,7 +119,7 @@ namespace PARR.EsppOrderManager.Services logger.LogDebug($"В ЕСПП, для наряда {orderNumber} списаны трудозатраты. Операция: {tnk.JobOperation}, время: {tnk.Time}"); // выполняем наряд - var result = await esppApiService.SetStatusIsDoneAsync(orderNumber, resultMsg); + var result = await esppApiService.SetStatusIsDoneAsync(orderNumber, resultMsg, EsppOrderClosingCodeEnum.Auto); if (result.IsSuccess) { diff --git a/PARR.Test/Worker.cs b/PARR.Test/Worker.cs index 7aa69595..479dda86 100644 --- a/PARR.Test/Worker.cs +++ b/PARR.Test/Worker.cs @@ -1,4 +1,5 @@ using PARR.EsppApi; +using PARR.EsppApi.Constants; using PARR.EsppApi.Models.Query; namespace PARR.Test @@ -50,7 +51,7 @@ namespace PARR.Test } - var resFinish = await esppApiService.SetStatusIsDoneAsync(recordId, "Решение..."); + var resFinish = await esppApiService.SetStatusIsDoneAsync(recordId, "Решение...", EsppOrderClosingCodeEnum.Auto); if (!resFinish.IsSuccess) { _logger.LogError(resFinish.Exception, $"Не удалось обновить статус наряда {recordId}");