From 29807fea73899a5b775eb2c7d8e1c05ea8bc0c3d Mon Sep 17 00:00:00 2001
From: Administrator <zhubaomin>
Date: 星期五, 02 八月 2024 17:00:31 +0800
Subject: [PATCH] 2024-08-02 朱宝民 优化获取全部取水口接口,包含经纬度及12小时之内的报警信息

---
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml |   61 ++++++++++++++++++++++--------
 1 files changed, 45 insertions(+), 16 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
index afcd2da..ca874bf 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
@@ -362,9 +362,22 @@
   <select id="getOnLineIntakesCount" resultType="java.lang.Long">
     SELECT
         COUNT(*) AS recordCount
-    FROM pr_controller con
-        INNER JOIN pr_intake inta ON con.intakeId = inta.id
-        left JOIN JSON_TABLE(
+    FROM pr_intake inta
+        LEFT JOIN pr_controller con ON con.intakeId = inta.id
+        LEFT JOIN(
+            SELECT
+                intake_id AS intakeId,
+                CONCAT('[',
+                    IF(alarm_loss = 1, IF(alarm_water_meter_fault = 1, '{"meter":"娴侀噺璁℃晠闅�"},', ''), IF(alarm_water_meter_fault = 1, '{"meter":"娴侀噺璁℃晠闅�"}', '')),
+                    IF(alarm_battery_volt = 1, IF(alarm_loss = 1, '{"loss":"婕忔崯(鍋锋按)鎶ヨ"},', ''), IF(alarm_loss = 1, '{"loss":"婕忔崯(鍋锋按)鎶ヨ"}', '')),
+                    IF(alarm_valve = 1, IF(alarm_battery_volt = 1, '{"batteryVolt":"钃勭數姹犵數鍘嬫姤璀�"},', ''), IF(alarm_battery_volt = 1, '{"batteryVolt":"钃勭數姹犵數鍘嬫姤璀�"}', '')),
+                    IF(alarm_valve = 1, '{"valve":"闃�闂ㄦ姤璀�"}', ''),
+                ']') AS alarm
+            FROM rm_alarm_state_last
+            WHERE (alarm_water_meter_fault = 1 OR alarm_loss = 1 OR alarm_battery_volt = 1 OR alarm_valve = 1)
+            AND dt >= DATE_SUB(NOW(),INTERVAL 12 HOUR)
+        ) alarm ON alarm.intakeId = inta.id
+        LEFT JOIN JSON_TABLE(
             <!--'[{"rtuAddr":"37142501020100215","isOnLine":true},{"rtuAddr":"4000004","isOnLine":true},{"rtuAddr":"dy20240325","isOnLine":false}]',-->
             #{onLineMap},
             '$[*]' COLUMNS(
@@ -379,11 +392,11 @@
       <if test="intakeNum != null and intakeNum != ''">
         AND inta.name = #{intakeNum}
       </if>
-      <if test="isBinded == 0">
-        AND inta.id NOT IN(SELECT intakeId FROM pr_controller where deleted = 0)
+      <if test="isBinded == false ">
+        AND con.rtuAddr IS  NULL
       </if>
-      <if test="isBinded == 1">
-        AND inta.id IN(SELECT intakeId FROM pr_controller where deleted = 0)
+      <if test="isBinded == true ">
+        AND con.rtuAddr IS NOT NULL
       </if>
     </where>
   </select>
@@ -391,16 +404,32 @@
   <!--鑾峰彇鍙栨按鍙e垪琛紙鍦ㄧ嚎鍜屼笉鍦ㄥ厛锛�-->
   <select id="getOnLineIntakes" resultType="com.dy.pipIrrGlobal.voPr.VoOnLineIntake">
     SELECT
-    inta.id AS intakeId,
-    con.rtuAddr,
-    inta.name AS intakeNum,
-    (CASE
-    WHEN con.rtuAddr IS  NULL  THEN "false"
-    WHEN con.rtuAddr IS NOT NULL THEN "true"
-    END) AS isBinded,
-    rtus.isOnLine
+        inta.id AS intakeId,
+        con.rtuAddr,
+        inta.name AS intakeNum,
+        inta.lng,
+        inta.lat,
+        (CASE
+            WHEN con.rtuAddr IS  NULL  THEN "false"
+            WHEN con.rtuAddr IS NOT NULL THEN "true"
+        END) AS isBinded,
+        rtus.isOnLine,
+        alarm.alarm
     FROM pr_intake inta
-    LEFT JOIN pr_controller con ON con.intakeId = inta.id
+        LEFT JOIN pr_controller con ON con.intakeId = inta.id
+        LEFT JOIN(
+            SELECT
+                intake_id AS intakeId,
+                CONCAT(
+                    IF(alarm_loss = 1, IF(alarm_water_meter_fault = 1, '娴侀噺璁℃晠闅�,', ''), IF(alarm_water_meter_fault = 1, '娴侀噺璁℃晠闅�', '')),
+                    IF(alarm_battery_volt = 1, IF(alarm_loss = 1, '婕忔崯(鍋锋按)鎶ヨ,', ''), IF(alarm_loss = 1, '婕忔崯(鍋锋按)鎶ヨ', '')),
+                    IF(alarm_valve = 1, IF(alarm_battery_volt = 1, '钃勭數姹犵數鍘嬫姤璀�,', ''), IF(alarm_battery_volt = 1, '钃勭數姹犵數鍘嬫姤璀�', '')),
+                    IF(alarm_valve = 1, '闃�闂ㄦ姤璀�', '')
+                ) AS alarm
+            FROM rm_alarm_state_last
+            WHERE (alarm_water_meter_fault = 1 OR alarm_loss = 1 OR alarm_battery_volt = 1 OR alarm_valve = 1)
+            AND dt >= DATE_SUB(NOW(),INTERVAL 12 HOUR)
+        ) alarm ON alarm.intakeId = inta.id
     LEFT JOIN JSON_TABLE(
     <!--'[{"rtuAddr":"37142501020100215","isOnLine":true},{"rtuAddr":"4000004","isOnLine":true},{"rtuAddr":"dy20240325","isOnLine":false}]',-->
     #{onLineMap},

--
Gitblit v1.8.0