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; } } }