feat: Добавлены таблицы и сервисы для логирования работы робота. Обновлена таблица templates.
This commit is contained in:
@@ -5,7 +5,7 @@ using PARR.API.Contracts.V1;
|
||||
using PARR.API.Contracts.V1.Responses;
|
||||
using PARR.API.Contracts.V1.Responses.Base;
|
||||
using PARR.API.Controllers.V1.Base;
|
||||
using PARR.DAL.Services;
|
||||
using PARR.DAL.Services.Interfaces;
|
||||
|
||||
namespace PARR.API.Controllers.V1
|
||||
{
|
||||
|
||||
@@ -34,6 +34,7 @@ namespace PARR.DAL.Context
|
||||
public DbSet<RawDataEK> RawDataEKs { get; set; }
|
||||
public DbSet<Template> Templates { get; set; }
|
||||
public DbSet<StatusTemplate> StatusTemplates { get; set; }
|
||||
public DbSet<RobotStatus> RobotStatuses { get; set; }
|
||||
|
||||
public DbSet<Process> Processes { get; set; }
|
||||
public DbSet<Subprocess> Subprocesses { get; set; }
|
||||
@@ -44,6 +45,9 @@ namespace PARR.DAL.Context
|
||||
|
||||
public DbSet<Models.Setting> Setting { get; set; }
|
||||
|
||||
public DbSet<RobotHistoryLevel> RobotHistoryLevels { get; set; }
|
||||
public DbSet<RobotTemplateHistory> RobotTemplateHistories { get; set; }
|
||||
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
@@ -120,7 +124,9 @@ namespace PARR.DAL.Context
|
||||
new { Name = nameof(SettingsFromDb.Initiator), Description = "Инициатор регламентной работы, указывается при создании шаблона в ЕСПП.", Value = "КУЗНЕЦОВ МИХАИЛ ВАЛЕРЬЕВИЧ (IVC_KUZNETSOVMV@DVGD.OAO.RZD)" },
|
||||
new { Name = nameof(SettingsFromDb.ClosingCode), Description = "Код закрытия регламентной работы, указывается при создании шаблона в ЕСПП.", Value = "выполнен" },
|
||||
new { Name = nameof(SettingsFromDb.Category), Description = "Категория создаваемого объекта в ЕСПП", Value = "регламентная работа" },
|
||||
new { Name = nameof(SettingsFromDb.TemplatePrefixName), Description = "Префикс имени шаблона в ЕСПП", Value = "ПАРР-ДВС-ПТК" }
|
||||
new { Name = nameof(SettingsFromDb.TemplatePrefixName), Description = "Префикс имени шаблона в ЕСПП", Value = "ПАРР-ДВС-ПТК" },
|
||||
new { Name = nameof(SettingsFromDb.RobotAttemptsNumber), Description = "Количество попыток выполнения задания роботом", Value = "3" },
|
||||
new { Name = nameof(SettingsFromDb.RobotWaitTime), Description = "Время ожидания выполнения роботом задания", Value = "00:15:00" }
|
||||
);
|
||||
});
|
||||
|
||||
@@ -161,6 +167,28 @@ namespace PARR.DAL.Context
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
modelBuilder.Entity<RobotStatus>(f =>
|
||||
{
|
||||
f.HasData(
|
||||
new { Code = (int)RobotStatusEnum.Wait, Name = RobotStatusEnum.Wait.ToString(), Description = "Ожидание, ждет пока робот возьмет в работу." },
|
||||
new { Code = (int)RobotStatusEnum.InProgress, Name = RobotStatusEnum.InProgress.ToString(), Description = "Робот взял в работу." },
|
||||
new { Code = (int)RobotStatusEnum.Error, Name = RobotStatusEnum.Error.ToString(), Description = "Ошибка отработки роботом. Требует ручного вмешательства." },
|
||||
new { Code = (int)RobotStatusEnum.Complete, Name = RobotStatusEnum.Complete.ToString(), Description = "Робот успешно отработал." }
|
||||
);
|
||||
});
|
||||
|
||||
modelBuilder.Entity<RobotHistoryLevel>(f =>
|
||||
{
|
||||
f.HasData(
|
||||
new { Level = (int)RobotHistoryLevelEnum.Start, Name = RobotHistoryLevelEnum.Start.ToString(), Description = "Робот начал работу " },
|
||||
new { Level = (int)RobotHistoryLevelEnum.Inforamtion, Name = RobotHistoryLevelEnum.Inforamtion.ToString(), Description = "Информация" },
|
||||
new { Level = (int)RobotHistoryLevelEnum.Error, Name = RobotHistoryLevelEnum.Error.ToString(), Description = "Ошибка" },
|
||||
new { Level = (int)RobotHistoryLevelEnum.Complete, Name = RobotHistoryLevelEnum.Complete.ToString(), Description = "Успешно завершил работу" },
|
||||
new { Level = (int)RobotHistoryLevelEnum.Breake, Name = RobotHistoryLevelEnum.Breake.ToString(), Description = "Завершил работу с ошибкой (не отработал до конца)" }
|
||||
);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
33
PARR.DAL/Contracts/RobotHistoryLevelEnum.cs
Normal file
33
PARR.DAL/Contracts/RobotHistoryLevelEnum.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
namespace PARR.DAL.Contracts
|
||||
{
|
||||
/// <summary>
|
||||
/// Уровень логов работы робота
|
||||
/// </summary>
|
||||
public enum RobotHistoryLevelEnum
|
||||
{
|
||||
/// <summary>
|
||||
/// Робот начал работу
|
||||
/// </summary>
|
||||
Start = 1,
|
||||
|
||||
/// <summary>
|
||||
/// Информация
|
||||
/// </summary>
|
||||
Inforamtion = 5,
|
||||
|
||||
/// <summary>
|
||||
/// Ошибка
|
||||
/// </summary>
|
||||
Error = 10,
|
||||
|
||||
/// <summary>
|
||||
/// Успешно завершил работу
|
||||
/// </summary>
|
||||
Complete = 15,
|
||||
|
||||
/// <summary>
|
||||
/// Завершил работу с ошибкой (не отработал до конца)
|
||||
/// </summary>
|
||||
Breake = 20
|
||||
}
|
||||
}
|
||||
28
PARR.DAL/Contracts/RobotStatusEnum.cs
Normal file
28
PARR.DAL/Contracts/RobotStatusEnum.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
namespace PARR.DAL.Contracts
|
||||
{
|
||||
/// <summary>
|
||||
/// Статусы работы робота PARR.DAL.Models.RobotStatus
|
||||
/// </summary>
|
||||
public enum RobotStatusEnum
|
||||
{
|
||||
/// <summary>
|
||||
/// Ожидание, ждет пока робот возьмет в работу
|
||||
/// </summary>
|
||||
Wait = 11,
|
||||
|
||||
/// <summary>
|
||||
/// Робот взял в работу
|
||||
/// </summary>
|
||||
InProgress = 22,
|
||||
|
||||
/// <summary>
|
||||
/// Ошибка отработки роботом. Требует ручного вмешательства.
|
||||
/// </summary>
|
||||
Error = 33,
|
||||
|
||||
/// <summary>
|
||||
/// Робот успешно отработал
|
||||
/// </summary>
|
||||
Complete = 44
|
||||
}
|
||||
}
|
||||
@@ -27,5 +27,15 @@
|
||||
/// Префикс имени шаблона в ЕСПП
|
||||
/// </summary>
|
||||
public string TemplatePrefixName { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Количество попыток выполнения задания роботом
|
||||
/// </summary>
|
||||
public int RobotAttemptsNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Время ожидания выполнения роботом задания
|
||||
/// </summary>
|
||||
public TimeSpan RobotWaitTime { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
1836
PARR.DAL/Migrations/20231003034325_TblsRobotHistoryAndTEmplates.Designer.cs
generated
Normal file
1836
PARR.DAL/Migrations/20231003034325_TblsRobotHistoryAndTEmplates.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,187 @@
|
||||
using System;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
||||
|
||||
#nullable disable
|
||||
|
||||
#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional
|
||||
|
||||
namespace PARR.DAL.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class TblsRobotHistoryAndTEmplates : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "RobotAttemptsNumber",
|
||||
table: "Templates",
|
||||
type: "integer",
|
||||
nullable: false,
|
||||
defaultValue: 0);
|
||||
|
||||
migrationBuilder.AddColumn<DateTimeOffset>(
|
||||
name: "RobotLastStatusUpdated",
|
||||
table: "Templates",
|
||||
type: "timestamp with time zone",
|
||||
nullable: false,
|
||||
defaultValue: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
|
||||
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "RobotStatusCode",
|
||||
table: "Templates",
|
||||
type: "integer",
|
||||
nullable: false,
|
||||
defaultValue: 0);
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "RobotHistoryLevels",
|
||||
columns: table => new
|
||||
{
|
||||
Level = table.Column<int>(type: "integer", nullable: false)
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
Name = table.Column<string>(type: "text", nullable: false),
|
||||
Description = table.Column<string>(type: "text", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_RobotHistoryLevels", x => x.Level);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "RobotStatuses",
|
||||
columns: table => new
|
||||
{
|
||||
Code = table.Column<int>(type: "integer", nullable: false)
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
Name = table.Column<string>(type: "text", nullable: false),
|
||||
Description = table.Column<string>(type: "text", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_RobotStatuses", x => x.Code);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "RobotTemplateHistories",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<Guid>(type: "uuid", nullable: false),
|
||||
DateCreated = table.Column<DateTimeOffset>(type: "timestamp with time zone", nullable: false),
|
||||
HistoryLevel = table.Column<int>(type: "integer", nullable: false),
|
||||
RobotMessage = table.Column<string>(type: "text", nullable: true),
|
||||
EsppMessage = table.Column<string>(type: "text", nullable: true),
|
||||
TemplateId = table.Column<Guid>(type: "uuid", nullable: false),
|
||||
TemplateStatusCode = table.Column<int>(type: "integer", nullable: false),
|
||||
IdSeries = table.Column<Guid>(type: "uuid", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_RobotTemplateHistories", x => x.Id);
|
||||
table.ForeignKey(
|
||||
name: "FK_RobotTemplateHistories_RobotHistoryLevels_HistoryLevel",
|
||||
column: x => x.HistoryLevel,
|
||||
principalTable: "RobotHistoryLevels",
|
||||
principalColumn: "Level",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "FK_RobotTemplateHistories_StatusTemplates_TemplateStatusCode",
|
||||
column: x => x.TemplateStatusCode,
|
||||
principalTable: "StatusTemplates",
|
||||
principalColumn: "Code",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "FK_RobotTemplateHistories_Templates_TemplateId",
|
||||
column: x => x.TemplateId,
|
||||
principalTable: "Templates",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.InsertData(
|
||||
table: "RobotHistoryLevels",
|
||||
columns: new[] { "Level", "Description", "Name" },
|
||||
values: new object[,]
|
||||
{
|
||||
{ 1, "Робот начал работу ", "Start" },
|
||||
{ 5, "Информация", "Inforamtion" },
|
||||
{ 10, "Ошибка", "Error" },
|
||||
{ 15, "Успешно завершил работу", "Complete" },
|
||||
{ 20, "Завершил работу с ошибкой (не отработал до конца)", "Breake" }
|
||||
});
|
||||
|
||||
migrationBuilder.InsertData(
|
||||
table: "RobotStatuses",
|
||||
columns: new[] { "Code", "Description", "Name" },
|
||||
values: new object[,]
|
||||
{
|
||||
{ 11, "Ожидание, ждет пока робот возьмет в работу.", "Wait" },
|
||||
{ 22, "Робот взял в работу.", "InProgress" },
|
||||
{ 33, "Ошибка отработки роботом. Требует ручного вмешательства.", "Error" },
|
||||
{ 44, "Робот успешно отработал.", "Complete" }
|
||||
});
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_Templates_RobotStatusCode",
|
||||
table: "Templates",
|
||||
column: "RobotStatusCode");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_RobotTemplateHistories_HistoryLevel",
|
||||
table: "RobotTemplateHistories",
|
||||
column: "HistoryLevel");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_RobotTemplateHistories_TemplateId",
|
||||
table: "RobotTemplateHistories",
|
||||
column: "TemplateId");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_RobotTemplateHistories_TemplateStatusCode",
|
||||
table: "RobotTemplateHistories",
|
||||
column: "TemplateStatusCode");
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_Templates_RobotStatuses_RobotStatusCode",
|
||||
table: "Templates",
|
||||
column: "RobotStatusCode",
|
||||
principalTable: "RobotStatuses",
|
||||
principalColumn: "Code",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_Templates_RobotStatuses_RobotStatusCode",
|
||||
table: "Templates");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "RobotStatuses");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "RobotTemplateHistories");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "RobotHistoryLevels");
|
||||
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_Templates_RobotStatusCode",
|
||||
table: "Templates");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "RobotAttemptsNumber",
|
||||
table: "Templates");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "RobotLastStatusUpdated",
|
||||
table: "Templates");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "RobotStatusCode",
|
||||
table: "Templates");
|
||||
}
|
||||
}
|
||||
}
|
||||
1848
PARR.DAL/Migrations/20231003040429_TbslSettingsUpd.Designer.cs
generated
Normal file
1848
PARR.DAL/Migrations/20231003040429_TbslSettingsUpd.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
39
PARR.DAL/Migrations/20231003040429_TbslSettingsUpd.cs
Normal file
39
PARR.DAL/Migrations/20231003040429_TbslSettingsUpd.cs
Normal file
@@ -0,0 +1,39 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional
|
||||
|
||||
namespace PARR.DAL.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class TbslSettingsUpd : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.InsertData(
|
||||
table: "Settings",
|
||||
columns: new[] { "Name", "Description", "Value" },
|
||||
values: new object[,]
|
||||
{
|
||||
{ "RobotAttemptsNumber", "Количество попыток выполнения задания роботом", "3" },
|
||||
{ "RobotWaitTime", "Время ожидания выполнения роботом задания", "00:15:00" }
|
||||
});
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DeleteData(
|
||||
table: "Settings",
|
||||
keyColumn: "Name",
|
||||
keyValue: "RobotAttemptsNumber");
|
||||
|
||||
migrationBuilder.DeleteData(
|
||||
table: "Settings",
|
||||
keyColumn: "Name",
|
||||
keyValue: "RobotWaitTime");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -392,7 +392,7 @@ namespace PARR.DAL.Migrations
|
||||
|
||||
b.HasIndex("ApplicationTypeId");
|
||||
|
||||
b.ToTable("Applications");
|
||||
b.ToTable("Applications", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.ApplicationInHost", b =>
|
||||
@@ -419,7 +419,7 @@ namespace PARR.DAL.Migrations
|
||||
|
||||
b.HasIndex("HostId");
|
||||
|
||||
b.ToTable("ApplicationsInHost");
|
||||
b.ToTable("ApplicationsInHost", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.ApplicationType", b =>
|
||||
@@ -443,7 +443,7 @@ namespace PARR.DAL.Migrations
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("ApplicationTypes");
|
||||
b.ToTable("ApplicationTypes", (string)null);
|
||||
|
||||
b.HasData(
|
||||
new
|
||||
@@ -510,7 +510,7 @@ namespace PARR.DAL.Migrations
|
||||
b.HasIndex("WorkId", "ApplicationId")
|
||||
.IsUnique();
|
||||
|
||||
b.ToTable("ApplicationsInWorks");
|
||||
b.ToTable("ApplicationsInWorks", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.EkStatus", b =>
|
||||
@@ -527,7 +527,7 @@ namespace PARR.DAL.Migrations
|
||||
|
||||
b.HasKey("Code");
|
||||
|
||||
b.ToTable("EkStatuses");
|
||||
b.ToTable("EkStatuses", (string)null);
|
||||
|
||||
b.HasData(
|
||||
new
|
||||
@@ -607,7 +607,7 @@ namespace PARR.DAL.Migrations
|
||||
|
||||
b.HasIndex("ResponseAreaCode");
|
||||
|
||||
b.ToTable("Hosts");
|
||||
b.ToTable("Hosts", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.Process", b =>
|
||||
@@ -631,7 +631,7 @@ namespace PARR.DAL.Migrations
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("Processes");
|
||||
b.ToTable("Processes", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.ResponseArea", b =>
|
||||
@@ -648,7 +648,7 @@ namespace PARR.DAL.Migrations
|
||||
|
||||
b.HasKey("Code");
|
||||
|
||||
b.ToTable("ResponseAreas");
|
||||
b.ToTable("ResponseAreas", (string)null);
|
||||
|
||||
b.HasData(
|
||||
new
|
||||
@@ -738,6 +738,144 @@ namespace PARR.DAL.Migrations
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.RobotHistoryLevel", b =>
|
||||
{
|
||||
b.Property<int>("Level")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Level"));
|
||||
|
||||
b.Property<string>("Description")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.HasKey("Level");
|
||||
|
||||
b.ToTable("RobotHistoryLevels", (string)null);
|
||||
|
||||
b.HasData(
|
||||
new
|
||||
{
|
||||
Level = 1,
|
||||
Description = "Робот начал работу ",
|
||||
Name = "Start"
|
||||
},
|
||||
new
|
||||
{
|
||||
Level = 5,
|
||||
Description = "Информация",
|
||||
Name = "Inforamtion"
|
||||
},
|
||||
new
|
||||
{
|
||||
Level = 10,
|
||||
Description = "Ошибка",
|
||||
Name = "Error"
|
||||
},
|
||||
new
|
||||
{
|
||||
Level = 15,
|
||||
Description = "Успешно завершил работу",
|
||||
Name = "Complete"
|
||||
},
|
||||
new
|
||||
{
|
||||
Level = 20,
|
||||
Description = "Завершил работу с ошибкой (не отработал до конца)",
|
||||
Name = "Breake"
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.RobotStatus", b =>
|
||||
{
|
||||
b.Property<int>("Code")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Code"));
|
||||
|
||||
b.Property<string>("Description")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.HasKey("Code");
|
||||
|
||||
b.ToTable("RobotStatuses", (string)null);
|
||||
|
||||
b.HasData(
|
||||
new
|
||||
{
|
||||
Code = 11,
|
||||
Description = "Ожидание, ждет пока робот возьмет в работу.",
|
||||
Name = "Wait"
|
||||
},
|
||||
new
|
||||
{
|
||||
Code = 22,
|
||||
Description = "Робот взял в работу.",
|
||||
Name = "InProgress"
|
||||
},
|
||||
new
|
||||
{
|
||||
Code = 33,
|
||||
Description = "Ошибка отработки роботом. Требует ручного вмешательства.",
|
||||
Name = "Error"
|
||||
},
|
||||
new
|
||||
{
|
||||
Code = 44,
|
||||
Description = "Робот успешно отработал.",
|
||||
Name = "Complete"
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.RobotTemplateHistory", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b.Property<DateTimeOffset>("DateCreated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<string>("EsppMessage")
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<int>("HistoryLevel")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<Guid>("IdSeries")
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b.Property<string>("RobotMessage")
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<Guid>("TemplateId")
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b.Property<int>("TemplateStatusCode")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("HistoryLevel");
|
||||
|
||||
b.HasIndex("TemplateId");
|
||||
|
||||
b.HasIndex("TemplateStatusCode");
|
||||
|
||||
b.ToTable("RobotTemplateHistories", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.Setting", b =>
|
||||
{
|
||||
b.Property<string>("Name")
|
||||
@@ -753,7 +891,7 @@ namespace PARR.DAL.Migrations
|
||||
|
||||
b.HasKey("Name");
|
||||
|
||||
b.ToTable("Settings");
|
||||
b.ToTable("Settings", (string)null);
|
||||
|
||||
b.HasData(
|
||||
new
|
||||
@@ -779,6 +917,18 @@ namespace PARR.DAL.Migrations
|
||||
Name = "TemplatePrefixName",
|
||||
Description = "Префикс имени шаблона в ЕСПП",
|
||||
Value = "ПАРР-ДВС-ПТК"
|
||||
},
|
||||
new
|
||||
{
|
||||
Name = "RobotAttemptsNumber",
|
||||
Description = "Количество попыток выполнения задания роботом",
|
||||
Value = "3"
|
||||
},
|
||||
new
|
||||
{
|
||||
Name = "RobotWaitTime",
|
||||
Description = "Время ожидания выполнения роботом задания",
|
||||
Value = "00:15:00"
|
||||
});
|
||||
});
|
||||
|
||||
@@ -800,7 +950,7 @@ namespace PARR.DAL.Migrations
|
||||
|
||||
b.HasKey("Code");
|
||||
|
||||
b.ToTable("StatusTemplates");
|
||||
b.ToTable("StatusTemplates", (string)null);
|
||||
|
||||
b.HasData(
|
||||
new
|
||||
@@ -849,7 +999,7 @@ namespace PARR.DAL.Migrations
|
||||
|
||||
b.HasIndex("ProcessId");
|
||||
|
||||
b.ToTable("Subprocesses");
|
||||
b.ToTable("Subprocesses", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.Template", b =>
|
||||
@@ -877,6 +1027,15 @@ namespace PARR.DAL.Migrations
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<int>("RobotAttemptsNumber")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<DateTimeOffset>("RobotLastStatusUpdated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<int>("RobotStatusCode")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int>("StatusCode")
|
||||
.HasColumnType("integer");
|
||||
|
||||
@@ -889,9 +1048,11 @@ namespace PARR.DAL.Migrations
|
||||
b.HasIndex("Name")
|
||||
.IsUnique();
|
||||
|
||||
b.HasIndex("RobotStatusCode");
|
||||
|
||||
b.HasIndex("StatusCode");
|
||||
|
||||
b.ToTable("Templates");
|
||||
b.ToTable("Templates", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.Tnk", b =>
|
||||
@@ -920,7 +1081,7 @@ namespace PARR.DAL.Migrations
|
||||
|
||||
b.HasIndex("SubprocessId");
|
||||
|
||||
b.ToTable("Tnks");
|
||||
b.ToTable("Tnks", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.V1.V1_Application", b =>
|
||||
@@ -946,7 +1107,7 @@ namespace PARR.DAL.Migrations
|
||||
|
||||
b.HasIndex("ApplicationTypeId");
|
||||
|
||||
b.ToTable("V1_Applications");
|
||||
b.ToTable("V1_Applications", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.V1.V1_ApplicationInHost", b =>
|
||||
@@ -978,7 +1139,7 @@ namespace PARR.DAL.Migrations
|
||||
|
||||
b.HasIndex("V1_ApplicationId");
|
||||
|
||||
b.ToTable("V1_ApplicationsInHost");
|
||||
b.ToTable("V1_ApplicationsInHost", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.V1.V1_ApplicationType", b =>
|
||||
@@ -1007,7 +1168,7 @@ namespace PARR.DAL.Migrations
|
||||
|
||||
b.HasIndex("V1_ApplicationTypeId");
|
||||
|
||||
b.ToTable("V1_ApplicationTypes");
|
||||
b.ToTable("V1_ApplicationTypes", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.V1.V1_Host", b =>
|
||||
@@ -1046,7 +1207,7 @@ namespace PARR.DAL.Migrations
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("V1_Hosts");
|
||||
b.ToTable("V1_Hosts", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.V1.V1_Job", b =>
|
||||
@@ -1100,7 +1261,7 @@ namespace PARR.DAL.Migrations
|
||||
|
||||
b.HasIndex("JobTypeId");
|
||||
|
||||
b.ToTable("V1_Jobs");
|
||||
b.ToTable("V1_Jobs", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.V1.V1_JobCategory", b =>
|
||||
@@ -1124,7 +1285,7 @@ namespace PARR.DAL.Migrations
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("V1_JobCategorys");
|
||||
b.ToTable("V1_JobCategorys", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.V1.V1_JobJournal", b =>
|
||||
@@ -1168,7 +1329,7 @@ namespace PARR.DAL.Migrations
|
||||
|
||||
b.HasIndex("JobStatusId");
|
||||
|
||||
b.ToTable("V1_JobJournals");
|
||||
b.ToTable("V1_JobJournals", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.V1.V1_JobMode", b =>
|
||||
@@ -1189,7 +1350,7 @@ namespace PARR.DAL.Migrations
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("V1_JobModes");
|
||||
b.ToTable("V1_JobModes", (string)null);
|
||||
|
||||
b.HasData(
|
||||
new
|
||||
@@ -1227,7 +1388,7 @@ namespace PARR.DAL.Migrations
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("V1_JobStatuses");
|
||||
b.ToTable("V1_JobStatuses", (string)null);
|
||||
|
||||
b.HasData(
|
||||
new
|
||||
@@ -1267,7 +1428,7 @@ namespace PARR.DAL.Migrations
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("V1_JobTypes");
|
||||
b.ToTable("V1_JobTypes", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.Work", b =>
|
||||
@@ -1296,7 +1457,7 @@ namespace PARR.DAL.Migrations
|
||||
|
||||
b.HasIndex("TnkId");
|
||||
|
||||
b.ToTable("Works");
|
||||
b.ToTable("Works", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.Application", b =>
|
||||
@@ -1367,6 +1528,33 @@ namespace PARR.DAL.Migrations
|
||||
b.Navigation("ResponseArea");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.RobotTemplateHistory", b =>
|
||||
{
|
||||
b.HasOne("PARR.DAL.Models.RobotHistoryLevel", "RobotHistoryLevel")
|
||||
.WithMany("robotTemplateHistories")
|
||||
.HasForeignKey("HistoryLevel")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("PARR.DAL.Models.Template", "Template")
|
||||
.WithMany("RobotTemplateHistories")
|
||||
.HasForeignKey("TemplateId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("PARR.DAL.Models.StatusTemplate", "StatusTemplate")
|
||||
.WithMany("RobotTemplateHistories")
|
||||
.HasForeignKey("TemplateStatusCode")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("RobotHistoryLevel");
|
||||
|
||||
b.Navigation("StatusTemplate");
|
||||
|
||||
b.Navigation("Template");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.Subprocess", b =>
|
||||
{
|
||||
b.HasOne("PARR.DAL.Models.Process", "Process")
|
||||
@@ -1392,6 +1580,12 @@ namespace PARR.DAL.Migrations
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("PARR.DAL.Models.RobotStatus", "RobotStatus")
|
||||
.WithMany("Templates")
|
||||
.HasForeignKey("RobotStatusCode")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("PARR.DAL.Models.StatusTemplate", "StatusTemplate")
|
||||
.WithMany("Templates")
|
||||
.HasForeignKey("StatusCode")
|
||||
@@ -1402,6 +1596,8 @@ namespace PARR.DAL.Migrations
|
||||
|
||||
b.Navigation("Host");
|
||||
|
||||
b.Navigation("RobotStatus");
|
||||
|
||||
b.Navigation("StatusTemplate");
|
||||
});
|
||||
|
||||
@@ -1565,8 +1761,20 @@ namespace PARR.DAL.Migrations
|
||||
b.Navigation("Hosts");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.RobotHistoryLevel", b =>
|
||||
{
|
||||
b.Navigation("robotTemplateHistories");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.RobotStatus", b =>
|
||||
{
|
||||
b.Navigation("Templates");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.StatusTemplate", b =>
|
||||
{
|
||||
b.Navigation("RobotTemplateHistories");
|
||||
|
||||
b.Navigation("Templates");
|
||||
});
|
||||
|
||||
@@ -1575,6 +1783,11 @@ namespace PARR.DAL.Migrations
|
||||
b.Navigation("Tnks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.Template", b =>
|
||||
{
|
||||
b.Navigation("RobotTemplateHistories");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("PARR.DAL.Models.Tnk", b =>
|
||||
{
|
||||
b.Navigation("Works");
|
||||
|
||||
23
PARR.DAL/Models/RobotHistoryLevel.cs
Normal file
23
PARR.DAL/Models/RobotHistoryLevel.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace PARR.DAL.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// Уровень логов работы робота
|
||||
/// </summary>
|
||||
[Table("RobotHistoryLevels")]
|
||||
public class RobotHistoryLevel
|
||||
{
|
||||
[Key]
|
||||
public int Level { get; set; }
|
||||
|
||||
public required string Name { get; set; }
|
||||
|
||||
public required string Description { get; set; }
|
||||
|
||||
|
||||
public ICollection<RobotTemplateHistory> robotTemplateHistories { get; set; } = new HashSet<RobotTemplateHistory>();
|
||||
|
||||
}
|
||||
}
|
||||
23
PARR.DAL/Models/RobotStatus.cs
Normal file
23
PARR.DAL/Models/RobotStatus.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace PARR.DAL.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// Статус работы робота
|
||||
/// </summary>
|
||||
[Table("RobotStatuses")]
|
||||
public class RobotStatus
|
||||
{
|
||||
[Key]
|
||||
public int Code { get; set; }
|
||||
|
||||
[Required]
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
[Required]
|
||||
public string Description { get; set; } = string.Empty;
|
||||
|
||||
public ICollection<Template> Templates { get; set; } = new HashSet<Template>();
|
||||
}
|
||||
}
|
||||
46
PARR.DAL/Models/RobotTemplateHistory.cs
Normal file
46
PARR.DAL/Models/RobotTemplateHistory.cs
Normal file
@@ -0,0 +1,46 @@
|
||||
using PARR.DAL.Models.Base;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace PARR.DAL.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// История работы робота по управлению шаблонами в ЕСПП
|
||||
/// </summary>
|
||||
[Table("RobotTemplateHistories")]
|
||||
public class RobotTemplateHistory : IBase
|
||||
{
|
||||
[Key]
|
||||
public Guid Id { get; set; }
|
||||
|
||||
public DateTimeOffset DateCreated { get; set; }
|
||||
|
||||
[NotMapped]
|
||||
public DateTimeOffset? DateModified { get; set; }
|
||||
|
||||
public int HistoryLevel { get; set; }
|
||||
|
||||
public string? RobotMessage { get; set; }
|
||||
|
||||
public string? EsppMessage { get; set; }
|
||||
|
||||
public Guid TemplateId { get; set; }
|
||||
|
||||
public int TemplateStatusCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Уникальный идентификатор серии выполнения, нужен для сопоставления истории
|
||||
/// </summary>
|
||||
public Guid IdSeries { get; set; }
|
||||
|
||||
|
||||
[ForeignKey(nameof(HistoryLevel))]
|
||||
public RobotHistoryLevel? RobotHistoryLevel { get; set; }
|
||||
|
||||
[ForeignKey(nameof(TemplateId))]
|
||||
public Template? Template { get; set; }
|
||||
|
||||
[ForeignKey(nameof(TemplateStatusCode))]
|
||||
public StatusTemplate? StatusTemplate { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,9 @@ using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace PARR.DAL.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// Статус шаблона. Что нужно сделать роботу в ЕСПП
|
||||
/// </summary>
|
||||
[Table("StatusTemplates")]
|
||||
public class StatusTemplate
|
||||
{
|
||||
@@ -16,5 +19,7 @@ namespace PARR.DAL.Models
|
||||
public string Description { get; set; } = string.Empty;
|
||||
|
||||
public ICollection<Template> Templates { get; set; } = new HashSet<Template>();
|
||||
|
||||
public ICollection<RobotTemplateHistory> RobotTemplateHistories { get; set; } = new HashSet<RobotTemplateHistory>();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,8 +20,26 @@ namespace PARR.DAL.Models
|
||||
|
||||
public bool IsActive { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Статус шаблона. Что нужно сделать роботу в ЕСПП
|
||||
/// </summary>
|
||||
public int StatusCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Статус работы робота
|
||||
/// </summary>
|
||||
public int RobotStatusCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Количество попыток выполнения задания роботом
|
||||
/// </summary>
|
||||
public int RobotAttemptsNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Последняя дата обновления статуса RobotStatusCode роботом
|
||||
/// </summary>
|
||||
public DateTimeOffset RobotLastStatusUpdated { get; set; }
|
||||
|
||||
|
||||
[ForeignKey(nameof(StatusCode))]
|
||||
public StatusTemplate? StatusTemplate { get; set; }
|
||||
@@ -38,5 +56,11 @@ namespace PARR.DAL.Models
|
||||
[ForeignKey(nameof(HostId))]
|
||||
public Host? Host { get; set; }
|
||||
|
||||
[ForeignKey(nameof(RobotStatusCode))]
|
||||
public RobotStatus? RobotStatus { get; set; }
|
||||
|
||||
|
||||
public ICollection<RobotTemplateHistory> RobotTemplateHistories { get; set; } = new HashSet<RobotTemplateHistory>();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ using Microsoft.Extensions.DependencyInjection;
|
||||
using PARR.DAL.Configurations.DbSettings;
|
||||
using PARR.DAL.Context;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.DAL.Services;
|
||||
using PARR.DAL.Services.Implementation;
|
||||
using PARR.DAL.Services.Implementations;
|
||||
using PARR.DAL.Services.Implementations.AIHIT;
|
||||
@@ -48,6 +47,9 @@ namespace PARR.DAL
|
||||
services.AddTransient<ISettingService, SettingService>();
|
||||
services.AddTransient<ITemplateService, TemplateService>();
|
||||
services.AddTransient<IStatusTemplateService, StatusTemplateService>();
|
||||
services.AddTransient<IRobotHistoryLevelService, RobotHistoryLevelService>();
|
||||
services.AddTransient<IRobotStatusService, RobotStatusService>();
|
||||
services.AddTransient<IRobotTemplateHistoryService, RobotTemplateHistoryService>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
using PARR.DAL.Context;
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.Services.Interfaces;
|
||||
|
||||
namespace PARR.DAL.Services.Implementations
|
||||
{
|
||||
internal class RobotHistoryLevelService : IRobotHistoryLevelService
|
||||
{
|
||||
private readonly DataContext dataContext;
|
||||
|
||||
public RobotHistoryLevelService(DataContext dataContext)
|
||||
{
|
||||
this.dataContext = dataContext;
|
||||
}
|
||||
|
||||
public IQueryable<RobotHistoryLevel> Get()
|
||||
{
|
||||
return dataContext.RobotHistoryLevels;
|
||||
}
|
||||
}
|
||||
}
|
||||
21
PARR.DAL/Services/Implementations/RobotStatusService.cs
Normal file
21
PARR.DAL/Services/Implementations/RobotStatusService.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
using PARR.DAL.Context;
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.Services.Interfaces;
|
||||
|
||||
namespace PARR.DAL.Services.Implementations
|
||||
{
|
||||
internal class RobotStatusService : IRobotStatusService
|
||||
{
|
||||
private readonly DataContext dataContext;
|
||||
|
||||
public RobotStatusService(DataContext dataContext)
|
||||
{
|
||||
this.dataContext = dataContext;
|
||||
}
|
||||
|
||||
public IQueryable<RobotStatus> Get()
|
||||
{
|
||||
return dataContext.RobotStatuses;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using PARR.DAL.Context;
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.Services.Abstracts;
|
||||
using PARR.DAL.Services.Interfaces;
|
||||
|
||||
namespace PARR.DAL.Services.Implementations
|
||||
{
|
||||
internal class RobotTemplateHistoryService : BaseService<RobotTemplateHistory>, IRobotTemplateHistoryService
|
||||
{
|
||||
private readonly DataContext dataContext;
|
||||
|
||||
public RobotTemplateHistoryService(DataContext dataContext, ILogger<RobotTemplateHistoryService> logger) : base(logger)
|
||||
{
|
||||
this.dataContext = dataContext;
|
||||
}
|
||||
|
||||
protected override DbSet<RobotTemplateHistory> EntitySet => dataContext.RobotTemplateHistories;
|
||||
|
||||
protected override DataContext EntitiContext => dataContext;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
using PARR.DAL.Context;
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.Services.Interfaces;
|
||||
|
||||
namespace PARR.DAL.Services.Implementations
|
||||
{
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
using PARR.DAL.Models;
|
||||
|
||||
namespace PARR.DAL.Services.Interfaces
|
||||
{
|
||||
public interface IRobotHistoryLevelService
|
||||
{
|
||||
IQueryable<RobotHistoryLevel> Get();
|
||||
}
|
||||
}
|
||||
9
PARR.DAL/Services/Interfaces/IRobotStatusService.cs
Normal file
9
PARR.DAL/Services/Interfaces/IRobotStatusService.cs
Normal file
@@ -0,0 +1,9 @@
|
||||
using PARR.DAL.Models;
|
||||
|
||||
namespace PARR.DAL.Services.Interfaces
|
||||
{
|
||||
public interface IRobotStatusService
|
||||
{
|
||||
IQueryable<RobotStatus> Get();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.Services.Interfaces.Base;
|
||||
|
||||
namespace PARR.DAL.Services.Interfaces
|
||||
{
|
||||
public interface IRobotTemplateHistoryService : IBaseService<RobotTemplateHistory>
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
using PARR.DAL.Models;
|
||||
|
||||
namespace PARR.DAL.Services
|
||||
namespace PARR.DAL.Services.Interfaces
|
||||
{
|
||||
public interface IStatusTemplateService
|
||||
{
|
||||
Reference in New Issue
Block a user