From a0a9fc7a58a39626a395d2760194641726e1cd35 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期五, 25 四月 2025 10:48:15 +0800
Subject: [PATCH] 1、微信小程序后端轮灌迟延时长改为可配置的; 2、微信小程序查询取水口接口实现修改,改为后端模糊查询;

---
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml |  123 +++++++++++++++++++++++++++++++++--------
 1 files changed, 99 insertions(+), 24 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml
index 5a14b0e..25c58bc 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml
@@ -195,11 +195,47 @@
         where com_id = #{comId,jdbcType=BIGINT}
     </update>
 
-    <!--鏍规嵁鎿嶄綔鍛業D鑾峰彇鏈叧闃�璁板綍锛堝寘鍚湪绾挎儏鍐碉級-->
+    <!--鏍规嵁operator鑾峰彇鏈叧闃�鐨凴TU鍦板潃鍙婅櫄鎷熷崱缂栧彿鏁版嵁瀵癸紝鑾峰彇鏈叧闃�璁板綍浣跨敤-->
+    <select id="getUnclosedRtus" resultType="com.dy.pipIrrGlobal.voRm.VoRtuAndVc">
+        SELECT
+            com.rtu_addr AS rtuAddr,
+            com.param ->> '$.icCardNo' AS vcNum
+        FROM rm_command_history com
+        where 1=1
+          AND com.operator = #{operator}
+          AND com.result = 1
+          AND ((com.protocol = 'p206V1' OR com.protocol = 'p206V2') AND (com.command_code = '92' OR com.command_code = '97' OR com.command_code = '99' OR com.command_code = 'A0' OR com.command_code = 'A1' OR com.command_code = 'A2'))
+          AND (
+            SELECT op_dt FROM rm_open_close_valve_last
+            WHERE rtu_addr = com.rtu_addr AND op_ic_card_no = com.param ->> '$.icCardNo'
+            ORDER BY op_dt DESC
+            LIMIT 1
+        ) IS NOT NULL
+          AND (
+            SELECT cl_dt FROM rm_open_close_valve_last
+            WHERE rtu_addr = com.rtu_addr AND op_ic_card_no = com.param ->> '$.icCardNo'
+            ORDER BY op_dt DESC
+            LIMIT 1
+        ) IS NULL
+        GROUP BY com.rtu_addr, com.param ->> '$.icCardNo'
+    </select>
+
+    <!--鏍规嵁RTU鍦板潃鍜岃櫄鎷熷崱缂栧彿鑾峰彇鎴愬姛寮�闃�鐨勬渶鍚庝竴鏉¤褰曪紝鑾峰彇鏈叧闃�璁板綍浣跨敤-->
+    <select id="getLastComId" resultType="java.lang.Long">
+        SELECT com_id AS comId
+        FROM rm_command_history
+        WHERE result = 1
+            AND ((protocol = 'p206V1' OR protocol = 'p206V2')
+            AND (command_code = '92' OR command_code = '97' OR command_code = '99' OR command_code = 'A0' OR command_code = 'A1' OR command_code = 'A2'))
+            AND rtu_addr = #{rtuAddr} AND param ->> '$.icCardNo' = #{vcNum}
+        ORDER BY send_time DESC
+        LIMIT 1
+    </select>
+
     <select id="getUnclosedValves" resultType="com.dy.pipIrrGlobal.voRm.VoUnclosedValve">
         SELECT
             inta.name AS intakeNum,
-            rtus.isOnLine,
+            IFNULL(rtus.isOnLine, false) AS isOnLine,
             com.rtu_addr AS rtuAddr,
             com.param ->> '$.icCardNo' AS vcNum,
             (
@@ -211,29 +247,51 @@
             ) AS orderNo,
             'toClose'                  AS state,
             CASE
-                WHEN com.command_code = 'A1' OR com.command_code = 'A2' THEN 0
-            END AS planned
+                WHEN com.command_code = 'A1' OR com.command_code = 'A2' THEN 1
+                ELSE 0
+            END AS planned,
+            com.send_time AS sendTime,
+
+            (SELECT dt FROM rm_work_report_last
+                WHERE rtu_addr = com.rtu_addr AND ic_card_no = com.param ->> '$.icCardNo'
+                    AND dt > com.send_time
+                ORDER BY dt DESC
+             LIMIT 1) AS dt,
+
+            (SELECT water_instant FROM rm_work_report_last
+                WHERE rtu_addr = com.rtu_addr AND ic_card_no = com.param ->> '$.icCardNo'
+                    AND dt > com.send_time
+                ORDER BY dt DESC
+            LIMIT 1) AS waterInstant
         FROM rm_command_history com
-            INNER JOIN pr_intake inta ON inta.id = com.intake_id
-            INNER JOIN JSON_TABLE(
-<!--                '[{"rtuAddr":"620201000030","isOnLine":true}]',-->
+            INNER JOIN pr_controller con ON com.rtu_addr = con.rtuAddr
+            INNER JOIN pr_intake inta ON con.intakeId = inta.id
+            LEFT JOIN JSON_TABLE(
+                <!--'[{"rtuAddr":"620201000030","isOnLine":true}]',-->
                 #{onLineMap},
                 '$[*]' COLUMNS (
                     rtuAddr VARCHAR(20) PATH '$.rtuAddr',
                     isOnLine BOOLEAN PATH '$.isOnLine'
-                    )
+                )
             ) rtus ON com.rtu_addr = rtus.rtuAddr
         <where>
-            AND com.operator = #{operator}
-            AND (com.protocol = 'p206V1_0_1' AND (com.command_code = '92' OR com.command_code = '97' OR com.command_code = '99' OR com.command_code = 'A0' OR com.command_code = 'A1' OR com.command_code = 'A2'))
-            AND NOT EXISTS(
-                SELECT * FROM rm_command_history
-                WHERE (result IS NULL OR result = 1)
-                AND (com.protocol = 'p206V1_0_1' AND (command_code = '93' OR command_code = '98' OR command_code = '00'))
-                AND param ->> '$.orderNo' = com.param ->> '$.orderNo'
-            )
+            AND	com.com_id in (${comIds})
+            AND (
+                SELECT op_dt FROM rm_open_close_valve_last
+                WHERE rtu_addr = com.rtu_addr AND op_ic_card_no = com.param ->> '$.icCardNo'
+                ORDER BY op_dt DESC
+                LIMIT 1
+            ) IS NOT NULL
+
+            AND (
+                SELECT cl_dt FROM rm_open_close_valve_last
+                WHERE rtu_addr = com.rtu_addr AND op_ic_card_no = com.param ->> '$.icCardNo'
+                ORDER BY op_dt DESC
+                LIMIT 1
+            ) IS NULL
         </where>
-        GROUP BY inta.name, rtus.isOnLine, com.rtu_addr, com.param ->> '$.icCardNo', com.command_code
+        GROUP BY inta.name, rtus.isOnLine, com.rtu_addr, com.param ->> '$.icCardNo', com.command_code, com.send_time, dt, waterInstant
+        ORDER BY com.send_time DESC
     </select>
 
     <!--鏍规嵁鍙栨按鍙D鑾峰彇璇ュ彇姘村彛鏈叧闃�鍙傛暟-->
@@ -270,8 +328,6 @@
         SELECT COUNT(*) AS recordCount
         FROM rm_command_history his
                  INNER JOIN pr_intake inta ON inta.id = his.intake_id
-                 LEFT JOIN se_client cli ON cli.id = his.operator
-                 LEFT JOIN ba_user user ON user.id = his.operator
         <where>
             <if test="intakeId != null">
                 AND his.intake_id = #{intakeId}
@@ -291,17 +347,17 @@
     <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鍛戒护鏃ュ織鍘嗗彶璁板綍-->
     <select id="getCommandHistories" resultType="com.dy.pipIrrGlobal.voRm.VoCommand">
         SELECT his.com_id                  AS comId,
-               his.command_name            AS commandName,
+               CONCAT(his.command_name, '(', his.command_code, ')') AS commandName,
                inta.name                   AS intakeName,
                his.rtu_addr                AS rtuAddr,
-               his.protocol,
+               his.protocol                AS protocol,
                his.send_time               AS sendTime,
                his.result_time             AS resultTime,
                (CASE
                     WHEN his.result = 1 THEN '鎴愬姛'
                     ELSE '澶辫触'
-                   END)                    AS result,
-               his.result_text,
+                   END)                    AS state,
+               his.result_text             AS result,
                IFNULL(cli.name, user.name) AS userName
         FROM rm_command_history his
                  INNER JOIN pr_intake inta ON inta.id = his.intake_id
@@ -322,11 +378,30 @@
                 AND his.send_time BETWEEN #{timeStart} AND #{timeStop}
             </if>
         </where>
-        ORDER BY his.send_time DESC
+        ORDER BY his.com_id DESC
         <trim prefix="limit ">
             <if test="start != null and count != null">
                 #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
             </if>
         </trim>
     </select>
+
+    <!--鏍规嵁鍛戒护鏃ュ織ID鑾峰彇棰勭害鏃堕棿锛屽悜铏氭嫙鍗″啓寮�闃�鏃堕棿鐢�-->
+    <select id="getTimeByCommId" resultType="java.lang.String">
+        SELECT
+            CONCAT(param ->> '$.year', '-', param ->> '$.month', '-', param ->> '$.day', ' ',  param ->> '$.hour', ':', param ->> '$.minute', ':00') AS openTime
+        FROM rm_command_history
+        WHERE com_id = #{commId}
+    </select>
+
+    <!--鏍规嵁鍛戒护鏃ュ織ID鑾峰彇寮�闃�淇℃伅锛岀粓姝㈢亴婧夎鍒掓椂浣跨敤锛岀敤鏉ユ墽琛岃繙绋嬪叧闃�-->
+    <select id="getValveOpen" resultType="com.dy.pipIrrGlobal.voRm.VoIntakeVc">
+        SELECT
+            rtu_addr AS rtuAddr,
+            param ->> '$.icCardNo' AS vcNum,
+            param ->> '$.orderNo' AS orderNo
+        FROM rm_command_history
+        WHERE com_id = #{commandId}
+        LIMIT 0, 1
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0