feat(all): преметры espp Api принимают дату utc. В подробном описании шаблона возвращается префикс.

This commit is contained in:
Mikhail Trubnikov
2023-10-24 15:40:52 +10:00
parent 59db8fa312
commit fbeabeb165
12 changed files with 98 additions and 68 deletions

View File

@@ -77,6 +77,7 @@ namespace PARR.API.MappingProfiles
CreateMap<RobotConfiguration, RobotTaskTemplateResponse>()
.ForMember(d => d.IsActive, o => o.MapFrom(s => s.Template!.IsActiveTemplate))
.ForMember(d => d.ClosingCode, o => o.MapFrom<RobotTaskTemplateClosingCodeResolver>())
//todo
.ForMember(d => d.FullDescription, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.FullDescription))
.ForMember(d => d.ShortDescription, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.ShortDescription))
.ForMember(d => d.Solution, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Solution))

View File

@@ -59,4 +59,5 @@
public TimeSpan OrderSearchDeltaDate { get; set; }
}
}

View File

@@ -398,7 +398,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("TemplateId");
b.ToTable("AgentHistories");
b.ToTable("AgentHistories", (string)null);
});
modelBuilder.Entity("PARR.DAL.Models.AgentHistoryLevel", b =>
@@ -419,7 +419,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Id");
b.ToTable("AgentHistoryLevels");
b.ToTable("AgentHistoryLevels", (string)null);
b.HasData(
new
@@ -459,7 +459,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("ApplicationTypeId");
b.ToTable("Applications");
b.ToTable("Applications", (string)null);
});
modelBuilder.Entity("PARR.DAL.Models.ApplicationInHost", b =>
@@ -486,7 +486,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("HostId");
b.ToTable("ApplicationsInHost");
b.ToTable("ApplicationsInHost", (string)null);
});
modelBuilder.Entity("PARR.DAL.Models.ApplicationType", b =>
@@ -510,7 +510,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Id");
b.ToTable("ApplicationTypes");
b.ToTable("ApplicationTypes", (string)null);
b.HasData(
new
@@ -595,7 +595,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 =>
@@ -612,7 +612,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Code");
b.ToTable("EkStatuses");
b.ToTable("EkStatuses", (string)null);
b.HasData(
new
@@ -675,7 +675,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Id");
b.ToTable("EsppSchTypes");
b.ToTable("EsppSchTypes", (string)null);
b.HasData(
new
@@ -744,7 +744,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("TypeScheduleId", "TypeId")
.IsUnique();
b.ToTable("EsppSchTypeConfigs");
b.ToTable("EsppSchTypeConfigs", (string)null);
b.HasData(
new
@@ -847,7 +847,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Id");
b.ToTable("EsppSchTypeSchedules");
b.ToTable("EsppSchTypeSchedules", (string)null);
b.HasData(
new
@@ -908,7 +908,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("TypeId");
b.ToTable("EsppSchTypeValues");
b.ToTable("EsppSchTypeValues", (string)null);
b.HasData(
new
@@ -1511,7 +1511,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("TypeValueId");
b.ToTable("EsppSchValues");
b.ToTable("EsppSchValues", (string)null);
});
modelBuilder.Entity("PARR.DAL.Models.Host", b =>
@@ -1549,7 +1549,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("ResponseAreaCode");
b.ToTable("Hosts");
b.ToTable("Hosts", (string)null);
});
modelBuilder.Entity("PARR.DAL.Models.Order", b =>
@@ -1587,7 +1587,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("TemplateId");
b.ToTable("Orders");
b.ToTable("Orders", (string)null);
});
modelBuilder.Entity("PARR.DAL.Models.OrderStatus", b =>
@@ -1608,7 +1608,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Code");
b.ToTable("OrderStatuses");
b.ToTable("OrderStatuses", (string)null);
b.HasData(
new
@@ -1664,7 +1664,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Id");
b.ToTable("Processes");
b.ToTable("Processes", (string)null);
});
modelBuilder.Entity("PARR.DAL.Models.ResponseArea", b =>
@@ -1681,7 +1681,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Code");
b.ToTable("ResponseAreas");
b.ToTable("ResponseAreas", (string)null);
b.HasData(
new
@@ -1792,7 +1792,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("Name")
.IsUnique();
b.ToTable("Robots");
b.ToTable("Robots", (string)null);
b.HasData(
new
@@ -1847,7 +1847,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("TemplateId", "RobotCode")
.IsUnique();
b.ToTable("RobotConfigurations");
b.ToTable("RobotConfigurations", (string)null);
});
modelBuilder.Entity("PARR.DAL.Models.RobotHistory", b =>
@@ -1882,7 +1882,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("TaskStatusCode");
b.ToTable("RobotHistories");
b.ToTable("RobotHistories", (string)null);
});
modelBuilder.Entity("PARR.DAL.Models.RobotHistoryLevel", b =>
@@ -1903,7 +1903,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Level");
b.ToTable("RobotHistoryLevels");
b.ToTable("RobotHistoryLevels", (string)null);
b.HasData(
new
@@ -1950,7 +1950,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Code");
b.ToTable("RobotStatuses");
b.ToTable("RobotStatuses", (string)null);
b.HasData(
new
@@ -1994,7 +1994,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Name");
b.ToTable("Settings");
b.ToTable("Settings", (string)null);
b.HasData(
new
@@ -2085,7 +2085,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("ProcessId");
b.ToTable("Subprocesses");
b.ToTable("Subprocesses", (string)null);
});
modelBuilder.Entity("PARR.DAL.Models.TaskStatus", b =>
@@ -2106,7 +2106,7 @@ namespace PARR.DAL.Migrations
b.HasKey("Code");
b.ToTable("TaskStatuses");
b.ToTable("TaskStatuses", (string)null);
b.HasData(
new
@@ -2169,7 +2169,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("Name")
.IsUnique();
b.ToTable("Templates");
b.ToTable("Templates", (string)null);
});
modelBuilder.Entity("PARR.DAL.Models.Tnk", b =>
@@ -2198,7 +2198,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("SubprocessId");
b.ToTable("Tnks");
b.ToTable("Tnks", (string)null);
});
modelBuilder.Entity("PARR.DAL.Models.Work", b =>
@@ -2227,7 +2227,7 @@ namespace PARR.DAL.Migrations
b.HasIndex("TnkId");
b.ToTable("Works");
b.ToTable("Works", (string)null);
});
modelBuilder.Entity("PARR.DAL.Models.AgentHistory", b =>

View File

@@ -1,5 +1,7 @@
using Microsoft.EntityFrameworkCore;
using PARR.DAL.Contracts;
using PARR.DAL.Models.Base;
using PARR.DAL.Settings;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
@@ -24,35 +26,25 @@ namespace PARR.DAL.Models
public required string ShortDescription { get; set; }
public required string FullDescription { get; set; }
//public required string FullDescription { get; set; }
private string _fullDescription = string.Empty;
public required string FullDescription
{
get
{
//В полное описание подставляем префикс, для дальнейшего поиска наряда
return $"{_fullDescription} \r\n{PrefixSettings.Prefix}";
}
set
{
//удаляем префикс, если он есть
_fullDescription = value.Replace($"\r\n{PrefixSettings.Prefix}", "");
}
}
public required string Solution { get; set; }
///// <summary>
///// Выполняется автоматически агентом на сервере, скриптами
///// </summary>
//public bool? IsAutomatic { get; set; }
///// <summary>
///// Скрипт для автоматического выполнения
///// </summary>
//public string AgentScript { get; set; } = string.Empty;
///// <summary>
///// Какое-то имя которое мы передаем агенту, пока непонятно что это такое.
///// </summary>
//public string AgentName { get; set; } = string.Empty;
///// <summary>
///// Расписание: Время создания наряда и выполнения скрипта (чч:мм:сс)
///// </summary>
//public TimeSpan ScheduleGenerationTime { get; set; }
///// <summary>
///// Расписание: Первое срабатывание
///// </summary>
//public DateOnly ScheduleStartDate { get; set; }
/// <summary>
/// Время последнего запуска скрипта/генерации наряда
/// </summary>

View File

@@ -9,6 +9,7 @@ using PARR.DAL.Services.Implementations;
using PARR.DAL.Services.Implementations.AIHIT;
using PARR.DAL.Services.Interfaces;
using PARR.DAL.Services.Interfaces.AIHIT;
using PARR.DAL.Settings;
using PARR.DAL.TransformServices;
namespace PARR.DAL
@@ -83,9 +84,9 @@ namespace PARR.DAL
var settingsFromDb = new SettingsFromDb();
configuration.GetSection(nameof(SettingsFromDb)).Bind(settingsFromDb);
services.AddSingleton(settingsFromDb);
PrefixSettings.Prefix = settingsFromDb.TemplatePrefixName;
}
}
}

View File

@@ -0,0 +1,10 @@
namespace PARR.DAL.Settings
{
/// <summary>
/// Для использования в моделе, в геттере, ApplicationInWork
/// </summary>
internal static class PrefixSettings
{
public static string Prefix = "default value";
}
}

View File

@@ -20,18 +20,23 @@ namespace PARR.EsppApi
public async Task<EsppResultBase<IEnumerable<EsppOrder>>> FindOrdersAsync(FindOrdersQuery query)
{
DateTime? generateDateStartWOTimeZone = query.GenerateDateStart.HasValue ? query.GenerateDateStart.Value.AddHours(esppOrderSettings.EsppUserTimeZone) : null;
DateTime? generateDateEndWOTimeZone = query.GenerateDateEnd.HasValue ? query.GenerateDateEnd.Value.AddHours(esppOrderSettings.EsppUserTimeZone) : null;
var conditions = new List<string>();
if (!string.IsNullOrEmpty(query.DescriptionContains))
conditions.Add($"description like \"*{query.DescriptionContains}*\"");
//if (!string.IsNullOrEmpty(query.TemplateNameContains))
// conditions.Add($"templateName like \"*{query.TemplateNameContains}*\"");
if (query.GenerateDateStart.HasValue)
conditions.Add($"open.time>='{query.GenerateDateStart.Value.Day}/{query.GenerateDateStart.Value.Month}/{query.GenerateDateStart.Value.Year}" +
$" {query.GenerateDateStart.Value.Hour}:{query.GenerateDateStart.Value.Minute}:{query.GenerateDateStart.Value.Second}'");
if (query.GenerateDateEnd.HasValue)
conditions.Add($"open.time<='{query.GenerateDateEnd.Value.Day}/{query.GenerateDateEnd.Value.Month}/{query.GenerateDateEnd.Value.Year}" +
$" {query.GenerateDateEnd.Value.Hour}:{query.GenerateDateEnd.Value.Minute}:{query.GenerateDateEnd.Value.Second}'");
if (generateDateStartWOTimeZone.HasValue)
conditions.Add($"open.time>='{generateDateStartWOTimeZone.Value.Day}/{generateDateStartWOTimeZone.Value.Month}/{generateDateStartWOTimeZone.Value.Year}" +
$" {generateDateStartWOTimeZone.Value.Hour}:{generateDateStartWOTimeZone.Value.Minute}:{generateDateStartWOTimeZone.Value.Second}'");
if (generateDateEndWOTimeZone.HasValue)
conditions.Add($"open.time<='{generateDateEndWOTimeZone.Value.Day}/{generateDateEndWOTimeZone.Value.Month}/{generateDateEndWOTimeZone.Value.Year}" +
$" {generateDateEndWOTimeZone.Value.Hour}:{generateDateEndWOTimeZone.Value.Minute}:{generateDateEndWOTimeZone.Value.Second}'");
if (conditions.Count < 1)
{

View File

@@ -5,20 +5,22 @@
/// </summary>
public class FindOrdersQuery
{
//todo: тут поля для запроса списка нарядов из еспп
/// <summary>
/// Подробное описание, содержит значение
/// </summary>
public string? DescriptionContains { get; set; }
private DateTime? _generateDateStart;
/// <summary>
/// Дата сначала которой выбирать созданные наряды
/// Дата сначала которой выбирать созданные наряды, UTC
/// </summary>
public DateTime? GenerateDateStart { get; set; }
/// <summary>
/// Дата конца периода до которого создавались наряды
/// Дата конца периода до которого создавались наряды, UTC
/// </summary>
public DateTime? GenerateDateEnd { get; set; }
}

View File

@@ -1,4 +1,6 @@
namespace PARR.EsppApi.Settings
using System.Security;
namespace PARR.EsppApi.Settings
{
internal class EsppOrderSettings
{
@@ -6,5 +8,9 @@
public string UserName { get; set; } = string.Empty;
public string Password { get; set; } = string.Empty;
/// <summary>
/// Часовая зона пользователя в ЕСПП относительно UTC
/// </summary>
public int EsppUserTimeZone { get; set; }
}
}

View File

@@ -84,7 +84,12 @@ namespace PARR.EsppOrderLoader
private async Task<IEnumerable<EsppOrder>?> GetOrdersAsync()
{
var searchQuery = new FindOrdersQuery { ShortDescriptionContains = settingsFromDb.TemplatePrefixName, DateEnd = DateTime.Now.Add(settingsFromDb.OrderSearchDeltaDate) };
var searchQuery = new FindOrdersQuery {
DescriptionContains = settingsFromDb.TemplatePrefixName,
GenerateDateStart = DateTimeOffset.UtcNow.DateTime.Add(-settingsFromDb.OrderSearchDeltaDate).AddDays(-30),
GenerateDateEnd = DateTimeOffset.UtcNow.DateTime
};
var downloadResult = await esppApiService.FindOrdersAsync(searchQuery);
if (!downloadResult.IsSuccess)

View File

@@ -28,5 +28,11 @@
},
"WorkerSettings": {
"RepeatEvery": "1:00:00"
},
"EsppOrderSettings": {
"Url": "http://rzd-espp-t-rpa-app-1.gvc.oao.rzd:8080/espp_api/OperationExecutor/",
"UserName": "Auto-PTK-DVS",
"Password": "123456789",
"EsppUserTimeZone": -10
}
}

View File

@@ -26,6 +26,7 @@
"EsppOrderSettings": {
"Url": "http://rzd-espp-t-rpa-app-1.gvc.oao.rzd:8080/espp_api/OperationExecutor/",
"UserName": "Auto-PTK-DVS",
"Password": "123456789"
"Password": "123456789",
"EsppUserTimeZone": -10
}
}