package com.chinaweal.aiccs.aiccs.abnormal.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chinaweal.aiccs.aiccs.abnormal.entity.Cipentliaisons;
import com.chinaweal.aiccs.aiccs.abnormal.entity.EBaseinfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.chinaweal.aiccs.aiccs.abnormal.entity.TREntBaseInfo;
import com.chinaweal.aiccs.aiccs.abnormal.entity.dto.*;
import com.chinaweal.aiccs.aiccs.abnormal.entity.excel.EBaseinfoExcel;
import com.chinaweal.aiccs.aiccs.abnormal.entity.vo.QzzxEntDto;
import com.chinaweal.aiccs.aiccs.market.entity.AreaSlice;
import com.chinaweal.aiccs.crgs.moveinDetails.entity.EAlterRecoder;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author Lee
 * @since 2021-03-15
 */
public interface EBaseinfoMapper extends BaseMapper<EBaseinfo> {

    String getLevelFromCrgs(@Param("pripid") String pripid);

    /**
     * 查询复杂主体信息分页
     * @param page   分页参数
     * @param params    查询参数
     * @return  分页结果
     * @author lroyia
     * @since  2021年4月21日 10:36:37
     */
    IPage<ComplexEntInfoDto> selectComplexEntInfoPage(IPage<ComplexEntInfoDto> page, @Param("params") Map<String, Object> params);

    IPage<EBaseinfo> selectNbAndDom(Page<EBaseinfo> page, @Param("customParamMap")Map<String, Object> customParamMap);

    /**
     * 拟列异主体分页
     * @param page            分页参数
     * @param customParamMap  条件参数
     * @return
     */
    IPage<ToIncludeAbnDto> selectToIncludeAbnPage(IPage<ToIncludeAbnDto> page, @Param("customParamMap") Map<String, Object> customParamMap);


    /**
     * 综合查询
     * @param page
     * @param customParamMap
     * @return
     */
    IPage<EBaseinfo> comprehensiveQuery(IPage<ToIncludeAbnDto> page, @Param("customParamMap") Map<String, Object> customParamMap);

    List<ComprehensiveStatistics> queryCphStatistics(@Param("customParamMap") Map<String, Object> customParamMap);

    List<ComprehensiveStat> queryCphStat(@Param("customParamMap") Map<String, Object> customParamMap);

    List<ComprehensiveStat> queryCphStatSplit(@Param("customParamMap") Map<String, Object> customParamMap);

    IPage<AbnEntDto> selectSDCWandTwoYearsAbnlist(IPage<AbnEntDto> page, @Param("customParamMap") Map<String, Object> customParamMap);

    IPage<NoAnnualReportEntDto> selectNoReportTwoYearsPage(IPage<NoAnnualReportEntDto> page, @Param("customParamMap") Map<String, Object> customParamMap);

    IPage<Map<String, String>> selectBlackForEnt(IPage<Map<String, String>> page, @Param("uscc") String uscc, @Param("entName") String entName);

    IPage<Map<String, String>> selectBlackForPerson(IPage<Map<String, String>> page, @Param("cerNo") String cerNo, @Param("name") String name);

    List<Map<String, String>> statistics(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("yearOnYearStartDate") String yearOnYearStartDate,
                                         @Param("yearOnYearEndDate") String yearOnYearEndDate, @Param("chainRatioStartDate") String chainRatioStartDate,
                                         @Param("chainRatioEndDate") String chainRatioEndDate);

    IPage<EBaseinfo> selectNoReportPage(IPage<EBaseinfo> page, @Param("customParamMap") Map<String, Object> customParamMap);

    IPage<EBaseinfo> selectSDCWandTwoYearsPage(IPage<EBaseinfo> page, @Param("customParamMap") Map<String, Object> customParamMap);

    IPage<Map<String, String>> getEntBlackForPerson(Page<Map<String, String>> page, @Param("cerNo") String cerNo);

    IPage<EBaseinfo> getAddressAbnPage(IPage<EBaseinfo> page, @Param("customParamMap") Map<String, Object> customParamMap);

    IPage<EBaseinfo> selectWnbAndSdcwPage(IPage<EBaseinfo> page, @Param("customParamMap") Map<String, Object> customParamMap);

    /**
     * 获取id分页
     * @param beginId   起始id
     * @param pageSize  分页大小
     * @return  分页结果
     * @author lroyia
     * @since  2021年12月16日 09:54:25
     */
    List<EBaseinfo> selectIdPage(@Param("beginId") String beginId, @Param("pageSize") int pageSize);

    /**
     * 获取未解析的地址
     * @param pripid  开始地址
     * @param pageSize  分页大小
     * @return  查询结果
     * @author lroyia
     * @since  2021年12月20日 15:04:06
     */
    List<EBaseinfo> getNotExistsAddress(@Param("pripid") String pripid, @Param("pageSize") int pageSize);

    /**
     * 清除监管机关
     * @param pripid
     * @author lroyia
     * @since  2022年1月13日 09:33:15
     */
    void clearRegulatory(@Param("pripid") String pripid);

    /**
     * 更新监管机关
     * @param pripid    主体pripid
     * @param orgNumber 监管机关机构编码
     * @param sliceId 片区id
     * @param sliceName 片区名称
     * @author lroyia
     * @since  2022年1月13日 09:46:12
     */
    void updateRegulatory(@Param("pripid") String pripid, @Param("orgNumber") String orgNumber, @Param("sliceId") String sliceId, @Param("sliceName") String sliceName);

    List<EBaseinfoExcel> queryBypripids(@Param("pripids") List<String> pripids);

    int countabnlrnum(@Param("orgn") String orgn, @Param("customParamMap") Map<String, Object> customParamMap);

    int countleglrnum(@Param("orgn") String orgn, @Param("customParamMap") Map<String, Object> customParamMap);

    int countlocknum(@Param("orgn") String orgn, @Param("customParamMap") Map<String, Object> customParamMap);

    int countunlocknum(@Param("orgn") String orgn, @Param("customParamMap") Map<String, Object> customParamMap);

    int countpldxnum(@Param("orgn") String orgn, @Param("customParamMap") Map<String, Object> customParamMap);

    /**
     * 更新主体片区认领信息
     * @param pripid    主体pripid
     * @param areaSlice 片区信息
     * @author lroyia
     * @since  2022年2月16日 14:36:19
     */
    void updateEntAreaSliceInfo(@Param("pripid") String pripid, @Param("areaSlice") AreaSlice areaSlice);

    IPage<EBaseinfo> selectYearReport(IPage<EBaseinfo> page, @Param("customParamMap") Map<String, Object> customParamMap);

    List<EBaseinfoExcel> selectYearReportAll(@Param("customParamMap") Map<String, Object> customParamMap);

    EBaseinfo selectByEntname(String entname);

    EBaseinfo selectAddress(String entname);

    List<EBaseinfo> queryForNb(String regorg);

    List<EBaseinfo> querynzForNb(String regorg);

    List<EBaseinfo> querygtForNb(String regorg);

    List<EBaseinfo> querybyperson(String name, String cerno);

    List<EBaseinfo> querybyoperator(String name, String cerno);

    TREntBaseInfo queryTREntByPripid(String pripid);

    Cipentliaisons queryCipByPripid(String pripid);

    List<EAlterRecoder> queryEAlterByPripid(String pripid);

    List<EAlterRecoder> queryEAlterByEntNo(String pripid);

    List<Map<String, String>> queryEpriPersonList(String pripid);

    /**
     * 个体户的智慧认领，绑定片区所问题
     * @return
     */
    List<Map<String, String>> listIndividualLocaladm();

    /**
     * 查询强制注销企业列表
     * @param page 分页参数
     * @param customParamMap 查询参数
     * @return 分页结果
     * @author lwd
     * @since 2025年10月20日 10:00:00
     */
    IPage<QzzxEntDto> queryForcedLogoutEntList(IPage<QzzxEntDto> page, @Param("customParamMap") Map<String, Object> customParamMap);

    List<QzzxEntDto> exportQzzxEntList(@Param("paramMap") Map<String, Object> paramMap);
}
