/*
 * Author: wangjian
 * 生成mapper
 */
package com.tofly.xrtygis.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tofly.xrtygis.entity.vo.DmaCalculatePramVo;
import com.tofly.xrtygis.entity.vo.DmaMinWaterSupplyVo;
import com.tofly.xrtygis.entity.IndicatorCorrection;
import org.apache.ibatis.annotations.Param;

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

/**
 * 指标修正记录表
 *
 * @author admin
 * @date Thu Apr 28 00:00:00 CST 2022
 */
public interface IndicatorCorrectionMapper extends BaseMapper<IndicatorCorrection> {
    /**
     * 获取DMA分区对应的用水量
     * @param startTime
     * @param endTime
     * @return
     */
    List<DmaCalculatePramVo> getDmaUserWaterConsumption(@Param("startTime") Date startTime, @Param("endTime") Date endTime);

    /**
     * 获取总用水量
     * @param startTime
     * @param endTime
     * @return
     */
    BigDecimal getTotalUserWaterConsumption(@Param("startTime") Date startTime,@Param("endTime") Date endTime);
    /**
     * 获取DMA分区对应的供水量
     *
     * @param dateTime          时间月份字符串 YYYY-MM
     * @param nightFlowAllIndex 统计指标类型字典
     * @return
     */
    List<DmaCalculatePramVo> getDmaWaterSupply(@Param("dateTime") String dateTime,
                                               @Param("nightFlowAllIndex") String nightFlowAllIndex);

    /**
     * 获取各DMA上月结束日对应出入供水量记录
     *
     * @param dateTime          时间月份字符串 YYYY-MM
     * @param flowAllIndex 统计指标类型字典
     * @return
     */
    List<DmaCalculatePramVo> getLostMonthWaterSupply(@Param("dateTime") String dateTime,
                                                     @Param("flowAllIndex") String flowAllIndex);

    /**
     * 获取dma分区最小瞬时流量
     *
     * @param dateTime          时间月份字符串 YYYY-MM
     * @param flowAllIndex 统计指标类型字典
     * @return
     */
    List<DmaMinWaterSupplyVo> getDmaInstantaneousMinWaterSupply(@Param("dateTime") String dateTime,
                                                                @Param("flowAllIndex") String flowAllIndex);
    /**
     * 获取当月总供水量
     * @param dateTime
     * @return
     */
    List<DmaCalculatePramVo> getTotalWaterSupply(@Param("dateTime") String dateTime,
                                                 @Param("nightFlowAllIndex") String nightFlowAllIndex);

    /**
     * 获取上月结束日对应出入总供水量记录
     *
     * @param dateTime
     * @param nightFlowAllIndex
     * @return
     */
    List<DmaCalculatePramVo> getLostMonthTotalWaterSupply(@Param("dateTime") String dateTime,
                                                          @Param("nightFlowAllIndex") String nightFlowAllIndex);
    /**
     * 获取DMA分区DN75（含）以上管道长度 总长 km
     * @return
     */
    List<DmaCalculatePramVo> getDNLength();

    /**
     * 获取DMA远传数据
     * @param startDate
     * @param endDate
     * @return
     */
    List<DmaCalculatePramVo> getRemoteWaterSupply( @Param("startDate")Date startDate,@Param("endDate") Date endDate);

    /**
     * 获取DMA一级分区总远传水量
     * @param startDate
     * @param endDate
     * @return
     */
    BigDecimal getTotalRemoteWaterSupply(@Param("startDate")Date startDate,@Param("endDate") Date endDate);

    /**
     * 获取DMA年平均压力
     * @param year
     * @return
     */
    List<DmaCalculatePramVo> getDmaYearPressure(@Param("year")String year);

    /**
     * 获取dma漏点信息
     * @param startTime
     * @param endTime
     * @return
     */
    List<DmaCalculatePramVo> getLeakageGdInfo(@Param("startTime")Date startTime,@Param("endTime") Date endTime);

    /**
     * 获取总漏点信息
     * @param startTime
     * @param endTime
     * @return
     */
    DmaCalculatePramVo getTotalLeakageGdInfo(@Param("startTime")Date startTime,@Param("endTime") Date endTime);
    /**
     * 获取时间范围巡检内管线的总长度
     * @param startTime
     * @param endTime
     * @return
     */
    BigDecimal getTotalPlanPipeLength(@Param("startTime")Date startTime,@Param("endTime") Date endTime);

    /**
     * 获取时间范围巡检内有效里程的总长度
     * @param startTime
     * @param endTime
     * @return
     */
    BigDecimal getPlanTotalDistanceLength(@Param("startTime")Date startTime,@Param("endTime") Date endTime);
}
