| 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 ; | 
|     } | 
|   | 
| } |