package com.huatek.busi.service.dataoutput;

import java.time.LocalDate;
import java.util.List;

import com.github.pagehelper.PageInfo;
import com.huatek.busi.dto.DataOutputEntityDto;
import com.huatek.busi.dto.SimulateResultDto;
import com.huatek.busi.entity.DataOutputEntity;
import com.huatek.busi.vo.dataoutput.DataOutputEntityVo;
import com.huatek.busi.vo.dataoutput.OutputEquipmentVo;
import com.huatek.busi.vo.warning.BusiEqmWarningTaskVo;
import com.huatek.busi.where.SimulateResultSelectVo;

/**
 * 数据输出记录 Service
 *
 * @author anker_cheng
 * @date Oct 12, 2019 9:57:57 AM
 */
public interface DataOutputEntityService {

    String getBasePath();

    /**
     * 分页查找查找 数据输出记录
     *
     * @param dataOutputEntityDto
     *            数据输出记录Dto
     * @return Page<DataOutputEntityVo> 数据输出记录List
     */
    PageInfo<DataOutputEntityVo> findDataOutputEntityPage(DataOutputEntityDto dataOutputEntityDto);

    /**
     * 根据ID获取输出记录
     * 
     * @param id
     *            记录ID
     * @return 输出记录
     */
    DataOutputEntityVo getDataOutputEntityVo(String id);


    SimulateResultDto getSimulateResultDto(String mainId);

    /**
     * 获取数据输出设备列表
     * 
     * @param mainEquipmentType
     *            主设备类型
     * @return 外挂设备列表，没有外挂设备的直接返回主设备列表
     */
    List<OutputEquipmentVo> findOutputEquips(String mainEquipmentType);

    List<OutputEquipmentVo> findOutputMainEquips(String mainEquipmentType);

    int deleteByDay(LocalDate day);

    /**
     * 执行保存
     * 
     * @param entity
     *            实体
     * @return
     */
    int saveOrUpdate(DataOutputEntity entity);

    void doOutput(OutputEquipmentVo vo, LocalDate day) throws Exception;

    void doOutputSimulate(SimulateResultDto vo, LocalDate day) throws Exception;

    /**
     *查询所有告警ID
     * @return
     */
    List<BusiEqmWarningTaskVo> findWarnList();

    void doOutputWarning(BusiEqmWarningTaskVo vo, LocalDate day) throws Exception;
}
