feat(dal): добавлена таблица UnitKiiUnits + сервисы. Добавлен шорткод ИНДЕКС. В тбл JobGroups добавлено поле GroupingUnitFieldId

This commit is contained in:
Mikhail Trubnikov
2025-12-19 09:09:22 +10:00
parent 3dbe7f08ba
commit 5256b434a3
16 changed files with 11978 additions and 3 deletions

View File

@@ -45,7 +45,7 @@ namespace PARR.API.Controllers.V1
if (!shortcodes.Any())
return NoContent();
var response = mapper.Map<List<ShortcodeResponse>>(shortcodes);
var response = mapper.Map<List<ShortcodeResponse>>(shortcodes).OrderBy(t => t.Shortcode).ToList();
return Ok(new Response<List<ShortcodeResponse>>(response, true));
}

View File

@@ -84,6 +84,8 @@ namespace PARR.DAL.Context
public DbSet<UnitRegionalEkPtkGroup> UnitRegionalEkPtkGroups { get; set; }
public DbSet<UnitKiiUnit> UnitKiiUnits { get; set; }
#endregion
#region Job

View File

@@ -18,7 +18,7 @@ namespace PARR.DAL.DomainServices.Implementations
private static readonly HashSet<string> SupportedShortcodes = new(StringComparer.OrdinalIgnoreCase)
{
"%ЭК%", "%ГРУППА_РАБОТ%", "%РАБОТА%", "%ТНК%", "%СВЯЗИ%", "%ТНК-КРАТКО%", "%СВЯЗИ-ПН%"
"%ЭК%", "%ГРУППА_РАБОТ%", "%РАБОТА%", "%ТНК%", "%СВЯЗИ%", "%ТНК-КРАТКО%", "%СВЯЗИ-ПН%", "%ИНДЕКС%"
};
private readonly ILogger<ShortcodesService> logger;
@@ -187,6 +187,9 @@ namespace PARR.DAL.DomainServices.Implementations
Type = ShortcodeTypeEnum.Standart },
new ShortcodeInfoDto { Shortcode = "%ТНК-КРАТКО%",
Description = "Краткое наименование ТНК",
Type = ShortcodeTypeEnum.Standart },
new ShortcodeInfoDto { Shortcode = "%ИНДЕКС%",
Description = "Порядковый индекс шаблона для групповых работ",
Type = ShortcodeTypeEnum.Standart }
});

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,43 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace PARR.DAL.Migrations
{
/// <inheritdoc />
public partial class tblKiiUnits : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "KiiUnits",
schema: "unit",
columns: table => new
{
UnitId = table.Column<Guid>(type: "uuid", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_KiiUnits", x => x.UnitId);
table.ForeignKey(
name: "FK_KiiUnits_Units_UnitId",
column: x => x.UnitId,
principalSchema: "unit",
principalTable: "Units",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
},
comment: "Таблица - Список ЭК КИИ, которые учавствуют в групповых работах. Создавалась как временная");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "KiiUnits",
schema: "unit");
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,31 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace PARR.DAL.Migrations
{
/// <inheritdoc />
public partial class tblJobGroupAddUnitFieldId : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<Guid>(
name: "UnitFieldId",
schema: "job",
table: "Groups",
type: "uuid",
nullable: true);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "UnitFieldId",
schema: "job",
table: "Groups");
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,30 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace PARR.DAL.Migrations
{
/// <inheritdoc />
public partial class tblJobGroupAddUnitFieldIdRename : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.RenameColumn(
name: "UnitFieldId",
schema: "job",
table: "Groups",
newName: "GroupingUnitFieldId");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.RenameColumn(
name: "GroupingUnitFieldId",
schema: "job",
table: "Groups",
newName: "UnitFieldId");
}
}
}

View File

@@ -1685,6 +1685,9 @@ namespace PARR.DAL.Migrations
b.Property<Guid>("GroupTypeId")
.HasColumnType("uuid");
b.Property<Guid?>("GroupingUnitFieldId")
.HasColumnType("uuid");
b.Property<bool>("IsAgent")
.HasColumnType("boolean");
@@ -2981,6 +2984,19 @@ namespace PARR.DAL.Migrations
});
});
modelBuilder.Entity("PARR.DAL.Models.Unit.UnitKiiUnit", b =>
{
b.Property<Guid>("UnitId")
.HasColumnType("uuid");
b.HasKey("UnitId");
b.ToTable("KiiUnits", "unit", t =>
{
t.HasComment("Таблица - Список ЭК КИИ, которые учавствуют в групповых работах. Создавалась как временная");
});
});
modelBuilder.Entity("PARR.DAL.Models.Unit.UnitRegionalEkPtkGroup", b =>
{
b.Property<Guid>("FieldValueId")
@@ -3604,6 +3620,17 @@ namespace PARR.DAL.Migrations
b.Navigation("Value");
});
modelBuilder.Entity("PARR.DAL.Models.Unit.UnitKiiUnit", b =>
{
b.HasOne("PARR.DAL.Models.Unit.Unit", "Unit")
.WithOne("UnitKii")
.HasForeignKey("PARR.DAL.Models.Unit.UnitKiiUnit", "UnitId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Unit");
});
modelBuilder.Entity("PARR.DAL.Models.Unit.UnitRegionalEkPtkGroup", b =>
{
b.HasOne("PARR.DAL.Models.Unit.UnitFieldValue", "FieldValue")
@@ -3852,6 +3879,8 @@ namespace PARR.DAL.Migrations
b.Navigation("UnitFields");
b.Navigation("UnitKii");
b.Navigation("UnitValues");
});

View File

@@ -27,7 +27,7 @@ namespace PARR.DAL.Models.Job
///// Связана ли работа с групповыми ЭК(зонтами)
///// </summary>
//public bool? IsUmbrella { get; set; }
/// <summary>
/// Поле Короткое описания шаблона АСУ ЕСПП
/// </summary>
@@ -115,8 +115,19 @@ namespace PARR.DAL.Models.Job
/// </summary>
public string? AgentScript { get; set; }
/// <summary>
/// Тип группы
/// </summary>
public Guid GroupTypeId { get; set; }
/// <summary>
/// Если тип группы - "Сгруппированный", то это поле обязательно, по нему будем группировать
/// TODO: !!!! Связь с иаблице UnitField не создавалась! Нужно это переделать и унести в отдельную таблицу
/// </summary>
public Guid? GroupingUnitFieldId { get; set; }
[ForeignKey(nameof(GroupTypeId))]
public JobGroupType? GroupType { get; set; }

View File

@@ -77,6 +77,9 @@ namespace PARR.DAL.Models.Unit
/// К одному шаблону привязано несколько ЭК(Груповой тип работы). Многие ко многим
/// </summary>
public ICollection<UnitsInTemplate> TemplatesInUnit { get; set; } = new HashSet<UnitsInTemplate>();
public UnitKiiUnit? UnitKii { get; set; }
}

View File

@@ -0,0 +1,23 @@
using Microsoft.EntityFrameworkCore;
using PARR.DAL.Context;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace PARR.DAL.Models.Unit
{
/// <summary>
/// Список ЭК КИИ, которые учавствуют в групповых работах. Создавалась как временная
/// </summary>
[Table("KiiUnits", Schema = DataContextSettings.Unit)]
[Comment("Таблица - Список ЭК КИИ, которые учавствуют в групповых работах. Создавалась как временная")]
public class UnitKiiUnit
{
//TODO: создавалась как временная таблица
[Key]
public Guid UnitId { get; set; }
[ForeignKey(nameof(UnitId))]
public Unit? Unit { get; set; }
}
}

View File

@@ -101,6 +101,7 @@ namespace PARR.DAL
services.AddTransient<IUnitInUnitService, UnitInUnitService>();
services.AddTransient<IUnitInValueService, UnitInValueService>();
services.AddTransient<IUnitRegionalEkPtkGroupService, UnitRegionalEkPtkGroupService>();
services.AddTransient<IUnitKiiUnitService, UnitKiiUnitService>();
#endregion

View File

@@ -0,0 +1,21 @@
using PARR.DAL.Context;
using PARR.DAL.Models.Unit;
using PARR.DAL.Services.Interfaces.Unit;
namespace PARR.DAL.Services.Implementations.Unit
{
internal class UnitKiiUnitService : IUnitKiiUnitService
{
private readonly DataContext dataContext;
public UnitKiiUnitService(DataContext dataContext)
{
this.dataContext = dataContext;
}
public IQueryable<UnitKiiUnit> Get()
{
return dataContext.UnitKiiUnits;
}
}
}

View File

@@ -0,0 +1,9 @@
using PARR.DAL.Models.Unit;
namespace PARR.DAL.Services.Interfaces.Unit
{
public interface IUnitKiiUnitService
{
IQueryable<UnitKiiUnit> Get();
}
}