package com.yuchen.saas.park.service.service.property;


import com.baomidou.mybatisplus.extension.service.IService;
import com.yuchen.saas.park.api.dto.property.PropertyPublicMeterReadingAddDto;
import com.yuchen.saas.park.api.dto.property.PropertyPublicMeterReadingDetailQueryDto;
import com.yuchen.saas.park.api.dto.property.PropertyPublicMeterReadingQueryDto;
import com.yuchen.saas.park.api.dto.property.PropertyPublicMeterReadingShareQueryDto;
import com.yuchen.saas.park.api.entity.property.PropertyPublicMeterReading;
import com.yuchen.saas.park.api.vo.property.*;
import org.nest.springwrap.core.mp.support.NestPage;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 公摊仪表抄表 服务类
 * </p>
 *
 * @author cxj
 * @since 2023-12-04
 */
public interface IPropertyPublicMeterReadingService extends IService<PropertyPublicMeterReading> {

    PropertyPublicMeterReadingForMeterVo listForMeter(PropertyPublicMeterReadingQueryDto dto);

    NestPage<PropertyPublicMeterReadingByParkPageVo> getPageByPark(PropertyPublicMeterReadingQueryDto dto);

    PropertyPublicMeterReading getByPublicMeterIdAndQuery(Long houseMeterId, Integer isInit, Integer isCharging, Date monthFirstDayDate, Date monthLastDayDate, int firstOrLast);

    Boolean addList(List<PropertyPublicMeterReadingAddDto> dto);

    Boolean add(Long publicMeterId, BigDecimal meterReadingNum, Date meterReadingTime,Boolean isUpdate);

    NestPage<PropertyPublicMeterReadingDetailPageVo> getPageForDetail(PropertyPublicMeterReadingDetailQueryDto dto);

    Boolean deleteList(List<Long> ids);

    NestPage<PropertyPublicMeterReadingPageVo> getPageByReading(PropertyPublicMeterReadingQueryDto dto);

    PropertyPublicMeterReadingCountVo getShareCount(PropertyPublicMeterReadingQueryDto dto);

    PropertyPublicMeterReadingShareResultVo shareList(List<Long> ids);

    Boolean updateShare(Long id);

    NestPage<PropertyPublicMeterReadingSharePageVo> getSharePage(PropertyPublicMeterReadingShareQueryDto dto);

    PropertyPublicMeterReadingByAppVo getDetailByApp(Long id);
}
