package com.huimv.admin.mapper;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.huimv.admin.entity.EnergyData;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.huimv.admin.entity.dto.ListRankVo;
import com.huimv.admin.entity.vo.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * <p>
 * 耗能数据 Mapper 接口
 * </p>
 *
 * @author author
 * @since 2023-02-14
 */
@Repository
public interface EnergyDataMapper extends BaseMapper<EnergyData> {

    List<EnergyGasDataVo> listYear(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);

    List<EnergyFeedDataVo> listYear2(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);

    List<EnergyWaterDataVo> listYear3(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);

    List<EnergyElectricityDataVo> listYear4(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);

    List<EnergyGasDataVo> listDay(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);

    List<EnergyFeedDataVo> listDay2(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);

    List<EnergyWaterDataVo> listDay3(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);

    List<EnergyElectricityDataVo> listDay4(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);

    EnergyDataVo listWaterCount(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);

    String listElectricityCount(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);

    String listFeedCount(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);

    String listGasCount(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);

    EnergyDataVo listAllCount(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);

    /*11111*/
    List<EnergyAllDataVo> listYearGas(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);

    List<EnergyAllDataVo> listYearWater(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);

    List<EnergyAllDataVo> listYearFeed(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);

    List<EnergyAllDataVo> listYearElectricity(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);

    List<EnergyAllDataVo> listDayGas(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);

    List<EnergyAllDataVo> listDayWater(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);

    List<EnergyAllDataVo> listDayFeed(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);

    List<EnergyAllDataVo> listDayElectricity(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);

    //能耗使用
    EnergyData listDataCount(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);

    //大屏能耗弹窗
    EnergyDataScreenVo listDataAll(String today, String week,String month,String yesterdayStart,String yesterdayEnd
            ,String weekStart,String weekEnd,String monthStart,String monthEnd,Integer unitId,String farmId);

    List<EnergyVo> listSevenDayElectricity(String farmId, String displayType, String unitId);

    List<EnergyVo> listSixMonthElectricity(String farmId, String displayType, String unitId);

    Double getElectricity(String farmId, String displayType, String unitId, String startDate, String endDate);

    List<EnergyVo> listSevenDayWater(String farmId, String displayType, String unitId);

    Double getWater(String farmId, String displayType, String unitId, String startDate, String endDate);

    List<EnergyVo> listSixMonthWater(String farmId, String displayType, String unitId);

    Double getTodayElectricity(Integer unitId, String displayType);

    Double getTodayWater(Integer unitId, String displayType);

    List<ListRankVo> listRankWater(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);
    List<ListRankVo> listRankElectricity(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);
    List<ListRankVo> listRankGas(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);
    List<ListRankVo> listRankFeed(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);
}
