feat(dal,core): Перенесены оставшиеся объекты из dal в core.

This commit is contained in:
Mikhail Trubnikov
2026-05-04 11:55:07 +10:00
parent 238244790b
commit a89605d02a
87 changed files with 276 additions and 174 deletions

View File

@@ -0,0 +1,36 @@
using PARR.Domain.Cache.Models;
namespace PARR.Domain.DTOs.Matching
{
/// <summary>
/// Статус matching`a
/// </summary>
public class MatchingStatus
{
/// <summary>
/// В целом по искомому объекту, идет ли matching
/// </summary>
public bool IsMatchingObject => IsMatchingJobs || IsMatchingJobGroups;
/// <summary>
/// Идет ли мэтчинг по Jobs
/// </summary>
public bool IsMatchingJobs => DetailsJobs?.Any() ?? false;
/// <summary>
/// Идет ли мэтчинг по JobGroups
/// </summary>
public bool IsMatchingJobGroups => DetailsJobGroups?.Any() ?? false;
/// <summary>
/// Детально из КЭШ по Jobs
/// </summary>
public List<MatchingStatusItem>? DetailsJobs { get; set; }
/// <summary>
/// Детально из КЭШ по JobGroups
/// </summary>
public List<MatchingStatusItem>? DetailsJobGroups { get; set; }
}
}

View File

@@ -0,0 +1,11 @@
using PARR.Domain.Enums;
namespace PARR.Domain.DTOs.Shortcode
{
public class ShortcodeInfoDto
{
public required string Shortcode { get; set; }
public required string Description { get; set; }
public ShortcodeTypeEnum Type { get; set; }
}
}

View File

@@ -0,0 +1,12 @@
namespace PARR.Domain.Settings
{
public class AIHTITSettings
{
//TODO: AIHTITSettings - не используется???
public const string RespAreaGroupName = "ResponsibleArea";
public const string StatusGroupName = "Status";
public const string Delimiters = "Delimiters";
}
}

View File

@@ -0,0 +1,142 @@
using PARR.Domain.Common.Template;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text.Encodings.Web;
using System.Text.Json;
using System.Text.Unicode;
namespace PARR.Domain.Settings
{
/// <summary>
/// Настройки из БД
/// </summary>
public class SettingsFromDb
{
// При добавлении свойств, добавлять в миграцию: PARR.DAL.Context.DataContext
/// <summary>
/// Инициатор регламентной работы, указывается при создании шаблона в ЕСПП.
/// </summary>
public string Initiator { get; set; } = string.Empty;
/// <summary>
/// Код закрытия регламентной работы, указывается при создании шаблона в ЕСПП.
/// </summary>
public string ClosingCode { get; set; } = string.Empty;
/// <summary>
/// Категория создаваемого объекта в ЕСПП
/// </summary>
public string Category { get; set; } = string.Empty;
/// <summary>
/// Префикс имени шаблона в ЕСПП с динамичным префиксом %PREFIX%-
/// </summary>
public string TemplatePrefixName { get; set; } = string.Empty;
/// <summary>
/// Префикс имени шаблона в ЕСПП без динамичного префикса (используется для подстановки в полное описание наряда/шаблона)
/// </summary>
public string TemplatePrefixWithoutVariable => TemplatePrefixName.Replace("%PREFIX%-", "");
public string TemplateNameConstantParts { get; set; } = string.Empty;
[NotMapped]
public List<TemplateNameConstantPart> TemplateNameConstantPartsList
{
get
{
if (!string.IsNullOrEmpty(TemplateNameConstantParts))
{
try
{
return JsonSerializer.Deserialize<List<TemplateNameConstantPart>>(TemplateNameConstantParts) ?? new List<TemplateNameConstantPart>();
}
catch (Exception ex)
{
// В будущем можно добавить логирование ошибки десериализации
return new List<TemplateNameConstantPart>();
}
}
return new List<TemplateNameConstantPart>();
}
set
{
if (value != null)
{
//TemplateNameConstantParts = value.ToJson() ?? string.Empty;
try
{
TemplateNameConstantParts = JsonSerializer.Serialize(value, new JsonSerializerOptions { Encoder = JavaScriptEncoder.Create(UnicodeRanges.All, UnicodeRanges.Cyrillic) });
}
catch
{
TemplateNameConstantParts = string.Empty;
}
}
}
}
/// <summary>
/// Количество попыток выполнения задания роботом
/// </summary>
public int RobotAttemptsNumber { get; set; }
/// <summary>
/// Время ожидания выполнения роботом задания
/// </summary>
public TimeSpan RobotWaitTime { get; set; }
/// <summary>
/// Расписание регламентной работы, В каком часовом поясе
/// </summary>
public string EsppScheduleTimezone { get; set; } = string.Empty;
///// <summary>
///// Расписание регламентной работы - Тип исключения
///// </summary>
//public string ScheduleExcludeType { get; set; } = string.Empty;
///// <summary>
///// Расписание регламентной работы - Календарь
///// </summary>
//public string ScheduleExcludeCalendar { get; set; } = string.Empty;
/// <summary>
/// Расписание регламентной работы - Диапазон повторов
/// </summary>
public string ScheduleRepeatRange { get; set; } = string.Empty;
/// <summary>
/// Промежуток времени для поиска нарядов в ЕСПП
/// </summary>
public TimeSpan OrderSearchDeltaDate { get; set; }
/// <summary>
/// Таймзона УЗ роботов в ЕСПП, в часах (может быть положительным и отрицательным)
/// </summary>
public int EsppRobotAccountTimeZoneHour { get; set; }
/// <summary>
/// Время хранения в кэше данных о выходных и рабочих днях
/// </summary>
public TimeSpan WeekendCacheTtl { get; set; } = new TimeSpan(0, 5, 0);
/// <summary>
/// Префикс тега в поле ЭК "Дополнительная информация"
/// </summary>
public string EsppUnitTag { get; set; } = string.Empty;
/// <summary>
/// Job в который перемещаем ниспользованные шаблоны
/// </summary>
public Guid JobIdForUnusedTemplates { get; set; }
/// <summary>
/// Зона ответственности для получения тайм зоны по умолчанию для расписаний
/// </summary>
public string DefaultResponseAreaToTimeOffset { get; set; } = string.Empty;
}
}