feat(esppOrderManager): вынесен шаблон поля Решение в настройки.
This commit is contained in:
@@ -4,7 +4,9 @@ using PARR.EsppApi.Models;
|
|||||||
using PARR.EsppApi.Models.Query;
|
using PARR.EsppApi.Models.Query;
|
||||||
using PARR.EsppApi.Requests;
|
using PARR.EsppApi.Requests;
|
||||||
using PARR.EsppApi.Settings;
|
using PARR.EsppApi.Settings;
|
||||||
|
using System.Text.Encodings.Web;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
|
using System.Text.Unicode;
|
||||||
|
|
||||||
namespace PARR.EsppApi
|
namespace PARR.EsppApi
|
||||||
{
|
{
|
||||||
@@ -138,18 +140,6 @@ namespace PARR.EsppApi
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Убирает из запроса запрещенные символы
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
private string QuerySanitize(string str)
|
|
||||||
{
|
|
||||||
//str = str.Replace("\r\n", "<br/>");
|
|
||||||
|
|
||||||
return str;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Формирует запрос в ЕСПП из строки
|
/// Формирует запрос в ЕСПП из строки
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -173,7 +163,8 @@ namespace PARR.EsppApi
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private string GenerateRequest<T>(EsppOperationsEnum operation, T jsonQuery)
|
private string GenerateRequest<T>(EsppOperationsEnum operation, T jsonQuery)
|
||||||
{
|
{
|
||||||
var strQuery = JsonSerializer.Serialize(jsonQuery);
|
var jsonOptions = new JsonSerializerOptions { Encoder = JavaScriptEncoder.Create(UnicodeRanges.All, UnicodeRanges.Cyrillic) };
|
||||||
|
var strQuery = JsonSerializer.Serialize(jsonQuery, jsonOptions);
|
||||||
|
|
||||||
return GenerateRequest(operation, strQuery);
|
return GenerateRequest(operation, strQuery);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ namespace PARR.EsppOrderManager
|
|||||||
private readonly ITransformService transformService;
|
private readonly ITransformService transformService;
|
||||||
private readonly IEsppOrderService esppOrderService;
|
private readonly IEsppOrderService esppOrderService;
|
||||||
private readonly IServiceProvider serviceProvider;
|
private readonly IServiceProvider serviceProvider;
|
||||||
|
private readonly ResultTemplateSettings resultTemplateSettings;
|
||||||
|
|
||||||
public EsppOrderManager(
|
public EsppOrderManager(
|
||||||
MqSettings mqSettings,
|
MqSettings mqSettings,
|
||||||
@@ -26,7 +27,8 @@ namespace PARR.EsppOrderManager
|
|||||||
ILogger<EsppOrderManager> logger,
|
ILogger<EsppOrderManager> logger,
|
||||||
ITransformService transformService,
|
ITransformService transformService,
|
||||||
IEsppOrderService esppOrderService,
|
IEsppOrderService esppOrderService,
|
||||||
IServiceProvider serviceProvider
|
IServiceProvider serviceProvider,
|
||||||
|
ResultTemplateSettings resultTemplateSettings
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
this.mqSettings = mqSettings;
|
this.mqSettings = mqSettings;
|
||||||
@@ -35,19 +37,20 @@ namespace PARR.EsppOrderManager
|
|||||||
this.transformService = transformService;
|
this.transformService = transformService;
|
||||||
this.esppOrderService = esppOrderService;
|
this.esppOrderService = esppOrderService;
|
||||||
this.serviceProvider = serviceProvider;
|
this.serviceProvider = serviceProvider;
|
||||||
|
this.resultTemplateSettings = resultTemplateSettings;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async void Start()
|
public void Start()
|
||||||
{
|
{
|
||||||
// логика работы описана в документации
|
// логика работы описана в документации
|
||||||
|
|
||||||
//var isConnected = mqService.InitConsumer(mqSettings, ManageOrderAsync);
|
var isConnected = mqService.InitConsumer(mqSettings, ManageOrderAsync);
|
||||||
|
|
||||||
//if (!isConnected)
|
if (!isConnected)
|
||||||
// throw new Exception("Ошибка при подключении к RabbitMq");
|
throw new Exception("Ошибка при подключении к RabbitMq");
|
||||||
|
|
||||||
//test, and remove async in method name
|
//test, and remove async in method name
|
||||||
await ManageOrderAsync("{\"OrderId\":\"dd04a997-e7b5-4326-b6e1-505719cc46fb\"}");
|
//await ManageOrderAsync("{\"OrderId\":\"49191af5-c313-4388-9720-a61fd13f15a8\"}");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Stop()
|
public void Stop()
|
||||||
@@ -58,7 +61,7 @@ namespace PARR.EsppOrderManager
|
|||||||
|
|
||||||
private async Task ManageOrderAsync(string msg)
|
private async Task ManageOrderAsync(string msg)
|
||||||
{
|
{
|
||||||
logger.LogDebug($"Получили сообщение: {msg}");
|
//logger.LogDebug($"Получили сообщение: {msg}");
|
||||||
|
|
||||||
var objFromQuery = transformService.GetModelFromJson<OrderManageMq>(msg);
|
var objFromQuery = transformService.GetModelFromJson<OrderManageMq>(msg);
|
||||||
if (objFromQuery == null)
|
if (objFromQuery == null)
|
||||||
@@ -149,17 +152,22 @@ namespace PARR.EsppOrderManager
|
|||||||
.OrderBy(t => t.DateCreated)
|
.OrderBy(t => t.DateCreated)
|
||||||
.Select(t => $"{t.DateCreated} :: {t.AgentHistoryLevel?.Name} :: {t.Message}");
|
.Select(t => $"{t.DateCreated} :: {t.AgentHistoryLevel?.Name} :: {t.Message}");
|
||||||
|
|
||||||
var baseMsg = order.Template!.ApplicationsInWork!.Solution + "\n";
|
//"Template": "{base}\n{msgAgent}",
|
||||||
|
//"MsgAgent": "Работы выполнены средствами автоматизации.\nЖурнал работы:\n{agentHistory}",
|
||||||
|
//"MsgAgentEmpty": "Работы должны были выполняться средствами автоматизации. От средств автоматизации не поступило сообщений. Работы не выполнены."
|
||||||
|
|
||||||
var msgAgent = "Работы выполнены средствами автоматизации. \n" +
|
//Шаблон поля Решение
|
||||||
"Журнал работы: \n" +
|
var template = resultTemplateSettings.Template;
|
||||||
$"{string.Join("\n", agentHistory)}";
|
|
||||||
|
|
||||||
var msgAgentEmpty = "Работы должны были выполняться средствами автоматизации. " +
|
//Поле решение из ApplicationsInWork
|
||||||
"От средств автоматизации не поступило сообщений. " +
|
var baseMsg = order.Template!.ApplicationsInWork!.Solution;
|
||||||
"Работы не выполнены.";
|
|
||||||
|
|
||||||
return baseMsg + (agentHistory.Any() ? msgAgent : msgAgentEmpty);
|
//Формируем сообщения от Агента
|
||||||
|
var msgAgent = agentHistory.Any()
|
||||||
|
? resultTemplateSettings.MsgAgent.Replace("{agentHistory}", string.Join("\n", agentHistory))
|
||||||
|
: resultTemplateSettings.MsgAgentEmpty;
|
||||||
|
|
||||||
|
return template.Replace("{base}", baseMsg).Replace("{msgAgent}", msgAgent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,10 @@ namespace PARR.EsppOrderManager
|
|||||||
configuration.GetSection(nameof(EsppPoligonSettings)).Bind(esppPoligonSettings);
|
configuration.GetSection(nameof(EsppPoligonSettings)).Bind(esppPoligonSettings);
|
||||||
services.AddSingleton(esppPoligonSettings);
|
services.AddSingleton(esppPoligonSettings);
|
||||||
|
|
||||||
|
var resultTemplateSettings = new ResultTemplateSettings();
|
||||||
|
configuration.GetSection(nameof(ResultTemplateSettings)).Bind(resultTemplateSettings);
|
||||||
|
services.AddSingleton(resultTemplateSettings);
|
||||||
|
|
||||||
services.AddTransient<IEsppOrderManager, EsppOrderManager>();
|
services.AddTransient<IEsppOrderManager, EsppOrderManager>();
|
||||||
services.AddTransient<IEsppOrderService, EsppOrderService>();
|
services.AddTransient<IEsppOrderService, EsppOrderService>();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ namespace PARR.EsppOrderManager.Services
|
|||||||
// Установить статус 2-В работе
|
// Установить статус 2-В работе
|
||||||
if (order.NextStatusCode == (int)OrderStatusEnum.InWork)
|
if (order.NextStatusCode == (int)OrderStatusEnum.InWork)
|
||||||
if (esppOrderResult.Data.StatusEnum == OrderStatusEnum.New || esppOrderResult.Data.StatusEnum == OrderStatusEnum.Stop)
|
if (esppOrderResult.Data.StatusEnum == OrderStatusEnum.New || esppOrderResult.Data.StatusEnum == OrderStatusEnum.Stop)
|
||||||
return await SetInWorkStatusAsync(order.Number, resultMsg);
|
return await SetInWorkStatusAsync(order.Number, "");//resultMsg);
|
||||||
|
|
||||||
// Списать трудозатраты и установить статус 4-Выполнен
|
// Списать трудозатраты и установить статус 4-Выполнен
|
||||||
if (order.NextStatusCode == (int)OrderStatusEnum.Complete)
|
if (order.NextStatusCode == (int)OrderStatusEnum.Complete)
|
||||||
@@ -63,7 +63,7 @@ namespace PARR.EsppOrderManager.Services
|
|||||||
|
|
||||||
// если текущий статус != 2-В работе, сначала меняем статус на 2-В работе, а затем уже списываем трудозатраты и меняем на 4-Выполнен
|
// если текущий статус != 2-В работе, сначала меняем статус на 2-В работе, а затем уже списываем трудозатраты и меняем на 4-Выполнен
|
||||||
if (!statusIsWork)
|
if (!statusIsWork)
|
||||||
statusIsWork = await SetInWorkStatusAsync(order.Number, resultMsg);
|
statusIsWork = await SetInWorkStatusAsync(order.Number, "");//resultMsg);
|
||||||
|
|
||||||
if (statusIsWork)
|
if (statusIsWork)
|
||||||
{
|
{
|
||||||
@@ -141,7 +141,7 @@ namespace PARR.EsppOrderManager.Services
|
|||||||
/// <param name="orderNumber"></param>
|
/// <param name="orderNumber"></param>
|
||||||
/// <param name="resultMsg"></param>
|
/// <param name="resultMsg"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private async Task<bool> SetInWorkStatusAsync(string orderNumber, string resultMsg)
|
private async Task<bool> SetInWorkStatusAsync(string orderNumber, string resultMsg = "")
|
||||||
{
|
{
|
||||||
var result = await esppApiService.SetStatusInWorkAsync(orderNumber, resultMsg);
|
var result = await esppApiService.SetStatusInWorkAsync(orderNumber, resultMsg);
|
||||||
|
|
||||||
|
|||||||
14
PARR.EsppOrderManager/Settings/ResultTemplateSettings.cs
Normal file
14
PARR.EsppOrderManager/Settings/ResultTemplateSettings.cs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
namespace PARR.EsppOrderManager.Settings
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Настройки шаблона поля "решение" в ЕСПП
|
||||||
|
/// </summary>
|
||||||
|
internal class ResultTemplateSettings
|
||||||
|
{
|
||||||
|
public string Template { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string MsgAgent { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string MsgAgentEmpty { get; set; } = string.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -42,5 +42,10 @@
|
|||||||
"EsppPoligonSettings": {
|
"EsppPoligonSettings": {
|
||||||
"IsEnabled": true,
|
"IsEnabled": true,
|
||||||
"TnkValue": "Не учтена в перечне ТНК"
|
"TnkValue": "Не учтена в перечне ТНК"
|
||||||
|
},
|
||||||
|
"ResultTemplateSettings": {
|
||||||
|
"Template": "{base}\n{msgAgent}",
|
||||||
|
"MsgAgent": "Работы выполнены средствами автоматизации.\nЖурнал работы:\n{agentHistory}",
|
||||||
|
"MsgAgentEmpty": "Работы должны были выполняться средствами автоматизации. От средств автоматизации не поступило сообщений. Работы не выполнены."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
- PARR.AIHITWorker - worker для PARR.AIHIT
|
- PARR.AIHITWorker - worker для PARR.AIHIT
|
||||||
- PARR.API - API
|
- PARR.API - API
|
||||||
- PARR.BLL - общие методы и настройки для проектов
|
- PARR.BLL - общие методы и настройки для проектов
|
||||||
|
- PARR.Constants - глобальные константы
|
||||||
- PARR.DAL - модели, сервисы по работе с БД PARR
|
- PARR.DAL - модели, сервисы по работе с БД PARR
|
||||||
- PARR.EsppApi - сервисы по работе с Api ЕСПП
|
- PARR.EsppApi - сервисы по работе с Api ЕСПП
|
||||||
- PARR.EsppOrderLoader - загрузка нарядов ПАРР из ЕСПП в БД
|
- PARR.EsppOrderLoader - загрузка нарядов ПАРР из ЕСПП в БД
|
||||||
|
|||||||
Reference in New Issue
Block a user