package com.dy.pipIrrStatistics.intake; 
 | 
  
 | 
import com.dy.common.util.DateTime; 
 | 
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.*; 
 | 
  
 | 
/** 
 | 
 * @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.signalIntensity.weak}") 
 | 
    private Integer weak; 
 | 
  
 | 
    @Value("${rtu.signalIntensity.ordinary}") 
 | 
    private Integer ordinary; 
 | 
  
 | 
    /** 
 | 
     * 获取指定时间段内未上线的取水口 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoIntake>> getNotOnlineIntakes(CommonQO qo, Long idStart, Long idEnd) { 
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; 
 | 
        params.put("idStart", idStart) ; 
 | 
        params.put("idEnd", idEnd) ; 
 | 
  
 | 
        // 获取符合条件的记录数 
 | 
        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<VoIntakeUnReported>> getUnReportedIntakes(CommonQO qo) { 
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo); 
 | 
        Long itemTotal = rmOnHourReportLastMapper.getUnReportedIntakesCount(params); 
 | 
  
 | 
        QueryResultVo<List<VoIntakeUnReported>> rsVo = new QueryResultVo<>() ; 
 | 
        rsVo.pageSize = qo.pageSize ; 
 | 
        rsVo.pageCurr = qo.pageCurr ; 
 | 
  
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = rmOnHourReportLastMapper.getUnReportedIntakes(params); 
 | 
        return rsVo ; 
 | 
    } 
 | 
  
 | 
    /** ok 1 
 | 
     * 获取累计流量超过指定值的取水口 
 | 
     * @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 ; 
 | 
    } 
 | 
  
 | 
    /** ok 2 
 | 
     * 获取累计流量低于指定值的取水口 
 | 
     * @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) { 
 | 
        // 生成查询参数 
 | 
        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 ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取从未开过阀的取水口 
 | 
     * @param qo 
 | 
     * @param idStart 
 | 
     * @param idEnd 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoIntakeUnOpenValve>> getNeverOpenValveIntakes(CommonQO qo, Long idStart, Long idEnd) { 
 | 
        // 生成查询参数 
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; 
 | 
        params.put("idStart", idStart) ; 
 | 
        params.put("idEnd", idEnd) ; 
 | 
  
 | 
        // 获取符合条件的记录数 
 | 
        Long itemTotal = Optional.ofNullable(rmOpenCloseValveHistoryMapper.getNeverOpenValveIntakesCount(params)).orElse(0L); 
 | 
  
 | 
        QueryResultVo<List<VoIntakeUnOpenValve>> 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) { 
 | 
        // 生成查询参数 
 | 
        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) { 
 | 
        // 生成查询参数 
 | 
        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 idStart 
 | 
     * @param idEnd 
 | 
     * @param openType 
 | 
     * @return 
 | 
     */ 
 | 
    public List<VoCountOfOpenType> getCountByOpenType(Long idStart, Long idEnd, Integer openType) { 
 | 
        // 生成查询参数 
 | 
        Map<String, Object> params = new HashMap<>() ; 
 | 
        params.put("idStart", idStart); 
 | 
        params.put("idEnd", idEnd); 
 | 
        params.put("openType", openType); 
 | 
  
 | 
        List<VoCountOfOpenType> list = rmOpenCloseValveLastMapper.getCountByOpenType(params) ; 
 | 
        if(list != null){ 
 | 
            for (VoCountOfOpenType vo : list) { 
 | 
                if (vo.openType != null){ 
 | 
                    switch (vo.openType) { 
 | 
                        case 1: 
 | 
                            vo.openTypeName = "刷卡开阀"; 
 | 
                            break; 
 | 
                        case 3: 
 | 
                            vo.openTypeName = "中心站开阀"; 
 | 
                            break; 
 | 
                        case 8: 
 | 
                            vo.openTypeName = "用户远程开阀"; 
 | 
                            break; 
 | 
                        case 11: 
 | 
                            vo.openTypeName = "巡检卡开阀"; 
 | 
                            break; 
 | 
                        default: 
 | 
                            vo.openTypeName = "未知类型开阀"; 
 | 
                    } 
 | 
                }else{ 
 | 
                    vo.openTypeName = "未知类型开阀"; 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return list ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 根据关阀类型获取操作次数 
 | 
     * @param idStart 
 | 
     * @param idEnd 
 | 
     * @param closeType 
 | 
     * @return 
 | 
     */ 
 | 
    public List<VoCountOfCloseType> getCountByCloseType(Long idStart, Long idEnd, Integer closeType) { 
 | 
        Map<String, Object> params = new HashMap<>() ; 
 | 
        params.put("idStart", idStart); 
 | 
        params.put("idEnd", idEnd); 
 | 
        params.put("closeType", closeType); 
 | 
  
 | 
        List<VoCountOfCloseType> list = rmOpenCloseValveLastMapper.getCountByCloseType(params) ; 
 | 
        if(list != null) { 
 | 
            for (VoCountOfCloseType vo : list) { 
 | 
                if (vo.closeType != null) { 
 | 
                    switch (vo.closeType) { 
 | 
                        case 2: 
 | 
                            vo.closeTypeName = "刷卡关阀"; 
 | 
                            break; 
 | 
                        case 4: 
 | 
                            vo.closeTypeName = "中心站关阀"; 
 | 
                            break; 
 | 
                        case 5: 
 | 
                            vo.closeTypeName = "欠费关阀"; 
 | 
                            break; 
 | 
                        case 6: 
 | 
                            vo.closeTypeName = "流量计故障关阀"; 
 | 
                            break; 
 | 
                        case 7: 
 | 
                            vo.closeTypeName = "紧急关阀"; 
 | 
                            break; 
 | 
                        case 9: 
 | 
                            vo.closeTypeName = "用户远程关阀"; 
 | 
                            break; 
 | 
                        case 10: 
 | 
                            vo.closeTypeName = "巡检卡关阀"; 
 | 
                            break; 
 | 
                        case 12: 
 | 
                            vo.closeTypeName = "黑名单命令关阀"; 
 | 
                            break; 
 | 
                        case 13: 
 | 
                            vo.closeTypeName = "远程定时关阀"; 
 | 
                            break; 
 | 
                        case 14: 
 | 
                            vo.closeTypeName = "远程定量关阀"; 
 | 
                            break; 
 | 
                        default: 
 | 
                            vo.closeTypeName = "未知关阀类型"; 
 | 
                    } 
 | 
                }else{ 
 | 
                    vo.closeTypeName = "未知关阀类型"; 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return list ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 指定时间段内累积流量超过指定值的取水口 
 | 
     * @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 ; 
 | 
    } 
 | 
  
 | 
    /** ok 3 
 | 
     * 指定时间段内用水量超过指定值的取水口 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoIntakeAccumulateAmount>> getUseWaterGtValueIntakes(IntakeAmountValueQO qo) { 
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        String timeStop = qo.getTimeStop(); 
 | 
        if(timeStart == null || timeStart.trim().equals("")) { 
 | 
            timeStart = DateTime.yyyy_MM_dd() ; 
 | 
            qo.setTimeStart(timeStart); 
 | 
        } 
 | 
        if(timeStop == null || timeStop.trim().equals("")) { 
 | 
            timeStop = DateTime.yyyy_MM_dd() ; 
 | 
            qo.setTimeStop(timeStop); 
 | 
        } 
 | 
        if (qo.getValue() == null){ 
 | 
            qo.setValue(0.0); 
 | 
        } 
 | 
  
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo); 
 | 
        Long itemTotal = rmIntakeAmountDayMapper.getUseWaterGtValueIntakesCount(params); 
 | 
  
 | 
        QueryResultVo<List<VoIntakeAccumulateAmount>> rsVo = new QueryResultVo<>() ; 
 | 
        rsVo.pageSize = qo.pageSize ; 
 | 
        rsVo.pageCurr = qo.pageCurr ; 
 | 
  
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = rmIntakeAmountDayMapper.getUseWaterGtValueIntakes(params); 
 | 
        return rsVo ; 
 | 
    } 
 | 
  
 | 
    /** ok 4 
 | 
     * 指定时间段内消费金额超过指定值的取水口 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoIntakeAccumulateAmount>> getExpenseGtValueIntakes(IntakeAmountValueQO qo) { 
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        String timeStop = qo.getTimeStop(); 
 | 
        if(timeStart == null || timeStart.trim().equals("")) { 
 | 
            timeStart = DateTime.yyyy_MM_dd() ; 
 | 
            qo.setTimeStart(timeStart); 
 | 
        } 
 | 
        if(timeStop == null || timeStop.trim().equals("")) { 
 | 
            timeStop = DateTime.yyyy_MM_dd() ; 
 | 
            qo.setTimeStop(timeStop); 
 | 
        } 
 | 
        if (qo.getValue() == null){ 
 | 
            qo.setValue(0.0); 
 | 
        } 
 | 
  
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo); 
 | 
        Long itemTotal = rmIntakeAmountDayMapper.getExpenseGtValueIntakesCount(params); 
 | 
  
 | 
        QueryResultVo<List<VoIntakeAccumulateAmount>> rsVo = new QueryResultVo<>() ; 
 | 
        rsVo.pageSize = qo.pageSize ; 
 | 
        rsVo.pageCurr = qo.pageCurr ; 
 | 
  
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = rmIntakeAmountDayMapper.getExpenseGtValueIntakes(params); 
 | 
        return rsVo ; 
 | 
    } 
 | 
  
 | 
    /** ok 4 
 | 
     * 指定时间段内消费金额超过指定值的取水口 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoIntakeAccumulateAmount>> getUseWaterTimesGtValueIntakes(IntakeCountValueQO qo) { 
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        String timeStop = qo.getTimeStop(); 
 | 
        if(timeStart == null || timeStart.trim().equals("")) { 
 | 
            timeStart = DateTime.yyyy_MM_dd() ; 
 | 
            qo.setTimeStart(timeStart); 
 | 
        } 
 | 
        if(timeStop == null || timeStop.trim().equals("")) { 
 | 
            timeStop = DateTime.yyyy_MM_dd() ; 
 | 
            qo.setTimeStop(timeStop); 
 | 
        } 
 | 
        if (qo.getValue() == null){ 
 | 
            qo.setValue(0); 
 | 
        } 
 | 
  
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo); 
 | 
        Long itemTotal = rmIntakeAmountDayMapper.getUseWaterTimesGtValueIntakesCount(params); 
 | 
  
 | 
        QueryResultVo<List<VoIntakeAccumulateAmount>> rsVo = new QueryResultVo<>() ; 
 | 
        rsVo.pageSize = qo.pageSize ; 
 | 
        rsVo.pageCurr = qo.pageCurr ; 
 | 
  
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = rmIntakeAmountDayMapper.getUseWaterTimesGtValueIntakes(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(IntakeCountValueQO qo) { 
 | 
        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(IntakeCountValueQO qo) { 
 | 
        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 ; 
 | 
    } 
 | 
  
 | 
} 
 |