package com.aegis.emergency.alert.service;

import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.extension.service.IService;
import com.aegis.emergency.alert.domain.DutyAlertConvert;

/**
 * 转事件 Service 接口
 *
 * 封装转事件申请、审核、创建事件等业务流程
 *
 * @author aegis
 */
public interface DutyAlertConvertService extends IService<DutyAlertConvert> {

    /**
     * 根据条件查询转事件记录
     *
     * @param condition 查询条件
     * @return 转事件记录集合
     */
    List<DutyAlertConvert> listByCondition(DutyAlertConvert condition);

    /**
     * 根据警情 ID 获取转事件记录
     *
     * @param alertId 警情 ID
     * @return 转事件记录
     */
    DutyAlertConvert getByAlertId(Long alertId);

    /**
     * 批量查询转事件记录（根据警情ID列表，返回每个警情的最新一条记录）
     *
     * @param alertIds 警情ID列表
     * @return Map<alertId, DutyAlertConvert>（只返回每个警情的最新一条记录）
     */
    Map<Long, DutyAlertConvert> getLatestByAlertIds(List<Long> alertIds);

    /**
     * 提交转事件申请
     *
     * @param convert 转事件信息
     * @return 是否提交成功
     */
    boolean applyConvert(DutyAlertConvert convert);

    /**
     * 审核通过转事件申请
     *
     * @param convertId 转事件记录 ID
     * @param reviewComment 审核意见
     * @return 是否操作成功
     */
    boolean approveConvert(Long convertId, String reviewComment);

    /**
     * 审核驳回转事件申请
     *
     * @param convertId 转事件记录 ID
     * @param reviewComment 审核意见
     * @return 是否操作成功
     */
    boolean rejectConvert(Long convertId, String reviewComment);
}