using System.Threading.Tasks;
using System.Collections.Generic;
using NPP.SmartSchedue.Api.Contracts.Domain.Personnel;
using ZhonTai.Admin.Core.Dto;
using NPP.SmartSchedue.Api.Contracts.Services.Personnel.Input;
using NPP.SmartSchedue.Api.Contracts.Services.Personnel.Output;
using System;
namespace NPP.SmartSchedue.Api.Contracts.Services.Personnel;
///
/// 人员资质绑定服务接口
///
public interface IPersonnelQualificationService
{
Task GetAsync(long id);
Task> GetPageAsync(PageInput input);
Task AddAsync(PersonnelQualificationAddInput input);
Task UpdateAsync(PersonnelQualificationUpdateInput input);
Task DeleteAsync(long id);
Task SoftDeleteAsync(long id);
Task BatchSoftDeleteAsync(long[] ids);
///
/// 根据资质ID列表获取具有这些资质的人员基础信息列表(ID + 姓名)
///
/// 资质ID列表
///
Task> GetPersonnelIdsByQualificationIdsAsync(long[] qualificationIds);
///
/// 根据资质ID字符串(逗号分隔)获取具有这些资质的人员基础信息列表(ID + 姓名)
///
/// 资质ID字符串,使用逗号分隔
///
Task> GetPersonnelIdsByQualificationIdsAsync(string qualificationIds);
///
/// 根据人员ID获取其所有有效资质信息
///
/// 人员ID
///
Task> GetActiveQualificationsByPersonnelIdAsync(long personnelId);
///
/// 获取所有有资质记录的人员列表(用于人员池构建)
/// 深度业务思考:从资质表获取所有关联人员,确保智能分配系统的人员池完整性
///
/// 所有有资质记录的人员资质信息
Task> GetAllPersonnelWithQualificationsAsync();
///
/// 根据人员ID获取其所有资质记录(包括无效的)
///
/// 人员ID
/// 人员的所有资质记录
Task> GetByPersonnelIdAsync(long personnelId);
///
/// 根据人员ID获取其所有有效的资质实体列表(用于智能分配系统资质匹配)
/// 深度业务思考:智能分配系统需要完整的资质实体信息进行精确匹配计算
///
/// 人员ID
/// 人员有效资质实体列表
Task> GetPersonnelQualificationsAsync(long personnelId);
///
/// 获取人员资质统计信息(横坐标为资质,纵坐标为人员数量)
///
/// 人员资质统计结果
Task GetPersonnelQualificationStatisticsAsync();
///
/// 获取即将过期的资质列表
///
///
///
///
///
Task> GetExpiringAsync(DateTime today, IList personnelIds = null, bool includeExpired = false);
}