feat(dal,api): удалены таблицы которые относились к старому JobAutoControl. Добавлена новая таблица JobAutoControl
This commit is contained in:
@@ -48,7 +48,7 @@
|
|||||||
|
|
||||||
public List<WorkGroupResponse>? WorkGroups { get; set; }
|
public List<WorkGroupResponse>? WorkGroups { get; set; }
|
||||||
|
|
||||||
public JobAutoControlBaseResponse? AutoControl { get; set; }
|
//public JobAutoControlBaseResponse? AutoControl { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,62 +0,0 @@
|
|||||||
namespace PARR.API.Contracts.V1.Responses
|
|
||||||
{
|
|
||||||
public class JobAutoControlBaseResponse
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Создавать новые РР (из настроке РР)
|
|
||||||
/// </summary>
|
|
||||||
public bool CreateNew { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Деактивировать не актуальные согласно ЭК (обратные статусы ЭК)
|
|
||||||
/// </summary>
|
|
||||||
public bool Deactivate { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Активировать РР после смены ЭК (согласно настройкам статусов ЭК)
|
|
||||||
/// </summary>
|
|
||||||
public bool Activate { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class JobAutoControlResponse : JobAutoControlBaseResponse
|
|
||||||
{
|
|
||||||
public Guid Id { get; set; }
|
|
||||||
|
|
||||||
public Guid ApplicationInWorkId { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Состояние для активированных РР, шаблоны
|
|
||||||
/// </summary>
|
|
||||||
public bool OnTemplateIsActive { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Состояние для активированных РР, расписания
|
|
||||||
/// </summary>
|
|
||||||
public bool OnScheduleIsActive { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Состояние для деактивированных РР, шаблоны
|
|
||||||
/// </summary>
|
|
||||||
public bool OffTemplateIsActive { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Состояние для деактивированных РР, расписания
|
|
||||||
/// </summary>
|
|
||||||
public bool OffScheduleIsActive { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Маски ЭК
|
|
||||||
/// </summary>
|
|
||||||
public List<JobEkMaskResponse>? EkMasks { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Статусы ЭК для которых включена генерация РР и активация
|
|
||||||
/// </summary>
|
|
||||||
public List<EkStatusResponse>? EnabledEkStatuses { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Рабочие группы
|
|
||||||
/// </summary>
|
|
||||||
public List<WorkGroupResponse>? WorkGroups { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
namespace PARR.API.Contracts.V1.Responses
|
|
||||||
{
|
|
||||||
public class JobEkMaskResponse
|
|
||||||
{
|
|
||||||
public Guid Id { get; set; }
|
|
||||||
|
|
||||||
public required string Name { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -21,202 +21,202 @@ namespace PARR.API.Controllers.V1
|
|||||||
[Authorize(Roles = ParrRoles.Administrator.Role)]
|
[Authorize(Roles = ParrRoles.Administrator.Role)]
|
||||||
public class JobAutoControlController : BaseApiController
|
public class JobAutoControlController : BaseApiController
|
||||||
{
|
{
|
||||||
private readonly IJobAutoControlService jobAutoControlService;
|
//private readonly IJobAutoControlService jobAutoControlService;
|
||||||
private readonly IApplicationsInWorkService applicationsInWorkService;
|
//private readonly IApplicationsInWorkService applicationsInWorkService;
|
||||||
private readonly IMapper mapper;
|
//private readonly IMapper mapper;
|
||||||
private readonly IValidator<JobAutoControlRequest> validator;
|
//private readonly IValidator<JobAutoControlRequest> validator;
|
||||||
private readonly IUriService uriService;
|
//private readonly IUriService uriService;
|
||||||
|
|
||||||
public JobAutoControlController(
|
//public JobAutoControlController(
|
||||||
IJobAutoControlService jobAutoControlService,
|
// IJobAutoControlService jobAutoControlService,
|
||||||
IApplicationsInWorkService applicationsInWorkService,
|
// IApplicationsInWorkService applicationsInWorkService,
|
||||||
IMapper mapper,
|
// IMapper mapper,
|
||||||
IValidator<JobAutoControlRequest> validator,
|
// IValidator<JobAutoControlRequest> validator,
|
||||||
IUriService uriService
|
// IUriService uriService
|
||||||
)
|
// )
|
||||||
{
|
//{
|
||||||
this.jobAutoControlService = jobAutoControlService;
|
// this.jobAutoControlService = jobAutoControlService;
|
||||||
this.applicationsInWorkService = applicationsInWorkService;
|
// this.applicationsInWorkService = applicationsInWorkService;
|
||||||
this.mapper = mapper;
|
// this.mapper = mapper;
|
||||||
this.validator = validator;
|
// this.validator = validator;
|
||||||
this.uriService = uriService;
|
// this.uriService = uriService;
|
||||||
}
|
//}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
///// <summary>
|
||||||
/// Получить настройки автоматического управления РР
|
///// Получить настройки автоматического управления РР
|
||||||
/// </summary>
|
///// </summary>
|
||||||
/// <param name="applicationInWorkId"></param>
|
///// <param name="applicationInWorkId"></param>
|
||||||
/// <returns></returns>
|
///// <returns></returns>
|
||||||
[HttpGet(ApiRoutes.JobAutoControl.Get)]
|
//[HttpGet(ApiRoutes.JobAutoControl.Get)]
|
||||||
public async Task<IActionResult> Get([FromRoute] Guid applicationInWorkId)
|
//public async Task<IActionResult> Get([FromRoute] Guid applicationInWorkId)
|
||||||
{
|
//{
|
||||||
var obj = await jobAutoControlService.Get()
|
// var obj = await jobAutoControlService.Get()
|
||||||
.Include(t => t.ApplicationsInWork).ThenInclude(t => t.WorkGroups).ThenInclude(t => t.WorkGroup)
|
// .Include(t => t.ApplicationsInWork).ThenInclude(t => t.WorkGroups).ThenInclude(t => t.WorkGroup)
|
||||||
.Include(t => t.JobEkMasks)
|
// .Include(t => t.JobEkMasks)
|
||||||
.Include(t => t.JobAutoControlInEkStatuses).ThenInclude(t => t.EkStatus)
|
// .Include(t => t.JobAutoControlInEkStatuses).ThenInclude(t => t.EkStatus)
|
||||||
.FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
|
// .FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
|
||||||
|
|
||||||
if (obj == null)
|
// if (obj == null)
|
||||||
{
|
// {
|
||||||
// проверим, есть ли вообще такой AppInWork
|
// // проверим, есть ли вообще такой AppInWork
|
||||||
var appInWork = await applicationsInWorkService.GetAsync(applicationInWorkId);
|
// var appInWork = await applicationsInWorkService.GetAsync(applicationInWorkId);
|
||||||
if (appInWork == null)
|
// if (appInWork == null)
|
||||||
return NotFound();
|
// return NotFound();
|
||||||
|
|
||||||
return NoContent();
|
// return NoContent();
|
||||||
}
|
// }
|
||||||
|
|
||||||
var response = mapper.Map<JobAutoControlResponse>(obj);
|
// var response = mapper.Map<JobAutoControlResponse>(obj);
|
||||||
|
|
||||||
return Ok(new Response<JobAutoControlResponse>(response, true));
|
// return Ok(new Response<JobAutoControlResponse>(response, true));
|
||||||
}
|
//}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
///// <summary>
|
||||||
/// Создать настройки автоматического управления РР
|
///// Создать настройки автоматического управления РР
|
||||||
/// </summary>
|
///// </summary>
|
||||||
/// <param name="applicationInWorkId"></param>
|
///// <param name="applicationInWorkId"></param>
|
||||||
/// <param name="request"></param>
|
///// <param name="request"></param>
|
||||||
/// <returns></returns>
|
///// <returns></returns>
|
||||||
[HttpPost(ApiRoutes.JobAutoControl.Create)]
|
//[HttpPost(ApiRoutes.JobAutoControl.Create)]
|
||||||
public async Task<IActionResult> Create([FromRoute] Guid applicationInWorkId, [FromBody] JobAutoControlRequest request)
|
//public async Task<IActionResult> Create([FromRoute] Guid applicationInWorkId, [FromBody] JobAutoControlRequest request)
|
||||||
{
|
//{
|
||||||
var exist = await jobAutoControlService.Get().FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
|
// var exist = await jobAutoControlService.Get().FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
|
||||||
if (exist != null)
|
// if (exist != null)
|
||||||
return BadRequest(new Response(false, new List<ErrorModel> {
|
// return BadRequest(new Response(false, new List<ErrorModel> {
|
||||||
new ErrorModel { FieldName = nameof(applicationInWorkId), Message = $"Запись с {nameof(applicationInWorkId)}: {applicationInWorkId} уже существует." }
|
// new ErrorModel { FieldName = nameof(applicationInWorkId), Message = $"Запись с {nameof(applicationInWorkId)}: {applicationInWorkId} уже существует." }
|
||||||
}));
|
// }));
|
||||||
|
|
||||||
var resultValidate = await validator.ValidateAsync(request);
|
// var resultValidate = await validator.ValidateAsync(request);
|
||||||
if (!resultValidate.IsValid)
|
// if (!resultValidate.IsValid)
|
||||||
return BadRequest(new Response(resultValidate.Errors));
|
// return BadRequest(new Response(resultValidate.Errors));
|
||||||
|
|
||||||
var newObj = new DAL.Models.JobAutoControl
|
// var newObj = new DAL.Models.JobAutoControl
|
||||||
{
|
// {
|
||||||
Id = Guid.NewGuid(),
|
// Id = Guid.NewGuid(),
|
||||||
ApplicationInWorkId = applicationInWorkId,
|
// ApplicationInWorkId = applicationInWorkId,
|
||||||
CreateNew = request.CreateNew,
|
// CreateNew = request.CreateNew,
|
||||||
Deactivate = request.Deactivate,
|
// Deactivate = request.Deactivate,
|
||||||
Activate = request.Activate,
|
// Activate = request.Activate,
|
||||||
OnTemplateIsActive = request.OnTemplateIsActive,
|
// OnTemplateIsActive = request.OnTemplateIsActive,
|
||||||
OnScheduleIsActive = request.OnScheduleIsActive,
|
// OnScheduleIsActive = request.OnScheduleIsActive,
|
||||||
OffTemplateIsActive = request.OffTemplateIsActive,
|
// OffTemplateIsActive = request.OffTemplateIsActive,
|
||||||
OffScheduleIsActive = request.OffScheduleIsActive
|
// OffScheduleIsActive = request.OffScheduleIsActive
|
||||||
};
|
// };
|
||||||
|
|
||||||
// убираем пробелы и дубли
|
// // убираем пробелы и дубли
|
||||||
request.EkMasks.Where(t => t.Trim() != string.Empty).Distinct().ToList().ForEach(mask => newObj.JobEkMasks.Add(new JobEkMask
|
// request.EkMasks.Where(t => t.Trim() != string.Empty).Distinct().ToList().ForEach(mask => newObj.JobEkMasks.Add(new JobEkMask
|
||||||
{
|
// {
|
||||||
Id = Guid.NewGuid(),
|
// Id = Guid.NewGuid(),
|
||||||
DateCreated = DateTimeOffset.UtcNow,
|
// DateCreated = DateTimeOffset.UtcNow,
|
||||||
Name = mask.Trim(),
|
// Name = mask.Trim(),
|
||||||
JobAutoControlId = newObj.Id
|
// JobAutoControlId = newObj.Id
|
||||||
}));
|
// }));
|
||||||
|
|
||||||
request.EnabledEkStatuses.ForEach(status => newObj.JobAutoControlInEkStatuses.Add(new JobAutoControlInEkStatus
|
// request.EnabledEkStatuses.ForEach(status => newObj.JobAutoControlInEkStatuses.Add(new JobAutoControlInEkStatus
|
||||||
{
|
// {
|
||||||
EkStatusCode = (int)status,
|
// EkStatusCode = (int)status,
|
||||||
JobAutoControlId = newObj.Id
|
// JobAutoControlId = newObj.Id
|
||||||
}));
|
// }));
|
||||||
|
|
||||||
if (!await jobAutoControlService.CreateAsync(newObj) || !await jobAutoControlService.CommitAsync())
|
// if (!await jobAutoControlService.CreateAsync(newObj) || !await jobAutoControlService.CommitAsync())
|
||||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Ошибка при создани записи." } }));
|
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Ошибка при создани записи." } }));
|
||||||
|
|
||||||
var locationUri = uriService.GetUri(ApiRoutes.JobAutoControl.Get, ApiRoutes.JobAutoControl.appInWorkId, applicationInWorkId);
|
// var locationUri = uriService.GetUri(ApiRoutes.JobAutoControl.Get, ApiRoutes.JobAutoControl.appInWorkId, applicationInWorkId);
|
||||||
|
|
||||||
var createdObj = await jobAutoControlService.Get()
|
// var createdObj = await jobAutoControlService.Get()
|
||||||
.Include(t => t.ApplicationsInWork).ThenInclude(t => t.WorkGroups).ThenInclude(t => t.WorkGroup)
|
// .Include(t => t.ApplicationsInWork).ThenInclude(t => t.WorkGroups).ThenInclude(t => t.WorkGroup)
|
||||||
.Include(t => t.JobEkMasks)
|
// .Include(t => t.JobEkMasks)
|
||||||
.Include(t => t.JobAutoControlInEkStatuses).ThenInclude(t => t.EkStatus)
|
// .Include(t => t.JobAutoControlInEkStatuses).ThenInclude(t => t.EkStatus)
|
||||||
.FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
|
// .FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
|
||||||
|
|
||||||
return Created(locationUri, new Response<JobAutoControlResponse>(mapper.Map<JobAutoControlResponse>(createdObj), true));
|
// return Created(locationUri, new Response<JobAutoControlResponse>(mapper.Map<JobAutoControlResponse>(createdObj), true));
|
||||||
}
|
//}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
///// <summary>
|
||||||
/// Обновить настройки автоматического управления РР
|
///// Обновить настройки автоматического управления РР
|
||||||
/// </summary>
|
///// </summary>
|
||||||
/// <param name="applicationInWorkId"></param>
|
///// <param name="applicationInWorkId"></param>
|
||||||
/// <param name="request"></param>
|
///// <param name="request"></param>
|
||||||
/// <returns></returns>
|
///// <returns></returns>
|
||||||
[HttpPut(ApiRoutes.JobAutoControl.Update)]
|
//[HttpPut(ApiRoutes.JobAutoControl.Update)]
|
||||||
public async Task<IActionResult> Update([FromRoute] Guid applicationInWorkId, [FromBody] JobAutoControlRequest request)
|
//public async Task<IActionResult> Update([FromRoute] Guid applicationInWorkId, [FromBody] JobAutoControlRequest request)
|
||||||
{
|
//{
|
||||||
var resultValidate = await validator.ValidateAsync(request);
|
// var resultValidate = await validator.ValidateAsync(request);
|
||||||
if (!resultValidate.IsValid)
|
// if (!resultValidate.IsValid)
|
||||||
return BadRequest(new Response(resultValidate.Errors));
|
// return BadRequest(new Response(resultValidate.Errors));
|
||||||
|
|
||||||
var orig = await jobAutoControlService.Get()
|
// var orig = await jobAutoControlService.Get()
|
||||||
.Include(t => t.JobEkMasks)
|
// .Include(t => t.JobEkMasks)
|
||||||
.Include(t => t.JobAutoControlInEkStatuses)
|
// .Include(t => t.JobAutoControlInEkStatuses)
|
||||||
.FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
|
// .FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
|
||||||
|
|
||||||
if (orig == null)
|
// if (orig == null)
|
||||||
return BadRequest(new Response(false, new List<ErrorModel> {
|
// return BadRequest(new Response(false, new List<ErrorModel> {
|
||||||
new ErrorModel { FieldName = nameof(applicationInWorkId), Message = $"Запись с {nameof(applicationInWorkId)}: {applicationInWorkId} не существует." }
|
// new ErrorModel { FieldName = nameof(applicationInWorkId), Message = $"Запись с {nameof(applicationInWorkId)}: {applicationInWorkId} не существует." }
|
||||||
}));
|
// }));
|
||||||
|
|
||||||
|
|
||||||
orig.DateModified = DateTimeOffset.UtcNow;
|
// orig.DateModified = DateTimeOffset.UtcNow;
|
||||||
orig.CreateNew = request.CreateNew;
|
// orig.CreateNew = request.CreateNew;
|
||||||
orig.Deactivate = request.Deactivate;
|
// orig.Deactivate = request.Deactivate;
|
||||||
orig.Activate = request.Activate;
|
// orig.Activate = request.Activate;
|
||||||
orig.OnTemplateIsActive = request.OnTemplateIsActive;
|
// orig.OnTemplateIsActive = request.OnTemplateIsActive;
|
||||||
orig.OnScheduleIsActive = request.OnScheduleIsActive;
|
// orig.OnScheduleIsActive = request.OnScheduleIsActive;
|
||||||
orig.OffTemplateIsActive = request.OffTemplateIsActive;
|
// orig.OffTemplateIsActive = request.OffTemplateIsActive;
|
||||||
orig.OffScheduleIsActive = request.OffScheduleIsActive;
|
// orig.OffScheduleIsActive = request.OffScheduleIsActive;
|
||||||
|
|
||||||
orig.JobEkMasks.Clear();
|
// orig.JobEkMasks.Clear();
|
||||||
// убираем пробелы и дубли
|
// // убираем пробелы и дубли
|
||||||
request.EkMasks.Where(t => t.Trim() != string.Empty).Distinct().ToList().ForEach(mask => orig.JobEkMasks.Add(new JobEkMask
|
// request.EkMasks.Where(t => t.Trim() != string.Empty).Distinct().ToList().ForEach(mask => orig.JobEkMasks.Add(new JobEkMask
|
||||||
{
|
// {
|
||||||
//Id = Guid.NewGuid(), // не пойму почему не нужно это поле. с ним ошибка.
|
// //Id = Guid.NewGuid(), // не пойму почему не нужно это поле. с ним ошибка.
|
||||||
DateCreated = DateTimeOffset.UtcNow,
|
// DateCreated = DateTimeOffset.UtcNow,
|
||||||
Name = mask.Trim(),
|
// Name = mask.Trim(),
|
||||||
JobAutoControlId = orig.Id
|
// JobAutoControlId = orig.Id
|
||||||
}));
|
// }));
|
||||||
|
|
||||||
orig.JobAutoControlInEkStatuses.Clear();
|
// orig.JobAutoControlInEkStatuses.Clear();
|
||||||
request.EnabledEkStatuses.ForEach(status => orig.JobAutoControlInEkStatuses.Add(new JobAutoControlInEkStatus
|
// request.EnabledEkStatuses.ForEach(status => orig.JobAutoControlInEkStatuses.Add(new JobAutoControlInEkStatus
|
||||||
{
|
// {
|
||||||
EkStatusCode = (int)status,
|
// EkStatusCode = (int)status,
|
||||||
JobAutoControlId = orig.Id
|
// JobAutoControlId = orig.Id
|
||||||
}));
|
// }));
|
||||||
|
|
||||||
if (!await jobAutoControlService.CommitAsync())
|
// if (!await jobAutoControlService.CommitAsync())
|
||||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Ошибка при изменении записи." } }));
|
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Ошибка при изменении записи." } }));
|
||||||
|
|
||||||
|
|
||||||
var updatedObj = await jobAutoControlService.Get()
|
// var updatedObj = await jobAutoControlService.Get()
|
||||||
.Include(t => t.ApplicationsInWork).ThenInclude(t => t.WorkGroups).ThenInclude(t => t.WorkGroup)
|
// .Include(t => t.ApplicationsInWork).ThenInclude(t => t.WorkGroups).ThenInclude(t => t.WorkGroup)
|
||||||
.Include(t => t.JobEkMasks)
|
// .Include(t => t.JobEkMasks)
|
||||||
.Include(t => t.JobAutoControlInEkStatuses).ThenInclude(t => t.EkStatus)
|
// .Include(t => t.JobAutoControlInEkStatuses).ThenInclude(t => t.EkStatus)
|
||||||
.FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
|
// .FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
|
||||||
|
|
||||||
return Ok(new Response<JobAutoControlResponse>(mapper.Map<JobAutoControlResponse>(updatedObj), true));
|
// return Ok(new Response<JobAutoControlResponse>(mapper.Map<JobAutoControlResponse>(updatedObj), true));
|
||||||
}
|
//}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
///// <summary>
|
||||||
/// Удалить настройки автоматического управления РР
|
///// Удалить настройки автоматического управления РР
|
||||||
/// </summary>
|
///// </summary>
|
||||||
/// <param name="applicationInWorkId"></param>
|
///// <param name="applicationInWorkId"></param>
|
||||||
/// <returns></returns>
|
///// <returns></returns>
|
||||||
[HttpDelete(ApiRoutes.JobAutoControl.Delete)]
|
//[HttpDelete(ApiRoutes.JobAutoControl.Delete)]
|
||||||
public async Task<IActionResult> Delete([FromRoute] Guid applicationInWorkId)
|
//public async Task<IActionResult> Delete([FromRoute] Guid applicationInWorkId)
|
||||||
{
|
//{
|
||||||
var obj = await jobAutoControlService.Get().FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
|
// var obj = await jobAutoControlService.Get().FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
|
||||||
|
|
||||||
if (obj == null)
|
// if (obj == null)
|
||||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении настроект. Не найден настройки с {nameof(applicationInWorkId)}: {applicationInWorkId}" } }));
|
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении настроект. Не найден настройки с {nameof(applicationInWorkId)}: {applicationInWorkId}" } }));
|
||||||
|
|
||||||
if (!jobAutoControlService.Delete(obj) || !await jobAutoControlService.CommitAsync())
|
// if (!jobAutoControlService.Delete(obj) || !await jobAutoControlService.CommitAsync())
|
||||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении настроек." } }));
|
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении настроек." } }));
|
||||||
|
|
||||||
return NoContent();
|
// return NoContent();
|
||||||
}
|
//}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -322,18 +322,18 @@ namespace PARR.API.MappingProfiles
|
|||||||
|
|
||||||
#region ApplicationInWork
|
#region ApplicationInWork
|
||||||
|
|
||||||
CreateMap<ApplicationsInWork, ApplicationInWorkBaseResponse>()
|
//CreateMap<ApplicationsInWork, ApplicationInWorkBaseResponse>()
|
||||||
.Include<ApplicationsInWork, ApplicationInWorkResponse>()
|
// .Include<ApplicationsInWork, ApplicationInWorkResponse>()
|
||||||
.ForMember(d => d.Application, o => o.MapFrom(s => s.Application));
|
// .ForMember(d => d.Application, o => o.MapFrom(s => s.Application));
|
||||||
|
|
||||||
CreateMap<ApplicationsInWork, ApplicationInWorkBaseResponse>();
|
//CreateMap<ApplicationsInWork, ApplicationInWorkBaseResponse>();
|
||||||
|
|
||||||
CreateMap<ApplicationsInWork, ApplicationInWorkResponse>()
|
//CreateMap<ApplicationsInWork, ApplicationInWorkResponse>()
|
||||||
.ForMember(d => d.Work, o => o.MapFrom(s => s.Work))
|
// .ForMember(d => d.Work, o => o.MapFrom(s => s.Work))
|
||||||
//.ForMember(d => d.TemplatesCount, o => o.MapFrom(s => s.Templates.Count()))
|
// //.ForMember(d => d.TemplatesCount, o => o.MapFrom(s => s.Templates.Count()))
|
||||||
.ForMember(d => d.Schedule, o => o.MapFrom<ApplicationInWorkScheduleResolver>())
|
// .ForMember(d => d.Schedule, o => o.MapFrom<ApplicationInWorkScheduleResolver>())
|
||||||
.ForMember(d => d.WorkGroups, o => o.MapFrom(s => s.WorkGroups.OrderBy(t => t.WorkGroup!.Name).Select(t => t.WorkGroup)))
|
// .ForMember(d => d.WorkGroups, o => o.MapFrom(s => s.WorkGroups.OrderBy(t => t.WorkGroup!.Name).Select(t => t.WorkGroup)))
|
||||||
.ForMember(d => d.AutoControl, o => o.MapFrom(s => s.JobAutoControl));
|
// .ForMember(d => d.AutoControl, o => o.MapFrom(s => s.JobAutoControl));
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -375,24 +375,24 @@ namespace PARR.API.MappingProfiles
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region JobAutoControl
|
//#region JobAutoControl
|
||||||
|
|
||||||
CreateMap<JobAutoControl, JobAutoControlBaseResponse>()
|
//CreateMap<JobAutoControl, JobAutoControlBaseResponse>()
|
||||||
.Include<JobAutoControl, JobAutoControlResponse>();
|
// .Include<JobAutoControl, JobAutoControlResponse>();
|
||||||
|
|
||||||
CreateMap<JobAutoControl, JobAutoControlResponse>()
|
//CreateMap<JobAutoControl, JobAutoControlResponse>()
|
||||||
.ForMember(d => d.EkMasks, o => o.MapFrom(s => s.JobEkMasks.OrderBy(t => t.Name)))
|
// .ForMember(d => d.EkMasks, o => o.MapFrom(s => s.JobEkMasks.OrderBy(t => t.Name)))
|
||||||
.ForMember(d => d.EnabledEkStatuses, o => o.MapFrom(s => s.JobAutoControlInEkStatuses.Select(t => t.EkStatus).OrderBy(t => t.Name)))
|
// .ForMember(d => d.EnabledEkStatuses, o => o.MapFrom(s => s.JobAutoControlInEkStatuses.Select(t => t.EkStatus).OrderBy(t => t.Name)))
|
||||||
.ForMember(d => d.WorkGroups, o => o.MapFrom(s => s.ApplicationsInWork!.WorkGroups.Select(t => t.WorkGroup).OrderBy(t => t.Name)));
|
// .ForMember(d => d.WorkGroups, o => o.MapFrom(s => s.ApplicationsInWork!.WorkGroups.Select(t => t.WorkGroup).OrderBy(t => t.Name)));
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
//#endregion
|
||||||
|
|
||||||
#region ResponseArea
|
#region ResponseArea
|
||||||
CreateMap<ResponseArea, ResponseAreaResponse>();
|
CreateMap<ResponseArea, ResponseAreaResponse>();
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
CreateMap<JobEkMask, JobEkMaskResponse>();
|
//CreateMap<JobEkMask, JobEkMaskResponse>();
|
||||||
|
|
||||||
|
|
||||||
CreateMap<EkStatus, EkStatusResponse>();
|
CreateMap<EkStatus, EkStatusResponse>();
|
||||||
|
|||||||
@@ -34,9 +34,6 @@ namespace PARR.DAL.Context
|
|||||||
public DbSet<Work> Works { get; set; }
|
public DbSet<Work> Works { get; set; }
|
||||||
|
|
||||||
public DbSet<ApplicationsInWork> ApplicationsInWorks { get; set; }
|
public DbSet<ApplicationsInWork> ApplicationsInWorks { get; set; }
|
||||||
public DbSet<JobAutoControl> JobAutoControls { get; set; }
|
|
||||||
public DbSet<JobEkMask> JobEkMasks { get; set; }
|
|
||||||
public DbSet<JobAutoControlInEkStatus> JobAutoControlInEkStatuses { get; set; }
|
|
||||||
|
|
||||||
public DbSet<Models.Setting> Setting { get; set; }
|
public DbSet<Models.Setting> Setting { get; set; }
|
||||||
|
|
||||||
|
|||||||
3897
PARR.DAL/Migrations/20251205012723_remOldJobAutoControl.Designer.cs
generated
Normal file
3897
PARR.DAL/Migrations/20251205012723_remOldJobAutoControl.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
116
PARR.DAL/Migrations/20251205012723_remOldJobAutoControl.cs
Normal file
116
PARR.DAL/Migrations/20251205012723_remOldJobAutoControl.cs
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace PARR.DAL.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class remOldJobAutoControl : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "JobAutoControlInEkStatus");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "JobEkMasks");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "JobAutoControls");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "JobAutoControls",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<Guid>(type: "uuid", nullable: false),
|
||||||
|
ApplicationInWorkId = table.Column<Guid>(type: "uuid", nullable: false),
|
||||||
|
Activate = table.Column<bool>(type: "boolean", nullable: false),
|
||||||
|
CreateNew = table.Column<bool>(type: "boolean", nullable: false),
|
||||||
|
DateCreated = table.Column<DateTimeOffset>(type: "timestamp with time zone", nullable: false),
|
||||||
|
DateModified = table.Column<DateTimeOffset>(type: "timestamp with time zone", nullable: true),
|
||||||
|
Deactivate = table.Column<bool>(type: "boolean", nullable: false),
|
||||||
|
OffScheduleIsActive = table.Column<bool>(type: "boolean", nullable: false),
|
||||||
|
OffTemplateIsActive = table.Column<bool>(type: "boolean", nullable: false),
|
||||||
|
OnScheduleIsActive = table.Column<bool>(type: "boolean", nullable: false),
|
||||||
|
OnTemplateIsActive = table.Column<bool>(type: "boolean", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_JobAutoControls", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_JobAutoControls_ApplicationsInWorks_ApplicationInWorkId",
|
||||||
|
column: x => x.ApplicationInWorkId,
|
||||||
|
principalTable: "ApplicationsInWorks",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "JobAutoControlInEkStatus",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
JobAutoControlId = table.Column<Guid>(type: "uuid", nullable: false),
|
||||||
|
EkStatusCode = table.Column<int>(type: "integer", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_JobAutoControlInEkStatus", x => new { x.JobAutoControlId, x.EkStatusCode });
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_JobAutoControlInEkStatus_EkStatuses_EkStatusCode",
|
||||||
|
column: x => x.EkStatusCode,
|
||||||
|
principalTable: "EkStatuses",
|
||||||
|
principalColumn: "Code",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_JobAutoControlInEkStatus_JobAutoControls_JobAutoControlId",
|
||||||
|
column: x => x.JobAutoControlId,
|
||||||
|
principalTable: "JobAutoControls",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "JobEkMasks",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<Guid>(type: "uuid", nullable: false),
|
||||||
|
JobAutoControlId = table.Column<Guid>(type: "uuid", nullable: false),
|
||||||
|
DateCreated = table.Column<DateTimeOffset>(type: "timestamp with time zone", nullable: false),
|
||||||
|
Name = table.Column<string>(type: "text", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_JobEkMasks", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_JobEkMasks_JobAutoControls_JobAutoControlId",
|
||||||
|
column: x => x.JobAutoControlId,
|
||||||
|
principalTable: "JobAutoControls",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_JobAutoControlInEkStatus_EkStatusCode",
|
||||||
|
table: "JobAutoControlInEkStatus",
|
||||||
|
column: "EkStatusCode");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_JobAutoControls_ApplicationInWorkId",
|
||||||
|
table: "JobAutoControls",
|
||||||
|
column: "ApplicationInWorkId",
|
||||||
|
unique: true);
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_JobEkMasks_JobAutoControlId_Name",
|
||||||
|
table: "JobEkMasks",
|
||||||
|
columns: new[] { "JobAutoControlId", "Name" },
|
||||||
|
unique: true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
3938
PARR.DAL/Migrations/20251205014424_tbjJobAutoControl.Designer.cs
generated
Normal file
3938
PARR.DAL/Migrations/20251205014424_tbjJobAutoControl.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
48
PARR.DAL/Migrations/20251205014424_tbjJobAutoControl.cs
Normal file
48
PARR.DAL/Migrations/20251205014424_tbjJobAutoControl.cs
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace PARR.DAL.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class tbjJobAutoControl : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "AutoControls",
|
||||||
|
schema: "job",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
JobId = table.Column<Guid>(type: "uuid", nullable: false),
|
||||||
|
IsEnable = table.Column<bool>(type: "boolean", nullable: false),
|
||||||
|
SyncIsActiveTemplate = table.Column<bool>(type: "boolean", nullable: false),
|
||||||
|
SyncIsActiveSchedule = table.Column<bool>(type: "boolean", nullable: false),
|
||||||
|
UpdateIsActiveTemplate = table.Column<bool>(type: "boolean", nullable: false),
|
||||||
|
UpdateIsActiveSchedule = table.Column<bool>(type: "boolean", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_AutoControls", x => x.JobId);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_AutoControls_Jobs_JobId",
|
||||||
|
column: x => x.JobId,
|
||||||
|
principalSchema: "job",
|
||||||
|
principalTable: "Jobs",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
},
|
||||||
|
comment: "Таблица управления автоконтролем для работ");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "AutoControls",
|
||||||
|
schema: "job");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1597,6 +1597,34 @@ namespace PARR.DAL.Migrations
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("PARR.DAL.Models.Job.JobAutoControl", b =>
|
||||||
|
{
|
||||||
|
b.Property<Guid>("JobId")
|
||||||
|
.HasColumnType("uuid");
|
||||||
|
|
||||||
|
b.Property<bool>("IsEnable")
|
||||||
|
.HasColumnType("boolean");
|
||||||
|
|
||||||
|
b.Property<bool>("SyncIsActiveSchedule")
|
||||||
|
.HasColumnType("boolean");
|
||||||
|
|
||||||
|
b.Property<bool>("SyncIsActiveTemplate")
|
||||||
|
.HasColumnType("boolean");
|
||||||
|
|
||||||
|
b.Property<bool>("UpdateIsActiveSchedule")
|
||||||
|
.HasColumnType("boolean");
|
||||||
|
|
||||||
|
b.Property<bool>("UpdateIsActiveTemplate")
|
||||||
|
.HasColumnType("boolean");
|
||||||
|
|
||||||
|
b.HasKey("JobId");
|
||||||
|
|
||||||
|
b.ToTable("AutoControls", "job", t =>
|
||||||
|
{
|
||||||
|
t.HasComment("Таблица управления автоконтролем для работ");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("PARR.DAL.Models.Job.JobFieldFilter", b =>
|
modelBuilder.Entity("PARR.DAL.Models.Job.JobFieldFilter", b =>
|
||||||
{
|
{
|
||||||
b.Property<Guid>("Id")
|
b.Property<Guid>("Id")
|
||||||
@@ -1808,89 +1836,6 @@ namespace PARR.DAL.Migrations
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("PARR.DAL.Models.JobAutoControl", b =>
|
|
||||||
{
|
|
||||||
b.Property<Guid>("Id")
|
|
||||||
.ValueGeneratedOnAdd()
|
|
||||||
.HasColumnType("uuid");
|
|
||||||
|
|
||||||
b.Property<bool>("Activate")
|
|
||||||
.HasColumnType("boolean");
|
|
||||||
|
|
||||||
b.Property<Guid>("ApplicationInWorkId")
|
|
||||||
.HasColumnType("uuid");
|
|
||||||
|
|
||||||
b.Property<bool>("CreateNew")
|
|
||||||
.HasColumnType("boolean");
|
|
||||||
|
|
||||||
b.Property<DateTimeOffset>("DateCreated")
|
|
||||||
.HasColumnType("timestamp with time zone");
|
|
||||||
|
|
||||||
b.Property<DateTimeOffset?>("DateModified")
|
|
||||||
.HasColumnType("timestamp with time zone");
|
|
||||||
|
|
||||||
b.Property<bool>("Deactivate")
|
|
||||||
.HasColumnType("boolean");
|
|
||||||
|
|
||||||
b.Property<bool>("OffScheduleIsActive")
|
|
||||||
.HasColumnType("boolean");
|
|
||||||
|
|
||||||
b.Property<bool>("OffTemplateIsActive")
|
|
||||||
.HasColumnType("boolean");
|
|
||||||
|
|
||||||
b.Property<bool>("OnScheduleIsActive")
|
|
||||||
.HasColumnType("boolean");
|
|
||||||
|
|
||||||
b.Property<bool>("OnTemplateIsActive")
|
|
||||||
.HasColumnType("boolean");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("ApplicationInWorkId")
|
|
||||||
.IsUnique();
|
|
||||||
|
|
||||||
b.ToTable("JobAutoControls");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("PARR.DAL.Models.JobAutoControlInEkStatus", b =>
|
|
||||||
{
|
|
||||||
b.Property<Guid>("JobAutoControlId")
|
|
||||||
.HasColumnType("uuid");
|
|
||||||
|
|
||||||
b.Property<int>("EkStatusCode")
|
|
||||||
.HasColumnType("integer");
|
|
||||||
|
|
||||||
b.HasKey("JobAutoControlId", "EkStatusCode");
|
|
||||||
|
|
||||||
b.HasIndex("EkStatusCode");
|
|
||||||
|
|
||||||
b.ToTable("JobAutoControlInEkStatus");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("PARR.DAL.Models.JobEkMask", b =>
|
|
||||||
{
|
|
||||||
b.Property<Guid>("Id")
|
|
||||||
.ValueGeneratedOnAdd()
|
|
||||||
.HasColumnType("uuid");
|
|
||||||
|
|
||||||
b.Property<DateTimeOffset>("DateCreated")
|
|
||||||
.HasColumnType("timestamp with time zone");
|
|
||||||
|
|
||||||
b.Property<Guid>("JobAutoControlId")
|
|
||||||
.HasColumnType("uuid");
|
|
||||||
|
|
||||||
b.Property<string>("Name")
|
|
||||||
.IsRequired()
|
|
||||||
.HasColumnType("text");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("JobAutoControlId", "Name")
|
|
||||||
.IsUnique();
|
|
||||||
|
|
||||||
b.ToTable("JobEkMasks");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("PARR.DAL.Models.Order", b =>
|
modelBuilder.Entity("PARR.DAL.Models.Order", b =>
|
||||||
{
|
{
|
||||||
b.Property<Guid>("Id")
|
b.Property<Guid>("Id")
|
||||||
@@ -3399,6 +3344,17 @@ namespace PARR.DAL.Migrations
|
|||||||
b.Navigation("Tnk");
|
b.Navigation("Tnk");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("PARR.DAL.Models.Job.JobAutoControl", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("PARR.DAL.Models.Job.Job", "Job")
|
||||||
|
.WithOne("AutoControl")
|
||||||
|
.HasForeignKey("PARR.DAL.Models.Job.JobAutoControl", "JobId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Job");
|
||||||
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("PARR.DAL.Models.Job.JobFieldFilter", b =>
|
modelBuilder.Entity("PARR.DAL.Models.Job.JobFieldFilter", b =>
|
||||||
{
|
{
|
||||||
b.HasOne("PARR.DAL.Models.Unit.UnitField", "UnitField")
|
b.HasOne("PARR.DAL.Models.Unit.UnitField", "UnitField")
|
||||||
@@ -3459,47 +3415,6 @@ namespace PARR.DAL.Migrations
|
|||||||
b.Navigation("Job");
|
b.Navigation("Job");
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("PARR.DAL.Models.JobAutoControl", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("PARR.DAL.Models.ApplicationsInWork", "ApplicationsInWork")
|
|
||||||
.WithOne("JobAutoControl")
|
|
||||||
.HasForeignKey("PARR.DAL.Models.JobAutoControl", "ApplicationInWorkId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.Navigation("ApplicationsInWork");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("PARR.DAL.Models.JobAutoControlInEkStatus", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("PARR.DAL.Models.EkStatus", "EkStatus")
|
|
||||||
.WithMany("JobAutoControlInEkStatuses")
|
|
||||||
.HasForeignKey("EkStatusCode")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.HasOne("PARR.DAL.Models.JobAutoControl", "JobAutoControl")
|
|
||||||
.WithMany("JobAutoControlInEkStatuses")
|
|
||||||
.HasForeignKey("JobAutoControlId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.Navigation("EkStatus");
|
|
||||||
|
|
||||||
b.Navigation("JobAutoControl");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("PARR.DAL.Models.JobEkMask", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("PARR.DAL.Models.JobAutoControl", "JobAutoControl")
|
|
||||||
.WithMany("JobEkMasks")
|
|
||||||
.HasForeignKey("JobAutoControlId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.Navigation("JobAutoControl");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("PARR.DAL.Models.Order", b =>
|
modelBuilder.Entity("PARR.DAL.Models.Order", b =>
|
||||||
{
|
{
|
||||||
b.HasOne("PARR.DAL.Models.OrderStatus", "NextStatus")
|
b.HasOne("PARR.DAL.Models.OrderStatus", "NextStatus")
|
||||||
@@ -3808,8 +3723,6 @@ namespace PARR.DAL.Migrations
|
|||||||
|
|
||||||
modelBuilder.Entity("PARR.DAL.Models.ApplicationsInWork", b =>
|
modelBuilder.Entity("PARR.DAL.Models.ApplicationsInWork", b =>
|
||||||
{
|
{
|
||||||
b.Navigation("JobAutoControl");
|
|
||||||
|
|
||||||
b.Navigation("WorkGroups");
|
b.Navigation("WorkGroups");
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -3826,8 +3739,6 @@ namespace PARR.DAL.Migrations
|
|||||||
modelBuilder.Entity("PARR.DAL.Models.EkStatus", b =>
|
modelBuilder.Entity("PARR.DAL.Models.EkStatus", b =>
|
||||||
{
|
{
|
||||||
b.Navigation("Hosts");
|
b.Navigation("Hosts");
|
||||||
|
|
||||||
b.Navigation("JobAutoControlInEkStatuses");
|
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("PARR.DAL.Models.EsppSchType", b =>
|
modelBuilder.Entity("PARR.DAL.Models.EsppSchType", b =>
|
||||||
@@ -3859,6 +3770,8 @@ namespace PARR.DAL.Migrations
|
|||||||
|
|
||||||
modelBuilder.Entity("PARR.DAL.Models.Job.Job", b =>
|
modelBuilder.Entity("PARR.DAL.Models.Job.Job", b =>
|
||||||
{
|
{
|
||||||
|
b.Navigation("AutoControl");
|
||||||
|
|
||||||
b.Navigation("Templates");
|
b.Navigation("Templates");
|
||||||
|
|
||||||
b.Navigation("UnitFilters");
|
b.Navigation("UnitFilters");
|
||||||
@@ -3883,13 +3796,6 @@ namespace PARR.DAL.Migrations
|
|||||||
b.Navigation("RelationshipFilters");
|
b.Navigation("RelationshipFilters");
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("PARR.DAL.Models.JobAutoControl", b =>
|
|
||||||
{
|
|
||||||
b.Navigation("JobAutoControlInEkStatuses");
|
|
||||||
|
|
||||||
b.Navigation("JobEkMasks");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("PARR.DAL.Models.Order", b =>
|
modelBuilder.Entity("PARR.DAL.Models.Order", b =>
|
||||||
{
|
{
|
||||||
b.Navigation("AgentHistories");
|
b.Navigation("AgentHistories");
|
||||||
|
|||||||
@@ -117,6 +117,6 @@ namespace PARR.DAL.Models
|
|||||||
|
|
||||||
public ICollection<AppInWorkInWorkGroup> WorkGroups { get; set; } = new HashSet<AppInWorkInWorkGroup>();
|
public ICollection<AppInWorkInWorkGroup> WorkGroups { get; set; } = new HashSet<AppInWorkInWorkGroup>();
|
||||||
|
|
||||||
public JobAutoControl? JobAutoControl { get; set; }
|
//public JobAutoControl? JobAutoControl { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,6 @@ namespace PARR.DAL.Models
|
|||||||
|
|
||||||
public ICollection<Host> Hosts { get; set; } = new HashSet<Host>();
|
public ICollection<Host> Hosts { get; set; } = new HashSet<Host>();
|
||||||
|
|
||||||
public ICollection<JobAutoControlInEkStatus> JobAutoControlInEkStatuses { get; set; } = new HashSet<JobAutoControlInEkStatus>();
|
//public ICollection<JobAutoControlInEkStatus> JobAutoControlInEkStatuses { get; set; } = new HashSet<JobAutoControlInEkStatus>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,5 +71,8 @@ namespace PARR.DAL.Models.Job
|
|||||||
public ICollection<JobUnitFilter> UnitFilters { get; set; } = new HashSet<JobUnitFilter>();
|
public ICollection<JobUnitFilter> UnitFilters { get; set; } = new HashSet<JobUnitFilter>();
|
||||||
|
|
||||||
public ICollection<Template> Templates { get; set; } = new HashSet<Template>();
|
public ICollection<Template> Templates { get; set; } = new HashSet<Template>();
|
||||||
|
|
||||||
|
|
||||||
|
public JobAutoControl? AutoControl { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
43
PARR.DAL/Models/Job/JobAutoControl.cs
Normal file
43
PARR.DAL/Models/Job/JobAutoControl.cs
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using PARR.DAL.Context;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
namespace PARR.DAL.Models.Job
|
||||||
|
{
|
||||||
|
[Table("AutoControls", Schema = DataContextSettings.Job)]
|
||||||
|
[Comment("Таблица управления автоконтролем для работ")]
|
||||||
|
public class JobAutoControl
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
public Guid JobId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Включен автоконтроль
|
||||||
|
/// </summary>
|
||||||
|
public bool IsEnable { get; set; } = false;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Значение при синхронизации, статус шаблона
|
||||||
|
/// </summary>
|
||||||
|
public bool SyncIsActiveTemplate { get; set; } = false;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Значение при синхронизации, статус расписания
|
||||||
|
/// </summary>
|
||||||
|
public bool SyncIsActiveSchedule { get; set; } = false;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Значение при обновлении, статус шаблона
|
||||||
|
/// </summary>
|
||||||
|
public bool UpdateIsActiveTemplate { get; set; } = false;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Значение при обновлении, статус расписания
|
||||||
|
/// </summary>
|
||||||
|
public bool UpdateIsActiveSchedule { get; set; } = false;
|
||||||
|
|
||||||
|
[ForeignKey(nameof(JobId))]
|
||||||
|
public Job? Job { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
using PARR.DAL.Models.Base;
|
|
||||||
using System.ComponentModel.DataAnnotations;
|
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
|
|
||||||
namespace PARR.DAL.Models
|
|
||||||
{
|
|
||||||
[Table("JobAutoControls")]
|
|
||||||
[Index(nameof(ApplicationInWorkId), IsUnique = true)]
|
|
||||||
public class JobAutoControl : IBase
|
|
||||||
{
|
|
||||||
[Key]
|
|
||||||
public Guid Id { get; set; }
|
|
||||||
|
|
||||||
public DateTimeOffset DateCreated { get; set; }
|
|
||||||
|
|
||||||
public DateTimeOffset? DateModified { get; set; }
|
|
||||||
|
|
||||||
public Guid ApplicationInWorkId { get; set; }
|
|
||||||
|
|
||||||
[ForeignKey(nameof(ApplicationInWorkId))]
|
|
||||||
public ApplicationsInWork? ApplicationsInWork { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Создавать новые РР (из настроке РР)
|
|
||||||
/// </summary>
|
|
||||||
public bool CreateNew { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Деактивировать не актуальные согласно ЭК (обратные статусы ЭК)
|
|
||||||
/// </summary>
|
|
||||||
public bool Deactivate { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Активировать РР после смены ЭК (согласно настройкам статусов ЭК)
|
|
||||||
/// </summary>
|
|
||||||
public bool Activate { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Состояние для активированных РР, шаблоны
|
|
||||||
/// </summary>
|
|
||||||
public bool OnTemplateIsActive { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Состояние для активированных РР, расписания
|
|
||||||
/// </summary>
|
|
||||||
public bool OnScheduleIsActive { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Состояние для деактивированных РР, шаблоны
|
|
||||||
/// </summary>
|
|
||||||
public bool OffTemplateIsActive { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Состояние для деактивированных РР, расписания
|
|
||||||
/// </summary>
|
|
||||||
public bool OffScheduleIsActive { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Список масок ЭК, или ЭК
|
|
||||||
/// </summary>
|
|
||||||
public ICollection<JobEkMask> JobEkMasks { get; set; } = new HashSet<JobEkMask>();
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Список статусов ЭК для которых создавать/активировать шаблоны/расписания
|
|
||||||
/// </summary>
|
|
||||||
public ICollection<JobAutoControlInEkStatus> JobAutoControlInEkStatuses { get; set; } = new HashSet<JobAutoControlInEkStatus>();
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
|
|
||||||
namespace PARR.DAL.Models
|
|
||||||
{
|
|
||||||
[Table("JobAutoControlInEkStatus")]
|
|
||||||
[PrimaryKey(nameof(JobAutoControlId), nameof(EkStatusCode))]
|
|
||||||
public class JobAutoControlInEkStatus
|
|
||||||
{
|
|
||||||
public Guid JobAutoControlId { get; set; }
|
|
||||||
|
|
||||||
public int EkStatusCode { get; set; }
|
|
||||||
|
|
||||||
[ForeignKey(nameof(EkStatusCode))]
|
|
||||||
public EkStatus? EkStatus { get; set; }
|
|
||||||
|
|
||||||
[ForeignKey(nameof(JobAutoControlId))]
|
|
||||||
public JobAutoControl? JobAutoControl { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
using PARR.DAL.Models.Base;
|
|
||||||
using System.ComponentModel.DataAnnotations;
|
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
|
|
||||||
namespace PARR.DAL.Models
|
|
||||||
{
|
|
||||||
[Table("JobEkMasks")]
|
|
||||||
[Index(nameof(JobAutoControlId), nameof(Name), IsUnique = true)]
|
|
||||||
public class JobEkMask : IBase
|
|
||||||
{
|
|
||||||
[Key]
|
|
||||||
public Guid Id { get; set; }
|
|
||||||
|
|
||||||
public DateTimeOffset DateCreated { get; set; }
|
|
||||||
|
|
||||||
[NotMapped]
|
|
||||||
public DateTimeOffset? DateModified { get; set; }
|
|
||||||
|
|
||||||
public required string Name { get; set; }
|
|
||||||
|
|
||||||
public Guid JobAutoControlId { get; set; }
|
|
||||||
|
|
||||||
[ForeignKey(nameof(JobAutoControlId))]
|
|
||||||
public JobAutoControl? JobAutoControl { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -90,8 +90,6 @@ namespace PARR.DAL
|
|||||||
services.AddTransient<IDistributionPeriodService, DistributionPeriodService>();
|
services.AddTransient<IDistributionPeriodService, DistributionPeriodService>();
|
||||||
services.AddTransient<IEsppSchTypeValueService, EsppSchTypeValueService>();
|
services.AddTransient<IEsppSchTypeValueService, EsppSchTypeValueService>();
|
||||||
services.AddTransient<IResponseAreaService, ResponseAreaService>();
|
services.AddTransient<IResponseAreaService, ResponseAreaService>();
|
||||||
services.AddTransient<IJobAutoControlService, JobAutoControlService>();
|
|
||||||
services.AddTransient<IJobEkMaskService, JobEkMaskService>();
|
|
||||||
services.AddTransient<ITemplateHistoryService, TemplateHistoryService>();
|
services.AddTransient<ITemplateHistoryService, TemplateHistoryService>();
|
||||||
services.AddTransient<IParrComponentService, ParrComponentService>();
|
services.AddTransient<IParrComponentService, ParrComponentService>();
|
||||||
services.AddTransient<ITemplateStatusTypeService, TemplateStatusTypeService>();
|
services.AddTransient<ITemplateStatusTypeService, TemplateStatusTypeService>();
|
||||||
|
|||||||
@@ -18,5 +18,31 @@ namespace PARR.DAL.Services.Implementations.Job
|
|||||||
protected override DbSet<Models.Job.Job> EntitySet => dataContext.Jobs;
|
protected override DbSet<Models.Job.Job> EntitySet => dataContext.Jobs;
|
||||||
|
|
||||||
protected override DataContext EntitiContext => dataContext;
|
protected override DataContext EntitiContext => dataContext;
|
||||||
|
|
||||||
|
public override Task<bool> CreateAsync(Models.Job.Job obj)
|
||||||
|
{
|
||||||
|
if (obj.AutoControl == null)
|
||||||
|
obj.AutoControl = new Models.Job.JobAutoControl
|
||||||
|
{
|
||||||
|
JobId = obj.Id
|
||||||
|
};
|
||||||
|
|
||||||
|
return base.CreateAsync(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public override Task<bool> AddRangeAsync(List<Models.Job.Job> objs)
|
||||||
|
{
|
||||||
|
objs.ForEach(job =>
|
||||||
|
{
|
||||||
|
if (job.AutoControl == null)
|
||||||
|
job.AutoControl = new Models.Job.JobAutoControl
|
||||||
|
{
|
||||||
|
JobId = job.Id
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
return base.AddRangeAsync(objs);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
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 JobAutoControlService : BaseService<JobAutoControl>, IJobAutoControlService
|
|
||||||
{
|
|
||||||
private readonly DataContext dataContext;
|
|
||||||
|
|
||||||
protected override DbSet<JobAutoControl> EntitySet => dataContext.JobAutoControls;
|
|
||||||
|
|
||||||
protected override DataContext EntitiContext => dataContext;
|
|
||||||
|
|
||||||
public JobAutoControlService(DataContext dataContext, ILogger<JobAutoControlService> logger) : base(logger)
|
|
||||||
{
|
|
||||||
this.dataContext = dataContext;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
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 JobEkMaskService : BaseService<JobEkMask>, IJobEkMaskService
|
|
||||||
{
|
|
||||||
private readonly DataContext dataContext;
|
|
||||||
|
|
||||||
protected override DbSet<JobEkMask> EntitySet => dataContext.JobEkMasks;
|
|
||||||
|
|
||||||
protected override DataContext EntitiContext => dataContext;
|
|
||||||
|
|
||||||
public JobEkMaskService(DataContext dataContext, ILogger<JobEkMaskService> logger) : base(logger)
|
|
||||||
{
|
|
||||||
this.dataContext = dataContext;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
using PARR.DAL.Models;
|
|
||||||
using PARR.DAL.Services.Interfaces.Base;
|
|
||||||
|
|
||||||
namespace PARR.DAL.Services.Interfaces
|
|
||||||
{
|
|
||||||
public interface IJobAutoControlService : IBaseService<JobAutoControl>
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
using PARR.DAL.Models;
|
|
||||||
using PARR.DAL.Services.Interfaces.Base;
|
|
||||||
|
|
||||||
namespace PARR.DAL.Services.Interfaces
|
|
||||||
{
|
|
||||||
public interface IJobEkMaskService : IBaseService<JobEkMask>
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -36,166 +36,166 @@ namespace PARR.JobAutoControl
|
|||||||
|
|
||||||
public async Task StartAsync()
|
public async Task StartAsync()
|
||||||
{
|
{
|
||||||
logger.LogInformation("Запуск сервиса управления авто-контролем РР (JobAutoControl)");
|
//logger.LogInformation("Запуск сервиса управления авто-контролем РР (JobAutoControl)");
|
||||||
|
|
||||||
await intervalService.IntervalInitAsync(async () =>
|
//await intervalService.IntervalInitAsync(async () =>
|
||||||
{
|
|
||||||
using (var scope = serviceProvider.CreateScope())
|
|
||||||
{
|
|
||||||
var jobAutoControlService = scope.ServiceProvider.GetService<IJobAutoControlService>();
|
|
||||||
var mqService = scope.ServiceProvider.GetService<IMqService>();
|
|
||||||
|
|
||||||
if (jobAutoControlService == null || mqService == null)
|
|
||||||
throw new Exception($"Не смог получить серивс {nameof(IJobAutoControlService)} или {nameof(IMqService)}");
|
|
||||||
|
|
||||||
await HandlerAsync(jobAutoControlService, mqService);
|
|
||||||
}
|
|
||||||
}, workerSettings.RepeatEvery);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private async Task HandlerAsync(IJobAutoControlService jobAutoControlService, IMqService mqService)
|
|
||||||
{
|
|
||||||
await GenerateAsync(jobAutoControlService, mqService);
|
|
||||||
await DeactivateAsync(jobAutoControlService, mqService);
|
|
||||||
await ActivateAsync(jobAutoControlService, mqService);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Генерировать новые РР
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="jobAutoControlService"></param>
|
|
||||||
/// <param name="mqService"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
private async Task GenerateAsync(IJobAutoControlService jobAutoControlService, IMqService mqService)
|
|
||||||
{
|
|
||||||
var jobsToGenerate = await jobAutoControlService.Get()
|
|
||||||
.Include(t => t.JobEkMasks)
|
|
||||||
.Include(t => t.JobAutoControlInEkStatuses)
|
|
||||||
.Include(t => t.ApplicationsInWork)
|
|
||||||
.Where(t => t.CreateNew && t.JobEkMasks.Any() && t.JobAutoControlInEkStatuses.Any())
|
|
||||||
.ToListAsync();
|
|
||||||
|
|
||||||
logger.LogInformation($"Найдено РР с включенным авто-контролем для генерации шаблонов и расписаний: {jobsToGenerate.Count()} шт.");
|
|
||||||
|
|
||||||
if (!jobsToGenerate.Any())
|
|
||||||
return;
|
|
||||||
|
|
||||||
|
|
||||||
jobsToGenerate.ForEach(job =>
|
|
||||||
{
|
|
||||||
job.JobEkMasks.ToList().ForEach(ek =>
|
|
||||||
{
|
|
||||||
//todo: проверить, нормально ли отрабатывает async в Foreach
|
|
||||||
job.JobAutoControlInEkStatuses.ToList().ForEach(async ekStatus =>
|
|
||||||
{
|
|
||||||
var request = new GeneratorTemplateMq
|
|
||||||
{
|
|
||||||
Action = "create",
|
|
||||||
ApplicationId = job.ApplicationsInWork!.ApplicationId,
|
|
||||||
Ek = ek.Name,
|
|
||||||
WorkId = job.ApplicationsInWork!.WorkId,
|
|
||||||
StatusEk = ekStatus.EkStatusCode,
|
|
||||||
IsActiveTemplate = job.OnTemplateIsActive,
|
|
||||||
IsActiveSchedule = job.OnScheduleIsActive,
|
|
||||||
HistoryInitiator = new HistoryInitiator { InitiatorComment = "Запрос на генерацию с авто-контроля", InitiatorParrComponentId = ParrComponentsEnum.JobAutoControl }
|
|
||||||
};
|
|
||||||
|
|
||||||
var msg = JsonSerializer.Serialize(request);
|
|
||||||
|
|
||||||
var result = await mqService.SendAsync(mqSettings.Generator, new[] { msg });
|
|
||||||
|
|
||||||
if (result.IsSuccess)
|
|
||||||
logger.LogInformation($"Отправлен запрос на генерацию: {msg}");
|
|
||||||
else
|
|
||||||
logger.LogError($"Ошибка при отправке запроса на генерацию: {msg}");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Деактивировать РР
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="jobAutoControlService"></param>
|
|
||||||
/// <param name="mqService"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
private async Task DeactivateAsync(IJobAutoControlService jobAutoControlService, IMqService mqService)
|
|
||||||
{
|
|
||||||
//var jobsToDeactivate = await jobAutoControlService.Get()
|
|
||||||
// .Include(t => t.JobEkMasks)
|
|
||||||
// .Include(t => t.JobAutoControlInEkStatuses)
|
|
||||||
// .Where(t => t.Deactivate && t.JobEkMasks.Any() && t.JobAutoControlInEkStatuses.Any())
|
|
||||||
// .Select(t => t.ApplicationInWorkId)
|
|
||||||
// .ToListAsync();
|
|
||||||
|
|
||||||
//logger.LogInformation($"Найдено РР с включенным авто-контролем для деактивации шаблонов и расписаний: {jobsToDeactivate.Count()} шт.");
|
|
||||||
|
|
||||||
//if (!jobsToDeactivate.Any())
|
|
||||||
// return;
|
|
||||||
|
|
||||||
////todo: проверить, нормально ли отрабатывает async в foreach
|
|
||||||
//jobsToDeactivate.ForEach(async applicationInWorkId =>
|
|
||||||
//{
|
//{
|
||||||
// var request = new TemplateActivatorMq
|
// using (var scope = serviceProvider.CreateScope())
|
||||||
// {
|
// {
|
||||||
// Action = TemplateActivatorActionsEnum.DeactivateAllForAutoControl,
|
// var jobAutoControlService = scope.ServiceProvider.GetService<IJobAutoControlService>();
|
||||||
// JobId = applicationInWorkId,
|
// var mqService = scope.ServiceProvider.GetService<IMqService>();
|
||||||
// HistoryInitiator = new HistoryInitiator { InitiatorComment = "Запрос на деактивацию с авто-контроля", InitiatorParrComponentId = ParrComponentsEnum.JobAutoControl }
|
|
||||||
// };
|
|
||||||
|
|
||||||
// var msg = JsonSerializer.Serialize(request);
|
// if (jobAutoControlService == null || mqService == null)
|
||||||
|
// throw new Exception($"Не смог получить серивс {nameof(IJobAutoControlService)} или {nameof(IMqService)}");
|
||||||
|
|
||||||
// var result = await mqService.SendAsync(mqSettings.Activator, new[] { msg });
|
// await HandlerAsync(jobAutoControlService, mqService);
|
||||||
|
// }
|
||||||
// if (result.IsSuccess)
|
//}, workerSettings.RepeatEvery);
|
||||||
// logger.LogInformation($"Отправлен запрос на деактивацию: {msg}");
|
|
||||||
// else
|
|
||||||
// logger.LogError($"Ошибка при отправке запроса на деактивацию: {msg}");
|
|
||||||
//});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
//private async Task HandlerAsync(IJobAutoControlService jobAutoControlService, IMqService mqService)
|
||||||
/// Активировать РР
|
//{
|
||||||
/// </summary>
|
// await GenerateAsync(jobAutoControlService, mqService);
|
||||||
/// <param name="jobAutoControlService"></param>
|
// await DeactivateAsync(jobAutoControlService, mqService);
|
||||||
/// <param name="mqService"></param>
|
// await ActivateAsync(jobAutoControlService, mqService);
|
||||||
/// <returns></returns>
|
//}
|
||||||
private async Task ActivateAsync(IJobAutoControlService jobAutoControlService, IMqService mqService)
|
|
||||||
{
|
|
||||||
// var jobsToActivate = await jobAutoControlService.Get()
|
///// <summary>
|
||||||
|
///// Генерировать новые РР
|
||||||
|
///// </summary>
|
||||||
|
///// <param name="jobAutoControlService"></param>
|
||||||
|
///// <param name="mqService"></param>
|
||||||
|
///// <returns></returns>
|
||||||
|
//private async Task GenerateAsync(IJobAutoControlService jobAutoControlService, IMqService mqService)
|
||||||
|
//{
|
||||||
|
// var jobsToGenerate = await jobAutoControlService.Get()
|
||||||
// .Include(t => t.JobEkMasks)
|
// .Include(t => t.JobEkMasks)
|
||||||
// .Include(t => t.JobAutoControlInEkStatuses)
|
// .Include(t => t.JobAutoControlInEkStatuses)
|
||||||
// .Where(t => t.Activate && t.JobEkMasks.Any() && t.JobAutoControlInEkStatuses.Any())
|
// .Include(t => t.ApplicationsInWork)
|
||||||
// .Select(t => t.ApplicationInWorkId)
|
// .Where(t => t.CreateNew && t.JobEkMasks.Any() && t.JobAutoControlInEkStatuses.Any())
|
||||||
// .ToListAsync();
|
// .ToListAsync();
|
||||||
|
|
||||||
// if (!jobsToActivate.Any())
|
// logger.LogInformation($"Найдено РР с включенным авто-контролем для генерации шаблонов и расписаний: {jobsToGenerate.Count()} шт.");
|
||||||
|
|
||||||
|
// if (!jobsToGenerate.Any())
|
||||||
// return;
|
// return;
|
||||||
|
|
||||||
// //todo: проверить, нормально ли отрабатывает async в foreach
|
|
||||||
// jobsToActivate.ForEach(async applicationInWorkId =>
|
// jobsToGenerate.ForEach(job =>
|
||||||
// {
|
// {
|
||||||
// var request = new TemplateActivatorMq
|
// job.JobEkMasks.ToList().ForEach(ek =>
|
||||||
// {
|
// {
|
||||||
// Action = TemplateActivatorActionsEnum.ActivateAllForAutoControl,
|
// //todo: проверить, нормально ли отрабатывает async в Foreach
|
||||||
// JobId = applicationInWorkId,
|
// job.JobAutoControlInEkStatuses.ToList().ForEach(async ekStatus =>
|
||||||
// HistoryInitiator = new HistoryInitiator { InitiatorComment = "Запрос на активацию с авто-контроля", InitiatorParrComponentId = ParrComponentsEnum.JobAutoControl }
|
// {
|
||||||
|
// var request = new GeneratorTemplateMq
|
||||||
|
// {
|
||||||
|
// Action = "create",
|
||||||
|
// ApplicationId = job.ApplicationsInWork!.ApplicationId,
|
||||||
|
// Ek = ek.Name,
|
||||||
|
// WorkId = job.ApplicationsInWork!.WorkId,
|
||||||
|
// StatusEk = ekStatus.EkStatusCode,
|
||||||
|
// IsActiveTemplate = job.OnTemplateIsActive,
|
||||||
|
// IsActiveSchedule = job.OnScheduleIsActive,
|
||||||
|
// HistoryInitiator = new HistoryInitiator { InitiatorComment = "Запрос на генерацию с авто-контроля", InitiatorParrComponentId = ParrComponentsEnum.JobAutoControl }
|
||||||
// };
|
// };
|
||||||
|
|
||||||
// var msg = JsonSerializer.Serialize(request);
|
// var msg = JsonSerializer.Serialize(request);
|
||||||
|
|
||||||
// var result = await mqService.SendAsync(mqSettings.Activator, new[] { msg });
|
// var result = await mqService.SendAsync(mqSettings.Generator, new[] { msg });
|
||||||
|
|
||||||
// if (result.IsSuccess)
|
// if (result.IsSuccess)
|
||||||
// logger.LogInformation($"Отправлен запрос на активацию: {msg}");
|
// logger.LogInformation($"Отправлен запрос на генерацию: {msg}");
|
||||||
// else
|
// else
|
||||||
// logger.LogError($"Ошибка при отправке запроса на активацию: {msg}");
|
// logger.LogError($"Ошибка при отправке запроса на генерацию: {msg}");
|
||||||
// });
|
// });
|
||||||
}
|
// });
|
||||||
|
// });
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
///// <summary>
|
||||||
|
///// Деактивировать РР
|
||||||
|
///// </summary>
|
||||||
|
///// <param name="jobAutoControlService"></param>
|
||||||
|
///// <param name="mqService"></param>
|
||||||
|
///// <returns></returns>
|
||||||
|
//private async Task DeactivateAsync(IJobAutoControlService jobAutoControlService, IMqService mqService)
|
||||||
|
//{
|
||||||
|
// //var jobsToDeactivate = await jobAutoControlService.Get()
|
||||||
|
// // .Include(t => t.JobEkMasks)
|
||||||
|
// // .Include(t => t.JobAutoControlInEkStatuses)
|
||||||
|
// // .Where(t => t.Deactivate && t.JobEkMasks.Any() && t.JobAutoControlInEkStatuses.Any())
|
||||||
|
// // .Select(t => t.ApplicationInWorkId)
|
||||||
|
// // .ToListAsync();
|
||||||
|
|
||||||
|
// //logger.LogInformation($"Найдено РР с включенным авто-контролем для деактивации шаблонов и расписаний: {jobsToDeactivate.Count()} шт.");
|
||||||
|
|
||||||
|
// //if (!jobsToDeactivate.Any())
|
||||||
|
// // return;
|
||||||
|
|
||||||
|
// ////todo: проверить, нормально ли отрабатывает async в foreach
|
||||||
|
// //jobsToDeactivate.ForEach(async applicationInWorkId =>
|
||||||
|
// //{
|
||||||
|
// // var request = new TemplateActivatorMq
|
||||||
|
// // {
|
||||||
|
// // Action = TemplateActivatorActionsEnum.DeactivateAllForAutoControl,
|
||||||
|
// // JobId = applicationInWorkId,
|
||||||
|
// // HistoryInitiator = new HistoryInitiator { InitiatorComment = "Запрос на деактивацию с авто-контроля", InitiatorParrComponentId = ParrComponentsEnum.JobAutoControl }
|
||||||
|
// // };
|
||||||
|
|
||||||
|
// // var msg = JsonSerializer.Serialize(request);
|
||||||
|
|
||||||
|
// // var result = await mqService.SendAsync(mqSettings.Activator, new[] { msg });
|
||||||
|
|
||||||
|
// // if (result.IsSuccess)
|
||||||
|
// // logger.LogInformation($"Отправлен запрос на деактивацию: {msg}");
|
||||||
|
// // else
|
||||||
|
// // logger.LogError($"Ошибка при отправке запроса на деактивацию: {msg}");
|
||||||
|
// //});
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
///// <summary>
|
||||||
|
///// Активировать РР
|
||||||
|
///// </summary>
|
||||||
|
///// <param name="jobAutoControlService"></param>
|
||||||
|
///// <param name="mqService"></param>
|
||||||
|
///// <returns></returns>
|
||||||
|
//private async Task ActivateAsync(IJobAutoControlService jobAutoControlService, IMqService mqService)
|
||||||
|
//{
|
||||||
|
// // var jobsToActivate = await jobAutoControlService.Get()
|
||||||
|
// // .Include(t => t.JobEkMasks)
|
||||||
|
// // .Include(t => t.JobAutoControlInEkStatuses)
|
||||||
|
// // .Where(t => t.Activate && t.JobEkMasks.Any() && t.JobAutoControlInEkStatuses.Any())
|
||||||
|
// // .Select(t => t.ApplicationInWorkId)
|
||||||
|
// // .ToListAsync();
|
||||||
|
|
||||||
|
// // if (!jobsToActivate.Any())
|
||||||
|
// // return;
|
||||||
|
|
||||||
|
// // //todo: проверить, нормально ли отрабатывает async в foreach
|
||||||
|
// // jobsToActivate.ForEach(async applicationInWorkId =>
|
||||||
|
// // {
|
||||||
|
// // var request = new TemplateActivatorMq
|
||||||
|
// // {
|
||||||
|
// // Action = TemplateActivatorActionsEnum.ActivateAllForAutoControl,
|
||||||
|
// // JobId = applicationInWorkId,
|
||||||
|
// // HistoryInitiator = new HistoryInitiator { InitiatorComment = "Запрос на активацию с авто-контроля", InitiatorParrComponentId = ParrComponentsEnum.JobAutoControl }
|
||||||
|
// // };
|
||||||
|
|
||||||
|
// // var msg = JsonSerializer.Serialize(request);
|
||||||
|
|
||||||
|
// // var result = await mqService.SendAsync(mqSettings.Activator, new[] { msg });
|
||||||
|
|
||||||
|
// // if (result.IsSuccess)
|
||||||
|
// // logger.LogInformation($"Отправлен запрос на активацию: {msg}");
|
||||||
|
// // else
|
||||||
|
// // logger.LogError($"Ошибка при отправке запроса на активацию: {msg}");
|
||||||
|
// // });
|
||||||
|
//}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,9 @@ namespace PARR.TemplateTaskGenerator
|
|||||||
|
|
||||||
public async Task GenerateTemplateTaskAsync(Guid jobId)
|
public async Task GenerateTemplateTaskAsync(Guid jobId)
|
||||||
{
|
{
|
||||||
var unitIdsToCreateTemplate = await unitFilterService.GetUnitsIdByJobFilterWithTemplateStatusAsync(jobId,false);
|
//var unitIdsToCreateTemplate = await unitFilterService.GetUnitsIdByJobFilterWithTemplateStatusAsync(jobId, false);
|
||||||
|
//todo: !!!!!!!! исправить в этом месте !!!!!!!!
|
||||||
|
IEnumerable<Guid>? unitIdsToCreateTemplate = null;
|
||||||
|
|
||||||
if (unitIdsToCreateTemplate == null || !unitIdsToCreateTemplate.Any())
|
if (unitIdsToCreateTemplate == null || !unitIdsToCreateTemplate.Any())
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user