/*
 * 文 件 名:  WaterConsumptionMapper
 * 版    权:  华设设计集团股份有限公司
 * 描    述:  <描述>
 * 修 改 人:  lvwenbin
 * 修改时间:  2025/8/27
 * 跟踪单号:  <跟踪单号>
 * 修改单号:  <修改单号>
 * 修改内容:  <修改内容>
 */
package com.ruoyi.ems.mapper;

import com.ruoyi.ems.domain.WaterMeterH;
import com.ruoyi.ems.model.QueryMeter;
import com.ruoyi.ems.model.WaterConsumptionVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * 用水统计Mapper接口
 */
public interface WaterConsumptionMapper {
    // ==================== 水表计量统计方法 ====================

    /**
     * 计量设备抄表数据查询
     */
    List<WaterMeterH> selectMDevWaterConsumptionList(QueryMeter queryMeter);

    /**
     * 计量设备抄表数据统计
     * @param queryMeter 查询条件
     * @return 统计电量信息
     */
    WaterConsumptionVO selectMDevWaterConsumptionSummary(QueryMeter queryMeter);


    // ==================== 区域用水统计方法 ====================

    /**
     * 根据设备代码列表查询区域日用水统计
     */
    List<WaterConsumptionVO> selectAreaDailyWaterConsumptionByDevices(
        @Param("queryMeter") QueryMeter queryMeter,
        @Param("meterDevices") Set<String> meterDevices);

    /**
     * 根据设备代码列表查询区域月用水统计
     */
    List<WaterConsumptionVO> selectAreaMonthlyWaterConsumptionByDevices(
        @Param("queryMeter") QueryMeter queryMeter,
        @Param("meterDevices") Set<String> meterDevices);

    /**
     * 根据设备代码列表查询区域年用水统计
     */
    List<WaterConsumptionVO> selectAreaYearlyWaterConsumptionByDevices(
        @Param("queryMeter") QueryMeter queryMeter,
        @Param("meterDevices") Set<String> meterDevices);

    /**
     * 根据设备代码列表查询区域用水汇总
     */
    WaterConsumptionVO selectAreaWaterConsumptionSummaryByDevices(
        @Param("queryMeter") QueryMeter queryMeter,
        @Param("meterDevices") Set<String> meterDevices);

    // ==================== 设施用水统计方法 ====================

    /**
     * 查询设施日用水统计
     */
    List<WaterConsumptionVO> selectFacsDailyWaterConsumption(QueryMeter queryMeter);

    /**
     * 查询设施月用水统计
     */
    List<WaterConsumptionVO> selectFacsMonthlyWaterConsumption(QueryMeter queryMeter);

    /**
     * 查询设施年用水统计
     */
    List<WaterConsumptionVO> selectFacsYearlyWaterConsumption(QueryMeter queryMeter);

    /**
     * 查询设施用水统计汇总
     */
    WaterConsumptionVO selectFacsWaterConsumptionSummary(QueryMeter queryMeter);

    /**
     * 根据设备代码列表查询区域小时用水明细
     */
    List<WaterMeterH> selectAreaHourlyWaterConsumptionByDevices(
        @Param("queryMeter") QueryMeter queryMeter,
        @Param("meterDevices") Set<String> meterDevices);

    /**
     * 查询设施小时用水明细
     */
    List<WaterMeterH> selectFacsHourlyWaterConsumption(QueryMeter queryMeter);

    /**
     * 查询设施小时用水汇总统计
     */
    List<WaterConsumptionVO> selectFacsHourlyWaterSummary(QueryMeter queryMeter);
}