package com.dy.pipIrrStatistics.intake; 
 | 
  
 | 
import com.dy.common.webUtil.QueryResultVo; 
 | 
import com.dy.pipIrrGlobal.daoRm.*; 
 | 
import com.dy.pipIrrGlobal.voSt.*; 
 | 
import com.dy.pipIrrStatistics.intake.qo.*; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.apache.dubbo.common.utils.PojoUtils; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.beans.factory.annotation.Value; 
 | 
import org.springframework.stereotype.Service; 
 | 
  
 | 
import java.text.DecimalFormat; 
 | 
import java.text.ParseException; 
 | 
import java.text.SimpleDateFormat; 
 | 
import java.time.LocalDate; 
 | 
import java.util.Calendar; 
 | 
import java.util.List; 
 | 
import java.util.Map; 
 | 
import java.util.Optional; 
 | 
  
 | 
/** 
 | 
 * @author ZhuBaoMin 
 | 
 * @date 2024-08-01 13:58 
 | 
 * @LastEditTime 2024-08-01 13:58 
 | 
 * @Description 
 | 
 */ 
 | 
  
 | 
@Slf4j 
 | 
@Service 
 | 
public class IntakeSv { 
 | 
    @Autowired 
 | 
    private RmOnHourReportHistoryMapper rmOnHourReportHistoryMapper; 
 | 
    @Autowired 
 | 
    private RmOpenCloseValveHistoryMapper rmOpenCloseValveHistoryMapper; 
 | 
    @Autowired 
 | 
    private RmOnHourReportLastMapper rmOnHourReportLastMapper; 
 | 
    @Autowired 
 | 
    private RmOpenCloseValveLastMapper rmOpenCloseValveLastMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private RmIntakeAmountDayMapper rmIntakeAmountDayMapper; 
 | 
    @Autowired 
 | 
    private RmLossDayLastMapper rmLossDayLastMapper; 
 | 
  
 | 
    @Value("${rtu.batteryVolt}") 
 | 
    private Double batteryVolt; 
 | 
  
 | 
    @Value("${rtu.signalIntensity.weak}") 
 | 
    private Integer weak; 
 | 
  
 | 
    @Value("${rtu.signalIntensity.ordinary}") 
 | 
    private Integer ordinary; 
 | 
  
 | 
    /** 
 | 
     * 获取指定时间段内未上线的取水口 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoIntake>> getNotOnlineIntakes(CommonQO qo) { 
 | 
        DecimalFormat df = new DecimalFormat("0.00"); 
 | 
        /** 
 | 
         * 补齐起止时间,如果开始时间为空,则默认为当前日期 
 | 
         */ 
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        String timeStop = qo.getTimeStop(); 
 | 
  
 | 
        if(timeStop != null) { 
 | 
            timeStop = timeStop + " 23:59:59"; 
 | 
            if(timeStart != null) { 
 | 
                timeStart = timeStart + " 00:00:00"; 
 | 
            }else { 
 | 
                timeStart = LocalDate.now() + " 00:00:00"; 
 | 
            } 
 | 
        }else { 
 | 
            timeStart = null; 
 | 
        } 
 | 
        qo.setTimeStart(timeStart); 
 | 
        qo.setTimeStop(timeStop); 
 | 
  
 | 
        // 生成查询参数 
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; 
 | 
  
 | 
        // 获取符合条件的记录数 
 | 
        Long itemTotal = Optional.ofNullable(rmOnHourReportHistoryMapper.getNotOnlineIntakesCount(params)).orElse(0L); 
 | 
  
 | 
        QueryResultVo<List<VoIntake>> rsVo = new QueryResultVo<>() ; 
 | 
  
 | 
        rsVo.pageSize = qo.pageSize ; 
 | 
        rsVo.pageCurr = qo.pageCurr ; 
 | 
  
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = rmOnHourReportHistoryMapper.getNotOnlineIntakes(params); 
 | 
        return rsVo ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取累计流量超过指定值的取水口 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoCumulativeFlow>> getLargeFlowIntakes(CumulativeFlowQO qo) { 
 | 
        // 生成查询参数 
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; 
 | 
  
 | 
        // 获取符合条件的记录数 
 | 
        Long itemTotal = Optional.ofNullable(rmOnHourReportLastMapper.getLargeFlowIntakesCount(params)).orElse(0L); 
 | 
  
 | 
        QueryResultVo<List<VoCumulativeFlow>> rsVo = new QueryResultVo<>() ; 
 | 
  
 | 
        rsVo.pageSize = qo.pageSize ; 
 | 
        rsVo.pageCurr = qo.pageCurr ; 
 | 
  
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = rmOnHourReportLastMapper.getLargeFlowIntakes(params); 
 | 
        return rsVo ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取累计流量低于指定值的取水口 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoCumulativeFlow>> getSmallFlowIntakes(CumulativeFlowQO qo) { 
 | 
        // 生成查询参数 
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; 
 | 
  
 | 
        // 获取符合条件的记录数 
 | 
        Long itemTotal = Optional.ofNullable(rmOnHourReportLastMapper.getSmallFlowIntakesCount(params)).orElse(0L); 
 | 
  
 | 
        QueryResultVo<List<VoCumulativeFlow>> rsVo = new QueryResultVo<>() ; 
 | 
  
 | 
        rsVo.pageSize = qo.pageSize ; 
 | 
        rsVo.pageCurr = qo.pageCurr ; 
 | 
  
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = rmOnHourReportLastMapper.getSmallFlowIntakes(params); 
 | 
        return rsVo ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取欠压取水口 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoBatteryVolt>> getUnderVoltIntakes(BatteryVoltQO qo) { 
 | 
        qo.setBatteryVolt(batteryVolt); 
 | 
        // 生成查询参数 
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; 
 | 
  
 | 
        // 获取符合条件的记录数 
 | 
        Long itemTotal = Optional.ofNullable(rmOnHourReportLastMapper.getUnderVoltIntakesCount(params)).orElse(0L); 
 | 
  
 | 
        QueryResultVo<List<VoBatteryVolt>> rsVo = new QueryResultVo<>() ; 
 | 
  
 | 
        rsVo.pageSize = qo.pageSize ; 
 | 
        rsVo.pageCurr = qo.pageCurr ; 
 | 
  
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = rmOnHourReportLastMapper.getUnderVoltIntakes(params); 
 | 
        return rsVo ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取指定信号强度的取水口 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoSignalIntensity>> getSpecifiedSignalIntakes(SignalIntensityQO qo) { 
 | 
        qo.setWeak(weak); 
 | 
        qo.setOrdinary(ordinary); 
 | 
  
 | 
        // 生成查询参数 
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; 
 | 
  
 | 
        // 获取符合条件的记录数 
 | 
        Long itemTotal = Optional.ofNullable(rmOnHourReportLastMapper.getSpecifiedSignalIntakesCount(params)).orElse(0L); 
 | 
  
 | 
        QueryResultVo<List<VoSignalIntensity>> rsVo = new QueryResultVo<>() ; 
 | 
  
 | 
        rsVo.pageSize = qo.pageSize ; 
 | 
        rsVo.pageCurr = qo.pageCurr ; 
 | 
  
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = rmOnHourReportLastMapper.getSpecifiedSignalIntakes(params); 
 | 
        return rsVo ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取从未开过阀的取水口 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoIntake>> getNeverOpenValveIntakes(CommonQO qo) { 
 | 
  
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        String timeStop = qo.getTimeStop(); 
 | 
        if(timeStart != null && timeStart != "") { 
 | 
            timeStart = timeStart + " 00:00:00"; 
 | 
        } else { 
 | 
            timeStart = LocalDate.now() + " 00:00:00"; 
 | 
        } 
 | 
        qo.setTimeStart(timeStart); 
 | 
  
 | 
        if(timeStop != null && timeStop != "") { 
 | 
            timeStop = timeStop + " 23:59:59"; 
 | 
        }else { 
 | 
            timeStop = LocalDate.now() + " 23:59:59"; 
 | 
        } 
 | 
        qo.setTimeStop(timeStop); 
 | 
  
 | 
        // 生成查询参数 
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; 
 | 
  
 | 
        // 获取符合条件的记录数 
 | 
        Long itemTotal = Optional.ofNullable(rmOpenCloseValveHistoryMapper.getNeverOpenValveIntakesCount(params)).orElse(0L); 
 | 
  
 | 
        QueryResultVo<List<VoIntake>> rsVo = new QueryResultVo<>() ; 
 | 
  
 | 
        rsVo.pageSize = qo.pageSize ; 
 | 
        rsVo.pageCurr = qo.pageCurr ; 
 | 
  
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = rmOpenCloseValveHistoryMapper.getNeverOpenValveIntakes(params); 
 | 
        return rsVo ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取指定时间段内开阀次数超过指定值的取水口 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoIntakeOpenCount>> getOpenValveGtIntakes(IntakeCountValueQO qo) { 
 | 
  
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        String timeStop = qo.getTimeStop(); 
 | 
        if(timeStart != null && timeStart != "") { 
 | 
            timeStart = timeStart + " 00:00:00"; 
 | 
        } else { 
 | 
            timeStart = LocalDate.now() + " 00:00:00"; 
 | 
        } 
 | 
        qo.setTimeStart(timeStart); 
 | 
  
 | 
        if(timeStop != null && timeStop != "") { 
 | 
            timeStop = timeStop + " 23:59:59"; 
 | 
        }else { 
 | 
            timeStop = LocalDate.now() + " 23:59:59"; 
 | 
        } 
 | 
        qo.setTimeStop(timeStop); 
 | 
  
 | 
        // 生成查询参数 
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; 
 | 
  
 | 
        // 获取符合条件的记录数 
 | 
        Long itemTotal = Optional.ofNullable(rmOpenCloseValveHistoryMapper.getOpenValveGtIntakesCount(params)).orElse(0L); 
 | 
  
 | 
        QueryResultVo<List<VoIntakeOpenCount>> rsVo = new QueryResultVo<>() ; 
 | 
  
 | 
        rsVo.pageSize = qo.pageSize ; 
 | 
        rsVo.pageCurr = qo.pageCurr ; 
 | 
  
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = rmOpenCloseValveHistoryMapper.getOpenValveGtIntakes(params); 
 | 
        return rsVo ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取指定时间段内开阀次数低于指定值的取水口 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoIntakeOpenCount>> getOpenValveLtIntakes(IntakeCountValueQO qo) { 
 | 
  
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        String timeStop = qo.getTimeStop(); 
 | 
        if(timeStart != null && timeStart != "") { 
 | 
            timeStart = timeStart + " 00:00:00"; 
 | 
        } else { 
 | 
            timeStart = LocalDate.now() + " 00:00:00"; 
 | 
        } 
 | 
        qo.setTimeStart(timeStart); 
 | 
  
 | 
        if(timeStop != null && timeStop != "") { 
 | 
            timeStop = timeStop + " 23:59:59"; 
 | 
        }else { 
 | 
            timeStop = LocalDate.now() + " 23:59:59"; 
 | 
        } 
 | 
        qo.setTimeStop(timeStop); 
 | 
  
 | 
        // 生成查询参数 
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; 
 | 
  
 | 
        // 获取符合条件的记录数 
 | 
        Long itemTotal = Optional.ofNullable(rmOpenCloseValveHistoryMapper.getOpenValveLtIntakesCount(params)).orElse(0L); 
 | 
  
 | 
        QueryResultVo<List<VoIntakeOpenCount>> rsVo = new QueryResultVo<>() ; 
 | 
  
 | 
        rsVo.pageSize = qo.pageSize ; 
 | 
        rsVo.pageCurr = qo.pageCurr ; 
 | 
  
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = rmOpenCloseValveHistoryMapper.getOpenValveLtIntakes(params); 
 | 
        return rsVo ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 根据开阀类型获取操作次数 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    public VoCountOfOpenType getCountByOpenType(OpenTypeQO qo) { 
 | 
        /** 
 | 
         * 补齐起止时间,如果开始时间为空,则默认为当前日期,如果结束时间为空,则查询时间为空 
 | 
         */ 
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        String timeStop = qo.getTimeStop(); 
 | 
        if(timeStop != null) { 
 | 
            timeStop = timeStop + " 23:59:59"; 
 | 
            if(timeStart != null) { 
 | 
                timeStart = timeStart + " 00:00:00"; 
 | 
            }else { 
 | 
                timeStart = LocalDate.now() + " 00:00:00"; 
 | 
            } 
 | 
        }else { 
 | 
            timeStart = null; 
 | 
        } 
 | 
        qo.setTimeStart(timeStart); 
 | 
        qo.setTimeStop(timeStop); 
 | 
  
 | 
        Integer openType = qo.getOpenType(); 
 | 
        String openTypeName = ""; 
 | 
        if (openType == null){ 
 | 
            openTypeName = "不知道您要查那种开阀类型"; 
 | 
        }else { 
 | 
            switch (openType) { 
 | 
                case 1: 
 | 
                    openTypeName = "刷卡开阀"; 
 | 
                    break; 
 | 
                case 3: 
 | 
                    openTypeName = "中心站开阀"; 
 | 
                    break; 
 | 
                case 8: 
 | 
                    openTypeName = "用户远程开阀"; 
 | 
                    break; 
 | 
                case 11: 
 | 
                    openTypeName = "开关阀卡开阀"; 
 | 
                    break; 
 | 
                case 13: 
 | 
                    openTypeName = "开关阀卡开阀"; 
 | 
                    break; 
 | 
                default: 
 | 
                    openTypeName = "不知道您要查那种开阀类型"; 
 | 
            } 
 | 
        } 
 | 
  
 | 
        // 生成查询参数 
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; 
 | 
  
 | 
        Integer openTypeCount = Optional.ofNullable(rmOpenCloseValveLastMapper.getCountByOpenType(params)).orElse(0); 
 | 
  
 | 
        VoCountOfOpenType vo = new VoCountOfOpenType(); 
 | 
        vo.setOpenTypeName(openTypeName); 
 | 
        vo.setOpenTypeCount(openTypeCount); 
 | 
        return vo; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 根据关阀类型获取操作次数 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    public VoCountOfCloseType getCountByCloseType(CloseTypeQo qo) { 
 | 
        /** 
 | 
         * 补齐起止时间,如果开始时间为空,则默认为当前日期 
 | 
         */ 
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        String timeStop = qo.getTimeStop(); 
 | 
        if(timeStop != null) { 
 | 
            timeStop = timeStop + " 23:59:59"; 
 | 
            if(timeStart != null) { 
 | 
                timeStart = timeStart + " 00:00:00"; 
 | 
            }else { 
 | 
                timeStart = LocalDate.now() + " 00:00:00"; 
 | 
            } 
 | 
        }else { 
 | 
            timeStart = null; 
 | 
        } 
 | 
        qo.setTimeStart(timeStart); 
 | 
        qo.setTimeStop(timeStop); 
 | 
  
 | 
        Integer closeType = qo.getCloseType(); 
 | 
        String closeTypeName = ""; 
 | 
        if (closeType == null){ 
 | 
            closeTypeName = "不知道您要查那种关阀类型"; 
 | 
        }else { 
 | 
            switch (closeType) { 
 | 
                case 2: 
 | 
                    closeTypeName = "刷卡关阀"; 
 | 
                    break; 
 | 
                case 4: 
 | 
                    closeTypeName = "中心站关阀"; 
 | 
                    break; 
 | 
                case 5: 
 | 
                    closeTypeName = "欠费关阀"; 
 | 
                    break; 
 | 
                case 6: 
 | 
                    closeTypeName = "流量计故障关阀"; 
 | 
                    break; 
 | 
                case 7: 
 | 
                    closeTypeName = "紧急关阀"; 
 | 
                    break; 
 | 
                case 9: 
 | 
                    closeTypeName = "用户远程关阀"; 
 | 
                    break; 
 | 
                case 10: 
 | 
                    closeTypeName = "开关阀卡关阀"; 
 | 
                    break; 
 | 
                case 12: 
 | 
                    closeTypeName = "黑名单命令关阀"; 
 | 
                    break; 
 | 
                case 13: 
 | 
                    closeTypeName = "远程定时关阀"; 
 | 
                    break; 
 | 
                case 14: 
 | 
                    closeTypeName = "远程定量关阀"; 
 | 
                    break; 
 | 
                default: 
 | 
                    closeTypeName = "不知道您要查那种关阀类型"; 
 | 
            } 
 | 
        } 
 | 
        // 生成查询参数 
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; 
 | 
        Integer closeTypeCount = Optional.ofNullable(rmOpenCloseValveLastMapper.getCountByCloseType(params)).orElse(0); 
 | 
  
 | 
        VoCountOfCloseType vo = new VoCountOfCloseType(); 
 | 
        vo.setCloseTypeName(closeTypeName); 
 | 
        vo.setCloseTypeCount(closeTypeCount); 
 | 
        return vo; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 指定时间段内累积流量超过指定值的取水口 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoIntakeAccumulateAmount>> getTotalFlowGtValueIntakes(IntakeAmountValueQO qo) { 
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        String timeStop = qo.getTimeStop(); 
 | 
        if(timeStart != null && timeStart != "") { 
 | 
            timeStart = timeStart + " 00:00:00"; 
 | 
        } else { 
 | 
            timeStart = LocalDate.now() + " 00:00:00"; 
 | 
        } 
 | 
        qo.setTimeStart(timeStart); 
 | 
  
 | 
        if(timeStop != null && timeStop != "") { 
 | 
            timeStop = timeStop + " 23:59:59"; 
 | 
        }else { 
 | 
            timeStop = LocalDate.now() + " 23:59:59"; 
 | 
        } 
 | 
        qo.setTimeStop(timeStop); 
 | 
  
 | 
        if (qo.getValue() == null){ 
 | 
            qo.setValue(0.0); 
 | 
        } 
 | 
  
 | 
  
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo); 
 | 
        Long itemTotal = rmOnHourReportHistoryMapper.getTotalFlowGtValueIntakesCount(params); 
 | 
  
 | 
        QueryResultVo<List<VoIntakeAccumulateAmount>> rsVo = new QueryResultVo<>() ; 
 | 
        rsVo.pageSize = qo.pageSize ; 
 | 
        rsVo.pageCurr = qo.pageCurr ; 
 | 
  
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = rmOnHourReportHistoryMapper.getTotalFlowGtValueIntakes(params); 
 | 
        return rsVo ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 指定时间段内用水量超过指定值的取水口 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoIntakeAccumulateAmount>> getUseWaterGtValueIntakes(IntakeAmountValueQO qo) { 
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        String timeStop = qo.getTimeStop(); 
 | 
        if(timeStart != null && timeStart != "") { 
 | 
            timeStart = timeStart + " 00:00:00"; 
 | 
        } else { 
 | 
            timeStart = LocalDate.now() + " 00:00:00"; 
 | 
        } 
 | 
        qo.setTimeStart(timeStart); 
 | 
  
 | 
        if(timeStop != null && timeStop != "") { 
 | 
            timeStop = timeStop + " 23:59:59"; 
 | 
        }else { 
 | 
            timeStop = LocalDate.now() + " 23:59:59"; 
 | 
        } 
 | 
        qo.setTimeStop(timeStop); 
 | 
  
 | 
        if (qo.getValue() == null){ 
 | 
            qo.setValue(0.0); 
 | 
        } 
 | 
  
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo); 
 | 
        Long itemTotal = rmOpenCloseValveHistoryMapper.getUseWaterGtValueIntakesCount(params); 
 | 
  
 | 
        QueryResultVo<List<VoIntakeAccumulateAmount>> rsVo = new QueryResultVo<>() ; 
 | 
        rsVo.pageSize = qo.pageSize ; 
 | 
        rsVo.pageCurr = qo.pageCurr ; 
 | 
  
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = rmOpenCloseValveHistoryMapper.getUseWaterGtValueIntakes(params); 
 | 
        return rsVo ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 指定时间段内消费金额超过指定值的取水口 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoIntakeAccumulateAmount>> getExpenseGtValueIntakes(IntakeAmountValueQO qo) { 
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        String timeStop = qo.getTimeStop(); 
 | 
        if(timeStart != null && timeStart != "") { 
 | 
            timeStart = timeStart + " 00:00:00"; 
 | 
        } else { 
 | 
            timeStart = LocalDate.now() + " 00:00:00"; 
 | 
        } 
 | 
        qo.setTimeStart(timeStart); 
 | 
  
 | 
        if(timeStop != null && timeStop != "") { 
 | 
            timeStop = timeStop + " 23:59:59"; 
 | 
        }else { 
 | 
            timeStop = LocalDate.now() + " 23:59:59"; 
 | 
        } 
 | 
        qo.setTimeStop(timeStop); 
 | 
  
 | 
        if (qo.getValue() == null){ 
 | 
            qo.setValue(0.0); 
 | 
        } 
 | 
  
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo); 
 | 
        Long itemTotal = rmOpenCloseValveHistoryMapper.getExpenseGtValueIntakesCount(params); 
 | 
  
 | 
        QueryResultVo<List<VoIntakeAccumulateAmount>> rsVo = new QueryResultVo<>() ; 
 | 
        rsVo.pageSize = qo.pageSize ; 
 | 
        rsVo.pageCurr = qo.pageCurr ; 
 | 
  
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = rmOpenCloseValveHistoryMapper.getExpenseGtValueIntakes(params); 
 | 
        return rsVo ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 指定时间段内用水时长超过指定值的取水口 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoIntakeOpenCount>> getUseWaterDurationGtValueIntakes(IntakeCountValueQO qo) { 
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        String timeStop = qo.getTimeStop(); 
 | 
        if(timeStart != null && timeStart != "") { 
 | 
            timeStart = timeStart + " 00:00:00"; 
 | 
        } else { 
 | 
            timeStart = LocalDate.now() + " 00:00:00"; 
 | 
        } 
 | 
        qo.setTimeStart(timeStart); 
 | 
  
 | 
        if(timeStop != null && timeStop != "") { 
 | 
            timeStop = timeStop + " 23:59:59"; 
 | 
        }else { 
 | 
            timeStop = LocalDate.now() + " 23:59:59"; 
 | 
        } 
 | 
        qo.setTimeStop(timeStop); 
 | 
  
 | 
  
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo); 
 | 
        Long itemTotal = rmOpenCloseValveHistoryMapper.getUseWaterDurationGtValueIntakesCount(params); 
 | 
  
 | 
        QueryResultVo<List<VoIntakeOpenCount>> rsVo = new QueryResultVo<>() ; 
 | 
        rsVo.pageSize = qo.pageSize ; 
 | 
        rsVo.pageCurr = qo.pageCurr ; 
 | 
  
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = rmOpenCloseValveHistoryMapper.getUseWaterDurationGtValueIntakes(params); 
 | 
        return rsVo ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 指定时间段 有开阀 无关阀的取水口 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoIntake>> getHaveOpenNoCloseIntakes(CommonQO qo) { 
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        String timeStop = qo.getTimeStop(); 
 | 
        if(timeStart != null && timeStart != "") { 
 | 
            timeStart = timeStart + " 00:00:00"; 
 | 
        } else { 
 | 
            timeStart = LocalDate.now() + " 00:00:00"; 
 | 
        } 
 | 
        qo.setTimeStart(timeStart); 
 | 
  
 | 
        if(timeStop != null && timeStop != "") { 
 | 
            timeStop = timeStop + " 23:59:59"; 
 | 
        }else { 
 | 
            timeStop = LocalDate.now() + " 23:59:59"; 
 | 
        } 
 | 
        qo.setTimeStop(timeStop); 
 | 
  
 | 
  
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo); 
 | 
        Long itemTotal = rmOpenCloseValveHistoryMapper.getHaveOpenNoCloseIntakesCount(params); 
 | 
  
 | 
        QueryResultVo<List<VoIntake>> rsVo = new QueryResultVo<>() ; 
 | 
        rsVo.pageSize = qo.pageSize ; 
 | 
        rsVo.pageCurr = qo.pageCurr ; 
 | 
  
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = rmOpenCloseValveHistoryMapper.getHaveOpenNoCloseIntakes(params); 
 | 
        return rsVo ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 指定时间段 无开阀 有关阀的取水口 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoIntake>> getNoOpenHaveCloseIntakes(CommonQO qo) { 
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        String timeStop = qo.getTimeStop(); 
 | 
        if(timeStart != null && timeStart != "") { 
 | 
            timeStart = timeStart + " 00:00:00"; 
 | 
        } else { 
 | 
            timeStart = LocalDate.now() + " 00:00:00"; 
 | 
        } 
 | 
        qo.setTimeStart(timeStart); 
 | 
  
 | 
        if(timeStop != null && timeStop != "") { 
 | 
            timeStop = timeStop + " 23:59:59"; 
 | 
        }else { 
 | 
            timeStop = LocalDate.now() + " 23:59:59"; 
 | 
        } 
 | 
        qo.setTimeStop(timeStop); 
 | 
  
 | 
  
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo); 
 | 
        Long itemTotal = rmOpenCloseValveHistoryMapper.getNoOpenHaveCloseIntakesCount(params); 
 | 
  
 | 
        QueryResultVo<List<VoIntake>> rsVo = new QueryResultVo<>() ; 
 | 
        rsVo.pageSize = qo.pageSize ; 
 | 
        rsVo.pageCurr = qo.pageCurr ; 
 | 
  
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = rmOpenCloseValveHistoryMapper.getNoOpenHaveCloseIntakes(params); 
 | 
        return rsVo ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 统计指定月份各天用水量 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoDayIntakeAmount>> getDayIntakeAmount(IntakeAmountQO qo) throws ParseException { 
 | 
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
 | 
        String yearMonth = qo.getYearMonth(); 
 | 
        yearMonth = yearMonth + "-01"; 
 | 
        yearMonth = dateFormat.format(dateFormat.parse(yearMonth)); 
 | 
  
 | 
        Integer year = Integer.parseInt(yearMonth.substring(0,4)); 
 | 
        Integer month = Integer.parseInt(yearMonth.substring(5,7)); 
 | 
        qo.setYear(year); 
 | 
        qo.setMonth(month); 
 | 
  
 | 
        // 生成查询参数 
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; 
 | 
  
 | 
        // 获取符合条件的记录数 
 | 
        Long itemTotal = Optional.ofNullable(rmIntakeAmountDayMapper.getDayIntakeAmountCount(params)).orElse(0L); 
 | 
  
 | 
        QueryResultVo<List<VoDayIntakeAmount>> rsVo = new QueryResultVo<>() ; 
 | 
  
 | 
        rsVo.pageSize = qo.pageSize ; 
 | 
        rsVo.pageCurr = qo.pageCurr ; 
 | 
  
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = rmIntakeAmountDayMapper.getDayIntakeAmount(params); 
 | 
        return rsVo ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 统计指定年份各月用水量 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoMonthAmount>> getMonthIntakeAmount(IntakeAmountQO qo) { 
 | 
        Calendar calendar = Calendar.getInstance(); 
 | 
        Integer year = Optional.ofNullable(qo.getYear()).orElse(calendar.get(Calendar.YEAR)); 
 | 
        qo.setYear(year); 
 | 
  
 | 
        // 生成查询参数 
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; 
 | 
  
 | 
        // 获取符合条件的记录数 
 | 
        Long itemTotal = Optional.ofNullable(rmIntakeAmountDayMapper.getMonthIntakeAmountCount(params)).orElse(0L); 
 | 
  
 | 
        QueryResultVo<List<VoMonthAmount>> rsVo = new QueryResultVo<>() ; 
 | 
  
 | 
        rsVo.pageSize = qo.pageSize ; 
 | 
        rsVo.pageCurr = qo.pageCurr ; 
 | 
  
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = rmIntakeAmountDayMapper.getMonthIntakeAmount(params); 
 | 
        return rsVo ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 统计指定月份各天漏损量 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoDayLoss>> getDayLossAmount(IntakeAmountQO qo) throws ParseException { 
 | 
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
 | 
        String yearMonth = qo.getYearMonth(); 
 | 
        yearMonth = yearMonth + "-01"; 
 | 
        yearMonth = dateFormat.format(dateFormat.parse(yearMonth)); 
 | 
        Integer year = Integer.parseInt(yearMonth.substring(0,4)); 
 | 
        Integer month = Integer.parseInt(yearMonth.substring(5,7)); 
 | 
        qo.setYear(year); 
 | 
        qo.setMonth(month); 
 | 
  
 | 
        // 生成查询参数 
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; 
 | 
  
 | 
        // 获取符合条件的记录数 
 | 
        Long itemTotal = Optional.ofNullable(rmLossDayLastMapper.getDayLossAmountCount(params)).orElse(0L); 
 | 
  
 | 
        QueryResultVo<List<VoDayLoss>> rsVo = new QueryResultVo<>() ; 
 | 
  
 | 
        rsVo.pageSize = qo.pageSize ; 
 | 
        rsVo.pageCurr = qo.pageCurr ; 
 | 
  
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = rmLossDayLastMapper.getDayLossAmount(params); 
 | 
        return rsVo ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 统计指定年份各月漏损量 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoMonthAmount>> getMonthLossAmount(IntakeAmountQO qo) { 
 | 
        Calendar calendar = Calendar.getInstance(); 
 | 
        Integer year = Optional.ofNullable(qo.getYear()).orElse(calendar.get(Calendar.YEAR)); 
 | 
        qo.setYear(year); 
 | 
  
 | 
        // 生成查询参数 
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; 
 | 
  
 | 
        // 获取符合条件的记录数 
 | 
        Long itemTotal = Optional.ofNullable(rmLossDayLastMapper.getMonthLossAmountCount(params)).orElse(0L); 
 | 
  
 | 
        QueryResultVo<List<VoMonthAmount>> rsVo = new QueryResultVo<>() ; 
 | 
  
 | 
        rsVo.pageSize = qo.pageSize ; 
 | 
        rsVo.pageCurr = qo.pageCurr ; 
 | 
  
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = rmLossDayLastMapper.getMonthLossAmount(params); 
 | 
        return rsVo ; 
 | 
    } 
 | 
} 
 |