package com.klp.ems.service; import com.klp.ems.domain.vo.EmsEnergyConsumptionVo; import com.klp.ems.domain.bo.EmsEnergyConsumptionBo; import com.klp.ems.domain.bo.EmsEnergyConsumptionQueryBo; import com.klp.common.core.page.TableDataInfo; import com.klp.common.core.domain.PageQuery; import com.klp.ems.domain.vo.EnergyChainRatioVo; import com.klp.ems.domain.vo.SummaryDailyVo; import com.klp.ems.domain.vo.SummaryMonthlyVo; import com.klp.ems.domain.vo.YearOnYearVo; import com.klp.ems.domain.vo.ChainAnalysisVo; import java.util.Collection; import java.util.List; import java.util.Map; /** * 能耗记录Service接口 * * @author Joshi * @date 2025-09-28 */ public interface IEmsEnergyConsumptionService { /** * 查询能耗记录 */ EmsEnergyConsumptionVo queryById(Long energyConsumptionId); /** * 查询能耗记录列表 */ TableDataInfo queryPageList(EmsEnergyConsumptionBo bo, PageQuery pageQuery); /** * 查询能耗记录列表 */ List queryList(EmsEnergyConsumptionBo bo); /** * 新增能耗记录 */ Boolean insertByBo(EmsEnergyConsumptionBo bo); /** * 修改能耗记录 */ Boolean updateByBo(EmsEnergyConsumptionBo bo); /** * 校验并批量删除能耗记录信息 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); List getEnergySummaryDaily(String month); List getEnergySummaryMonthly(String year); /** * 过滤版:按能耗类型/设备/区域(含子区域)聚合 */ EnergyChainRatioVo getEnergyChainRatioFiltered(EmsEnergyConsumptionQueryBo queryBo); /** * 近期能耗趋势(过滤版):month 按天、year 按月 */ List getEnergySummaryDailyFiltered(EmsEnergyConsumptionQueryBo queryBo); List getEnergySummaryMonthlyFiltered(EmsEnergyConsumptionQueryBo queryBo); /** 同比分析:传入 year,返回当年与上一年逐月汇总(可过滤) */ YearOnYearVo getYearOnYear(EmsEnergyConsumptionQueryBo queryBo); /** 环比分析:periodType=day/week/month/year + dateKey;可过滤 */ ChainAnalysisVo getChainAnalysis(EmsEnergyConsumptionQueryBo queryBo); /** * 获取设备的上次抄表记录(用于自动填充起始数据) * @param meterId 设备ID * @return 上次抄表记录,如果没有则返回null */ EmsEnergyConsumptionVo getLastReadingForMeter(Long meterId); /** * 获取设备本月的累计消耗量 * @param meterId 设备ID * @return 本月累计消耗量,如果没有则返回0 */ Double getMonthlyConsumption(Long meterId); /** * 获取能耗统计信息 * @param bo 查询条件 * @return 统计信息(总记录数、总消耗量、平均消耗量、最大消耗量等) */ Map getStatistics(EmsEnergyConsumptionBo bo); }