package com.cico.nest.lcdp.boot.core.qxsd.application.service;

import com.cico.nest.lcdp.boot.core.qxsd.adapter.web.vo.event.EventDetailPageReqVO;
import com.cico.nest.lcdp.boot.core.qxsd.adapter.web.vo.event.EventHisRespVO;
import com.cico.nest.lcdp.boot.core.qxsd.infrastructure.gatewayimpl.database.dataobject.EventDetailDO;
import com.cico.nest.lcdp.framework.common.pojo.PageResult;

import java.util.Date;

/**
 * 事件详情 Service 接口
 *
 * @author 管理员
 */
public interface EventDetailService{

    /**
     * 获得事件详情
     *
     * @param id 编号
     * @return 事件详情
     */
    EventDetailDO getEventDetail(String id);

    /**
     * 获得事件详情分页
     *
     * @param pageReqVO 分页查询
     * @return 事件详情分页
     */
    PageResult<EventDetailDO> getEventDetailPage(EventDetailPageReqVO pageReqVO);

    /**
     * 事件消除
     * @param id 事件id
     */
    void dispelEvent(String id,String dispelCause);

    /**
     * 上报隧道管控新事件
     * @param eventDetailDO
     */
    void reporEventToSdgk(EventDetailDO eventDetailDO);

    /**
     * 获取事件历史轨迹
     * @param eventId 事件图片
     * @return 事件历史信息
     */
    EventHisRespVO getEventHisDetail(String eventId);

    /**
     * 不同来源判断是否是重复事件
     * 同一个隧道洞里同种事件类型，位置前后20米，时间前后20秒，范围内，属于同一事件
     * @param tunnelId 隧道id todo后期要改成真正的隧道id
     * @param thirdEventId 外部事件id
     * @param eventType 事件的融合类型
     * @param milestone 事件发生的桩号位置
     * @param happenTime 事件发生时间
     * @return false 默认判断是不同事件
     */
    boolean judgeSameEvent(String tunnelId,String thirdEventId , Integer eventType, Integer milestone, Date happenTime, int eventSource);
}
