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 ++++++++++++++++++++++++++----------------------
 1 files changed, 52 insertions(+), 45 deletions(-)

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}

--
Gitblit v1.8.0