package com.lutao.cloud.oil.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lutao.cloud.common.core.util.MessageInfo;
import com.lutao.cloud.oil.pojo.param.BaseParam;
import com.lutao.cloud.oil.pojo.param.EquipTypeParam;
import com.lutao.cloud.oil.pojo.vo.*;

import java.util.List;

/**
 * 设备信息服务
 *
 * @author yx
 * @date 2023/07/28
 */
public interface IBusinessEquipmentInfoService {

    /**
     * 专业设备数量统计
     *
     * @param baseParam 基本参数
     * @return {@link MessageInfo}<{@link EquipmentStatisticsVO}>
     */
    MessageInfo<EquipmentStatisticsVO> getEquipmentNumberStatistics(BaseParam baseParam);

    /**
     * 专业设备类型统计
     *
     * @param page  页面
     * @param param 参数
     * @return {@link MessageInfo}<{@link EquipmentTypeStatisticsVO}>
     */
    MessageInfo<EquipmentTypeStatisticsVO> getEquipmentTypeStatistics(Page page, EquipTypeParam param);

    /**
     * 专业设备定检和年检数量统计
     *
     * @param param 参数
     * @return {@link MessageInfo}<{@link EquipmentInspectStatisticsVO}>
     */
    MessageInfo<EquipmentInspectStatisticsVO> getEquipmentInspectStatistics(BaseParam param);

    /**
     * 年检设备分布
     *
     * @param baseParam 基本参数
     * @return {@link MessageInfo}<{@link YearInspectionDistributionVO}>
     */
    MessageInfo<List<YearInspectionDistributionVO>>  getEquipmentAnnuallyInspectDistribution(BaseParam baseParam);

    /**
     * 定检设备分布
     *
     * @param baseParam 基本参数
     * @return {@link MessageInfo}<{@link YearInspectionDistributionVO}>
     */
    MessageInfo<List<YearInspectionDistributionVO>>  getEquipmentPeriodicalInspectDistribution(BaseParam baseParam);

    /**
     * 综合展示专业设备
     *
     * @param param 参数
     * @return {@link MessageInfo}<{@link ScreenDisplayEquipmentVO}>
     */
    MessageInfo<ScreenDisplayEquipmentVO> queryScreenDisplayEquipment(Page page,BaseParam param);

    /**
     * 设备类型下拉选
     *
     * @return {@link MessageInfo}<{@link List}<{@link EquipTypeNameVO}>>
     */
    MessageInfo<List<EquipTypeNameVO>> getEquipmentTypeNameList();

    /**
     * 设备类型饼状图
     *
     * @param param
     * @return {@link MessageInfo}<{@link List}<{@link EquipmentTypePieVO}>>
     */
    MessageInfo<List<EquipmentTypePieVO>> getEquipmentTypePieChart(BaseParam param);

    /**
     * 设备类型年检分布
     *
     * @param param param
     * @return {@link MessageInfo}<{@link List}<{@link EquipTypeInspectVO}>>
     */
    MessageInfo<List<EquipTypeInspectVO>> getEquipmentTypeYearInspect(BaseParam param);

    /**
     * 设备类型定检分布
     *
     * @param param
     * @return {@link MessageInfo}<{@link List}<{@link EquipTypeInspectVO}>>
     */
    MessageInfo<List<EquipTypeInspectVO>> getEquipmentTypePeriodicalInspect(BaseParam param);

    /**
     * 大屏专业设备柱状图
     *
     * @param param param
     * @return {@link MessageInfo}<{@link List}<{@link ScreenDisplayEquipmentBarVO}>>
     */
    MessageInfo<ScreenDisplayEquipmentBarVO> queryScreenDisplayEquipmentBar(BaseParam param);
}
