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/java/com/dy/pipIrrGlobal/voSt/VoCumulativeFlow.java | 2
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoOnLineIntake.java | 17 ++++++++
pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml | 61 ++++++++++++++++++++++--------
3 files changed, 62 insertions(+), 18 deletions(-)
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoOnLineIntake.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoOnLineIntake.java
index c0c3512..88d93e0 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoOnLineIntake.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoOnLineIntake.java
@@ -1,6 +1,5 @@
package com.dy.pipIrrGlobal.voPr;
-import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.dy.common.po.BaseEntity;
import lombok.Data;
@@ -31,6 +30,16 @@
private String intakeNum;
/**
+ * 鍙栨按鍙g粡搴�
+ */
+ private Double lng;
+
+ /**
+ * 鍙栨按鍙g含搴�
+ */
+ private Double lat;
+
+ /**
* 鏄惁鍦ㄧ嚎
*/
private Boolean isOnLine;
@@ -39,4 +48,10 @@
* 鏄惁缁戝畾
*/
private Boolean isBinded;
+
+
+ /**
+ * 鎶ヨ淇℃伅Json鏁扮粍
+ */
+ private String alarm;
}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCumulativeFlow.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCumulativeFlow.java
index d4c362f..74cfe54 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCumulativeFlow.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCumulativeFlow.java
@@ -18,7 +18,7 @@
/**
* 绱娴侀噺
*/
- private Float cumulativeFlow;
+ private Double cumulativeFlow;
/**
* 鏁版嵁鑾峰彇鏃ユ湡
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