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

import com.baomidou.mybatisplus.extension.service.IService;
import com.chinaweal.aiccs.aiccs.business.entity.XrOpinion;
import com.chinaweal.aiccs.aiccs.business.entity.XrTaskList;
import com.chinaweal.aiccs.aiccs.seriousillegalPerson.entity.dto.PersonSpeSaveIvdDto;
import com.chinaweal.aicorg.model.AICUser;

import java.util.List;

/**
 * <p>
 * 待办列表 服务类
 * </p>
 *
 * @author quebh
 * @since 2023-05-04
 */
public interface IXrTaskListService extends IService<XrTaskList> {

    /**
     * 通用流程控制
     *
     * @param opinion          处理意见
     * @param xrTaskList       当前业务
     * @param nextNodeID       下一步流程
     * @param nextPerformerIds 下一步操办人
     * @param permission       权限标识
     */
    void updateWorkFlow(XrOpinion opinion, XrTaskList xrTaskList, String nextNodeID, String[] nextPerformerIds, String permission);

    /**
     * 通用流程控制
     *
     * @param opinion    处理意见
     * @param xrTaskList 当前业务
     * @param nextNodeID 下一步流程
     * @param userList   下一步操办人
     * @param permission 权限标识
     */
    void updateWorkFlow(XrOpinion opinion, XrTaskList xrTaskList, String nextNodeID, List<AICUser> userList, String permission);

    /**
     * 自然人列严流程启动
     */
    void startWorkFlowPerson(XrTaskList xrTaskList, String[] nextPerformerIds, String permission, List<PersonSpeSaveIvdDto> personList);

    /**
     * 通用流程启动
     *
     * @param xrTaskList       当前业务
     * @param nextPerformerIds 下一步操办人
     * @param permission       权限标识
     * @param pripIdList
     * @return
     * @author ymc
     * @since 2024年3月8日 15:24
     */
    String startWorkFlow(XrTaskList xrTaskList, String[] nextPerformerIds, String permission, List<String> pripIdList
            , AICUser user);

    /**
     * 通用流程启动
     *
     * @param xrTaskList       当前业务
     * @param nextPerformerIds 下一步操办人
     * @param permission       权限标识
     * @param pripIdList
     * @return
     * @author ymc
     * @since 2024年3月8日 15:24
     */
    String startWorkFlow(XrTaskList xrTaskList, String[] nextPerformerIds, String permission, List<String> pripIdList);

    /**
     * 通用流程启动
     *
     * @param xrTaskList 当前业务
     * @param userList   下一步操办人
     * @param permission 权限标识
     * @return
     * @author ymc
     * @since 2024年3月13日 13:40
     */
    String startWorkFlow(XrTaskList xrTaskList, List<AICUser> userList, String permission, List<String> pripIdList);

    /**
     * 通用流程启动
     *
     * @param xrTaskList 当前业务
     * @param userList   下一步操办人
     * @param permission 权限标识
     * @return
     * @author ymc
     * @since 2024年3月13日 13:40
     */
    String startWorkFlow(XrTaskList xrTaskList, List<AICUser> userList, String permission, List<String> pripIdList, AICUser user);

}
