package com.chinaweal.aiccs.aiccs.abnormal.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.chinaweal.aiccs.aiccs.abnormal.entity.EBaseinfo;
import com.chinaweal.aiccs.aiccs.abnormal.entity.TSBizRemList;
import com.chinaweal.aiccs.aiccs.auditing.entity.TSOpinion;
import com.chinaweal.aiccs.aiccs.business.entity.TSTaskList;
import com.chinaweal.aicorg.model.AICUser;
import com.chinaweal.youfool.framework.springboot.rest.RestResult;

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-19
 */
public interface TSBizRemListService extends IService<TSBizRemList> {

    TSTaskList saveBizRemListAuditProcess(AICUser user, TSTaskList taskListModel,
                                          List<TSBizRemList> bizRemListModelList, TSOpinion opinionModel,
                                          String nextNodeID, String[] nextPerformerids,
                                          String[] nextPerformerNames);

    List<TSBizRemList> selectBRMexptlist(TSBizRemList tsBizRemListModel);

    IPage<TSBizRemList> selectbizRemlist(IPage<TSBizRemList> page, TSBizRemList tsBizSpeListModel);

    TSTaskList saveAbnListStart(AICUser aicUser, TSTaskList taskListModel, List<TSBizRemList> bizRemListModelList);

    /**
     * 信用修复移动端生成待办（多用户）
     *
     * @param aicUser
     * @param userIdList
     * @param taskListModel
     * @param bizRemListModelList
     * @return
     * @author ymc
     * @since 2024年9月4日 13:52
     */
    TSTaskList saveAbnListStartApp(AICUser aicUser, List<String> userIdList, TSTaskList taskListModel, List<TSBizRemList> bizRemListModelList);

    List<TSBizRemList> selectbizRembizseq(String bizseqid);

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

    List<TSBizRemList> selectbizRemByPriPidAndBIZSEQ(Map<String, Object> parm);

    List<TSBizRemList> selectbizRem(Map<String, Object> parm);

    List<TSBizRemList> queryByxyh(String remSponsorID);

    TSTaskList saveAbnListtoxyh(AICUser aicUser, TSTaskList taskListModel);

    void insertIdTobak(String tasklistid);

    List<TSBizRemList> checkTaskList(String ABNLISTID);

    String checkWritNoWithSleep(String type, String code);

    String checkWritNo(String type, String code);

    void cancelBusiness(String bizseq);

    void pcCancelBusiness(String bizseq);

    RestResult<?> selectHistorybizRemlist(String bizseq);

    RestResult<?> bizRemoveNext(HttpServletRequest request, TSBizRemList tsBizRemListModel, TSOpinion opinionModel,
                                String tasklistid, String nextPerformerids, String nextPerformerNames, String nextNodeID, String entertype);

    /**
     * 获取修复待办截止日期
     *
     * @param speCause 列入经营异常名录原因
     * @param busType  业务类型
     * @param isApply  是否申请环节
     * @return 返回工作日天数
     */
    int getInsertDeadlineDate(String speCause, String busType, boolean isApply);


    /**
     * 执行下一个移出业务流程
     *
     * @param user               用户
     * @param tsBizRemListModel  业务信息
     * @param opinionModel       处理意见
     * @param tasklistid         待办id
     * @param nextPerformerids   下一个待办用户id
     * @param nextPerformerNames 下一个待办用户名
     * @param nextNodeID         下一个节点id
     * @param entertype          市场主体类型
     * @return 处理结果
     * @author lroyia
     * @since 2025年2月25日19:35:21
     */
    RestResult<?> bizRemoveNext(AICUser user, TSBizRemList tsBizRemListModel, TSOpinion opinionModel, String tasklistid,
                                String nextPerformerids, String nextPerformerNames, String nextNodeID, String entertype);

    /**
     * 判断是否可以智能办结
     *
     * @param eBaseInfo           市场主体信息
     * @param taskListModel       待办模型
     * @param bizRemListModelList 移出异常名录业务表
     * @return 办结结果
     * @author lroyia
     * @since 2025年2月25日14:38:46
     */
    RestResult<?> canProcessSmart(EBaseinfo eBaseInfo, TSTaskList taskListModel, List<TSBizRemList> bizRemListModelList);

    /**
     * 智能办结
     *
     * @param eBaseInfo           市场主体信息
     * @param taskListModel       待办信息
     * @param bizRemListModelList 移出记录
     * @param decorg              列入决定机关
     * @param applicant           发送人名称
     * @return 操作结果
     * @author lroyia
     * @since 2025年2月25日20:16:08
     */
    RestResult<?> processSmart(EBaseinfo eBaseInfo, TSTaskList taskListModel, List<TSBizRemList> bizRemListModelList, String decorg, String applicant);
}
