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

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.chinaweal.aiccs.aiccs.abnormal.entity.EBaseinfo;
import com.chinaweal.aiccs.aiccs.abnormal.entity.dto.EntWritsDto;
import com.chinaweal.aiccs.aiccs.query.entity.TSEntBaseQuery;
import com.chinaweal.aiccs.aiccs.seriousillegal.entity.TSSerIllegalList;
import com.chinaweal.aiccs.common.base.entity.dto.task.UniTaskListDto;
import com.chinaweal.aicorg.model.AICUser;
import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.BaseService;
import org.apache.ibatis.annotations.Param;

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 TSSerIllegalListService extends BaseService<TSSerIllegalList> {

    List<TSSerIllegalList> selectEntList(TSSerIllegalList serIllegalListModel);

    /**
     * 协助执行列入严重违法失信 主体查询
     *
     * @param rows              分页大小
     * @param page              当前分页
     * @param entBaseQueryModel 查询参数
     * @return 查询结果
     * @author lroyia
     * @since 2021年1月27日 13:57:36
     */
    IPage<TSEntBaseQuery> serIllegalListByPage(int rows, int page, TSEntBaseQuery entBaseQueryModel);

    IPage<TSSerIllegalList> selectTSSerIllegalList(int rows, int page, TSSerIllegalList tsSerIllegalListModel, String type);

    IPage<TSSerIllegalList> selectTSSerIllegalListCountByPage(int rows, int page, TSSerIllegalList tsSerIllegalListModel, String[] regorgArr, String[] territorialArr);

    /**
     * 存在严重违法失信行为 主体查询
     *
     * @param rows                  分页大小
     * @param page                  当前分页
     * @param tsSerIllegalListModel 查询参数
     * @return 查询结果
     * @author lroyia
     * @since 2021年1月27日 13:58:35
     */
    IPage<TSSerIllegalList> findLostCreditEntByPage(int rows, int page, TSSerIllegalList tsSerIllegalListModel);

    /**
     * 获取第一个严重违法名录信息
     *
     * @param wrapper 查询参数与包装类
     * @return 查询结果
     * @author lroyia
     * @since 2021年3月23日 14:31:06
     */
    TSSerIllegalList getFirstIllegalListRecord(Wrapper<TSSerIllegalList> wrapper);

    /**
     * 获取统一严重违法失信企业待办列表分页
     *
     * @param page   分页参数与
     * @param params 查询参数
     * @return 查询结果
     * @author lroyia
     * @since 2021年4月19日 17:21:36
     */
    IPage<UniTaskListDto> getUniIllegalTaskListPage(IPage<UniTaskListDto> page, Map<String, Object> params);

    /**
     * 获取严重违法失信企业个人待办总量
     *
     * @param params 获取参数
     * @return 统计结果
     * @author lroyia
     * @since 2021年4月19日 17:35:30
     */
    int getIllegalTaskListCount(@Param("params") Map<String, Object> params);

    IPage<TSSerIllegalList> selectSerillegalList(IPage<TSSerIllegalList> page, Map<String, Object> pram);

    /**
     * 获取严重违法失信企业信息
     *
     * @param params 获取参数
     * @author lwd
     * @since 2021年8月30日 16:35:21
     */
    TSSerIllegalList selecttsSerIllegalAppByMap(Map<String, Object> params);

    TSSerIllegalList selecttsSerIllegalAppByid(String illegalListID);

    List<TSSerIllegalList> listOutTimeIllegalList(String date);

    List<TSSerIllegalList> listCancelEnts();

    /**
     * 列入严重违法失信企业清单分页
     *
     * @return 分页结果
     * @author lwd
     * @since 2021年7月5日 19:32:20
     */
    IPage<TSSerIllegalList> queryAbnormalLrList(IPage<TSSerIllegalList> page);

    /**
     * 列入严重违法失信企业清单分页
     *
     * @return 分页结果
     * @author lwd
     * @since 2021年7月6日 9:55:41
     */
    IPage<TSSerIllegalList> queryAbnormalYcList(IPage<TSSerIllegalList> page);

    IPage<EntWritsDto> queryAbnormalLrByNameList(IPage<EntWritsDto> page, Map<String, Object> pram);

    IPage<EntWritsDto> queryAbnormalYcByNameList(IPage<EntWritsDto> page, Map<String, Object> pram);

    IPage<EntWritsDto> queryToIllegalByNameList(IPage<EntWritsDto> page, Map<String, Object> pram);

    boolean saveByOne(TSSerIllegalList tsSerIllegalList);


    IPage<TSSerIllegalList> listXrSeriousIllegalListEnt(BaseQuery<EBaseinfo> query, AICUser user);
}
