package com.ltgk.boat.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ltgk.boat.domain.dto.BoatAlarmHandleReq;
import com.ltgk.boat.domain.dto.BoatAlarmStatisticsDTO;
import com.ltgk.boat.domain.dto.GetBoatAlarmListReq;
import com.ltgk.boat.domain.entity.BoatAlarmInfo;
import com.ltgk.boat.domain.vo.BoatAlarmInfoVo;
import com.ltgk.common.core.domain.AjaxResult;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.socket.WebSocketSession;

import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;

public interface BoatAlarmInfoService extends IService<BoatAlarmInfo> {
    List<BoatAlarmInfoVo> page(GetBoatAlarmListReq getBoatAlarmListReq);

    AjaxResult handle(@Valid @RequestBody BoatAlarmHandleReq boatAlarmHandleReq);

    /**
     * 将连接的websocket 存储起来，定时发送数据时使用
     *
     * @param session:
     * @author Qi ChengBin
     * @date 2025/3/12
     */
    void saveWebsocketSession(WebSocketSession session);

    /**
     * 查询首页滚动数据以及疑似三无渔船数据
     *
     * @return java.util.Map<java.lang.String, java.lang.Object>
     * @author Qi ChengBin
     * @date 2025/6/25
     */
    Map<String, Object> assembledSendData();

    /**
     * 导出渔船报警信息
     *
     * @param response：
     * @param req：
     * @author Qi ChengBin
     * @date 2025/3/24
     */
    void export(HttpServletResponse response, GetBoatAlarmListReq req);

    /**
     * 根据报警类型数据获取指定时间内的渔船报警统计
     *
     * @return com.ltgk.common.core.domain.AjaxResult
     * @author Qi ChengBin
     * @date 2025/5/14
     */
    AjaxResult getBoatAlarmStatistics(BoatAlarmStatisticsDTO dto);

    /**
     * 根据报警类型数组获取指定时间内的渔船报警信息统计【返回数据为 类型:数】
     *
     * @param dto:
     * @return com.ltgk.common.core.domain.AjaxResult
     * @author Qi ChengBin
     * @date 2025/5/15
     */
    AjaxResult getBoatAlarmStatisticsToAlarmType(BoatAlarmStatisticsDTO dto);
}
