package com.njcn.csharmonic.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.csdevice.pojo.vo.DataGroupEventVO;
import com.njcn.csharmonic.param.*;
import com.njcn.csharmonic.pojo.param.EventStatisticParam;
import com.njcn.csharmonic.pojo.po.CsEventPO;
import com.njcn.csharmonic.pojo.vo.*;
import com.njcn.event.file.pojo.dto.WaveDataDTO;

import javax.servlet.http.HttpServletResponse;
import java.time.LocalDateTime;
import java.util.List;

/**
 *
import com.njcn.event.file.pojo.dto.WaveDataDTO;

/**
 * Description:
 * Date: 2023/9/4  15:15【需求编号】
 *
 * @author clam
 * @version V1.0.0
 */
public interface CsEventPOService extends IService<CsEventPO>{

    /***
     * 根据事件ID解析该事件波形文件
     * @author hongawen
     * @date 2023/9/20 14:23
     * @return WaveDataDTO
     */
    WaveDataDTO analyseWave(String eventId, int i, Boolean isApp);

    /***
     * 获取事件波形图信息
     * @author hongawen
     * @date 2023/9/20 15:59
     * @return CsEventVO
     */
    CsEventVO getWavePics(String eventId, int i);

    List<EventDetailVO> queryEventList(CsEventUserQueryParam csEventUserQueryParam);

    Page<DataGroupEventVO> pageQueryByLineId(CsEventUserQueryPage csEventUserQueryPage);

    Page<DataGroupEventVO> pageEvent(EventStatisticParam baseParam);

    void saveBatchEventList(List<CsEventPO> csEventPOS);

    void getFileZip(String eventId,HttpServletResponse response);

    List<DataGroupEventVO> queryEventList(ItemParam param, LocalDateTime startDate, LocalDateTime endDate, String lineId);

    List<CsEventPO> queryByModelId(DataParam param);

    void addCldEvent(CldEventParam param);

    Boolean updateEventById(String id);

    List<CsEventPO> getEventByTime(List<String> lineList, String startTime, String endTime);

    List<CsWarnDescVO> getEventDesc(List<String> lineIdList);

    //获取设备告警事件详情
    List<CsEventPO> getEvents(List<String> idList);

    List<CsEventPO> getDevAlarmList(CsEventUserQueryParam param);

    IPage<CsEventLogsVo> getFrontDebugLogs(EventStatisticParam param);

    CsEventReasonAndTypeVo eventReasonAndTypeStatistics(EventStatisticParam param);
}
