package com.ruoyi.cs.service;

import com.ruoyi.cs.domain.CsApprovalConfig;
import com.ruoyi.cs.domain.CsApprovalInfo;

import java.util.List;

/**
 * 审核流程发起Service接口
 *
 * @author cc
 * @date 2024-04-30
 */
public interface ICsApprovalInfoService
{
    /**
     * 查询审核流程发起
     *
     * @param approvalInfoId 审核流程发起主键
     * @return 审核流程发起
     */
    public CsApprovalInfo selectCsApprovalInfoByApprovalInfoId(String approvalInfoId);
    /**
     * 查询审核流程发起
     *
     * @param formId 审核流程发起主键
     * @return 审核流程发起
     */
    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 approvalInfoIds 需要删除的审核流程发起主键集合
     * @return 结果
     */
    public int deleteCsApprovalInfoByApprovalInfoIds(String[] approvalInfoIds);

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

    /**
     * 根据审核配置新增审核发起
     * @param config 审核配置节点
     * @return
     */
    public int insertInfo(CsApprovalConfig config);

    /**
     * 覆盖删除 申请单的审核流程节点规则配置
     * @param formId 资源/工单 ID
     * @param formType 申请单类型(0-资源, 1-工单)
     * @return 结果
     */
    public int deleteCoverApprovalInfoByApplyIdType(String formId, String formType);
    public int deleteCoverApprovalInfoByApplyId(String formId);

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

    /**
     * 删除审核流程发起信息
     *
     * @param approvalConfigId 审核流程发起主键
     * @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);

}
