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

import com.ruoyi.ems.domain.WaterMeterH;
import com.ruoyi.ems.model.QueryMeter;
import com.ruoyi.ems.model.WaterConsumptionExportVO;
import com.ruoyi.ems.model.WaterConsumptionVO;

import java.util.List;

/**
 * 用水统计服务接口
 */
public interface IWaterConsumptionService {

    /**
     * 查询水表原始计量数据
     */
    List<WaterMeterH> selectMDevWaterConsumptionList(QueryMeter queryMeter);

    /**
     * 查询区域用水统计列表
     */
    List<WaterConsumptionVO> selectAreaWaterConsumptionList(QueryMeter queryMeter);

    /**
     * 查询设施用水统计列表
     */
    List<WaterConsumptionVO> selectFacsWaterConsumptionList(QueryMeter queryMeter);

    /**
     * 查询表计抄表数据汇总
     */
    WaterConsumptionVO selectMDevWaterConsumptionSummary(QueryMeter queryMeter);

    /**
     * 查询区域用水统计汇总
     */
    WaterConsumptionVO selectAreaWaterConsumptionSummary(QueryMeter queryMeter);

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

    /**
     * 导出区域用水统计列表
     */
    List<WaterConsumptionVO> exportAreaWaterConsumptionList(QueryMeter queryMeter);

    /**
     * 导出设施用水统计列表
     */
    List<WaterConsumptionVO> exportFacsWaterConsumptionList(QueryMeter queryMeter);

    /**
     * 转换为用水导出VO列表
     */
    List<WaterConsumptionExportVO> convertToWaterExportVOList(List<WaterConsumptionVO> originalList,
        String timeDimension);

    /**
     * 查询区域小时用水明细
     *
     * @param queryMeter 查询条件
     * @return 小时用水明细列表
     */
    List<WaterMeterH> getAreaWaterHourMeter(QueryMeter queryMeter);

    /**
     * 查询设施小时用水明细
     *
     * @param queryMeter 查询条件
     * @return 小时用水明细列表
     */
    List<WaterMeterH> getFacsWaterHourMeter(QueryMeter queryMeter);

    /**
     * 查询设施小时用水汇总统计
     *
     * @param queryMeter 查询条件
     * @return 设施用水汇总列表
     */
    List<WaterConsumptionVO> getFacsWaterHourSta(QueryMeter queryMeter);
}