From db31f95644e77010ffb88ac9e57e618818737733 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期四, 09 一月 2025 11:25:23 +0800
Subject: [PATCH] 优化”开阀操作次数“、”关阀操作次数“、”时间段内开阀次数超过指定值“、”时间段内开阀次数低于指定值“、”时间段有开阀无关阀“、”时间段无开阀有关阀“功能实现及sql。

---
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml                                |   97 ++++---
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeCountValueQO.java |    8 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntkeCtrl.java             |  225 ++++++++++++++----
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntakeSv.java              |  275 ++++++----------------
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfCloseType.java                             |    9 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveLastMapper.xml                                   |   32 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveLastMapper.java                    |    6 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfOpenType.java                              |    9 
 8 files changed, 355 insertions(+), 306 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveLastMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveLastMapper.java
index 1efa08b..c5b1571 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveLastMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveLastMapper.java
@@ -3,6 +3,8 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast;
 import com.dy.pipIrrGlobal.voRm.VoOpenCloseValve;
+import com.dy.pipIrrGlobal.voSt.VoCountOfCloseType;
+import com.dy.pipIrrGlobal.voSt.VoCountOfOpenType;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -91,14 +93,14 @@
      * @param params
      * @return
      */
-    Integer getCountByOpenType(Map<?, ?> params);
+    List<VoCountOfOpenType> getCountByOpenType(Map<?, ?> params);
 
     /**
      * 鏍规嵁鍏抽榾绫诲瀷鑾峰彇鎿嶄綔娆℃暟
      * @param params
      * @return
      */
-    Integer getCountByCloseType(Map<?, ?> params);
+    List<VoCountOfCloseType> getCountByCloseType(Map<?, ?> params);
 
     /**
      * 涓烘寚瀹氾紙闃�鎺у櫒鍦板潃銆佹按鍗$紪鍙枫�佹棤鍏抽榾璁板綍锛夊紑鍏抽榾鏈�鏂拌褰曟坊鍔犲叧闃�鏃堕棿锛屼娇涔嬩笉鍦ㄦ湭鍏抽榾璁板綍涓樉绀�
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfCloseType.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfCloseType.java
index 9d488e6..b207e21 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfCloseType.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfCloseType.java
@@ -13,12 +13,17 @@
 public class VoCountOfCloseType {
 
     /**
+     * 寮�闃�鏂圭被鍨�
+     */
+    public Integer closeType;
+
+    /**
      * 鍏抽榾绫诲瀷鍚嶇О
      */
-    private String closeTypeName;
+    public String closeTypeName;
 
     /**
      * 鍏抽榾绫诲瀷娆℃暟
      */
-    private Integer closeTypeCount;
+    public Integer closeTypeCount;
 }
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfOpenType.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfOpenType.java
index 22eda61..79e1aa8 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfOpenType.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfOpenType.java
@@ -13,12 +13,17 @@
 public class VoCountOfOpenType {
 
     /**
+     * 寮�闃�鏂圭被鍨�
+     */
+    public Integer openType;
+
+    /**
      * 寮�闃�鏂圭被鍨嬪悕绉�
      */
-    private String openTypeName;
+    public String openTypeName;
 
     /**
      * 寮�闃�绫诲瀷娆℃暟
      */
-    private Integer openTypeCount;
+    public Integer openTypeCount;
 }
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml
index 8156a0d..0728c4a 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml
@@ -591,10 +591,11 @@
                      inta.name AS intakeNum,
                      blo.name  AS blockName
               FROM pr_intake inta
-                       LEFT JOIN (SELECT *
-                                  FROM rm_open_close_valve_history
-                                  WHERE op_dt BETWEEN #{timeStart} AND #{timeStop}) his ON his.intake_id = inta.id
-                       INNER JOIN ba_block blo ON blo.id = inta.blockId
+              LEFT JOIN (SELECT intake_id
+                          FROM rm_open_close_valve_history
+                          WHERE id <![CDATA[>=]]> #{idStart} AND id <![CDATA[<=]]> #{idEnd}
+              ) his ON his.intake_id = inta.id
+              INNER JOIN ba_block blo ON blo.id = inta.blockId
               WHERE inta.deleted = 0
               GROUP BY intakeId, intakeNum, blockName
               HAVING recordCount &gt; #{value}) a
@@ -606,20 +607,22 @@
                inta.name AS intakeNum,
                blo.name  AS blockName
         FROM pr_intake inta
-                 LEFT JOIN (SELECT *
-                            FROM rm_open_close_valve_history
-                            WHERE op_dt BETWEEN #{timeStart} AND #{timeStop}) his ON his.intake_id = inta.id
-                 INNER JOIN ba_block blo ON blo.id = inta.blockId
+        LEFT JOIN(SELECT intake_id
+                   FROM rm_open_close_valve_history
+                   WHERE id <![CDATA[>=]]> #{idStart} AND id <![CDATA[<=]]> #{idEnd}
+        ) his ON his.intake_id = inta.id
+        INNER JOIN ba_block blo ON blo.id = inta.blockId
         WHERE inta.deleted = 0
         GROUP BY intakeId, intakeNum, blockName
         HAVING recordCount &gt; #{value}
-        <!--        ORDER BY inta.id-->
+        ORDER BY intakeId DESC
         <trim prefix="limit ">
             <if test="start != null and count != null">
                 #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
             </if>
         </trim>
     </select>
+
     <!--鑾峰彇鎸囧畾鏃堕棿娈靛唴寮�闃�娆℃暟浣庝簬鎸囧畾鍊肩殑鍙栨按鍙f暟閲�-->
     <select id="getOpenValveLtIntakesCount" resultType="java.lang.Long">
         select count(*)
@@ -628,10 +631,11 @@
                      inta.name AS intakeNum,
                      blo.name  AS blockName
               FROM pr_intake inta
-                       LEFT JOIN (SELECT *
-                                  FROM rm_open_close_valve_history
-                                  WHERE op_dt BETWEEN #{timeStart} AND #{timeStop}) his ON his.intake_id = inta.id
-                       INNER JOIN ba_block blo ON blo.id = inta.blockId
+              LEFT JOIN (SELECT intake_id
+                          FROM rm_open_close_valve_history
+                          WHERE id <![CDATA[>=]]> #{idStart} AND id <![CDATA[<=]]> #{idEnd}
+              ) his ON his.intake_id = inta.id
+              INNER JOIN ba_block blo ON blo.id = inta.blockId
               WHERE inta.deleted = 0
               GROUP BY intakeId, intakeNum, blockName
               HAVING recordCount &lt; #{value}) a
@@ -643,14 +647,15 @@
                inta.name AS intakeNum,
                blo.name  AS blockName
         FROM pr_intake inta
-                 LEFT JOIN (SELECT *
-                            FROM rm_open_close_valve_history
-                            WHERE op_dt BETWEEN #{timeStart} AND #{timeStop}) his ON his.intake_id = inta.id
-                 INNER JOIN ba_block blo ON blo.id = inta.blockId
+        LEFT JOIN(SELECT intake_id
+                   FROM rm_open_close_valve_history
+                   WHERE id <![CDATA[>=]]> #{idStart} AND id <![CDATA[<=]]> #{idEnd}
+        ) his ON his.intake_id = inta.id
+        INNER JOIN ba_block blo ON blo.id = inta.blockId
         WHERE inta.deleted = 0
         GROUP BY intakeId, intakeNum, blockName
         HAVING recordCount &lt; #{value}
-        <!--        ORDER BY inta.id-->
+        ORDER BY intakeId DESC
         <trim prefix="limit ">
             <if test="start != null and count != null">
                 #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
@@ -1080,31 +1085,32 @@
     <!--鎸囧畾鏃堕棿娈� 鏈夊紑闃� 鏃犲叧闃�鐨勫彇姘村彛鏁伴噺-->
     <select id="getHaveOpenNoCloseIntakesCount" resultType="java.lang.Long">
         select count(*) from
-            (
-        SELECT
-        inta.id AS intakeId,
-        inta.NAME AS intakeNum,
-        blo.NAME AS blockName
-        FROM
-        pr_intake inta
-        INNER JOIN ba_block blo ON blo.id = inta.blockId
-        inner JOIN rm_open_close_valve_history rocvh ON rocvh.intake_id = inta.id
-        WHERE rocvh.op_dt BETWEEN #{timeStart} AND  #{timeStop} AND rocvh.cl_dt IS NULL AND inta.deleted = 0
-        GROUP BY inta.id) c
+        (
+            SELECT
+            inta.id AS intakeId
+            FROM
+            pr_intake inta
+            INNER JOIN ba_block blo ON blo.id = inta.blockId
+            inner JOIN rm_open_close_valve_history rocvh ON rocvh.intake_id = inta.id
+            WHERE inta.deleted = 0 AND rocvh.id >= #{idStart} AND  rocvh.id >= #{idEnd} AND rocvh.cl_dt IS NULL
+            GROUP BY inta.id
+        ) c
     </select>
     <!--鎸囧畾鏃堕棿娈� 鏈夊紑闃� 鏃犲叧闃�鐨勫彇姘村彛-->
     <select id="getHaveOpenNoCloseIntakes" resultType="com.dy.pipIrrGlobal.voSt.VoIntake">
         SELECT
             inta.id AS intakeId,
             inta.NAME AS intakeNum,
+            inta.lng AS lng,
+            inta.lat AS lat,
             blo.NAME AS blockName
         FROM
             pr_intake inta
-                INNER JOIN ba_block blo ON blo.id = inta.blockId
-                inner JOIN rm_open_close_valve_history rocvh ON rocvh.intake_id = inta.id
-        WHERE rocvh.op_dt BETWEEN #{timeStart} AND  #{timeStop} AND rocvh.cl_dt IS NULL AND inta.deleted = 0
+            INNER JOIN ba_block blo ON blo.id = inta.blockId
+            inner JOIN rm_open_close_valve_history rocvh ON rocvh.intake_id = inta.id
+        WHERE inta.deleted = 0 AND rocvh.id >= #{idStart} AND  rocvh.id >= #{idEnd} AND rocvh.cl_dt IS NULL
         GROUP BY inta.id
-        ORDER BY inta.id
+        ORDER BY inta.id DESC
         <trim prefix="limit ">
             <if test="start != null and count != null">
                 #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
@@ -1115,30 +1121,31 @@
     <select id="getNoOpenHaveCloseIntakesCount" resultType="java.lang.Long">
         select count(*) from
         (
-        SELECT
-        inta.id AS intakeId,
-        inta.NAME AS intakeNum,
-        blo.NAME AS blockName
-        FROM
-        pr_intake inta
-        INNER JOIN ba_block blo ON blo.id = inta.blockId
-        inner JOIN rm_open_close_valve_history rocvh ON rocvh.intake_id = inta.id
-        WHERE rocvh.cl_dt BETWEEN #{timeStart} AND  #{timeStop} AND rocvh.op_dt IS NULL AND inta.deleted = 0
-        GROUP BY inta.id) c
+            SELECT
+            inta.id AS intakeId
+            FROM
+            pr_intake inta
+            INNER JOIN ba_block blo ON blo.id = inta.blockId
+            inner JOIN rm_open_close_valve_history rocvh ON rocvh.intake_id = inta.id
+            WHERE inta.deleted = 0 AND rocvh.id >= #{idStart} AND  rocvh.id >= #{idEnd} AND rocvh.op_dt IS NULL
+            GROUP BY inta.id
+        ) c
     </select>
     <!--鎸囧畾鏃堕棿娈� 鏃犲紑闃� 鏈夊叧闃�鐨勫彇姘村彛-->
     <select id="getNoOpenHaveCloseIntakes" resultType="com.dy.pipIrrGlobal.voSt.VoIntake">
         SELECT
         inta.id AS intakeId,
         inta.NAME AS intakeNum,
+        inta.lng AS lng,
+        inta.lat AS lat,
         blo.NAME AS blockName
         FROM
         pr_intake inta
         INNER JOIN ba_block blo ON blo.id = inta.blockId
         inner JOIN rm_open_close_valve_history rocvh ON rocvh.intake_id = inta.id
-        WHERE rocvh.cl_dt BETWEEN #{timeStart} AND  #{timeStop} AND rocvh.op_dt IS NULL AND inta.deleted = 0
+        WHERE inta.deleted = 0 AND rocvh.id >= #{idStart} AND  rocvh.id >= #{idEnd} AND rocvh.op_dt IS NULL
         GROUP BY inta.id
-        ORDER BY inta.id
+        ORDER BY inta.id DESC
         <trim prefix="limit ">
             <if test="start != null and count != null">
                 #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveLastMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveLastMapper.xml
index ec4f68d..8b04ce5 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveLastMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveLastMapper.xml
@@ -552,31 +552,43 @@
     </select>
 
     <!--鏍规嵁寮�闃�鏂瑰紡鑾峰彇鎿嶄綔娆℃暟-->
-    <select id="getCountByOpenType" resultType="java.lang.Integer">
-        SELECT COUNT(*) AS recordCount
+    <select id="getCountByOpenType" resultType="com.dy.pipIrrGlobal.voSt.VoCountOfOpenType">
+        SELECT
+        COUNT(*) AS openTypeCount,
+        op_type AS openType
         FROM rm_open_close_valve_history
         <where>
+            <if test="idStart != nul">
+                id <![CDATA[>=]]> #{idStart}
+            </if>
+            <if test="idEnd != nul">
+                AND id <![CDATA[<=]]> #{idEnd}
+            </if>
             <if test="openType != null">
                 AND op_type = #{openType}
             </if>
-            <if test="timeStart != null and timeStop != null">
-                AND op_dt BETWEEN #{timeStart} AND #{timeStop}
-            </if>
         </where>
+        group by op_type
     </select>
 
     <!--鏍规嵁鍏抽榾鏂瑰紡鑾峰彇鎿嶄綔娆℃暟-->
-    <select id="getCountByCloseType" resultType="java.lang.Integer">
-        SELECT COUNT(*) AS recordCount
+    <select id="getCountByCloseType" resultType="com.dy.pipIrrGlobal.voSt.VoCountOfCloseType">
+        SELECT
+        COUNT(*) AS closeTypeCount,
+        cl_type AS closeType
         FROM rm_open_close_valve_history
         <where>
+            <if test="idStart != nul">
+                id <![CDATA[>=]]> #{idStart}
+            </if>
+            <if test="idEnd != nul">
+                AND id <![CDATA[<=]]> #{idEnd}
+            </if>
             <if test="closeType != null">
                 AND cl_type = #{closeType}
             </if>
-            <if test="timeStart != null and timeStop != null">
-                AND cl_dt BETWEEN #{timeStart} AND #{timeStop}
-            </if>
         </where>
+        group by cl_type
     </select>
 
     <!--涓烘寚瀹氾紙闃�鎺у櫒鍦板潃銆佹按鍗$紪鍙枫�佹棤鍏抽榾璁板綍锛夊紑鍏抽榾鏈�鏂拌褰曟坊鍔犲叧闃�鏃堕棿锛屼娇涔嬩笉鍦ㄦ湭鍏抽榾璁板綍涓樉绀�-->
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 613d661..fa96fca 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
@@ -15,10 +15,7 @@
 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;
+import java.util.*;
 
 /**
  * @author ZhuBaoMin
@@ -231,23 +228,6 @@
      * @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) ;
 
@@ -270,25 +250,8 @@
      * @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) ;
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo);
 
         // 鑾峰彇绗﹀悎鏉′欢鐨勮褰曟暟
         Long itemTotal = Optional.ofNullable(rmOpenCloseValveHistoryMapper.getOpenValveLtIntakesCount(params)).orElse(0L);
@@ -305,137 +268,97 @@
 
     /**
      * 鏍规嵁寮�闃�绫诲瀷鑾峰彇鎿嶄綔娆℃暟
-     * @param qo
+     * @param idStart
+     * @param idEnd
+     * @param openType
      * @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寮�闃�绫诲瀷";
-            }
-        }
-
+    public List<VoCountOfOpenType> getCountByOpenType(Long idStart, Long idEnd, Integer openType) {
         // 鐢熸垚鏌ヨ鍙傛暟
-        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
+        Map<String, Object> params = new HashMap<>() ;
+        params.put("idStart", idStart);
+        params.put("idEnd", idEnd);
+        params.put("openType", openType);
 
-        Integer openTypeCount = Optional.ofNullable(rmOpenCloseValveLastMapper.getCountByOpenType(params)).orElse(0);
-
-        VoCountOfOpenType vo = new VoCountOfOpenType();
-        vo.setOpenTypeName(openTypeName);
-        vo.setOpenTypeCount(openTypeCount);
-        return vo;
+        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 = "鏈煡绫诲瀷寮�闃�";
+                    }
+                }
+            }
+        }
+        return list ;
     }
 
     /**
      * 鏍规嵁鍏抽榾绫诲瀷鑾峰彇鎿嶄綔娆℃暟
-     * @param qo
+     * @param idStart
+     * @param idEnd
+     * @param closeType
      * @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);
+    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);
 
-        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鍏抽榾绫诲瀷";
+        List<VoCountOfCloseType> list = rmOpenCloseValveLastMapper.getCountByCloseType(params) ;
+        if(list != null) {
+            for (VoCountOfCloseType vo : list) {
+                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 = "鏈煡鍏抽榾绫诲瀷";
+                }
             }
         }
-        // 鐢熸垚鏌ヨ鍙傛暟
-        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;
+        return list ;
     }
 
     /**
@@ -615,24 +538,7 @@
      * @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);
-
-
+    public QueryResultVo<List<VoIntake>> getHaveOpenNoCloseIntakes(IntakeCountValueQO qo) {
         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo);
         Long itemTotal = rmOpenCloseValveHistoryMapper.getHaveOpenNoCloseIntakesCount(params);
 
@@ -650,24 +556,7 @@
      * @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);
-
-
+    public QueryResultVo<List<VoIntake>> getNoOpenHaveCloseIntakes(IntakeCountValueQO qo) {
         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo);
         Long itemTotal = rmOpenCloseValveHistoryMapper.getNoOpenHaveCloseIntakesCount(params);
 
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntkeCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntkeCtrl.java
index 5409a0a..d141c28 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntkeCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntkeCtrl.java
@@ -1,6 +1,8 @@
 package com.dy.pipIrrStatistics.intake;
 
 import com.dy.common.aop.SsoAop;
+import com.dy.common.util.DateTime;
+import com.dy.common.util.IDLongGenerator;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.common.webUtil.QueryResultVo;
@@ -17,6 +19,7 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -50,7 +53,7 @@
         try {
             return BaseResponseUtils.buildSuccess(intakeSv.getNotOnlineIntakes(qo));
         } catch (Exception e) {
-            log.error("鑾峰彇寮�鍗¤褰曞紓甯�", e);
+            log.error("鑾峰彇璁板綍寮傚父", e);
             return BaseResponseUtils.buildException(e.getMessage()) ;
         }
     }
@@ -69,7 +72,7 @@
         try {
             return BaseResponseUtils.buildSuccess(intakeSv.getLargeFlowIntakes(qo));
         } catch (Exception e) {
-            log.error("鑾峰彇寮�鍗¤褰曞紓甯�", e);
+            log.error("鑾峰彇璁板綍寮傚父", e);
             return BaseResponseUtils.buildException(e.getMessage()) ;
         }
     }
@@ -88,7 +91,7 @@
         try {
             return BaseResponseUtils.buildSuccess(intakeSv.getSmallFlowIntakes(qo));
         } catch (Exception e) {
-            log.error("鑾峰彇寮�鍗¤褰曞紓甯�", e);
+            log.error("鑾峰彇璁板綍寮傚父", e);
             return BaseResponseUtils.buildException(e.getMessage()) ;
         }
     }
@@ -107,7 +110,7 @@
         try {
             return BaseResponseUtils.buildSuccess(intakeSv.getUnderVoltIntakes(qo));
         } catch (Exception e) {
-            log.error("鑾峰彇寮�鍗¤褰曞紓甯�", e);
+            log.error("鑾峰彇璁板綍寮傚父", e);
             return BaseResponseUtils.buildException(e.getMessage()) ;
         }
     }
@@ -126,48 +129,165 @@
         try {
             return BaseResponseUtils.buildSuccess(intakeSv.getSpecifiedSignalIntakes(qo));
         } catch (Exception e) {
-            log.error("鑾峰彇寮�鍗¤褰曞紓甯�", e);
+            log.error("鑾峰彇璁板綍寮傚父", e);
             return BaseResponseUtils.buildException(e.getMessage()) ;
         }
     }
 
-    /**
+    /** ok 11
      * 鏍规嵁寮�闃�绫诲瀷鑾峰彇鎿嶄綔娆℃暟
      * @param qo
      * @return
      */
     @GetMapping(path = "/getCountByOpenType")
     @SsoAop()
-    public BaseResponse<QueryResultVo<VoCountOfOpenType>> getCountByOpenType(@Valid OpenTypeQO qo, BindingResult bindingResult) {
+    public BaseResponse<QueryResultVo<VoCountOfOpenType>> getCountByOpenType(@Valid OpenTypeQO qo, BindingResult bindingResult) throws Exception{
         if(bindingResult != null && bindingResult.hasErrors()){
             return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
         }
+        String timeStart = qo.getTimeStart();
+        String timeStop = qo.getTimeStop();
+        if(timeStart == null || timeStart.trim().equals("")){
+            return BaseResponseUtils.buildErrorMsg("璇疯缃煡璇㈠紑濮嬫椂闂�");
+        }
+        if(timeStop == null || timeStop.trim().equals("")){
+            return BaseResponseUtils.buildErrorMsg("璇疯缃煡璇㈡埅姝㈡椂闂�");
+        }
+        long dur = DateTime.daysBetweenyyyy_MM_dd(timeStop, timeStart) ;
+        if(dur < 0){
+            return BaseResponseUtils.buildErrorMsg("鎴鏃堕棿涓嶈兘鏃╀簬寮�濮嬫椂闂�");
+        }
+        if(dur > 366){
+            return BaseResponseUtils.buildErrorMsg("鏃堕棿璺ㄥ害涓嶈兘瓒呰繃涓�骞�");
+        }
+        int[] ymdStart = DateTime.yyyy_MM_dd_2_ymdGroup(timeStart) ;
+        int[] ymdEnd = DateTime.yyyy_MM_dd_2_ymdGroup(timeStop) ;
+        long startId = IDLongGenerator.generateOneDayStartId(ymdStart[0], ymdStart[1], ymdStart[2]) ;
+        long endId = IDLongGenerator.generateOneDayStartId(ymdEnd[0], ymdEnd[1], ymdEnd[2]) ;
         try {
-            return BaseResponseUtils.buildSuccess(intakeSv.getCountByOpenType(qo));
+            return BaseResponseUtils.buildSuccess(intakeSv.getCountByOpenType(startId, endId, qo.getOpenType()));
         } catch (Exception e) {
-            log.error("鑾峰彇寮�鍗¤褰曞紓甯�", e);
+            log.error("鑾峰彇璁板綍寮傚父", e);
             return BaseResponseUtils.buildException(e.getMessage()) ;
         }
     }
 
-    /**
+    /** ok 12
      * 鏍规嵁鍏抽榾绫诲瀷鑾峰彇鎿嶄綔娆℃暟
      * @param qo
      * @return
      */
     @GetMapping(path = "/getCountByCloseType")
     @SsoAop()
-    public BaseResponse<QueryResultVo<VoCountOfCloseType>> getCountByCloseType(@Valid CloseTypeQo qo, BindingResult bindingResult) {
+    public BaseResponse<QueryResultVo<VoCountOfCloseType>> getCountByCloseType(@Valid CloseTypeQo qo, BindingResult bindingResult) throws Exception{
         if(bindingResult != null && bindingResult.hasErrors()){
             return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
         }
+        String timeStart = qo.getTimeStart();
+        String timeStop = qo.getTimeStop();
+        if(timeStart == null || timeStart.trim().equals("")){
+            return BaseResponseUtils.buildErrorMsg("璇疯缃煡璇㈠紑濮嬫椂闂�");
+        }
+        if(timeStop == null || timeStop.trim().equals("")){
+            return BaseResponseUtils.buildErrorMsg("璇疯缃煡璇㈡埅姝㈡椂闂�");
+        }
+        long dur = DateTime.daysBetweenyyyy_MM_dd(timeStop, timeStart) ;
+        if(dur < 0){
+            return BaseResponseUtils.buildErrorMsg("鎴鏃堕棿涓嶈兘鏃╀簬寮�濮嬫椂闂�");
+        }
+        if(dur > 366){
+            return BaseResponseUtils.buildErrorMsg("鏃堕棿璺ㄥ害涓嶈兘瓒呰繃涓�骞�");
+        }
+        int[] ymdStart = DateTime.yyyy_MM_dd_2_ymdGroup(timeStart) ;
+        int[] ymdEnd = DateTime.yyyy_MM_dd_2_ymdGroup(timeStop) ;
+        long startId = IDLongGenerator.generateOneDayStartId(ymdStart[0], ymdStart[1], ymdStart[2]) ;
+        long endId = IDLongGenerator.generateOneDayStartId(ymdEnd[0], ymdEnd[1], ymdEnd[2]) ;
         try {
-            return BaseResponseUtils.buildSuccess(intakeSv.getCountByCloseType(qo));
+            return BaseResponseUtils.buildSuccess(intakeSv.getCountByCloseType(startId, endId, qo.getCloseType()));
         } catch (Exception e) {
-            log.error("鑾峰彇寮�鍗¤褰曞紓甯�", e);
+            log.error("鑾峰彇璁板綍寮傚父", e);
             return BaseResponseUtils.buildException(e.getMessage()) ;
         }
     }
+
+    /** ok 13
+     * 鑾峰彇鎸囧畾鏃堕棿娈靛唴寮�闃�娆℃暟瓒呰繃鎸囧畾鍊肩殑鍙栨按鍙�
+     * @param
+     * @return
+     */
+    @GetMapping(path = "/getOpenValveGtIntakes")
+    @SsoAop()
+    public BaseResponse<QueryResultVo<List<VoIntakeOpenCount>>> getOpenValveGtIntakes(@Valid IntakeCountValueQO qo, BindingResult bindingResult) throws Exception {
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+        String timeStart = qo.getTimeStart();
+        String timeStop = qo.getTimeStop();
+        if(timeStart == null || timeStart.trim().equals("")){
+            return BaseResponseUtils.buildErrorMsg("璇疯缃煡璇㈠紑濮嬫椂闂�");
+        }
+        if(timeStop == null || timeStop.trim().equals("")){
+            return BaseResponseUtils.buildErrorMsg("璇疯缃煡璇㈡埅姝㈡椂闂�");
+        }
+        long dur = DateTime.daysBetweenyyyy_MM_dd(timeStop, timeStart) ;
+        if(dur < 0){
+            return BaseResponseUtils.buildErrorMsg("鎴鏃堕棿涓嶈兘鏃╀簬寮�濮嬫椂闂�");
+        }
+        if(dur > 366){
+            return BaseResponseUtils.buildErrorMsg("鏃堕棿璺ㄥ害涓嶈兘瓒呰繃涓�骞�");
+        }
+        int[] ymdStart = DateTime.yyyy_MM_dd_2_ymdGroup(timeStart) ;
+        int[] ymdEnd = DateTime.yyyy_MM_dd_2_ymdGroup(timeStop) ;
+        qo.idStart = IDLongGenerator.generateOneDayStartId(ymdStart[0], ymdStart[1], ymdStart[2]) ;
+        qo.idEnd = IDLongGenerator.generateOneDayStartId(ymdEnd[0], ymdEnd[1], ymdEnd[2]) ;
+        try {
+            QueryResultVo<List<VoIntakeOpenCount>> res = intakeSv.getOpenValveGtIntakes(qo);
+            return BaseResponseUtils.buildSuccess(res);
+        } catch (Exception e) {
+            log.error("鑾峰彇璁板綍寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+    /** ok 14
+     * 鑾峰彇鎸囧畾鏃堕棿娈靛唴寮�闃�娆℃暟浣庝簬鎸囧畾鍊肩殑鍙栨按鍙�
+     * @param
+     * @return
+     */
+    @GetMapping(path = "/getOpenValveLtIntakes")
+    @SsoAop()
+    public BaseResponse<QueryResultVo<List<VoIntakeOpenCount>>> getOpenValveLtIntakes(@Valid IntakeCountValueQO qo, BindingResult bindingResult) throws Exception {
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+        String timeStart = qo.getTimeStart();
+        String timeStop = qo.getTimeStop();
+        if(timeStart == null || timeStart.trim().equals("")){
+            return BaseResponseUtils.buildErrorMsg("璇疯缃煡璇㈠紑濮嬫椂闂�");
+        }
+        if(timeStop == null || timeStop.trim().equals("")){
+            return BaseResponseUtils.buildErrorMsg("璇疯缃煡璇㈡埅姝㈡椂闂�");
+        }
+        long dur = DateTime.daysBetweenyyyy_MM_dd(timeStop, timeStart) ;
+        if(dur < 0){
+            return BaseResponseUtils.buildErrorMsg("鎴鏃堕棿涓嶈兘鏃╀簬寮�濮嬫椂闂�");
+        }
+        if(dur > 366){
+            return BaseResponseUtils.buildErrorMsg("鏃堕棿璺ㄥ害涓嶈兘瓒呰繃涓�骞�");
+        }
+        int[] ymdStart = DateTime.yyyy_MM_dd_2_ymdGroup(timeStart) ;
+        int[] ymdEnd = DateTime.yyyy_MM_dd_2_ymdGroup(timeStop) ;
+        qo.idStart = IDLongGenerator.generateOneDayStartId(ymdStart[0], ymdStart[1], ymdStart[2]) ;
+        qo.idEnd = IDLongGenerator.generateOneDayStartId(ymdEnd[0], ymdEnd[1], ymdEnd[2]) ;
+        try {
+            QueryResultVo<List<VoIntakeOpenCount>> res = intakeSv.getOpenValveLtIntakes(qo);
+            return BaseResponseUtils.buildSuccess(res);
+        } catch (Exception e) {
+            log.error("鑾峰彇璁板綍寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
 
     /**
      * 鑾峰彇浠庢湭寮�杩囬榾鐨勫彇姘村彛
@@ -179,41 +299,6 @@
     public BaseResponse<QueryResultVo<List<VoIntake>>> getNeverOpenValveIntakes(CommonQO qo) {
         try {
             QueryResultVo<List<VoIntake>> res = intakeSv.getNeverOpenValveIntakes(qo);
-            return BaseResponseUtils.buildSuccess(res);
-        } catch (Exception e) {
-            log.error("鑾峰彇璁板綍寮傚父", e);
-            return BaseResponseUtils.buildException(e.getMessage()) ;
-        }
-    }
-
-
-    /**
-     * 鑾峰彇鎸囧畾鏃堕棿娈靛唴寮�闃�娆℃暟瓒呰繃鎸囧畾鍊肩殑鍙栨按鍙�
-     * @param
-     * @return
-     */
-    @GetMapping(path = "/getOpenValveGtIntakes")
-    @SsoAop()
-    public BaseResponse<QueryResultVo<List<VoIntakeOpenCount>>> getOpenValveGtIntakes(IntakeCountValueQO qo) {
-        try {
-            QueryResultVo<List<VoIntakeOpenCount>> res = intakeSv.getOpenValveGtIntakes(qo);
-            return BaseResponseUtils.buildSuccess(res);
-        } catch (Exception e) {
-            log.error("鑾峰彇璁板綍寮傚父", e);
-            return BaseResponseUtils.buildException(e.getMessage()) ;
-        }
-    }
-
-    /**
-     * 鑾峰彇鎸囧畾鏃堕棿娈靛唴寮�闃�娆℃暟浣庝簬鎸囧畾鍊肩殑鍙栨按鍙�
-     * @param
-     * @return
-     */
-    @GetMapping(path = "/getOpenValveLtIntakes")
-    @SsoAop()
-    public BaseResponse<QueryResultVo<List<VoIntakeOpenCount>>> getOpenValveLtIntakes(IntakeCountValueQO qo) {
-        try {
-            QueryResultVo<List<VoIntakeOpenCount>> res = intakeSv.getOpenValveLtIntakes(qo);
             return BaseResponseUtils.buildSuccess(res);
         } catch (Exception e) {
             log.error("鑾峰彇璁板綍寮傚父", e);
@@ -306,14 +391,33 @@
         }
     }
 
-    /**
+    /** ok 15
      * 鎸囧畾鏃堕棿娈� 鏈夊紑闃� 鏃犲叧闃�鐨勫彇姘村彛
      * @param
      * @return
      */
     @GetMapping(path = "/getHaveOpenNoCloseIntakes")
     @SsoAop()
-    public BaseResponse<QueryResultVo<List<VoIntake>>> getHaveOpenNoCloseIntakes(CommonQO qo) {
+    public BaseResponse<QueryResultVo<List<VoIntake>>> getHaveOpenNoCloseIntakes(IntakeCountValueQO qo) throws Exception {
+        String timeStart = qo.getTimeStart();
+        String timeStop = qo.getTimeStop();
+        if(timeStart == null || timeStart.trim().equals("")){
+            return BaseResponseUtils.buildErrorMsg("璇疯缃煡璇㈠紑濮嬫椂闂�");
+        }
+        if(timeStop == null || timeStop.trim().equals("")){
+            return BaseResponseUtils.buildErrorMsg("璇疯缃煡璇㈡埅姝㈡椂闂�");
+        }
+        long dur = DateTime.daysBetweenyyyy_MM_dd(timeStop, timeStart) ;
+        if(dur < 0){
+            return BaseResponseUtils.buildErrorMsg("鎴鏃堕棿涓嶈兘鏃╀簬寮�濮嬫椂闂�");
+        }
+        if(dur > 366){
+            return BaseResponseUtils.buildErrorMsg("鏃堕棿璺ㄥ害涓嶈兘瓒呰繃涓�骞�");
+        }
+        int[] ymdStart = DateTime.yyyy_MM_dd_2_ymdGroup(timeStart) ;
+        int[] ymdEnd = DateTime.yyyy_MM_dd_2_ymdGroup(timeStop) ;
+        qo.idStart = IDLongGenerator.generateOneDayStartId(ymdStart[0], ymdStart[1], ymdStart[2]) ;
+        qo.idEnd = IDLongGenerator.generateOneDayStartId(ymdEnd[0], ymdEnd[1], ymdEnd[2]) ;
         try {
             QueryResultVo<List<VoIntake>> res = intakeSv.getHaveOpenNoCloseIntakes(qo);
             return BaseResponseUtils.buildSuccess(res);
@@ -330,7 +434,26 @@
      */
     @GetMapping(path = "/getNoOpenHaveCloseIntakes")
     @SsoAop()
-    public BaseResponse<QueryResultVo<List<VoIntake>>> getNoOpenHaveCloseIntakes(CommonQO qo) {
+    public BaseResponse<QueryResultVo<List<VoIntake>>> getNoOpenHaveCloseIntakes(IntakeCountValueQO qo) throws Exception {
+        String timeStart = qo.getTimeStart();
+        String timeStop = qo.getTimeStop();
+        if(timeStart == null || timeStart.trim().equals("")){
+            return BaseResponseUtils.buildErrorMsg("璇疯缃煡璇㈠紑濮嬫椂闂�");
+        }
+        if(timeStop == null || timeStop.trim().equals("")){
+            return BaseResponseUtils.buildErrorMsg("璇疯缃煡璇㈡埅姝㈡椂闂�");
+        }
+        long dur = DateTime.daysBetweenyyyy_MM_dd(timeStop, timeStart) ;
+        if(dur < 0){
+            return BaseResponseUtils.buildErrorMsg("鎴鏃堕棿涓嶈兘鏃╀簬寮�濮嬫椂闂�");
+        }
+        if(dur > 366){
+            return BaseResponseUtils.buildErrorMsg("鏃堕棿璺ㄥ害涓嶈兘瓒呰繃涓�骞�");
+        }
+        int[] ymdStart = DateTime.yyyy_MM_dd_2_ymdGroup(timeStart) ;
+        int[] ymdEnd = DateTime.yyyy_MM_dd_2_ymdGroup(timeStop) ;
+        qo.idStart = IDLongGenerator.generateOneDayStartId(ymdStart[0], ymdStart[1], ymdStart[2]) ;
+        qo.idEnd = IDLongGenerator.generateOneDayStartId(ymdEnd[0], ymdEnd[1], ymdEnd[2]) ;
         try {
             QueryResultVo<List<VoIntake>> res = intakeSv.getNoOpenHaveCloseIntakes(qo);
             return BaseResponseUtils.buildSuccess(res);
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeCountValueQO.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeCountValueQO.java
index 54a20f0..35e3c17 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeCountValueQO.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeCountValueQO.java
@@ -19,5 +19,11 @@
      * 鍊�
      */
     @NotBlank(message = "鍊间笉鑳戒负绌�")
-    private Integer value;
+    public Integer value;
+
+
+    ///////////////////////
+    //闈炲墠绔彁浜ょ殑鍙傛暟
+    public Long idStart ;
+    public Long idEnd ;
 }

--
Gitblit v1.8.0