package com.ruoyi.cs.mapper;

import com.ruoyi.cs.domain.CsApprovalConfig;
import com.ruoyi.cs.domain.CsApprovalInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 审核流程发起Mapper接口
 *
 * @author cc
 * @date 2024-04-30
 */
public interface CsApprovalInfoMapper
{
    /**
     * 查询审核流程发起
     *
     * @param approvalInfoId 审核流程发起主键
     * @return 审核流程发起
     */
    public CsApprovalInfo selectCsApprovalInfoByApprovalInfoId(String approvalInfoId);

    public CsApprovalInfo selectCsApprovalInfoByFormId(String formId);
    /**
     * 查询审核流程发起列表
     *
     * @param csApprovalInfo 审核流程发起
     * @return 审核流程发起集合
     */
    public List<CsApprovalInfo> selectCsApprovalInfoList(CsApprovalInfo csApprovalInfo);

    /**
     * 新增审核流程发起
     *
     * @param csApprovalInfo 审核流程发起
     * @return 结果
     */
    public int insertCsApprovalInfo(CsApprovalInfo csApprovalInfo);

    /**
     * 修改审核流程发起
     *
     * @param csApprovalInfo 审核流程发起
     * @return 结果
     */
    public int updateCsApprovalInfo(CsApprovalInfo csApprovalInfo);

    /**
     * 删除审核流程发起
     *
     * @param approvalInfoId 审核流程发起主键
     * @return 结果
     */
    public int deleteCsApprovalInfoByApprovalInfoId(String approvalInfoId);

    /**
     * 批量删除审核流程发起
     *
     * @param approvalInfoIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCsApprovalInfoByApprovalInfoIds(String[] approvalInfoIds);

    /**
     * 查询审核流程发起上一节点
     *
     * @param processProgress 上一节点
     * @param configGroupId 上一节点组ID
     * @return 审核流程发起
     */
    public CsApprovalInfo selectBeforeCsApprovalInfo(@Param("processProgress") Long processProgress, @Param("configGroupId")  String configGroupId );

    /**
     * 覆盖删除 申请单的审核流程发起
     * @param formId 资源/工单 ID
     * @param formType 申请单类型(0-资源, 1-工单)
     * @return 结果
     */
    public int deleteCoverApprovalInfoByApplyIdType(@Param("formId") String formId, @Param("formType") String formType);
    public int deleteCoverApprovalInfoByApplyId(@Param("formId") String formId);

    /**
     * 查询审核流程发起（表单ID、用户ID）
     *
     * @param formId 表单ID
     * @param userId 用户ID
     * @return 审核流程发起
     */
    public CsApprovalInfo selectCsApprovalInfoByFormIdUserId(@Param("formId") String formId, @Param("userId") Long userId);

    /**
     * 删除审核流程发起信息
     *
     * @param approvalConfigId 审核配置ID
     * @return 结果
     */
    public int deleteCsApprovalInfoByApprovalConfigId(String approvalConfigId);

    /**
     * 查询审核流程发起（审核配置ID）
     *
     * @param approvalConfigId 审核配置ID
     * @return 审核流程发起
     */
    public CsApprovalInfo selectCsApprovalInfoByApprovalConfigId(String approvalConfigId);

    /**
     * 批量删除审核流程发起信息
     *
     * @param list 审核配置
     * @return 结果
     */
    public int bachDeleteCsApprovalInfoByList(List<CsApprovalConfig> list);

    /**
     * 根据条件查询审核流程信息
     *
     * @param approvalInfoId
     * @return
     */
    CsApprovalInfo searchApprovalInfoByCondition(String approvalInfoId);

}
