package com.zg.project.wisdom.service;

import java.util.List;
import com.zg.project.wisdom.domain.AuditSignature;
import com.zg.project.wisdom.domain.vo.AuditSignatureReviewVO;

/**
 * 审批记录Service接口
 * 
 * @author zg
 * @date 2025-07-11
 */
public interface IAuditSignatureService 
{
    /**
     * 查询审批记录
     * 
     * @param id 审批记录主键
     * @return 审批记录
     */
    public AuditSignature selectAuditSignatureById(Long id);

    /**
     * 查询审批记录列表
     * 
     * @param auditSignature 审批记录
     * @return 审批记录集合
     */
    public List<AuditSignature> selectAuditSignatureList(AuditSignature auditSignature);


    /**
     * 修改审批记录
     * 
     * @param auditSignature 审批记录
     * @return 结果
     */
    public int updateAuditSignature(AuditSignature auditSignature);

    /**
     * 批量删除审批记录
     * 
     * @param ids 需要删除的审批记录主键集合
     * @return 结果
     */
    public int deleteAuditSignatureByIds(Long[] ids);

    /**
     * 删除审批记录信息
     * 
     * @param id 审批记录主键
     * @return 结果
     */
    public int deleteAuditSignatureById(Long id);

    /**
     * 查询待审核的申请
     * @param approverId
     * @return
     */
    int countPendingByUser(String approverId);

    /**
     * 审批申请
     * @param audit
     */
    void audit(AuditSignature audit);

    /**
     * 查询审批记录列表
     *
     * @param auditSignature 审批记录
     * @return 审批记录集合
     */
    List<AuditSignatureReviewVO> selectAuditSignatureReviewList(AuditSignature auditSignature);

    /**
     * 查询我提交的审批列表
     *
     * @param auditSignature 审批记录
     * @return 审批记录集合
     */
    List<AuditSignatureReviewVO> selectMySubmittedAuditList(AuditSignature auditSignature);

    /**
     * 审批
     * @param auditSignature
     * @return
     */
    int approveAuditSignature(AuditSignature auditSignature);
}
