package com.zcxk.rmcp.core.dao;


import com.zcxk.rmcp.api.dto.measurementsettlement.MeasurementRecordDto;
import com.zcxk.rmcp.api.dto.measurementsettlement.MeasurementRecordPageDto;
import com.zcxk.rmcp.api.dto.measurementsettlement.WaterConsumptionUpdateDto;
import com.zcxk.rmcp.core.entity.MeasurementRecord;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * (MeasurementRecord)表数据库访问层
 *
 * @author hym
 * @since 2021-07-22 14:27:45
 */
@Mapper
public interface MeasurementRecordMapper {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    MeasurementRecord selectById(Long id);


    /**
     * 查询全部
     *
     * @return 对象列表
     */
    List<MeasurementRecord> selectAll();

    /**
     * 通过实体作为筛选条件查询
     *
     * @param measurementRecord 实例对象
     * @return 对象列表
     */
    List<MeasurementRecordDto> selectList(MeasurementRecordPageDto measurementRecord);

    /**
     * 新增数据
     *
     * @param measurementRecord 实例对象
     * @return 影响行数
     */
    int insert(MeasurementRecord measurementRecord);

    /**
     * 批量新增
     *
     * @param measurementRecords 实例对象的集合
     * @return 影响行数
     */
    int batchInsert(@Param("measurementRecords") List<MeasurementRecord> measurementRecords);

    /**
     * 修改数据
     *
     * @param measurementRecord 实例对象
     * @return 影响行数
     */
    int update(MeasurementRecord measurementRecord);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 影响行数
     */
    int deleteById(Long id);

    /**
     * 查询总数据数
     *
     * @return 数据总数
     */
    int count();

    /**审核用水量
      * @param ids
     * @description
     * @author hym
     * @updateTime 2021/8/3 9:49
     * @return void
     * @throws
     */
    void auditWater(List<Long> ids);
    /**审核所有用水量
      * @param planId
     * @description
     * @author hym
     * @updateTime 2021/8/3 9:49
     * @return void
     * @throws
     */
    void auditAllWater(Integer planId);
    /**更改用水量
      * @param waterConsumptionUpdateDto
     * @description
     * @author hym
     * @updateTime 2021/8/3 9:49
     * @return void
     * @throws
     */
    void modifyTheAmountOfWater(WaterConsumptionUpdateDto waterConsumptionUpdateDto);
    /**查询某设备某计划下的记录详情
      * @param deviceId
 * @param planId
     * @description
     * @author hym
     * @updateTime 2021/8/3 9:58
     * @return com.zcxk.rmcp.core.entity.MeasurementRecord
     * @throws
     */
    MeasurementRecord findClearingRecordItem(@Param("deviceId") Long deviceId,
                                             @Param("planId") Integer planId);
}