package com.chinaweal.aiccs.aiccs.business.service;

import com.chinaweal.aiccs.aiccs.business.entity.TSTwfProcessNode;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.BaseService;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 流程实例节点 服务类
 * </p>
 *
 * @author <a href="https://blog.lroyia.top">lroyia</a>
 * @since 2021-01-29
 */
public interface TSTwfProcessNodeService extends BaseService<TSTwfProcessNode> {

    /**
     * 通过流程节点id和状态查询流程节点
     * @param status 状态
     * @param processId id
     * @return 节点对象
     * @author lroyia
     * @since 2021年1月29日 15:48:59
     */
    TSTwfProcessNode findTwfProcessNodeByProcessidAndStatus(String processId, int status);

    /**
     * 通过流程id查询节点列表
     * @param processId 流程id
     * @return 查询结果
     * @author lroyia
     * @since 2021年1月29日 15:53:56
     */
    List<TSTwfProcessNode> findTwfProcessNodeByProcessid(String processId);

    /**
     * 通过processId和节点名称查询流程节点
     * @param nodeName 节点名称
     * @param processId 流程id
     * @return 查询结果
     * @author lroyia
     * @since 2021年1月29日 16:08:27
     */
    List<TSTwfProcessNode> findTwfprocessnodeByProcessidAndNodename(String processId, String nodeName);

    /**
     * 通过流程id删除流程节点
     * @param processId 流程id
     * @author lroyia
     * @since 2021年1月29日 16:24:16
     */
    void deleteTwfprocessnodeByProcessid(String processId);

    /**
     * 通过processId、当前节点名称和回退节点名称获取回退到的用户id
     * @param processId
     * @param currentNode
     * @param nextNode
     * @return
     */
    String findLastTwfprocessnodeByProcessidAndNodename(String processId, String currentNode,String nextNode);

    List<TSTwfProcessNode> queryByPROCESSIDAndCURRENTNODE(String PROCESSID, String CURRENTNODE);

    String queryRealName(String userID);

    TSTwfProcessNode queryByPROCESSID(String PROCESSID);
}
