feat(dal,api): добавлены таблицы исключений расписания еспп.

This commit is contained in:
Mikhail Trubnikov
2025-12-25 17:01:42 +10:00
parent c7fdf9f97d
commit eb57f4b3cd
21 changed files with 343 additions and 52 deletions

View File

@@ -116,9 +116,17 @@ namespace PARR.API.Controllers.V1
.Include(t => t.Template) .Include(t => t.Template)
.ThenInclude(a => a!.Job) .ThenInclude(a => a!.Job)
.ThenInclude(t => t!.Group) .ThenInclude(t => t!.Group)
.ThenInclude(t => t!.EsppSchValues) .ThenInclude(t => t!.EsppSchValues)
.ThenInclude(t => t!.EsppSchTypeConfig) .ThenInclude(t => t!.EsppSchTypeConfig)
.ThenInclude(t => t!.EsppSchTypeSchedule) .ThenInclude(t => t!.EsppSchTypeSchedule)
.Include(t => t.Template)
.ThenInclude(t => t!.Job)
.ThenInclude(t => t!.Group)
.ThenInclude(t => t!.ScheduleExcludeType)
.Include(t => t.Template)
.ThenInclude(t => t!.Job)
.ThenInclude(t => t!.Group)
.ThenInclude(t => t.ScheduleExcludeTypeCalendar)
.Include(t => t.Template) .Include(t => t.Template)
.ThenInclude(t => t.UnitsInTemplate); .ThenInclude(t => t.UnitsInTemplate);

View File

@@ -227,8 +227,10 @@ namespace PARR.API.MappingProfiles
.ForMember(d => d.TemplateName, o => o.MapFrom(s => s.Template!.Name)) .ForMember(d => d.TemplateName, o => o.MapFrom(s => s.Template!.Name))
.ForMember(d => d.TemplateId, o => o.MapFrom(s => s.Template!.Id)) .ForMember(d => d.TemplateId, o => o.MapFrom(s => s.Template!.Id))
.ForMember(d => d.WorkGroup, o => o.MapFrom(s => s.Template!.Job!.WorkGroupMask)) .ForMember(d => d.WorkGroup, o => o.MapFrom(s => s.Template!.Job!.WorkGroupMask))
.ForMember(d => d.Exclude, o => o.MapFrom<RobotTaskScheduleExcludeResolver>()) //.ForMember(d => d.Exclude, o => o.MapFrom<RobotTaskScheduleExcludeResolver>())
.ForMember(d => d.ExcludeCalendar, o => o.MapFrom<RobotTaskScheduleExcludeCalendarResolver>()) .ForMember(d => d.Exclude, o => o.MapFrom(s => s.Template!.Job!.Group!.ScheduleExcludeType!.EsppName))
//.ForMember(d => d.ExcludeCalendar, o => o.MapFrom<RobotTaskScheduleExcludeCalendarResolver>())
.ForMember(d => d.ExcludeCalendar, o => o.MapFrom(s => s.Template!.Job!.Group!.ScheduleExcludeTypeCalendar != null ? s.Template!.Job!.Group!.ScheduleExcludeTypeCalendar.EsppName : null))
.ForMember(d => d.Timezone, o => o.MapFrom<RobotTaskScheduleTimezoneResolver>()) .ForMember(d => d.Timezone, o => o.MapFrom<RobotTaskScheduleTimezoneResolver>())
.ForMember(d => d.RepeatRange, o => o.MapFrom<RobotTaskScheduleRepeatRangeResolver>()) .ForMember(d => d.RepeatRange, o => o.MapFrom<RobotTaskScheduleRepeatRangeResolver>())
//todo: GenerationTime //todo: GenerationTime

View File

@@ -5,18 +5,18 @@ using PARR.DAL.Models;
namespace PARR.API.MappingProfiles.Resolvers namespace PARR.API.MappingProfiles.Resolvers
{ {
public class RobotTaskScheduleExcludeCalendarResolver : IValueResolver<RobotConfiguration, RobotTaskScheduleResponse, string?> //public class RobotTaskScheduleExcludeCalendarResolver : IValueResolver<RobotConfiguration, RobotTaskScheduleResponse, string?>
{ //{
private readonly SettingsFromDb settingsFromDb; // private readonly SettingsFromDb settingsFromDb;
public RobotTaskScheduleExcludeCalendarResolver(SettingsFromDb settingsFromDb) // public RobotTaskScheduleExcludeCalendarResolver(SettingsFromDb settingsFromDb)
{ // {
this.settingsFromDb = settingsFromDb; // this.settingsFromDb = settingsFromDb;
} // }
public string? Resolve(RobotConfiguration source, RobotTaskScheduleResponse destination, string? destMember, ResolutionContext context) // public string? Resolve(RobotConfiguration source, RobotTaskScheduleResponse destination, string? destMember, ResolutionContext context)
{ // {
return settingsFromDb.ScheduleExcludeCalendar; // return settingsFromDb.ScheduleExcludeCalendar;
} // }
} //}
} }

View File

@@ -5,18 +5,18 @@ using PARR.DAL.Models;
namespace PARR.API.MappingProfiles.Resolvers namespace PARR.API.MappingProfiles.Resolvers
{ {
public class RobotTaskScheduleExcludeResolver : IValueResolver<RobotConfiguration, RobotTaskScheduleResponse, string> //public class RobotTaskScheduleExcludeResolver : IValueResolver<RobotConfiguration, RobotTaskScheduleResponse, string>
{ //{
private readonly SettingsFromDb settingsFromDb; // private readonly SettingsFromDb settingsFromDb;
public RobotTaskScheduleExcludeResolver(SettingsFromDb settingsFromDb) // public RobotTaskScheduleExcludeResolver(SettingsFromDb settingsFromDb)
{ // {
this.settingsFromDb = settingsFromDb; // this.settingsFromDb = settingsFromDb;
} // }
public string Resolve(RobotConfiguration source, RobotTaskScheduleResponse destination, string destMember, ResolutionContext context) // public string Resolve(RobotConfiguration source, RobotTaskScheduleResponse destination, string destMember, ResolutionContext context)
{ // {
return settingsFromDb.ScheduleExcludeType; // return settingsFromDb.ScheduleExcludeType;
} // }
} //}
} }

View File

@@ -5,6 +5,7 @@ using PARR.DAL.Contracts;
using PARR.DAL.Extensions; using PARR.DAL.Extensions;
using PARR.DAL.Models; using PARR.DAL.Models;
using PARR.DAL.Models.Job; using PARR.DAL.Models.Job;
using PARR.DAL.Models.Schedule;
using PARR.DAL.Models.Unit; using PARR.DAL.Models.Unit;
namespace PARR.DAL.Context namespace PARR.DAL.Context
@@ -42,12 +43,19 @@ namespace PARR.DAL.Context
public DbSet<RobotConfiguration> RobotConfigurations { get; set; } public DbSet<RobotConfiguration> RobotConfigurations { get; set; }
public DbSet<RobotHistory> RobotHistories { get; set; } public DbSet<RobotHistory> RobotHistories { get; set; }
#region Schedule
public DbSet<EsppSchType> EsppSchTypes { get; set; } public DbSet<EsppSchType> EsppSchTypes { get; set; }
public DbSet<EsppSchTypeValue> EsppSchTypeValues { get; set; } public DbSet<EsppSchTypeValue> EsppSchTypeValues { get; set; }
public DbSet<EsppSchTypeConfig> EsppSchTypeConfigs { get; set; } public DbSet<EsppSchTypeConfig> EsppSchTypeConfigs { get; set; }
public DbSet<EsppSchTypeSchedule> EsppSchTypeSchedules { get; set; } public DbSet<EsppSchTypeSchedule> EsppSchTypeSchedules { get; set; }
public DbSet<EsppSchValue> EsppSchValues { get; set; } public DbSet<EsppSchValue> EsppSchValues { get; set; }
public DbSet<ScheduleExcludeTypeCalendar> ScheduleExcludeTypeCalendars { get; set; }
public DbSet<ScheduleExcludeType> ScheduleExcludeTypes { get; set; }
#endregion
public DbSet<AgentHistory> AgentHistories { get; set; } public DbSet<AgentHistory> AgentHistories { get; set; }
public DbSet<AgentHistoryLevel> AgentHistoryLevels { get; set; } public DbSet<AgentHistoryLevel> AgentHistoryLevels { get; set; }
@@ -179,8 +187,8 @@ namespace PARR.DAL.Context
new { Name = nameof(SettingsFromDb.RobotAttemptsNumber), Description = "Количество попыток выполнения задания роботом", Value = "3" }, new { Name = nameof(SettingsFromDb.RobotAttemptsNumber), Description = "Количество попыток выполнения задания роботом", Value = "3" },
new { Name = nameof(SettingsFromDb.RobotWaitTime), Description = "Время ожидания выполнения роботом задания", Value = "00:15:00" }, new { Name = nameof(SettingsFromDb.RobotWaitTime), Description = "Время ожидания выполнения роботом задания", Value = "00:15:00" },
new { Name = nameof(SettingsFromDb.ScheduleTimezone), Description = "Расписание регламентной работы - В каком часовом поясе", Value = "MSK" }, new { Name = nameof(SettingsFromDb.ScheduleTimezone), Description = "Расписание регламентной работы - В каком часовом поясе", Value = "MSK" },
new { Name = nameof(SettingsFromDb.ScheduleExcludeType), Description = "Расписание регламентной работы - Тип исключения", Value = "Выполнить ТОЛЬКО В указанном календаре" }, //new { Name = nameof(SettingsFromDb.ScheduleExcludeType), Description = "Расписание регламентной работы - Тип исключения", Value = "Выполнить ТОЛЬКО В указанном календаре" },
new { Name = nameof(SettingsFromDb.ScheduleExcludeCalendar), Description = "Расписание регламентной работы - Календарь", Value = "8x5 (8.00-17.00)" }, //new { Name = nameof(SettingsFromDb.ScheduleExcludeCalendar), Description = "Расписание регламентной работы - Календарь", Value = "8x5 (8.00-17.00)" },
new { Name = nameof(SettingsFromDb.ScheduleRepeatRange), Description = "Расписание регламентной работы - Диапазн повторов", Value = "Отсутствует дата завершения" }, new { Name = nameof(SettingsFromDb.ScheduleRepeatRange), Description = "Расписание регламентной работы - Диапазн повторов", Value = "Отсутствует дата завершения" },
new { Name = nameof(SettingsFromDb.OrderSearchDeltaDate), Description = "Промежуток времени для поиска нарядов в ЕСПП", Value = new TimeSpan(1, 30, 0).ToString() }, new { Name = nameof(SettingsFromDb.OrderSearchDeltaDate), Description = "Промежуток времени для поиска нарядов в ЕСПП", Value = new TimeSpan(1, 30, 0).ToString() },
new { Name = nameof(SettingsFromDb.EsppRobotAccountTimeZoneHour), Description = "Таймзона УЗ роботов в ЕСПП, в часах (может быть положительная и отрицательная)", Value = "3" }, new { Name = nameof(SettingsFromDb.EsppRobotAccountTimeZoneHour), Description = "Таймзона УЗ роботов в ЕСПП, в часах (может быть положительная и отрицательная)", Value = "3" },
@@ -195,7 +203,7 @@ namespace PARR.DAL.Context
new TemplateNameConstantPart { Name = "П-2", Value = "ПАРР" } new TemplateNameConstantPart { Name = "П-2", Value = "ПАРР" }
}.ToJson() }.ToJson()
}, },
new { Name = nameof(SettingsFromDb.EsppUnitTag), Description = "Префикс тега в поле ЭК \"Дополнительная информация\"", Value = "ПАРР-" } new { Name = nameof(SettingsFromDb.EsppUnitTag), Description = "Префикс тега в поле ЭК \"Дополнительная информация\"", Value = "ПАРР_" }
); );
}); });
#endregion #endregion
@@ -514,6 +522,31 @@ namespace PARR.DAL.Context
#endregion #endregion
#region ScheduleExcludeType
modelBuilder.Entity<ScheduleExcludeType>(f =>
{
f.HasData(
new() { Id = new Guid("0595B8E0-F322-4661-B5E3-064AF8FBE7CD"), DateCreated = dateCreated, Title = "Нет исключений", EsppName = "Нет исключений", EsppValue = "NONE", Code = ScheduleExcludeTypeEnum.None.ToString() },
new() { Id = new Guid("2B7A4356-9AAF-4E00-B444-42F0B5010E25"), DateCreated = dateCreated, Title = "Выполнить ТОЛЬКО В указанном календаре", EsppName = "Выполнить ТОЛЬКО В указанном календаре", EsppValue = "ONLY", Code = ScheduleExcludeTypeEnum.Only.ToString() },
new() { Id = new Guid("38CD9E64-27C1-4672-A805-2211952A48BD"), DateCreated = dateCreated, Title = "Выполнить везде, КРОМЕ указанного календаря", EsppName = "Выполнить везде, КРОМЕ указанного календаря", EsppValue = "EXCEPT", Code = ScheduleExcludeTypeEnum.Except.ToString() }
);
});
#endregion
#region ScheduleExcludeTypeCalendar
modelBuilder.Entity<ScheduleExcludeTypeCalendar>(f =>
{
f.HasData(
new() { Id = new Guid("A26EDB88-0267-4FBF-B7EC-D172B0A86C9C"), DateCreated = dateCreated, Title = "24x5", EsppName = "24x5", EsppValue = "24x5", Code = "24x5" },
new() { Id = new Guid("6834F1D5-AC51-43D5-974E-4C759D7BBF9F"), DateCreated = dateCreated, Title = "24x7", EsppName = "24x7", EsppValue = "24x7", Code = "24x7" }
);
});
#endregion
} }
//protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) //protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)

View File

@@ -13,5 +13,10 @@
/// </summary> /// </summary>
public const string Job = "job"; public const string Job = "job";
/// <summary>
/// Расписание регламентных работ
/// </summary>
public const string Schedule = "schedule";
} }
} }

View File

@@ -0,0 +1,23 @@
namespace PARR.DAL.Contracts
{
/// <summary>
/// Расписание регламентной работы - Тип исключения
/// </summary>
public enum ScheduleExcludeTypeEnum
{
/// <summary>
/// Нет исключений
/// </summary>
None = 0,
/// <summary>
/// Выполнить ТОЛЬКО В указанном календаре
/// </summary>
Only = 1,
/// <summary>
/// Выполнить везде, КРОМЕ указанного календаря
/// </summary>
Except = 2
}
}

View File

@@ -82,15 +82,15 @@ namespace PARR.DAL.Contracts
/// </summary> /// </summary>
public string ScheduleTimezone { get; set; } = string.Empty; public string ScheduleTimezone { get; set; } = string.Empty;
/// <summary> ///// <summary>
/// Расписание регламентной работы - Тип исключения ///// Расписание регламентной работы - Тип исключения
/// </summary> ///// </summary>
public string ScheduleExcludeType { get; set; } = string.Empty; //public string ScheduleExcludeType { get; set; } = string.Empty;
/// <summary> ///// <summary>
/// Расписание регламентной работы - Календарь ///// Расписание регламентной работы - Календарь
/// </summary> ///// </summary>
public string ScheduleExcludeCalendar { get; set; } = string.Empty; //public string ScheduleExcludeCalendar { get; set; } = string.Empty;
/// <summary> /// <summary>
/// Расписание регламентной работы - Диапазн повторов /// Расписание регламентной работы - Диапазн повторов

View File

@@ -1,5 +1,6 @@
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using PARR.DAL.Models.Job; using PARR.DAL.Models.Job;
using PARR.DAL.Models.Schedule;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
namespace PARR.DAL.Models namespace PARR.DAL.Models
@@ -21,6 +22,7 @@ namespace PARR.DAL.Models
public Guid JobGroupId { get; set; } public Guid JobGroupId { get; set; }
//[ForeignKey(nameof(ApplicationsInWorkId))] //[ForeignKey(nameof(ApplicationsInWorkId))]
//public ApplicationsInWork? ApplicationsInWork { get; set; } //public ApplicationsInWork? ApplicationsInWork { get; set; }

View File

@@ -24,6 +24,11 @@ namespace PARR.DAL.Models.Job
public required string ValueMask { get; set; } public required string ValueMask { get; set; }
/// <summary>
/// Отсутствует
/// </summary>
public bool IsInverse { get; set; } = false;
[ForeignKey(nameof(FieldId))] [ForeignKey(nameof(FieldId))]
public UnitField? UnitField { get; set; } public UnitField? UnitField { get; set; }

View File

@@ -1,6 +1,7 @@
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using PARR.DAL.Context; using PARR.DAL.Context;
using PARR.DAL.Models.Base; using PARR.DAL.Models.Base;
using PARR.DAL.Models.Schedule;
using PARR.DAL.Models.Unit; using PARR.DAL.Models.Unit;
using PARR.DAL.Settings; using PARR.DAL.Settings;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
@@ -128,6 +129,19 @@ namespace PARR.DAL.Models.Job
/// </summary> /// </summary>
public Guid? GroupingUnitFieldId { get; set; } public Guid? GroupingUnitFieldId { get; set; }
/// <summary>
/// Расписание регламентной работы - Тип исключения
/// </summary>
public Guid ScheduleExcludeTypeId { get; set; }
/// <summary>
/// Расписание регламентной работы, исключение - Календарь
/// </summary>
public Guid? ScheduleExcludeTypeCalendarId { get; set; }
/// <summary> /// <summary>
/// Поле по которому группируется (!!!отключено каскадное удаление!!!) /// Поле по которому группируется (!!!отключено каскадное удаление!!!)
/// </summary> /// </summary>
@@ -140,5 +154,11 @@ namespace PARR.DAL.Models.Job
public ICollection<Job> Jobs { get; set; } = new HashSet<Job>(); public ICollection<Job> Jobs { get; set; } = new HashSet<Job>();
public ICollection<EsppSchValue> EsppSchValues { get; set; } = new HashSet<EsppSchValue>(); public ICollection<EsppSchValue> EsppSchValues { get; set; } = new HashSet<EsppSchValue>();
[ForeignKey(nameof(ScheduleExcludeTypeId))]
public ScheduleExcludeType? ScheduleExcludeType { get; set; }
[ForeignKey(nameof(ScheduleExcludeTypeCalendarId))]
public ScheduleExcludeTypeCalendar? ScheduleExcludeTypeCalendar { get; set; }
} }
} }

View File

@@ -0,0 +1,38 @@
using Microsoft.EntityFrameworkCore;
using PARR.DAL.Context;
using PARR.DAL.Models.Base;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace PARR.DAL.Models.Schedule
{
/// <summary>
/// Расписание регламентной работы - Тип исключения
/// </summary>
[Table("ExcludeTypes", Schema = DataContextSettings.Schedule)]
[Comment("Расписание регламентной работы - Тип исключения")]
public class ScheduleExcludeType : IBase
{
[Key]
public Guid Id { get; set; }
public DateTimeOffset DateCreated { get; set; }
[NotMapped]
public DateTimeOffset? DateModified { get; set; }
/// <summary>
/// Название в ПАРР
/// </summary>
public required string Title { get; set; }
public required string EsppName { get; set; }
public required string EsppValue { get; set; }
public required string Code { get; set; }
}
}

View File

@@ -0,0 +1,36 @@
using Microsoft.EntityFrameworkCore;
using PARR.DAL.Context;
using PARR.DAL.Models.Base;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace PARR.DAL.Models.Schedule
{
/// <summary>
/// Расписание регламентной работы, исключение - Календарь
/// </summary>
[Table("ExcludeTypeCalendars", Schema = DataContextSettings.Schedule)]
[Comment("Расписание регламентной работы, исключение - Календарь")]
public class ScheduleExcludeTypeCalendar : IBase
{
[Key]
public Guid Id { get; set; }
public DateTimeOffset DateCreated { get; set; }
[NotMapped]
public DateTimeOffset? DateModified { get; set; }
/// <summary>
/// Название в ПАРР
/// </summary>
public required string Title { get; set; }
public required string EsppName { get; set; }
public required string EsppValue { get; set; }
public required string Code { get; set; }
}
}

View File

@@ -12,9 +12,11 @@ using PARR.DAL.InfluxDbServices;
using PARR.DAL.Services.Implementation; using PARR.DAL.Services.Implementation;
using PARR.DAL.Services.Implementations; using PARR.DAL.Services.Implementations;
using PARR.DAL.Services.Implementations.Job; using PARR.DAL.Services.Implementations.Job;
using PARR.DAL.Services.Implementations.Schedule;
using PARR.DAL.Services.Implementations.Unit; using PARR.DAL.Services.Implementations.Unit;
using PARR.DAL.Services.Interfaces; using PARR.DAL.Services.Interfaces;
using PARR.DAL.Services.Interfaces.Job; using PARR.DAL.Services.Interfaces.Job;
using PARR.DAL.Services.Interfaces.Schedule;
using PARR.DAL.Services.Interfaces.Unit; using PARR.DAL.Services.Interfaces.Unit;
using PARR.DAL.Settings; using PARR.DAL.Settings;
using PARR.DAL.TransformServices; using PARR.DAL.TransformServices;
@@ -99,6 +101,13 @@ namespace PARR.DAL
services.AddTransient<IParrComponentService, ParrComponentService>(); services.AddTransient<IParrComponentService, ParrComponentService>();
services.AddTransient<ITemplateStatusTypeService, TemplateStatusTypeService>(); services.AddTransient<ITemplateStatusTypeService, TemplateStatusTypeService>();
#region Schedule
services.AddTransient<IScheduleExcludeTypeService, ScheduleExcludeTypeService>();
services.AddTransient<IScheduleExcludeTypeCalendarService, ScheduleExcludeTypeCalendarService>();
#endregion
#region Unit #region Unit
services.AddTransient<IUnitService, UnitService>(); services.AddTransient<IUnitService, UnitService>();

View File

@@ -60,7 +60,8 @@ namespace PARR.DAL.Services.Implementations
Order = t.Order, Order = t.Order,
Type = t.Type, Type = t.Type,
Value = t.Value Value = t.Value
}).ToList() }
).ToList()
}; };
return dto; return dto;

View File

@@ -0,0 +1,23 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using PARR.DAL.Context;
using PARR.DAL.Models.Schedule;
using PARR.DAL.Services.Abstracts;
using PARR.DAL.Services.Interfaces.Schedule;
namespace PARR.DAL.Services.Implementations.Schedule
{
internal class ScheduleExcludeTypeCalendarService : BaseService<ScheduleExcludeTypeCalendar>, IScheduleExcludeTypeCalendarService
{
private readonly DataContext dataContext;
protected override DbSet<ScheduleExcludeTypeCalendar> EntitySet => dataContext.ScheduleExcludeTypeCalendars;
protected override DataContext EntitiContext => dataContext;
public ScheduleExcludeTypeCalendarService(DataContext dataContext, ILogger<ScheduleExcludeTypeCalendarService> logger) : base(logger)
{
this.dataContext = dataContext;
}
}
}

View File

@@ -0,0 +1,23 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using PARR.DAL.Context;
using PARR.DAL.Models.Schedule;
using PARR.DAL.Services.Abstracts;
using PARR.DAL.Services.Interfaces.Schedule;
namespace PARR.DAL.Services.Implementations.Schedule
{
internal class ScheduleExcludeTypeService : BaseService<ScheduleExcludeType>, IScheduleExcludeTypeService
{
private readonly DataContext dataContext;
protected override DbSet<ScheduleExcludeType> EntitySet => dataContext.ScheduleExcludeTypes;
protected override DataContext EntitiContext => dataContext;
public ScheduleExcludeTypeService(DataContext dataContext, ILogger<ScheduleExcludeTypeService> logger) : base(logger)
{
this.dataContext = dataContext;
}
}
}

View File

@@ -0,0 +1,9 @@
using PARR.DAL.Models.Schedule;
using PARR.DAL.Services.Interfaces.Base;
namespace PARR.DAL.Services.Interfaces.Schedule
{
public interface IScheduleExcludeTypeCalendarService: IBaseService<ScheduleExcludeTypeCalendar>
{
}
}

View File

@@ -0,0 +1,9 @@
using PARR.DAL.Models.Schedule;
using PARR.DAL.Services.Interfaces.Base;
namespace PARR.DAL.Services.Interfaces.Schedule
{
public interface IScheduleExcludeTypeService : IBaseService<ScheduleExcludeType>
{
}
}

View File

@@ -104,8 +104,8 @@ namespace PARR.EsppScheduleSync
//WorkGroup = template.Host!.WorkGroup!.Name,//TODO Migration to job //WorkGroup = template.Host!.WorkGroup!.Name,//TODO Migration to job
//Мы решили, что для всех расписаний "Нет исключений", если что-то поменяется, тут нужно переделать //Мы решили, что для всех расписаний "Нет исключений", если что-то поменяется, тут нужно переделать
//TypeV60calendar = settingsFromDb.ScheduleExcludeType == "Нет исключений" ? "NONE" : "", //TypeV60calendar = settingsFromDb.ScheduleExcludeType == "Нет исключений" ? "NONE" : "",
TypeV60calendar = GetTypeV60calendar(), TypeV60calendar = GetTypeV60calendar(template),
V60calendar = settingsFromDb.ScheduleExcludeCalendar, V60calendar = GetV60calendar(template),
//Scheduled = EsppScheduleHelpers.GetNextRun(template.NextRun), //Scheduled = EsppScheduleHelpers.GetNextRun(template.NextRun),
//Scheduled = EsppScheduleHelpers.GetNextRun(nextRunModifierService.GetNextRunByAccountRobotTimeZone(template.NextRun)), //Scheduled = EsppScheduleHelpers.GetNextRun(nextRunModifierService.GetNextRunByAccountRobotTimeZone(template.NextRun)),
//BasisTime = EsppScheduleHelpers.GetGenerationTime(nextRunModifierService.GetNextRunByAccountRobotTimeZone(template.NextRun)), //BasisTime = EsppScheduleHelpers.GetGenerationTime(nextRunModifierService.GetNextRunByAccountRobotTimeZone(template.NextRun)),
@@ -122,22 +122,61 @@ namespace PARR.EsppScheduleSync
} }
/// <summary>
/// Получить исключение - Календарь
/// </summary>
/// <param name="template"></param>
/// <returns></returns>
private string GetV60calendar(Template template)
{
// мы знаем, что у нас точно в шаблоне есть инклуды до ScheduleExcludeType и ScheduleExcludeTypeCalendar
if (template.Job?.Group?.ScheduleExcludeTypeCalendar == null)
{
logger.LogDebug("Для шаблона шаблона {templte}, {templateId} нет исключений календаря", template.Name, template.Id);
//TODO:!!!!!!!!!!! Вот тут null или string.Empty??? Спросить у Андрея что он нам вернет!
return string.Empty;
}
logger.LogDebug("Для шаблона шаблона {templte}, {templateId} установлено исключений календаря \"{name}\", EsppValue: {esppValue}", template.Name, template.Id, template.Job.Group.ScheduleExcludeTypeCalendar.Name, template.Job.Group.ScheduleExcludeTypeCalendar.EsppValue);
return template.Job.Group.ScheduleExcludeTypeCalendar.EsppValue;
}
/// <summary> /// <summary>
/// Получить тип календаря /// Получить тип календаря
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
private string GetTypeV60calendar() private string GetTypeV60calendar(Template template)
{ {
// Это костыль, нужно придумать как это хранить в БД. // мы знаем, что у нас точно в шаблоне есть инклуды до ScheduleExcludeType и ScheduleExcludeTypeCalendar
switch (settingsFromDb.ScheduleExcludeType.ToLower())
// на всякий конечно же проверим
if (template.Job?.Group?.ScheduleExcludeType == null)
{ {
case ("нет исключений"): logger.LogError("Для шаблона {templte}, {templateId} не смог получить тип исключения, установил значение по умолчанию \"Без исключения\"", template.Name, template.Id);
return "NONE"; return "NONE";
case ("выполнить только в указанном календаре"):
return "ONLY";
default:
return "";
} }
logger.LogDebug("Для шаблона шаблона {templte}, {templateId} тип исключения \"{name}\", EsppValue: {esppValue}", template.Name, template.Id, template.Job.Group.ScheduleExcludeType.Name, template.Job.Group.ScheduleExcludeType.EsppValue);
return template.Job.Group.ScheduleExcludeType.EsppValue;
#region old logic
//// Это костыль, нужно придумать как это хранить в БД.
//switch (settingsFromDb.ScheduleExcludeType.ToLower())
//{
// case ("нет исключений"):
// return "NONE";
// case ("выполнить только в указанном календаре"):
// return "ONLY";
// default:
// return "";
//}
#endregion
} }

View File

@@ -63,6 +63,12 @@ namespace PARR.EsppSync
.Include(t => t.Job) .Include(t => t.Job)
.ThenInclude(j => j.Group) .ThenInclude(j => j.Group)
.ThenInclude(g => g.GroupType) .ThenInclude(g => g.GroupType)
.Include(t => t.Job)
.ThenInclude(t => t.Group)
.ThenInclude(t => t.ScheduleExcludeType)
.Include(t => t.Job)
.ThenInclude(t => t.Group)
.ThenInclude(t => t.ScheduleExcludeTypeCalendar)
.Include(t => t.Job) .Include(t => t.Job)
.ThenInclude(j => j.Tnk) .ThenInclude(j => j.Tnk)
.Include(t => t.UnitsInTemplate); .Include(t => t.UnitsInTemplate);