From 9f7670cbdcf4c28e47c58337bf8410475f27527d Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期一, 05 八月 2024 17:05:00 +0800
Subject: [PATCH] 完善代码.
---
pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml | 135 ++++++++++++++++++++++++++++++++++----------
1 files changed, 104 insertions(+), 31 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 0c1ea74..8cc3a20 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
@@ -362,22 +362,41 @@
<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(
- <!--'[{"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 con.rtuAddr = rtus.rtuAddr
+ 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, '娴侀噺璁℃晠闅�,', ''), 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},
+ '$[*]' COLUMNS(
+ rtuAddr VARCHAR(20) PATH '$.rtuAddr',
+ isOnLine BOOLEAN PATH '$.isOnLine'
+ )
+ ) rtus ON con.rtuAddr = rtus.rtuAddr
<where>
<if test="isOnLine != null">
rtus.isOnLine = #{isOnLine}
</if>
<if test="intakeNum != null and intakeNum != ''">
- AND inta.name LIKE CONCAT('%', #{intakeNum}, '%')
+ AND inta.name = #{intakeNum}
+ </if>
+ <if test="isBinded == false ">
+ AND con.rtuAddr IS NULL
+ </if>
+ <if test="isBinded == true ">
+ AND con.rtuAddr IS NOT NULL
</if>
</where>
</select>
@@ -385,32 +404,83 @@
<!--鑾峰彇鍙栨按鍙e垪琛紙鍦ㄧ嚎鍜屼笉鍦ㄥ厛锛�-->
<select id="getOnLineIntakes" resultType="com.dy.pipIrrGlobal.voPr.VoOnLineIntake">
SELECT
- con.intakeId,
- con.rtuAddr,
- inta.name AS intakeNum,
- rtus.isOnLine
- FROM pr_controller con
- INNER JOIN pr_intake inta ON con.intakeId = inta.id
- left 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 con.rtuAddr = rtus.rtuAddr
+ 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(
+ 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},
+ '$[*]' COLUMNS(
+ rtuAddr VARCHAR(20) PATH '$.rtuAddr',
+ isOnLine BOOLEAN PATH '$.isOnLine'
+ )
+ ) rtus ON con.rtuAddr = rtus.rtuAddr
<where>
<if test="isOnLine != null">
rtus.isOnLine = #{isOnLine}
</if>
<if test="intakeNum != null and intakeNum != ''">
- AND inta.name LIKE CONCAT('%', #{intakeNum}, '%')
+ AND inta.name = #{intakeNum}
+ </if>
+ <if test="isBinded == false ">
+ AND con.rtuAddr IS NULL
+ </if>
+ <if test="isBinded == true ">
+ AND con.rtuAddr IS NOT NULL
</if>
</where>
order by con.id ASC
<if test="pageCurr != null and pageSize != null">
LIMIT ${(pageCurr-1)*pageSize}, ${pageSize}
</if>
+ </select>
+
+ <!--鏍规嵁鍙栨按鍙g紪鍙疯幏鍙栧彇姘村彛瀵硅薄-->
+ <select id="getIntakeByName" resultType="com.dy.pipIrrGlobal.voPr.VoOnLineIntake">
+ SELECT
+ con.intakeId,
+ con.rtuAddr,
+ inta.name AS intakeNum,
+ rtus.isOnLine
+ FROM pr_controller con
+ INNER JOIN pr_intake inta ON con.intakeId = inta.id
+ left JOIN JSON_TABLE(
+ #{onLineMap},
+ '$[*]' COLUMNS(
+ rtuAddr VARCHAR(20) PATH '$.rtuAddr',
+ isOnLine BOOLEAN PATH '$.isOnLine'
+ )
+ ) rtus ON con.rtuAddr = rtus.rtuAddr
+ <where>
+ <if test="intakeNum != null and intakeNum != ''">
+ AND LOWER(inta.name) = #{intakeNum}
+ </if>
+ </where>
+ LIMIT 0,1
+
</select>
<!--鏍规嵁鎿嶄綔鍛樿幏鍙栧父鐢ㄥ彇姘村彛-->
@@ -443,13 +513,16 @@
SELECT id AS intakeId FROM pr_intake WHERE `name` = #{intakeName}
</select>
- <!--寰楀埌鎵�鏈夌殑鍙栨按鍙e悕绉�-->
- <select id="getIntakeName" resultType="java.lang.String">
- SELECT `name` FROM pr_intake WHERE deleted = 0
+ <!--鍙栨按鍙e悕绉版崲鍙栨按鍙D锛岄獙璇佹槸鍚﹂噸澶嶅悕绉颁娇鐢�-->
+ <select id="getIntakeIdsByName" resultType="java.lang.Long">
+ SELECT id AS intakeId FROM pr_intake WHERE `name` = #{intakeName}
</select>
<!--鍙栨按鍙e悕绉版崲鍙栨按鍙D锛岄獙璇佹槸鍚﹂噸澶嶅悕绉颁娇鐢�-->
- <select id="getIntakeIdByName1" resultType="java.lang.Long">
- SELECT id AS intakeId FROM pr_intake WHERE `name` = #{intakeName}
+ <select id="getIntakeIdByNameExcludeId" resultType="java.lang.Long">
+ SELECT id AS intakeId FROM pr_intake WHERE id != #{id} and `name` = #{intakeName}
</select>
+
+
+
</mapper>
\ No newline at end of file
--
Gitblit v1.8.0