|  |  |  | 
|---|
|  |  |  | package com.dy.pipIrrStatistics.intake; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.dy.common.webUtil.QueryResultVo; | 
|---|
|  |  |  | import com.dy.pipIrrGlobal.daoRm.RmOnHourReportHistoryMapper; | 
|---|
|  |  |  | import com.dy.pipIrrGlobal.daoRm.RmOnHourReportLastMapper; | 
|---|
|  |  |  | import com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveLastMapper; | 
|---|
|  |  |  | import com.dy.pipIrrGlobal.daoRm.*; | 
|---|
|  |  |  | import com.dy.pipIrrGlobal.voSt.*; | 
|---|
|  |  |  | import com.dy.pipIrrStatistics.intake.qo.*; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | @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; | 
|---|
|  |  |  | 
|---|
|  |  |  | * @param qo | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public QueryResultVo<List<VoIntake>> getNotOnlineIntakes(IntakeQO qo) { | 
|---|
|  |  |  | public QueryResultVo<List<VoIntake>> getNotOnlineIntakes(CommonQO qo) { | 
|---|
|  |  |  | DecimalFormat df = new DecimalFormat("0.00"); | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 补齐起止时间,如果开始时间为空,则默认为当前日期 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | String timeStart = qo.getTimeStart(); | 
|---|
|  |  |  | String timeStop = qo.getTimeStop(); | 
|---|
|  |  |  | if(timeStart != null) { | 
|---|
|  |  |  | timeStart = timeStart + " 00:00:00"; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | timeStart = LocalDate.now() + " 00:00:00"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取从未开过阀的取水口 | 
|---|
|  |  |  | * @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(timeStart != null) { | 
|---|
|  |  |  | timeStart = timeStart + " 00:00:00"; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | timeStart = LocalDate.now() + " 00:00:00"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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 = ""; | 
|---|
|  |  |  | switch (openType) { | 
|---|
|  |  |  | case 1: | 
|---|
|  |  |  | openTypeName = "刷卡开阀"; | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 3: | 
|---|
|  |  |  | openTypeName = "中心站开阀"; | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 8: | 
|---|
|  |  |  | openTypeName = "用户远程开阀"; | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 11: | 
|---|
|  |  |  | openTypeName = "开关阀卡开阀"; | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 13: | 
|---|
|  |  |  | openTypeName = "开关阀卡开阀"; | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | 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 = "不知道您要查那种开阀类型"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 生成查询参数 | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | String timeStart = qo.getTimeStart(); | 
|---|
|  |  |  | String timeStop = qo.getTimeStop(); | 
|---|
|  |  |  | if(timeStart != null) { | 
|---|
|  |  |  | timeStart = timeStart + " 00:00:00"; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | timeStart = LocalDate.now() + " 00:00:00"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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 = ""; | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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 ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 最近未报数的取水口 | 
|---|
|  |  |  | * @param qo | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public QueryResultVo<List<VoIntakeUnReported>> getUnReportedIntakes(CommonQO qo) { | 
|---|
|  |  |  | String timeStart = qo.getTimeStart(); | 
|---|
|  |  |  | String timeStop = qo.getTimeStop(); | 
|---|
|  |  |  | if(timeStart == "") { | 
|---|
|  |  |  | timeStart = null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(timeStop == "") { | 
|---|
|  |  |  | timeStop = null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(timeStart != null && timeStart != "") { | 
|---|
|  |  |  | timeStart = timeStart + " 00:00:00"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | qo.setTimeStart(timeStart); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(timeStop != null && timeStop != "") { | 
|---|
|  |  |  | timeStop = timeStop + " 23:59:59"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | qo.setTimeStop(timeStop); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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 ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|