From 17df6bed39d4c29b69c9600904629b1bff1eab1d Mon Sep 17 00:00:00 2001
From: wuzeyu <1223318623@qq.com>
Date: 星期四, 29 八月 2024 13:55:35 +0800
Subject: [PATCH] 优化代码 根据关阀类型获取操作次数

---
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntakeSv.java |  689 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 674 insertions(+), 15 deletions(-)

diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntakeSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntakeSv.java
index c9e3b05..77e36a9 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntakeSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntakeSv.java
@@ -1,18 +1,20 @@
 package com.dy.pipIrrStatistics.intake;
 
 import com.dy.common.webUtil.QueryResultVo;
-import com.dy.pipIrrGlobal.daoRm.RmOnHourReportHistoryMapper;
-import com.dy.pipIrrGlobal.voSt.VoCumulativeFlow;
-import com.dy.pipIrrGlobal.voSt.VoIntake;
-import com.dy.pipIrrStatistics.intake.qo.CumulativeFlowQO;
-import com.dy.pipIrrStatistics.intake.qo.IntakeQO;
+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;
@@ -29,26 +31,49 @@
 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(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);
@@ -79,7 +104,7 @@
         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
 
         // 鑾峰彇绗﹀悎鏉′欢鐨勮褰曟暟
-        Long itemTotal = Optional.ofNullable(rmOnHourReportHistoryMapper.getLargeFlowIntakesCount(params)).orElse(0L);
+        Long itemTotal = Optional.ofNullable(rmOnHourReportLastMapper.getLargeFlowIntakesCount(params)).orElse(0L);
 
         QueryResultVo<List<VoCumulativeFlow>> rsVo = new QueryResultVo<>() ;
 
@@ -87,7 +112,7 @@
         rsVo.pageCurr = qo.pageCurr ;
 
         rsVo.calculateAndSet(itemTotal, params);
-        rsVo.obj = rmOnHourReportHistoryMapper.getLargeFlowIntakes(params);
+        rsVo.obj = rmOnHourReportLastMapper.getLargeFlowIntakes(params);
         return rsVo ;
     }
 
@@ -101,7 +126,7 @@
         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
 
         // 鑾峰彇绗﹀悎鏉′欢鐨勮褰曟暟
-        Long itemTotal = Optional.ofNullable(rmOnHourReportHistoryMapper.getSmallFlowIntakesCount(params)).orElse(0L);
+        Long itemTotal = Optional.ofNullable(rmOnHourReportLastMapper.getSmallFlowIntakesCount(params)).orElse(0L);
 
         QueryResultVo<List<VoCumulativeFlow>> rsVo = new QueryResultVo<>() ;
 
@@ -109,7 +134,641 @@
         rsVo.pageCurr = qo.pageCurr ;
 
         rsVo.calculateAndSet(itemTotal, params);
-        rsVo.obj = rmOnHourReportHistoryMapper.getSmallFlowIntakes(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 = "涓嶇煡閬撴偍瑕佹煡閭g寮�闃�绫诲瀷";
+        }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 = "涓嶇煡閬撴偍瑕佹煡閭g寮�闃�绫诲瀷";
+            }
+        }
+
+        // 鐢熸垚鏌ヨ鍙傛暟
+        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 = "涓嶇煡閬撴偍瑕佹煡閭g鍏抽榾绫诲瀷";
+        }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 = "涓嶇煡閬撴偍瑕佹煡閭g鍏抽榾绫诲瀷";
+            }
+        }
+        // 鐢熸垚鏌ヨ鍙傛暟
+        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 ;
     }
 }

--
Gitblit v1.8.0