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