From 0087f04462b9521f9098fa54438904e1ccffd04c Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期六, 19 十月 2024 11:52:31 +0800
Subject: [PATCH] 2024-10-19 朱宝民 优化获取未关阀记录接口,增加强制隐藏未关阀记录接口

---
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml |   76 +++++++++++++------------------------
 1 files changed, 27 insertions(+), 49 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 7888144..98054c7 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml
@@ -197,55 +197,29 @@
 
     <!--鏍规嵁鎿嶄綔鍛業D鑾峰彇鏈叧闃�璁板綍锛堝寘鍚湪绾挎儏鍐碉級-->
     <select id="getUnclosedValves" resultType="com.dy.pipIrrGlobal.voRm.VoUnclosedValve">
-        SELECT inta.name                  AS intakeNum,
-               rtus.isOnLine,
-               com.rtu_addr               AS rtuAddr,
-               com.param ->> '$.icCardNo' AS vcNum,
-               (SELECT param ->> '$.orderNo' AS orderNo
+        SELECT
+            inta.name AS intakeNum,
+            rtus.isOnLine,
+            com.rtu_addr AS rtuAddr,
+            com.param ->> '$.icCardNo' AS vcNum,
+            (
+                SELECT param ->> '$.orderNo' AS orderNo
                 FROM rm_command_history
                 WHERE rtu_addr = com.rtu_addr
                 ORDER BY send_time desc
-                LIMIT 0,1)                AS orderNo,
-               'toClose'                  AS state
+                LIMIT 0,1
+            ) AS orderNo,
+            'toClose'                  AS state,
+            CASE
+                WHEN com.command_code = 'A1' OR com.command_code = 'A2' THEN 0
+                ELSE 0
+            END AS planned,
+            com.send_time AS sendTime
         FROM rm_command_history com
             INNER JOIN pr_controller con ON com.rtu_addr = con.rtuAddr
             INNER JOIN pr_intake inta ON con.intakeId = inta.id
-            INNER JOIN JSON_TABLE(
-        <!--'[{"rtuAddr":"37142501020100215","isOnLine":true},{"rtuAddr":"4000004","isOnLine":true},{"rtuAddr":"dy20240325","isOnLine":false}]',-->
-        #{onLineMap},
-        '$[*]' COLUMNS (
-            rtuAddr VARCHAR(20) PATH '$.rtuAddr',
-            isOnLine BOOLEAN PATH '$.isOnLine'
-            )
-            ) rtus ON com.rtu_addr = rtus.rtuAddr
-        <where>
-            AND (com.command_code = '92' OR com.command_code = 'A2' OR com.command_code = '97')
-                  AND com.operator = #{operator}
-                  AND NOT EXISTS(
-                    SELECT *
-                    FROM rm_command_history
-                    WHERE (result IS NULL OR result = 1)
-                      AND (command_code = '93' OR command_code = 'A3' OR command_code = '98')
-                      AND param ->> '$.orderNo' = com.param ->> '$.orderNo'
-                )
-        </where>
-        GROUP BY inta.name, rtus.isOnLine, com.rtu_addr, com.param ->> '$.icCardNo'
-
-        UNION ALL
-
-        SELECT inta.name                  AS intakeNum,
-               rtus.isOnLine,
-               com.rtu_addr               AS rtuAddr,
-               com.param ->> '$.icCardNo' AS vcNum,
-               (SELECT param ->> '$.orderNo' AS orderNo
-                FROM rm_command_history
-                WHERE rtu_addr = com.rtu_addr
-                ORDER BY send_time desc
-                LIMIT 0,1)                AS orderNo,
-               'toCancel'                 AS state
-        FROM rm_command_history com
-                 INNER JOIN pr_intake inta ON inta.id = com.intake_id
-                 INNER JOIN JSON_TABLE(
+            LEFT JOIN JSON_TABLE(
+<!--                '[{"rtuAddr":"620201000030","isOnLine":true}]',-->
                 #{onLineMap},
                 '$[*]' COLUMNS (
                     rtuAddr VARCHAR(20) PATH '$.rtuAddr',
@@ -253,14 +227,18 @@
                     )
             ) rtus ON com.rtu_addr = rtus.rtuAddr
         <where>
-            AND (command_code = 'A1' OR command_code = 'A2')
             AND com.operator = #{operator}
-                  AND DATE_FORMAT(
-                              CONCAT(com.param ->> '$.year', '-', com.param ->> '$.month', '-', com.param ->> '$.day',
-                                     ' ',
-                                     com.param ->> '$.hour', ':', com.param ->> '$.minute', ':', '0'),
-                              '%Y-%m-%d %H:%i:%S') > NOW()
+            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 (
+                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, com.send_time
+        ORDER BY com.send_time DESC
+        LIMIT 1
     </select>
 
     <!--鏍规嵁鍙栨按鍙D鑾峰彇璇ュ彇姘村彛鏈叧闃�鍙傛暟-->

--
Gitblit v1.8.0