package com.chinaweal.aiccs.aiccs.seriousillegal.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.chinaweal.aiccs.aiccs.auditing.entity.TSOpinion;
import com.chinaweal.aiccs.aiccs.business.entity.TSTaskList;
import com.chinaweal.aiccs.aiccs.seriousillegal.entity.TSBizSerIllegalRem;
import com.chinaweal.aicorg.model.AICUser;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.BaseService;
import com.chinaweal.youfool.framework.springboot.rest.RestResult;
import org.apache.ibatis.annotations.Param;
import org.springframework.ui.Model;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 移出严重违法企业名单业务表 服务类
 * </p>
 *
 * @author <a href="https://blog.lroyia.top">lroyia</a>
 * @since 2021-01-26
 */
public interface TSBizSerIllegalRemService extends BaseService<TSBizSerIllegalRem> {

    List<TSBizSerIllegalRem> selectBRMserIllegalList(TSBizSerIllegalRem tsBizSerIllegalRemModel);

    List<TSBizSerIllegalRem> queryBRMserIllegalList(TSBizSerIllegalRem tsBizSerIllegalRemModel);

    /**
     * 启动移出待办
     * @param user 用户信息
     * @param taskListModel 待办信息
     * @param bizRemList 移除列表
     * @return 启动信息
     * @author lroyia
     * @since 2021年1月27日 11:13:01
     */
    TSTaskList saveSerListStart(AICUser user, TSTaskList taskListModel, List<TSBizSerIllegalRem> bizRemList);

    /**
     * 信用修复移动端生成待办（多用户）
     * @author ymc
     * @since 2024年9月4日 14:53
     * @param user
     * @param userIdList
     * @param taskListModel
     * @param bizRemList
     * @return
     */
    TSTaskList saveSerListStartApp(AICUser user,  List<String> userIdList, TSTaskList taskListModel, List<TSBizSerIllegalRem> bizRemList);

    List<TSBizSerIllegalRem> selectbizRembizseq(String bizseqid);

    /**
     * 移除流程审核
     * @param user 当前用户
     * @param taskListModel 待办信息
     * @param tsBizSerIllegalRemModels 移除信息
     * @param opinionModel 处办信息
     * @param nextNodeID 下一个节点
     * @param nextPerformerids 下一步处理人id
     * @param nextPerformerNames 下一步处理人名称
     * @return 处理结果
     * @author lroyia
     * @since 2021年1月27日 11:23:21
     */
    TSTaskList saveBizRemListAuditProcess(AICUser user, TSTaskList taskListModel,
                                               List<TSBizSerIllegalRem> tsBizSerIllegalRemModels,
                                               TSOpinion opinionModel,
                                               String nextNodeID, String[] nextPerformerids,
                                               String[] nextPerformerNames,
                                          boolean isReturn);

    IPage<TSBizSerIllegalRem> selectbizRemlist(int rows, int page, TSBizSerIllegalRem tsBizSerIllegalRemModel);

    /**
     * 启动移出待办
     * @param taskListModel 待办信息
     * @param bizRemList 移除列表
     * @return 启动信息
     * @author lwd
     * @since 2021年8月31日 15:47:12
     */
    TSTaskList saveSerListStartApp(TSTaskList taskListModel, List<TSBizSerIllegalRem> bizRemList);

    /**
     * 移除流程审核
     * @param taskListModel 待办信息
     * @param tsBizSerIllegalRemModels 移除信息
     * @param nextNodeID 下一个节点
     * @param nextPerformerids 下一步处理人id
     * @param nextPerformerNames 下一步处理人名称
     * @return 处理结果
     * @author lwd
     * @since 2021年8月31日 16:59:22
     */
    TSTaskList saveBizRemListAuditProcessApp(TSTaskList taskListModel,
                                       List<TSBizSerIllegalRem> tsBizSerIllegalRemModels,
                                       String nextNodeID, String[] nextPerformerids,
                                       String[] nextPerformerNames);

    List<TSBizSerIllegalRem> selectbizRemByPriPid(Map<String, Object> parm);

    List<TSBizSerIllegalRem> selectbizRemByPriPidAndBizseq(Map<String, Object> parm);

    TSBizSerIllegalRem getOneByBizseq(String bizseq);

    void cancelBusiness(String bizseq);

    RestResult<?> queryHistorgBizRemInfo(String SAPPROVECODE);

    RestResult<?> serIllegalNext(HttpServletRequest request, Model model, TSBizSerIllegalRem tsBizSerIllegalRemModel, TSOpinion opinionModel, String tasklistid,
                                 String nextPerformerids, String nextPerformerNames, String nextNodeID);
}
