using System; using System.Collections.Generic; using System.Threading.Tasks; using NPP.SmartSchedue.Api.Contracts.Domain.Work; using NPP.SmartSchedue.Api.Contracts.Core.Enums; using ZhonTai.Admin.Core.Repositories; namespace NPP.SmartSchedue.Api.Contracts.Domain.Work; /// /// 工作任务仓储接口 /// public interface IWorkOrderRepository : IRepositoryBase { /// /// 根据日期获取工作任务列表 /// /// 日期 /// 工作任务列表 Task> GetByDateAsync(DateTime date); /// /// 根据人员ID和日期范围获取工作任务列表 /// /// 人员ID /// 开始日期 /// 结束日期 /// 工作任务列表 Task> GetByPersonnelAndDateRangeAsync(long personnelId, DateTime startDate, DateTime endDate); /// /// 根据状态获取工作任务列表 /// /// 任务状态 /// 工作任务列表 Task> GetByStatusAsync(WorkOrderStatusEnum status); /// /// 根据班次ID获取工作任务列表 /// /// 班次ID /// 日期 /// 工作任务列表 Task> GetByShiftAndDateAsync(long shiftId, DateTime date); /// /// 根据工序ID获取工作任务列表 /// /// 工序ID /// 开始日期 /// 结束日期 /// 工作任务列表 Task> GetByProcessAndDateRangeAsync(long processId, DateTime startDate, DateTime endDate); /// /// 检查任务代码是否存在 /// /// 任务代码 /// 排除的ID /// 是否存在 Task ExistsWorkOrderCodeAsync(string workOrderCode, long? excludeId = null); /// /// 生成任务代码 /// /// 项目号 /// 班次代码 /// 工序代码 /// 任务代码 string GenerateWorkOrderCode(string projectNumber, string shiftCode, string processCode); /// /// 获取人员在指定日期范围内的任务数量 /// /// 人员ID /// 开始日期 /// 结束日期 /// 任务数量 Task GetPersonnelTaskCountByDateRangeAsync(long personnelId, DateTime startDate, DateTime endDate); }