diff --git a/PARR.EsppApi/EsppApiService.cs b/PARR.EsppApi/EsppApiService.cs
index 03d55f42..433a3b52 100644
--- a/PARR.EsppApi/EsppApiService.cs
+++ b/PARR.EsppApi/EsppApiService.cs
@@ -4,7 +4,9 @@ using PARR.EsppApi.Models;
using PARR.EsppApi.Models.Query;
using PARR.EsppApi.Requests;
using PARR.EsppApi.Settings;
+using System.Text.Encodings.Web;
using System.Text.Json;
+using System.Text.Unicode;
namespace PARR.EsppApi
{
@@ -138,18 +140,6 @@ namespace PARR.EsppApi
}
- ///
- /// Убирает из запроса запрещенные символы
- ///
- ///
- private string QuerySanitize(string str)
- {
- //str = str.Replace("\r\n", "
");
-
- return str;
- }
-
-
///
/// Формирует запрос в ЕСПП из строки
///
@@ -173,7 +163,8 @@ namespace PARR.EsppApi
///
private string GenerateRequest(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);
}
diff --git a/PARR.EsppOrderManager/EsppOrderManager.cs b/PARR.EsppOrderManager/EsppOrderManager.cs
index 2bb877f2..491f89f3 100644
--- a/PARR.EsppOrderManager/EsppOrderManager.cs
+++ b/PARR.EsppOrderManager/EsppOrderManager.cs
@@ -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 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(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);
}
diff --git a/PARR.EsppOrderManager/ParrEsppOrderManagerInstaller.cs b/PARR.EsppOrderManager/ParrEsppOrderManagerInstaller.cs
index 72836bdb..3da7a910 100644
--- a/PARR.EsppOrderManager/ParrEsppOrderManagerInstaller.cs
+++ b/PARR.EsppOrderManager/ParrEsppOrderManagerInstaller.cs
@@ -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();
services.AddTransient();
}
diff --git a/PARR.EsppOrderManager/Services/EsppOrderService.cs b/PARR.EsppOrderManager/Services/EsppOrderService.cs
index bfe64bc5..b8682820 100644
--- a/PARR.EsppOrderManager/Services/EsppOrderService.cs
+++ b/PARR.EsppOrderManager/Services/EsppOrderService.cs
@@ -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
///
///
///
- private async Task SetInWorkStatusAsync(string orderNumber, string resultMsg)
+ private async Task SetInWorkStatusAsync(string orderNumber, string resultMsg = "")
{
var result = await esppApiService.SetStatusInWorkAsync(orderNumber, resultMsg);
diff --git a/PARR.EsppOrderManager/Settings/ResultTemplateSettings.cs b/PARR.EsppOrderManager/Settings/ResultTemplateSettings.cs
new file mode 100644
index 00000000..fbb482f3
--- /dev/null
+++ b/PARR.EsppOrderManager/Settings/ResultTemplateSettings.cs
@@ -0,0 +1,14 @@
+namespace PARR.EsppOrderManager.Settings
+{
+ ///
+ /// Настройки шаблона поля "решение" в ЕСПП
+ ///
+ internal class ResultTemplateSettings
+ {
+ public string Template { get; set; } = string.Empty;
+
+ public string MsgAgent { get; set; } = string.Empty;
+
+ public string MsgAgentEmpty { get; set; } = string.Empty;
+ }
+}
diff --git a/PARR.EsppOrderManagerWorker/appsettings.json b/PARR.EsppOrderManagerWorker/appsettings.json
index 9d2e92bf..17e99efc 100644
--- a/PARR.EsppOrderManagerWorker/appsettings.json
+++ b/PARR.EsppOrderManagerWorker/appsettings.json
@@ -42,5 +42,10 @@
"EsppPoligonSettings": {
"IsEnabled": true,
"TnkValue": "Не учтена в перечне ТНК"
+ },
+ "ResultTemplateSettings": {
+ "Template": "{base}\n{msgAgent}",
+ "MsgAgent": "Работы выполнены средствами автоматизации.\nЖурнал работы:\n{agentHistory}",
+ "MsgAgentEmpty": "Работы должны были выполняться средствами автоматизации. От средств автоматизации не поступило сообщений. Работы не выполнены."
}
}
diff --git a/README.md b/README.md
index f2bba018..f299d19b 100644
--- a/README.md
+++ b/README.md
@@ -9,6 +9,7 @@
- PARR.AIHITWorker - worker для PARR.AIHIT
- PARR.API - API
- PARR.BLL - общие методы и настройки для проектов
+- PARR.Constants - глобальные константы
- PARR.DAL - модели, сервисы по работе с БД PARR
- PARR.EsppApi - сервисы по работе с Api ЕСПП
- PARR.EsppOrderLoader - загрузка нарядов ПАРР из ЕСПП в БД