using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using NPP.SmartSchedue.Api.Contracts.Domain.Work;
using NPP.SmartSchedue.Api.Core.Repositories;
using ZhonTai.Admin.Core.Db.Transaction;
namespace NPP.SmartSchedue.Api.Repositories.Work;
///
/// 工作任务FL人员关联仓储
///
public class WorkOrderFLPersonnelRepository : AppRepositoryBase, IWorkOrderFLPersonnelRepository
{
public WorkOrderFLPersonnelRepository(UnitOfWorkManagerCloud uowm) : base(uowm)
{
}
///
/// 根据工作任务ID获取FL人员列表
///
/// 工作任务ID
/// FL人员列表
public async Task> GetByWorkOrderIdAsync(long workOrderId)
{
return await Select
.Where(x => x.WorkOrderId == workOrderId)
.ToListAsync();
}
///
/// 根据FL人员ID获取工作任务列表
///
/// FL人员ID
/// 工作任务列表
public async Task> GetByPersonnelIdAsync(long flPersonnelId)
{
return await Select
.Where(x => x.FLPersonnelId == flPersonnelId)
.ToListAsync();
}
///
/// 批量添加工作任务FL人员关联
///
/// 工作任务ID
/// FL人员ID列表
/// FL人员姓名列表
/// 添加结果
public async Task BatchAddAsync(long workOrderId, List flPersonnelIds, List flPersonnelNames)
{
if (flPersonnelIds?.Any() != true)
return true;
try
{
var entities = new List();
for (int i = 0; i < flPersonnelIds.Count; i++)
{
entities.Add(new WorkOrderFLPersonnelEntity
{
WorkOrderId = workOrderId,
FLPersonnelId = flPersonnelIds[i],
FLPersonnelName = i < flPersonnelNames?.Count ? flPersonnelNames[i] : string.Empty
});
}
await InsertAsync(entities);
return true;
}
catch
{
return false;
}
}
///
/// 根据工作任务ID删除所有FL人员关联
///
/// 工作任务ID
/// 删除结果
public async Task DeleteByWorkOrderIdAsync(long workOrderId)
{
try
{
await DeleteAsync(x => x.WorkOrderId == workOrderId);
return true;
}
catch
{
return false;
}
}
///
/// 更新工作任务的FL人员关联
///
/// 工作任务ID
/// 新的FL人员ID列表
/// 新的FL人员姓名列表
/// 更新结果
public async Task UpdateByWorkOrderIdAsync(long workOrderId, List flPersonnelIds, List flPersonnelNames)
{
try
{
// 先删除现有关联
await DeleteByWorkOrderIdAsync(workOrderId);
// 再添加新关联
if (flPersonnelIds?.Any() == true)
{
await BatchAddAsync(workOrderId, flPersonnelIds, flPersonnelNames);
}
return true;
}
catch
{
return false;
}
}
}