package com.chinaweal.aiccs.aiccs.forcedCancellation.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chinaweal.aiccs.aiccs.forcedCancellation.entity.ForceLogoutNoticeDetail;
import com.chinaweal.aiccs.aiccs.revoke.entity.Tsbizrevlist;
import com.chinaweal.aiccs.aiccs.revoke.entity.Tsrevtasklist;
import com.chinaweal.aicorg.model.AICUser;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.BaseService;

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

/**
 * <p>
 * 拟强制注销公告明细表（关联公告主表） 服务类
 * </p>
 *
 * @author lwd
 * @since 2025-10-22
 */
public interface ForceLogoutNoticeDetailService extends BaseService<ForceLogoutNoticeDetail> {

    /**
     * 分页查询拟强制注销公告明细
     * @param page 分页参数
     * @param entity 查询条件
     * @return 分页结果
     */
    IPage<ForceLogoutNoticeDetail> page(IPage<ForceLogoutNoticeDetail> page, ForceLogoutNoticeDetail entity);

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

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

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

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

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

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

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

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

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

    /**
     * 批量更新处理结果
     * @param forceResIds 明细ID列表
     * @param forceRes 处理结果编码
     * @param forceResDate 处理结果确认日期
     * @return 是否成功
     */
    boolean batchUpdateResult(List<String> forceResIds, String forceRes, LocalDate forceResDate);

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

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

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

    Tsrevtasklist saveRevListZXAccept(AICUser aicUser, Tsrevtasklist revtasklistModel, ArrayList<Tsbizrevlist> tsbizrevlists);

}
