feat(esppOrderLoader): изменено журналирвоание

This commit is contained in:
Mikhail Kuznetsov
2026-02-09 12:00:46 +10:00
parent 25e7fe4b90
commit 7dd40d1701
16 changed files with 434 additions and 252 deletions

View File

@@ -20,4 +20,4 @@ namespace PARR.DAL.Services.Implementations
protected override DataContext EntitiContext => dataContext;
}
}
}

View File

@@ -19,28 +19,38 @@ namespace PARR.DAL.Services.Implementations
public IQueryable<OrderStatus> Get()
{
logger.LogDebug("Получаю набор статусов нарядов");
return dataContext.OrderStatuses;
}
public OrderStatusEnum GetOrderStatusByName(string statusName)
{
logger.LogDebug("Поиск статуса наряда по имени: {StatusName}", statusName);
switch (statusName.Trim())
{
case "1-Направлен в группу":
logger.LogDebug("Найден статус: {StatusEnum}", OrderStatusEnum.New);
return OrderStatusEnum.New;
case "2-В работе":
logger.LogDebug("Найден статус: {StatusEnum}", OrderStatusEnum.InWork);
return OrderStatusEnum.InWork;
case "3-Приостановлен":
logger.LogDebug("Найден статус: {StatusEnum}", OrderStatusEnum.Stop);
return OrderStatusEnum.Stop;
case "4-Выполнен":
logger.LogDebug("Найден статус: {StatusEnum}", OrderStatusEnum.Complete);
return OrderStatusEnum.Complete;
case "5-Закрыт":
logger.LogDebug("Найден статус: {StatusEnum}", OrderStatusEnum.Closed);
return OrderStatusEnum.Closed;
default:
logger.LogWarning($"Не смог распознать статус наряда, вернул значение по умполчанию: {OrderStatusEnum.New.ToString()}, входящее значение: {statusName}");
logger.LogWarning(
"Не смог распознать статус наряда, вернул значение по умолчанию: {DefaultStatus}, входящее значение: {InputStatus}",
OrderStatusEnum.New, statusName);
return OrderStatusEnum.New;
}
}
}
}
}

View File

@@ -28,13 +28,28 @@ namespace PARR.DAL.Services.Implementations
public async Task<Template?> GetTemplateByNameAsync(string name)
{
return await GetWithIncludes()
logger.LogDebug("Поиск шаблона по имени: {TemplateName}", name);
var template = await GetWithIncludes()
.Include(t => t.RobotConfigurations)
.FirstOrDefaultAsync(t => t.Name == name);
if (template != null)
{
logger.LogDebug("Шаблон найден: {TemplateId}, имя: {TemplateName}", template.Id, template.Name);
}
else
{
logger.LogDebug("Шаблон с именем {TemplateName} не найден", name);
}
return template;
}
public IQueryable<Template> GetWithIncludes()
{
logger.LogDebug("Получаю шаблоны с include связями");
return Get()
.Include(h => h.Unit)
.ThenInclude(t => t!.UnitValues)
@@ -57,6 +72,8 @@ namespace PARR.DAL.Services.Implementations
public override Task<bool> CreateAsync(Template obj)
{
logger.LogDebug("Создание шаблона: {TemplateName}", obj.Name);
// добавление роботов для шаблона
obj.RobotConfigurations = new List<RobotConfiguration>
{
@@ -86,12 +103,16 @@ namespace PARR.DAL.Services.Implementations
}
};
logger.LogDebug("Добавлены роботы для шаблона {TemplateName}", obj.Name);
return base.CreateAsync(obj);
}
public async Task<Guid?> ReserveUnusedTemplateAsync(Guid newUnitId, HistoryInitiator initiator)
{
logger.LogDebug("Резервирую неиспользуемый шаблон для UnitId: {UnitId}", newUnitId);
var sql = @"
UPDATE ""Templates""
SET ""StatusTypeId"" = @NewStatus,
@@ -111,23 +132,43 @@ namespace PARR.DAL.Services.Implementations
var parameters = new[]
{
new NpgsqlParameter("@NewStatus", (int)TemplateStatusTypeEnum.Updating),
new NpgsqlParameter("@DateModified", DateTimeOffset.UtcNow),
new NpgsqlParameter("@InitiatorIp", initiator.InitiatorIp ?? (object)DBNull.Value),
new NpgsqlParameter("@InitiatorComponent",
initiator.InitiatorParrComponentId.HasValue
? (object)(int)initiator.InitiatorParrComponentId.Value
: DBNull.Value),
new NpgsqlParameter("@InitiatorComment", initiator.InitiatorComment ?? (object)DBNull.Value),
new NpgsqlParameter("@OldStatus", (int)TemplateStatusTypeEnum.Unused),
new NpgsqlParameter("@NewUnitId", newUnitId)
};
new NpgsqlParameter("@NewStatus", (int)TemplateStatusTypeEnum.Updating),
new NpgsqlParameter("@DateModified", DateTimeOffset.UtcNow),
new NpgsqlParameter("@InitiatorIp", initiator.InitiatorIp ?? (object)DBNull.Value),
new NpgsqlParameter("@InitiatorComponent",
initiator.InitiatorParrComponentId.HasValue
? (object)(int)initiator.InitiatorParrComponentId.Value
: DBNull.Value),
new NpgsqlParameter("@InitiatorComment", initiator.InitiatorComment ?? (object)DBNull.Value),
new NpgsqlParameter("@OldStatus", (int)TemplateStatusTypeEnum.Unused),
new NpgsqlParameter("@NewUnitId", newUnitId)
};
var result = await dataContext.Database
.SqlQueryRaw<Guid>(sql, parameters)
.ToListAsync();
try
{
var result = await dataContext.Database
.SqlQueryRaw<Guid>(sql, parameters)
.ToListAsync();
return result.FirstOrDefault();
var reservedTemplateId = result.FirstOrDefault();
if (reservedTemplateId != default(Guid))
{
logger.LogInformation("Успешно зарезервирован шаблон с ID: {TemplateId} для UnitId: {UnitId}",
reservedTemplateId, newUnitId);
}
else
{
logger.LogDebug("Не удалось зарезервировать шаблон для UnitId: {UnitId}", newUnitId);
}
return reservedTemplateId;
}
catch (Exception ex)
{
logger.LogError(ex, "Ошибка при резервировании шаблона для UnitId: {UnitId}", newUnitId);
throw;
}
}
}
}
}