feat(dal,domain): Таблицы для JobGroup фильтров.

This commit is contained in:
Mikhail Trubnikov
2026-06-15 16:56:23 +10:00
parent 1fb5cbd2e8
commit 108eb05853
49 changed files with 4997 additions and 190 deletions

View File

@@ -290,7 +290,90 @@ namespace PARR.DAL.Migrations
});
});
modelBuilder.Entity("PARR.Domain.Entities.Job.JobGroup", b =>
modelBuilder.Entity("PARR.Domain.Entities.Job.JobRelationshipFilter", b =>
{
b.Property<Guid>("UnitFilterId")
.HasColumnType("uuid");
b.Property<Guid>("FieldId")
.HasColumnType("uuid");
b.Property<bool>("IsFullMatch")
.HasColumnType("boolean");
b.Property<bool>("IsInverse")
.HasColumnType("boolean");
b.Property<bool>("IsParent")
.HasColumnType("boolean");
b.Property<string>("ValueMask")
.IsRequired()
.HasColumnType("text");
b.HasKey("UnitFilterId", "FieldId");
b.HasIndex("FieldId");
b.ToTable("RelationshipFilters", "job", t =>
{
t.HasComment("Таблица фильтров связей ЭК");
});
});
modelBuilder.Entity("PARR.Domain.Entities.Job.JobUnitFilter", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid");
b.Property<DateTimeOffset>("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property<Guid>("JobId")
.HasColumnType("uuid");
b.Property<string>("UnitFilter")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("JobId");
b.ToTable("UnitFilters", "job", t =>
{
t.HasComment("Таблица описания критериев выборки ЭК, описание полей в АСУ ЕСПП");
});
});
modelBuilder.Entity("PARR.Domain.Entities.Job.UnitsInTemplate", b =>
{
b.Property<Guid>("TemplateId")
.HasColumnType("uuid");
b.Property<Guid>("UnitId")
.HasColumnType("uuid");
b.Property<Guid>("UnitFieldValueId")
.HasColumnType("uuid");
b.Property<DateTimeOffset>("DateCreated")
.HasColumnType("timestamp with time zone");
b.HasKey("TemplateId", "UnitId", "UnitFieldValueId");
b.HasIndex("UnitFieldValueId");
b.HasIndex("UnitId");
b.ToTable("UnitsInTemplates", "job", t =>
{
t.HasComment("Таблица связи ЭК в шаблонах");
});
});
modelBuilder.Entity("PARR.Domain.Entities.JobGroupEntities.JobGroup", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
@@ -372,13 +455,35 @@ namespace PARR.DAL.Migrations
b.HasIndex("ScheduleExcludeTypeId");
b.ToTable("Groups", "job", t =>
b.ToTable("Groups", "jobGroup", t =>
{
t.HasComment("Таблица описания групп работ, для реализации зонтиков");
});
});
modelBuilder.Entity("PARR.Domain.Entities.Job.JobGroupDistributionConfig", b =>
modelBuilder.Entity("PARR.Domain.Entities.JobGroupEntities.JobGroupAutoControl", b =>
{
b.Property<Guid>("JobGroupId")
.HasColumnType("uuid");
b.Property<bool>("InitUsedScheduleState")
.HasColumnType("boolean");
b.Property<bool>("InitUsedTemplateState")
.HasColumnType("boolean");
b.Property<bool>("IsEnable")
.HasColumnType("boolean");
b.HasKey("JobGroupId");
b.ToTable("AutoControls", "jobGroup", t =>
{
t.HasComment("Таблица управления автоконтролем для группы работ");
});
});
modelBuilder.Entity("PARR.Domain.Entities.JobGroupEntities.JobGroupDistributionConfig", b =>
{
b.Property<Guid>("GroupId")
.HasColumnType("uuid");
@@ -396,67 +501,49 @@ namespace PARR.DAL.Migrations
b.HasIndex("DistributionPeriodId");
b.ToTable("GroupDistributionConfigs", "job", t =>
b.ToTable("GroupDistributionConfigs", "jobGroup", t =>
{
t.HasComment("Настройки автораспределения для группы работ");
});
});
modelBuilder.Entity("PARR.Domain.Entities.Job.JobGroupType", b =>
modelBuilder.Entity("PARR.Domain.Entities.JobGroupEntities.JobGroupFieldFilter", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid");
b.Property<int>("Code")
.HasColumnType("integer");
b.Property<DateTimeOffset>("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property<string>("Description")
.IsRequired()
.HasColumnType("text");
b.Property<Guid>("FieldId")
.HasColumnType("uuid");
b.Property<string>("Name")
b.Property<bool>("IsInverse")
.HasColumnType("boolean");
b.Property<Guid>("UnitFilterId")
.HasColumnType("uuid");
b.Property<string>("ValueMask")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("GroupTypes", "job", t =>
{
t.HasComment("Таблица типов групп работ");
});
b.HasIndex("FieldId")
.HasDatabaseName("IX_FieldFilters_FieldId1");
b.HasData(
new
b.HasIndex("UnitFilterId")
.HasDatabaseName("IX_FieldFilters_UnitFilterId1");
b.ToTable("FieldFilters", "jobGroup", t =>
{
Id = new Guid("4fa62e79-86bb-47c2-be1a-72a716a170fa"),
Code = 0,
DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
Description = "Обычный",
Name = "Simple"
},
new
{
Id = new Guid("6ec58b1a-5c40-47b9-b036-4fa490e8d503"),
Code = 1,
DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
Description = "Зонтик",
Name = "Umbrella"
},
new
{
Id = new Guid("318625e5-f833-436a-99df-2a382a1e71c7"),
Code = 2,
DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
Description = "Сгруппированный",
Name = "Group"
t.HasComment("Таблица описания критериев выборки аттрибутов ЭК");
});
});
modelBuilder.Entity("PARR.Domain.Entities.Job.JobRelationshipFilter", b =>
modelBuilder.Entity("PARR.Domain.Entities.JobGroupEntities.JobGroupRelationshipFilter", b =>
{
b.Property<Guid>("UnitFilterId")
.HasColumnType("uuid");
@@ -479,15 +566,84 @@ namespace PARR.DAL.Migrations
b.HasKey("UnitFilterId", "FieldId");
b.HasIndex("FieldId");
b.HasIndex("FieldId")
.HasDatabaseName("IX_RelationshipFilters_FieldId1");
b.ToTable("RelationshipFilters", "job", t =>
b.ToTable("RelationshipFilters", "jobGroup", t =>
{
t.HasComment("Таблица фильтров связей ЭК");
});
});
modelBuilder.Entity("PARR.Domain.Entities.Job.JobUnitFilter", b =>
modelBuilder.Entity("PARR.Domain.Entities.JobGroupEntities.JobGroupType", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid");
b.Property<int>("Code")
.HasColumnType("integer");
b.Property<DateTimeOffset>("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property<string>("Description")
.IsRequired()
.HasColumnType("text");
b.Property<bool>("IsAllowJobUnitFilter")
.HasColumnType("boolean")
.HasComment("Разрешить Job фильтры. Влияет только на интерфейс. Мэтчер собирает все фильтры из группы и работ всегда.");
b.Property<bool>("IsJobGroupAutoControl")
.HasColumnType("boolean")
.HasComment("Автоконтролем управляет JobGroup? true - да JobGroup, false - Job. Влияет на интерфейс и на логику работы автоконтроля.");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("GroupTypes", "jobGroup", t =>
{
t.HasComment("Таблица типов групп работ");
});
b.HasData(
new
{
Id = new Guid("4fa62e79-86bb-47c2-be1a-72a716a170fa"),
Code = 0,
DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
Description = "Обычный",
IsAllowJobUnitFilter = true,
IsJobGroupAutoControl = false,
Name = "Simple"
},
new
{
Id = new Guid("6ec58b1a-5c40-47b9-b036-4fa490e8d503"),
Code = 1,
DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
Description = "Зонтик",
IsAllowJobUnitFilter = false,
IsJobGroupAutoControl = true,
Name = "Umbrella"
},
new
{
Id = new Guid("318625e5-f833-436a-99df-2a382a1e71c7"),
Code = 2,
DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
Description = "Сгруппированный",
IsAllowJobUnitFilter = false,
IsJobGroupAutoControl = true,
Name = "Group"
});
});
modelBuilder.Entity("PARR.Domain.Entities.JobGroupEntities.JobGroupUnitFilter", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
@@ -496,7 +652,7 @@ namespace PARR.DAL.Migrations
b.Property<DateTimeOffset>("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property<Guid>("JobId")
b.Property<Guid>("JobGroupId")
.HasColumnType("uuid");
b.Property<string>("UnitFilter")
@@ -505,40 +661,14 @@ namespace PARR.DAL.Migrations
b.HasKey("Id");
b.HasIndex("JobId");
b.HasIndex("JobGroupId");
b.ToTable("UnitFilters", "job", t =>
b.ToTable("UnitFilters", "jobGroup", t =>
{
t.HasComment("Таблица описания критериев выборки ЭК, описание полей в АСУ ЕСПП");
});
});
modelBuilder.Entity("PARR.Domain.Entities.Job.UnitsInTemplate", b =>
{
b.Property<Guid>("TemplateId")
.HasColumnType("uuid");
b.Property<Guid>("UnitId")
.HasColumnType("uuid");
b.Property<Guid>("UnitFieldValueId")
.HasColumnType("uuid");
b.Property<DateTimeOffset>("DateCreated")
.HasColumnType("timestamp with time zone");
b.HasKey("TemplateId", "UnitId", "UnitFieldValueId");
b.HasIndex("UnitFieldValueId");
b.HasIndex("UnitId");
b.ToTable("UnitsInTemplates", "job", t =>
{
t.HasComment("Таблица связи ЭК в шаблонах");
});
});
modelBuilder.Entity("PARR.Domain.Entities.Order", b =>
{
b.Property<Guid>("Id")
@@ -2268,7 +2398,7 @@ namespace PARR.DAL.Migrations
{
Name = "Initiator",
Description = "Инициатор регламентной работы, указывается при создании шаблона в ЕСПП.",
Value = "ОВЧАРЕНКО АЛЕКСЕЙ ВИТАЛЬЕВИЧ (OVCHARENKOAV@GVC.OAO.RZD)"
Value = "АКСЕНОВ АЛЕКСАНДР ЕВГЕНЬЕВИЧ (AKSENOVAE@GVC.OAO.RZD)"
},
new
{
@@ -3097,7 +3227,7 @@ namespace PARR.DAL.Migrations
modelBuilder.Entity("PARR.Domain.Entities.Job.Job", b =>
{
b.HasOne("PARR.Domain.Entities.Job.JobGroup", "Group")
b.HasOne("PARR.Domain.Entities.JobGroupEntities.JobGroup", "Group")
.WithMany("Jobs")
.HasForeignKey("GroupId")
.OnDelete(DeleteBehavior.Cascade)
@@ -3128,7 +3258,7 @@ namespace PARR.DAL.Migrations
modelBuilder.Entity("PARR.Domain.Entities.Job.JobFieldFilter", b =>
{
b.HasOne("PARR.Domain.Entities.Unit.UnitField", "UnitField")
.WithMany()
.WithMany("JobFieldFilters")
.HasForeignKey("FieldId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
@@ -3144,57 +3274,6 @@ namespace PARR.DAL.Migrations
b.Navigation("UnitFilter");
});
modelBuilder.Entity("PARR.Domain.Entities.Job.JobGroup", b =>
{
b.HasOne("PARR.Domain.Entities.Job.JobGroupType", "GroupType")
.WithMany("JobGroups")
.HasForeignKey("GroupTypeId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("PARR.Domain.Entities.Unit.UnitField", "GroupingUnitField")
.WithMany("JobGroupWithGrouping")
.HasForeignKey("GroupingUnitFieldId")
.OnDelete(DeleteBehavior.Restrict);
b.HasOne("PARR.Domain.Entities.Schedule.ScheduleExcludeTypeCalendar", "ScheduleExcludeTypeCalendar")
.WithMany("JobGroups")
.HasForeignKey("ScheduleExcludeTypeCalendarId");
b.HasOne("PARR.Domain.Entities.Schedule.ScheduleExcludeType", "ScheduleExcludeType")
.WithMany("JobGroups")
.HasForeignKey("ScheduleExcludeTypeId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("GroupType");
b.Navigation("GroupingUnitField");
b.Navigation("ScheduleExcludeType");
b.Navigation("ScheduleExcludeTypeCalendar");
});
modelBuilder.Entity("PARR.Domain.Entities.Job.JobGroupDistributionConfig", b =>
{
b.HasOne("PARR.Domain.Entities.DistributionPeriod", "DistributionPeriod")
.WithMany("GroupDistributionConfig")
.HasForeignKey("DistributionPeriodId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("PARR.Domain.Entities.Job.JobGroup", "Group")
.WithOne("DistributionConfig")
.HasForeignKey("PARR.Domain.Entities.Job.JobGroupDistributionConfig", "GroupId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("DistributionPeriod");
b.Navigation("Group");
});
modelBuilder.Entity("PARR.Domain.Entities.Job.JobRelationshipFilter", b =>
{
b.HasOne("PARR.Domain.Entities.Unit.UnitField", "UnitField")
@@ -3252,6 +3331,117 @@ namespace PARR.DAL.Migrations
b.Navigation("UnitFieldValue");
});
modelBuilder.Entity("PARR.Domain.Entities.JobGroupEntities.JobGroup", b =>
{
b.HasOne("PARR.Domain.Entities.JobGroupEntities.JobGroupType", "GroupType")
.WithMany("JobGroups")
.HasForeignKey("GroupTypeId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("PARR.Domain.Entities.Unit.UnitField", "GroupingUnitField")
.WithMany("JobGroupWithGrouping")
.HasForeignKey("GroupingUnitFieldId")
.OnDelete(DeleteBehavior.Restrict);
b.HasOne("PARR.Domain.Entities.Schedule.ScheduleExcludeTypeCalendar", "ScheduleExcludeTypeCalendar")
.WithMany("JobGroups")
.HasForeignKey("ScheduleExcludeTypeCalendarId");
b.HasOne("PARR.Domain.Entities.Schedule.ScheduleExcludeType", "ScheduleExcludeType")
.WithMany("JobGroups")
.HasForeignKey("ScheduleExcludeTypeId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("GroupType");
b.Navigation("GroupingUnitField");
b.Navigation("ScheduleExcludeType");
b.Navigation("ScheduleExcludeTypeCalendar");
});
modelBuilder.Entity("PARR.Domain.Entities.JobGroupEntities.JobGroupAutoControl", b =>
{
b.HasOne("PARR.Domain.Entities.JobGroupEntities.JobGroup", "JobGroup")
.WithOne("AutoControl")
.HasForeignKey("PARR.Domain.Entities.JobGroupEntities.JobGroupAutoControl", "JobGroupId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("JobGroup");
});
modelBuilder.Entity("PARR.Domain.Entities.JobGroupEntities.JobGroupDistributionConfig", b =>
{
b.HasOne("PARR.Domain.Entities.DistributionPeriod", "DistributionPeriod")
.WithMany("GroupDistributionConfig")
.HasForeignKey("DistributionPeriodId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("PARR.Domain.Entities.JobGroupEntities.JobGroup", "Group")
.WithOne("DistributionConfig")
.HasForeignKey("PARR.Domain.Entities.JobGroupEntities.JobGroupDistributionConfig", "GroupId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("DistributionPeriod");
b.Navigation("Group");
});
modelBuilder.Entity("PARR.Domain.Entities.JobGroupEntities.JobGroupFieldFilter", b =>
{
b.HasOne("PARR.Domain.Entities.Unit.UnitField", "UnitField")
.WithMany("JobGroupFieldFilters")
.HasForeignKey("FieldId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("PARR.Domain.Entities.JobGroupEntities.JobGroupUnitFilter", "UnitFilter")
.WithMany("FieldFilters")
.HasForeignKey("UnitFilterId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("UnitField");
b.Navigation("UnitFilter");
});
modelBuilder.Entity("PARR.Domain.Entities.JobGroupEntities.JobGroupRelationshipFilter", b =>
{
b.HasOne("PARR.Domain.Entities.Unit.UnitField", "UnitField")
.WithMany("JobGroupRelationshipFilters")
.HasForeignKey("FieldId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("PARR.Domain.Entities.JobGroupEntities.JobGroupUnitFilter", "UnitFilter")
.WithMany("RelationshipFilters")
.HasForeignKey("UnitFilterId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("UnitField");
b.Navigation("UnitFilter");
});
modelBuilder.Entity("PARR.Domain.Entities.JobGroupEntities.JobGroupUnitFilter", b =>
{
b.HasOne("PARR.Domain.Entities.JobGroupEntities.JobGroup", "JobGroup")
.WithMany()
.HasForeignKey("JobGroupId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("JobGroup");
});
modelBuilder.Entity("PARR.Domain.Entities.Order", b =>
{
b.HasOne("PARR.Domain.Entities.OrderStatus", "NextStatus")
@@ -3369,7 +3559,7 @@ namespace PARR.DAL.Migrations
modelBuilder.Entity("PARR.Domain.Entities.Schedule.EsppSchValue", b =>
{
b.HasOne("PARR.Domain.Entities.Job.JobGroup", "JobGroup")
b.HasOne("PARR.Domain.Entities.JobGroupEntities.JobGroup", "JobGroup")
.WithMany("EsppSchValues")
.HasForeignKey("JobGroupId")
.OnDelete(DeleteBehavior.Cascade)
@@ -3614,8 +3804,17 @@ namespace PARR.DAL.Migrations
b.Navigation("UnitFilters");
});
modelBuilder.Entity("PARR.Domain.Entities.Job.JobGroup", b =>
modelBuilder.Entity("PARR.Domain.Entities.Job.JobUnitFilter", b =>
{
b.Navigation("FieldFilters");
b.Navigation("RelationshipFilters");
});
modelBuilder.Entity("PARR.Domain.Entities.JobGroupEntities.JobGroup", b =>
{
b.Navigation("AutoControl");
b.Navigation("DistributionConfig");
b.Navigation("EsppSchValues");
@@ -3623,12 +3822,12 @@ namespace PARR.DAL.Migrations
b.Navigation("Jobs");
});
modelBuilder.Entity("PARR.Domain.Entities.Job.JobGroupType", b =>
modelBuilder.Entity("PARR.Domain.Entities.JobGroupEntities.JobGroupType", b =>
{
b.Navigation("JobGroups");
});
modelBuilder.Entity("PARR.Domain.Entities.Job.JobUnitFilter", b =>
modelBuilder.Entity("PARR.Domain.Entities.JobGroupEntities.JobGroupUnitFilter", b =>
{
b.Navigation("FieldFilters");
@@ -3776,6 +3975,12 @@ namespace PARR.DAL.Migrations
modelBuilder.Entity("PARR.Domain.Entities.Unit.UnitField", b =>
{
b.Navigation("JobFieldFilters");
b.Navigation("JobGroupFieldFilters");
b.Navigation("JobGroupRelationshipFilters");
b.Navigation("JobGroupWithGrouping");
b.Navigation("RelationshipFilters");