package com.sundot.airport.system.mapper.approval;

import java.util.List;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sundot.airport.system.domain.approval.ApprovalHistory;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 审批历史Mapper接口
 *
 * @author simon lin
 * @date 2025-09-06
 */
@Mapper
public interface ApprovalHistoryMapper extends BaseMapper<ApprovalHistory> {
    /**
     * 查询审批历史
     *
     * @param id 审批历史主键
     * @return 审批历史
     */
    ApprovalHistory selectApprovalHistoryById(Long id);

    /**
     * 根据实例ID查询审批历史列表
     *
     * @param instanceId 实例ID
     * @return 审批历史列表
     */
    List<ApprovalHistory> selectApprovalHistoryByInstanceId(@Param("instanceId") Long instanceId);

    /**
     * 根据任务ID查询审批历史列表
     *
     * @param taskId 任务ID
     * @return 审批历史列表
     */
    List<ApprovalHistory> selectApprovalHistoryByTaskId(@Param("taskId") Long taskId);

    /**
     * 根据操作人ID查询审批历史列表
     *
     * @param operatorId 操作人ID
     * @param action     操作类型
     * @return 审批历史列表
     */
    List<ApprovalHistory> selectApprovalHistoryByOperator(@Param("operatorId") Long operatorId, @Param("action") String action);

    /**
     * 查询审批历史列表
     *
     * @param approvalHistory 审批历史
     * @return 审批历史集合
     */
    List<ApprovalHistory> selectApprovalHistoryList(ApprovalHistory approvalHistory);

    /**
     * 新增审批历史
     *
     * @param approvalHistory 审批历史
     * @return 结果
     */
    int insertApprovalHistory(ApprovalHistory approvalHistory);

    /**
     * 修改审批历史
     *
     * @param approvalHistory 审批历史
     * @return 结果
     */
    int updateApprovalHistory(ApprovalHistory approvalHistory);

    /**
     * 删除审批历史
     *
     * @param id 审批历史主键
     * @return 结果
     */
    int deleteApprovalHistoryById(Long id);

    /**
     * 批量删除审批历史
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteApprovalHistoryByIds(Long[] ids);

    /**
     * 根据实例ID删除审批历史
     *
     * @param instanceId 实例ID
     * @return 结果
     */
    int deleteApprovalHistoryByInstanceId(@Param("instanceId") Long instanceId);
}