package digital.laboratory.platform.imr.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import digital.laboratory.platform.common.mybatis.security.service.DLPUser;
import digital.laboratory.platform.imr.dto.QueryApplyDTO;
import digital.laboratory.platform.imr.dto.ReviewApprovalDTO;
import digital.laboratory.platform.imr.entity.SampleApply;
import digital.laboratory.platform.imr.vo.SampleApplyVO;

public interface ReviewApprovalService {
    /**
     * 一级审核
     *
     * @param dto
     * @param sampleApply
     * @param dlpUser
     * @return
     */
    SampleApplyVO firstAudit(ReviewApprovalDTO dto, SampleApply sampleApply, DLPUser dlpUser);

    /**
     * 二级审核
     *
     * @param dto
     * @param sampleApply
     * @param dlpUser
     * @return
     */
    SampleApplyVO secondaryAudit(ReviewApprovalDTO dto, SampleApply sampleApply, DLPUser dlpUser);


    /**
     * 审批
     *
     * @param dto
     * @param sampleApply
     * @param dlpUser
     * @return
     */
    SampleApplyVO approval(ReviewApprovalDTO dto, SampleApply sampleApply, DLPUser dlpUser);

    /**
     * 获取审核分页列表
     *
     * 根据查询参数和当前用户的权限，返回对应的审核分页列表。
     *
     * @param dto     查询申请DTO对象，包含分页和查询条件参数
     * @param dlpUser 当前用户信息，用于判断权限
     * @return        审核分页列表对象，包含查询结果和分页信息
     */
    IPage<SampleApplyVO> auditPage(QueryApplyDTO dto, DLPUser dlpUser);
}
