feat(dal,api): добавлены таблицы исключений расписания еспп.
This commit is contained in:
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -13,5 +13,10 @@
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public const string Job = "job";
|
public const string Job = "job";
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Расписание регламентных работ
|
||||||
|
/// </summary>
|
||||||
|
public const string Schedule = "schedule";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
23
PARR.DAL/Contracts/ScheduleExcludeTypeEnum.cs
Normal file
23
PARR.DAL/Contracts/ScheduleExcludeTypeEnum.cs
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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>
|
||||||
/// Расписание регламентной работы - Диапазн повторов
|
/// Расписание регламентной работы - Диапазн повторов
|
||||||
|
|||||||
@@ -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; }
|
||||||
|
|
||||||
|
|||||||
@@ -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; }
|
||||||
|
|||||||
@@ -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; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
38
PARR.DAL/Models/Schedule/ScheduleExcludeType.cs
Normal file
38
PARR.DAL/Models/Schedule/ScheduleExcludeType.cs
Normal 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; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
36
PARR.DAL/Models/Schedule/ScheduleExcludeTypeCalendar.cs
Normal file
36
PARR.DAL/Models/Schedule/ScheduleExcludeTypeCalendar.cs
Normal 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; }
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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>();
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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>
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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>
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user