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

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.chinaweal.aiccs.aiccs.forcedCancellation.entity.ForceLogoutNotice;
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.List;

/**
 * <p>
 * 拟强制注销公告信息表 服务类
 * </p>
 *
 * @author lwd
 * @since 2025-10-22
 */
public interface ForceLogoutNoticeService extends BaseService<ForceLogoutNotice> {

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

    /**
     * 根据业务ID查询拟强制注销公告信息
     * @param bizseqId 业务ID
     * @return 拟强制注销公告信息
     */
    ForceLogoutNotice getByBizSeqId(String bizseqId);

    /**
     * 根据公告标题查询
     * @param noticeTitle 公告标题
     * @return 拟强制注销公告信息列表
     */
    List<ForceLogoutNotice> getByNoticeTitle(String noticeTitle);

    /**
     * 根据作出决定机关查询
     * @param judAuth 作出决定机关编码
     * @return 拟强制注销公告信息列表
     */
    List<ForceLogoutNotice> getByJudAuth(String judAuth);

    /**
     * 根据公告日期范围查询
     * @param noticeFrom 公告开始日期
     * @param noticeTo 公告结束日期
     * @return 拟强制注销公告信息列表
     */
    List<ForceLogoutNotice> getByNoticeDateRange(LocalDate noticeFrom, LocalDate noticeTo);

    /**
     * 根据二级部署标识查询
     * @param sExtFromnode 二级部署标识
     * @return 拟强制注销公告信息列表
     */
    List<ForceLogoutNotice> getBySExtFromnode(String sExtFromnode);

    /**
     * 更新公告有效期
     * @param forceId 拟强制注销公告ID
     * @param noticeFrom 公告开始日期
     * @param noticeTo 公告结束日期
     * @return 是否成功
     */
    boolean updateNoticePeriod(String forceId, LocalDate noticeFrom, LocalDate noticeTo);

    /**
     * 根据公告有效日期范围查询
     * @param currentDate 当前日期
     * @return 有效公告列表
     */
    List<ForceLogoutNotice> getValidNotices(LocalDate currentDate);

    /**
     * 根据作出决定机关和日期范围查询
     * @param judAuth 作出决定机关编码
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 拟强制注销公告信息列表
     */
    List<ForceLogoutNotice> getByJudAuthAndDateRange(String judAuth, LocalDate startDate, LocalDate endDate);

    /**
     * 批量更新公告状态
     * @param forceIds 公告ID列表
     * @param noticeTitle 公告标题
     * @param noticeContent 公告内容
     * @return 是否成功
     */
    boolean batchUpdateNoticeContent(List<String> forceIds, String noticeTitle, String noticeContent);

    void deactivationNotice(String bizseq, AICUser loginUser, Tsbizrevlist tsbizrevlist, Tsrevtasklist taskList);
}
