package com.cool.bang.modules.approval.mapper;

import com.cool.bang.common.base.BaseMapper;
import com.cool.bang.modules.approval.domain.po.ApprovalNode;
import com.cool.bang.modules.approval.domain.po.CompositeNode;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 审批节点 mapper 接口层
 *
 * @author PeiZhi Guo
 * 2022-08-15 15:48
 */
@Repository
public interface ApprovalNodeMapper extends BaseMapper<ApprovalNode> {

    /**
     * 根据流程主键查询 (开始节点)
     *
     * Param flowId
     * Return
     */
    ApprovalNode selectStartNodeByFlowId(Long flowId);

    /**
     * 根据流程主键查询 (所有节点)
     *
     * Param flowNumber
     * Return list
     */
    List<ApprovalNode> selectByFlowNumber(String flowNumber);

    /**
     * 根据主键查询 (当前节点)
     *
     * Param flowNumber
     * Return list
     */
    CompositeNode selectNodeById(Long id);

    /**
     * 根据主键查询 (上一节点)
     *
     * Param flowNumber
     * Return list
     */
    CompositeNode selectPrevNodeById(Long id);

    /**
     * 根据编码查询流程
     */
    ApprovalNode queryByNumber(String number);


    /**
     * 根据流程主键、审核人查询节点
     *
     * Param type
     * Param examineBy
     * Return
     */
    ApprovalNode selectByExamineBy(@Param("type") Integer type, @Param("examineBy")Long examineBy);
}


