package com.chinaweal.aiccs.aiccs.forcedCancellation.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.chinaweal.aiccs.aiccs.forcedCancellation.entity.ForceLogoutNoticeDetail;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chinaweal.aiccs.aiccs.revoke.entity.Tsbizrevlist;
import org.apache.ibatis.annotations.Param;

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

/**
 * <p>
 * 拟强制注销公告明细表（关联公告主表） Mapper 接口
 * </p>
 *
 * @author lwd
 * @since 2025-10-22
 */
public interface ForceLogoutNoticeDetailMapper extends BaseMapper<ForceLogoutNoticeDetail> {

    /**
     * 分页查询拟强制注销公告明细
     * @param page 分页参数
     * @param params 查询参数
     * @return 分页结果
     */
    IPage<ForceLogoutNoticeDetail> selectByPage(IPage<ForceLogoutNoticeDetail> page, @Param("params") Map<String, Object> params);

    /**
     * 根据公告ID查询明细列表
     * @param forceId 公告ID
     * @return 拟强制注销公告明细列表
     */
    List<ForceLogoutNoticeDetail> selectByForceId(@Param("forceId") String forceId);

    /**
     * 根据业务ID查询明细列表
     * @param bizseqId 业务ID
     * @return 拟强制注销公告明细列表
     */
    List<ForceLogoutNoticeDetail> selectByBizSeqId(@Param("bizseqId") String bizseqId);

    /**
     * 根据主体标识查询明细列表
     * @param pripid 主体身份唯一标识代码
     * @return 拟强制注销公告明细列表
     */
    List<ForceLogoutNoticeDetail> selectByPripid(@Param("pripid") String pripid);

    /**
     * 根据统一社会信用代码查询
     * @param uniscid 企业的统一社会信用代码
     * @return 拟强制注销公告明细列表
     */
    List<ForceLogoutNoticeDetail> selectByUniscid(@Param("uniscid") String uniscid);

    /**
     * 根据企业名称查询
     * @param entName 企业或机构的法定全称
     * @return 拟强制注销公告明细列表
     */
    List<ForceLogoutNoticeDetail> selectByEntName(@Param("entName") String entName);

    /**
     * 根据登记机关查询
     * @param regOrg 企业登记机关编码
     * @return 拟强制注销公告明细列表
     */
    List<ForceLogoutNoticeDetail> selectByRegOrg(@Param("regOrg") String regOrg);

    /**
     * 根据处理结果查询
     * @param forceRes 拟强制注销的处理结果编码
     * @return 拟强制注销公告明细列表
     */
    List<ForceLogoutNoticeDetail> selectByForceRes(@Param("forceRes") String forceRes);

    /**
     * 根据公告日期范围查询
     * @param noticeFrom 公告有效起始日期
     * @param noticeTo 公告有效截止日期
     * @return 拟强制注销公告明细列表
     */
    List<ForceLogoutNoticeDetail> selectByNoticeDateRange(@Param("noticeFrom") LocalDate noticeFrom,
                                                       @Param("noticeTo") LocalDate noticeTo);

    /**
     * 根据二级部署标识查询
     * @param sExtFromnode 二级部署时的地市标识
     * @return 拟强制注销公告明细列表
     */
    List<ForceLogoutNoticeDetail> selectBySExtFromnode(@Param("sExtFromnode") String sExtFromnode);

    /**
     * 批量更新处理结果
     * @param forceResIds 明细ID列表
     * @param forceRes 处理结果编码
     * @param forceResDate 处理结果确认日期
     * @return 影响行数
     */
    int batchUpdateResult(@Param("forceResIds") List<String> forceResIds,
                         @Param("forceRes") String forceRes,
                         @Param("forceResDate") LocalDate forceResDate);

    /**
     * 根据业务ID和主体标识查询最新明细
     * @param bizseqId 业务ID
     * @param pripid 主体身份唯一标识代码
     * @return 拟强制注销公告明细
     */
    ForceLogoutNoticeDetail selectLatestByBizAndPripid(@Param("bizseqId") String bizseqId,
                                                       @Param("pripid") String pripid);

    /**
     * 统计不同处理结果的数量
     * @param forceId 公告ID
     * @return 处理结果统计信息
     */
    List<ForceLogoutNoticeDetail> statisticsByForceRes(@Param("forceId") String forceId);

    /**
     * 根据公告ID和登记机关查询
     * @param forceId 公告ID
     * @param regOrg 登记机关编码
     * @return 拟强制注销公告明细列表
     */
    List<ForceLogoutNoticeDetail> selectByForceIdAndRegOrg(@Param("forceId") String forceId,
                                                        @Param("regOrg") String regOrg);

}
