From 8192cbd373c2becc6fa1b76889ad9c539cf70583 Mon Sep 17 00:00:00 2001 From: Mikhail Trubnikov Date: Tue, 28 Nov 2023 15:33:59 +1000 Subject: [PATCH] =?UTF-8?q?feat(esppApi):=20=D0=BA=D0=BE=D0=B4=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=BA=D1=80=D1=8B=D1=82=D0=B8=D1=8F=20=D0=B2=D1=8B=D0=BD?= =?UTF-8?q?=D0=B5=D1=81=20=D0=B2=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D1=80=D1=8B=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Constants/EsppOrderClosingCodeEnum.cs | 25 +++++++++++++++++++ PARR.EsppApi/EsppApiService.cs | 8 +++--- PARR.EsppApi/IEsppApiService.cs | 5 ++-- PARR.EsppApi/Requests/SetStatusRequest.cs | 25 ++++++++++++++++++- .../Services/EsppOrderService.cs | 3 ++- PARR.Test/Worker.cs | 3 ++- 6 files changed, 60 insertions(+), 9 deletions(-) create mode 100644 PARR.EsppApi/Constants/EsppOrderClosingCodeEnum.cs 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}");