using YBEE.EQM.Application;
using YBEE.EQM.Core;

namespace YBEE.EQM.Application;

/// <summary>
/// 监测计划管理服务
/// </summary>
public interface IExamPlanService
{
    /// <summary>
    /// 添加监测计划
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task Add(AddExamPlanInput input);
    /// <summary>
    /// 更新监测计划
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task Update(UpdateExamPlanInput input);
    /// <summary>
    /// 删除监测计划
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task Del(BaseId input);
    /// <summary>
    /// 开始监测
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task Start(BaseId input);
    /// <summary>
    /// 结束监测
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task Stop(BaseId input);
    /// <summary>
    /// 取消监测
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task Cancel(BaseId input);
    /// <summary>
    /// 根据ID获取监测计划
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    Task<ExamPlanOutput> GetById(int id);
    /// <summary>
    /// 获取最近5个抽测参照成绩监测计划
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    Task<List<ExamPlanOutput>> GetSampleRefPlanList(int id);
    /// <summary>
    /// 分页查询监测计划列表
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task<PageResult<ExamPlanOutput>> QueryPageList(ExamPlanPageInput input);
    /// <summary>
    /// 获取我的单据状态数量
    /// </summary>
    /// <returns></returns>
    Task<List<StatusCount>> QueryStatusCount(ExamPlanPageInput input);
}
