feat(esppOrderManager): вынесен шаблон поля Решение в настройки.

This commit is contained in:
Mikhail Trubnikov
2023-11-21 14:37:41 +10:00
parent f85b97f60a
commit 9532ee8487
7 changed files with 54 additions and 31 deletions

View File

@@ -19,6 +19,7 @@ namespace PARR.EsppOrderManager
private readonly ITransformService transformService;
private readonly IEsppOrderService esppOrderService;
private readonly IServiceProvider serviceProvider;
private readonly ResultTemplateSettings resultTemplateSettings;
public EsppOrderManager(
MqSettings mqSettings,
@@ -26,7 +27,8 @@ namespace PARR.EsppOrderManager
ILogger<EsppOrderManager> logger,
ITransformService transformService,
IEsppOrderService esppOrderService,
IServiceProvider serviceProvider
IServiceProvider serviceProvider,
ResultTemplateSettings resultTemplateSettings
)
{
this.mqSettings = mqSettings;
@@ -35,19 +37,20 @@ namespace PARR.EsppOrderManager
this.transformService = transformService;
this.esppOrderService = esppOrderService;
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)
// throw new Exception("Ошибка при подключении к RabbitMq");
if (!isConnected)
throw new Exception("Ошибка при подключении к RabbitMq");
//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()
@@ -58,7 +61,7 @@ namespace PARR.EsppOrderManager
private async Task ManageOrderAsync(string msg)
{
logger.LogDebug($"Получили сообщение: {msg}");
//logger.LogDebug($"Получили сообщение: {msg}");
var objFromQuery = transformService.GetModelFromJson<OrderManageMq>(msg);
if (objFromQuery == null)
@@ -149,17 +152,22 @@ namespace PARR.EsppOrderManager
.OrderBy(t => t.DateCreated)
.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" +
$"{string.Join("\n", agentHistory)}";
//Шаблон поля Решение
var template = resultTemplateSettings.Template;
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);
}

View File

@@ -24,6 +24,10 @@ namespace PARR.EsppOrderManager
configuration.GetSection(nameof(EsppPoligonSettings)).Bind(esppPoligonSettings);
services.AddSingleton(esppPoligonSettings);
var resultTemplateSettings = new ResultTemplateSettings();
configuration.GetSection(nameof(ResultTemplateSettings)).Bind(resultTemplateSettings);
services.AddSingleton(resultTemplateSettings);
services.AddTransient<IEsppOrderManager, EsppOrderManager>();
services.AddTransient<IEsppOrderService, EsppOrderService>();
}

View File

@@ -54,7 +54,7 @@ namespace PARR.EsppOrderManager.Services
// Установить статус 2-В работе
if (order.NextStatusCode == (int)OrderStatusEnum.InWork)
if (esppOrderResult.Data.StatusEnum == OrderStatusEnum.New || esppOrderResult.Data.StatusEnum == OrderStatusEnum.Stop)
return await SetInWorkStatusAsync(order.Number, resultMsg);
return await SetInWorkStatusAsync(order.Number, "");//resultMsg);
// Списать трудозатраты и установить статус 4-Выполнен
if (order.NextStatusCode == (int)OrderStatusEnum.Complete)
@@ -63,7 +63,7 @@ namespace PARR.EsppOrderManager.Services
// если текущий статус != 2-В работе, сначала меняем статус на 2-В работе, а затем уже списываем трудозатраты и меняем на 4-Выполнен
if (!statusIsWork)
statusIsWork = await SetInWorkStatusAsync(order.Number, resultMsg);
statusIsWork = await SetInWorkStatusAsync(order.Number, "");//resultMsg);
if (statusIsWork)
{
@@ -141,7 +141,7 @@ namespace PARR.EsppOrderManager.Services
/// <param name="orderNumber"></param>
/// <param name="resultMsg"></param>
/// <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);

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