package com.aegis.emergency.alert.service;

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

/**
 * 转警Service接口
 * 
 * 封装转警申请、审核、反馈与状态流转等业务能力
 *
 * @author aegis
 */
public interface DutyAlertTransferService extends IService<DutyAlertTransfer> {
    
    /**
     * 根据条件查询转警记录列表
     * 
     * @param condition 查询条件
     * @return 转警记录集合
     */
    List<DutyAlertTransfer> listByCondition(DutyAlertTransfer condition);
    
    /**
     * 根据警情ID获取转警记录
     * 
     * @param alertId 警情ID
     * @return 转警记录信息
     */
    DutyAlertTransfer getByAlertId(Long alertId);
    
    /**
     * 批量查询转警记录（根据警情ID列表，返回每个警情的最新一条记录）
     * 
     * @param alertIds 警情ID列表
     * @return Map<alertId, DutyAlertTransfer>（只返回每个警情的最新一条记录）
     */
    Map<Long, DutyAlertTransfer> getLatestByAlertIds(List<Long> alertIds);
    
    /**
     * 提交转警申请
     * 
     * @param transfer 转警信息
     * @return 是否保存成功
     */
    boolean applyTransfer(DutyAlertTransfer transfer);
    
    /**
     * 审批通过转警申请
     * 
     * @param transferId 转警记录ID
     * @param reviewComment 审批意见
     * @return 是否操作成功
     */
    boolean approveTransfer(Long transferId, String reviewComment);
    
    /**
     * 审批驳回转警申请
     * 
     * @param transferId 转警记录ID
     * @param reviewComment 审批意见
     * @return 是否操作成功
     */
    boolean rejectTransfer(Long transferId, String reviewComment);
    
    /**
     * 记录外部单位反馈
     * 
     * @param transferId 转警记录ID
     * @param feedback 反馈内容
     * @param feedbackTime 反馈时间
     * @return 是否操作成功
     */
    boolean recordFeedback(Long transferId, String feedback, Date feedbackTime);
    
    /**
     * 将转警记录标记为已处理
     * 
     * @param transferId 转警记录ID
     * @param remark 处理备注
     * @return 是否操作成功
     */
    boolean markProcessed(Long transferId, String remark);
}