package cn.cecep.talroad.service;

import cn.cecep.talroad.domain.AmVideoDevFi;
import cn.cecep.talroad.domain.MAmVideoInfoOperationLog;
import cn.cecep.talroad.vo.AmVideoDevFiVo;
import cn.cecep.talroad.vo.EChartsVO;
import cn.cecep.talroad.vo.export.AmVideoDevFiExport;
import cn.cecep.talroad.vo.homepage.OverviewVideoMonitorsVo;
import cn.cecep.talroad.vo.homepage.VideoMonitoringIssuesVo;
import cn.cecep.talroad.vo.query.AmVideoDevFiQuery;
import cn.cecep.talroad.vo.query.EffectiveMonitoringRateQuery;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.apache.ibatis.annotations.Param;

import java.math.BigInteger;
import java.util.List;

/**
 * 视频监控Service接口
 *
 * @author szhpt
 * @date 2023-01-10*/
public interface IAmVideoDevFiService extends  IService<AmVideoDevFi>
{
    /**
     * 查询视频监控列表
     *
     * @param amVideoDevFi 视频监控
     * @return 视频监控集合
     */
    List<AmVideoDevFi> selectAmVideoDevFiList(AmVideoDevFi amVideoDevFi);
    IPage<AmVideoDevFiExport> selectDeviceNameById(Page<AmVideoDevFi> page, @Param("ew") QueryWrapper<AmVideoDevFi> queryWrapper);
    List<AmVideoDevFiExport> selectAmVideoDevFiExportList(AmVideoDevFi amVideoDevFi);

    List<AmVideoDevFiExport> selectAmVideoDevFiSelectList(@Param("ew") QueryWrapper<AmVideoDevFi> queryWrapper);

    List<AmVideoDevFiExport> selectAmVideoDevFiSelectXkList(@Param("ew") QueryWrapper<AmVideoDevFi> queryWrapper);

    IPage<MAmVideoInfoOperationLog> getMAmVideoInfoOperationLogList(AmVideoDevFiQuery amVideoDevFi);

    List<AmVideoDevFiVo.DevTypeGroup> getGroupList(AmVideoDevFiQuery amVideoDevFi);

    AmVideoDevFiVo getInfo(Long id);


    void saveLog(List<AmVideoDevFiExport> ae,List<AmVideoDevFiExport> ad);
    AmVideoDevFiExport getByExport(BigInteger id);

    OverviewVideoMonitorsVo overviewVideoMonitors();

    EChartsVO proportionExitTypes(EffectiveMonitoringRateQuery query);

    EChartsVO trendsVehicleEmissionTypes(EffectiveMonitoringRateQuery query);

    List<VideoMonitoringIssuesVo> videoMonitoringIssues();

    List<VideoMonitoringIssuesVo> otherEnterpriseMonitoringVideos();

    List<AmVideoDevFiVo.DevTypeGroup> getGroupList(String factoryId, String outletId, List<String> deviceIds);
}
