package com.dsk.monitor.service;

import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.monitor.domain.vo.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.Map;

/**
 * @ClassName MonitorService
 * @Description 监控service
 * @Author Dgm
 * @Date 2023/12/9 10:01
 * @Version
 */
public interface MonitorUserService {
    /***
     *@Description: 保存监控信息
     *@Param: pushMonitorInfoDto 信息
     *@return: R
     *@Author: Dgm
     *@date: 2023/12/9 10:03
     */
    R insert(PushMonitorInfoVo pushMonitorInfoDto);


    /***
     *@Description: 监控维度下拉选择
     *@Param:
     *@return: R
     *@Author: Dgm
     *@date: 2023/12/9 10:03
     */
    R rulesSelect(PushMonitorRulesSelectVo addVo);

    /***
     *@Description: 保存监控规则信息
     *@Param: monitorRulesDto 信息
     *@return: R
     *@Author: Dgm
     *@date: 2023/12/9 10:03
     */
    R insertRules(PushMonitorRulesVo monitorRulesDto);

    /***
     *@Description: 我的推送规则
     *@Param: detailVo 信息
     *@return: R
     *@Author: Dgm
     *@date: 2023/12/9 10:03
     */
    R rulesDetail(PushMonitorRulesDetailVo detailVo);


    /***
     *@Description: 监控动态 分页
     *@Param: pageVo 信息
     *@return: R
     *@Author: Dgm
     *@date: 2023/12/9 10:03
     */
    TableDataInfo companyDynamicPage(PushMonitorDynamicPageVo pageVo) throws Exception;

    /***
     *@Description: 监控动态分页(定时任务使用)
     *@Param: pageVo 信息
     *@return: R
     *@Author: Dgm
     *@date: 2023/12/9 10:03
     */
    Map<String, Object> companyDynamicPageScheduled(PushMonitorDynamicPageVo pageVo) throws Exception;

    /***
     *@Description: 监控报告
     *@Param: pageVo 信息
     *@return: R
     *@Author: Dgm
     *@date: 2023/12/9 10:03
     */
    TableDataInfo reportPage(PushMonitorReportPageVo pageVo) throws Exception;

    /***
     *@Description: 企业监控列表 分页
     *@Param: pageVo 信息
     *@return: R
     *@Author: Dgm
     *@date: 2023/12/9 10:03
     */
    TableDataInfo companyPage(PushMonitorCompanyPageVo pageVo) throws Exception;


    /***
     *@Description: 企业监控列表 分页
     *@Param: pageVo 信息
     *@return: R
     *@Author: Dgm
     *@date: 2023/12/9 10:03
     */
    TableDataInfo queryMonitorCompany(MonitorQueryMonitorCompanyPageVo pageVo) throws Exception;



    /***
     *@Description: 添加监控
     *@Param: addVo 信息
     *@return: R
     *@Author: Dgm
     *@date: 2023/12/9 10:03
     */
    R systemAdd(PushMonitorCompanyAddVo addVo);

    /***
     *@Description: 取消监控
     *@Param: cancelVo 信息
     *@return: R
     *@Author: Dgm
     *@date: 2023/12/9 10:03
     */
    R systemCancel(PushMonitorCompanyCancelVo cancelVo);

    /***
     *@Description: 批量导入
     *@Param: cancelVo 信息
     *@return: R
     *@Author: Dgm
     *@date: 2023/12/9 10:03
     */
    R systemImport(MultipartFile file, PushMonitorCompanyImportAddVo importAddVo) throws Exception;

    /***
     *@Description: 动态详情
     *@Param: cancelVo 信息
     *@return: R
     *@Author: Dgm
     *@date: 2023/12/9 10:03
     */
    R systemDetail(PushMonitorSystemDetailVo importAddVo);
    /***
     *@Description: 是否工作日
     *@Param: holidayVo 信息
     *@return: R
     *@Author: Dgm
     *@date: 2023/12/9 10:03
     */
    Map<String, Object> settingHoliday(PushSettingHolidayVo holidayVo) throws Exception;

    R addDefaultCompany();
}
