feat(dal,templateMatcher): Shortcodes добавлены %МАКС:ИМЯ АТРИБУТА%, %ГР_ПОЛЕ-ПН%, %БУКВЫ:ИМЯ АТРИБУТА%, исправлена фильтрация в UnitFilter, TemplateMatcher отдельные классы для типов работ, Shortcodes теперь работает по своим моделям Dto
This commit is contained in:
@@ -4,6 +4,7 @@ using PARR.BLL.Domain.Mq;
|
||||
using PARR.Constants;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.DAL.Extensions;
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.Services.Interfaces;
|
||||
using PARR.DAL.Services.Interfaces.Job;
|
||||
using PARR.DAL.Services.Interfaces.Unit;
|
||||
@@ -45,6 +46,8 @@ namespace PARR.TemplateUpdater.Services
|
||||
|
||||
var template = await templateService.Get()
|
||||
.Include(t => t.RobotConfigurations)
|
||||
.Include(t => t.UnitsInTemplate)
|
||||
.AsSplitQuery()
|
||||
.FirstOrDefaultAsync(t => t.Id == query.TemplateId);
|
||||
if (template == null)
|
||||
{
|
||||
@@ -100,6 +103,37 @@ namespace PARR.TemplateUpdater.Services
|
||||
template.Index = query.Index;
|
||||
template.StatusTypeId = query.StatusTypeId;
|
||||
|
||||
// === Обработка изменения состава UnitsInTemplate ===
|
||||
var currentUnitIds = template.UnitsInTemplate.Select(u => u.UnitId).ToHashSet();
|
||||
var newUnitIds = query.UnitsInTemplate.ToHashSet();
|
||||
|
||||
if (!currentUnitIds.SetEquals(newUnitIds))
|
||||
{
|
||||
// Удаляем старые связи
|
||||
var toRemove = template.UnitsInTemplate
|
||||
.Where(u => !newUnitIds.Contains(u.UnitId))
|
||||
.ToList();
|
||||
|
||||
foreach (var item in toRemove)
|
||||
template.UnitsInTemplate.Remove(item);
|
||||
|
||||
// Добавляем новые связи
|
||||
var toAdd = newUnitIds.Except(currentUnitIds);
|
||||
foreach (var unitId in toAdd)
|
||||
{
|
||||
template.UnitsInTemplate.Add(new UnitsInTemplate
|
||||
{
|
||||
TemplateId = template.Id,
|
||||
UnitId = unitId,
|
||||
DateCreated = DateTimeOffset.UtcNow
|
||||
});
|
||||
}
|
||||
|
||||
// Поскольку коллекция изменилась — шаблон считается изменённым
|
||||
templateIsChanged = true;
|
||||
}
|
||||
// === конец обработки UnitsInTemplate ===
|
||||
|
||||
if (templateIsChanged)
|
||||
{
|
||||
// ставим задачу на обновление шаблона
|
||||
|
||||
Reference in New Issue
Block a user