using System.Collections.Generic; using System.Threading.Tasks; using NPP.SmartSchedue.Api.Contracts.Services.Work.Input; using NPP.SmartSchedue.Api.Contracts.Services.Work.Output; namespace NPP.SmartSchedue.Api.Contracts.Services.Work; /// /// 工作任务分配修改服务接口 /// 专门用于智能排班结果的手动修改功能 /// public interface IWorkOrderAssignmentService { /// /// 更新任务人员分配 /// /// 人员分配更新输入 /// 分配更新结果 Task UpdatePersonnelAssignmentAsync(WorkOrderPersonnelUpdateInput input); /// /// 更新任务设备分配 /// /// 设备分配更新输入 /// 分配更新结果 Task UpdateEquipmentAssignmentAsync(WorkOrderEquipmentUpdateInput input); /// /// 批量更新任务分配(支持人员和设备同时修改) /// /// 任务ID /// 人员分配输入(可为空) /// 设备分配输入(可为空) /// 分配更新结果 Task UpdateAssignmentAsync( long workOrderId, WorkOrderPersonnelUpdateInput personnelInput = null, WorkOrderEquipmentUpdateInput equipmentInput = null); /// /// 验证任务分配的合法性(不执行更新,仅验证) /// /// 任务ID /// 人员ID /// 设备ID /// FL人员ID列表 /// 验证结果 Task ValidateAssignmentAsync( long workOrderId, long? personnelId = null, long? equipmentId = null, List flPersonnelIds = null); /// /// 批量验证多个任务的分配修改 /// /// 分配修改请求列表 /// 批量验证结果 Task ValidateBatchAssignmentAsync( List assignmentRequests); /// /// 获取任务的可用人员列表(基于资质和时间约束) /// /// 任务ID /// 可用人员列表 Task GetAvailablePersonnelAsync(long workOrderId); /// /// 获取任务的可用设备列表(基于设备类型和时间约束) /// /// 任务ID /// 可用设备列表 Task GetAvailableEquipmentAsync(long workOrderId); }