From 587704894acc97cccc1a112ccbe0ac30e1e9660c Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期三, 23 十月 2024 21:00:48 +0800
Subject: [PATCH] ”远程监测“功能查询在线取水口和不在线取水口SQL语句修改

---
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml |  360 ++++++++++++++++++++++++++++++-----------------------------
 1 files changed, 183 insertions(+), 177 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 f17472d..e9e854e 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
@@ -40,7 +40,7 @@
         <include refid="Base_Column_List"/>
         from pr_intake
         where id = #{id,jdbcType=BIGINT}
-          and deleted = 0
+        and deleted = 0
     </select>
 
     <delete id="deleteLogicById" parameterType="java.lang.Long">
@@ -66,13 +66,13 @@
     <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoPr.PrIntake">
         <!--@mbg.generated-->
         insert into pr_intake (id, countyId, townId,
-                               villageId, divideId, blockId,
-                               `name`, lng, lat, remarks,
-                               `operator`, operateDt, deleted)
+        villageId, divideId, blockId,
+        `name`, lng, lat, remarks,
+        `operator`, operateDt, deleted)
         values (#{id,jdbcType=BIGINT}, #{countyId,jdbcType=BIGINT}, #{townId,jdbcType=BIGINT},
-                #{villageId,jdbcType=BIGINT}, #{divideId,jdbcType=BIGINT}, #{blockId,jdbcType=BIGINT},
-                #{name,jdbcType=VARCHAR}, #{lng,jdbcType=DOUBLE}, #{lat,jdbcType=DOUBLE}, #{remarks,jdbcType=VARCHAR},
-                #{operator,jdbcType=BIGINT}, #{operateDt,jdbcType=TIMESTAMP}, #{deleted,jdbcType=TINYINT})
+        #{villageId,jdbcType=BIGINT}, #{divideId,jdbcType=BIGINT}, #{blockId,jdbcType=BIGINT},
+        #{name,jdbcType=VARCHAR}, #{lng,jdbcType=DOUBLE}, #{lat,jdbcType=DOUBLE}, #{remarks,jdbcType=VARCHAR},
+        #{operator,jdbcType=BIGINT}, #{operateDt,jdbcType=TIMESTAMP}, #{deleted,jdbcType=TINYINT})
     </insert>
     <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrIntake">
         <!--@mbg.generated-->
@@ -207,17 +207,17 @@
         <!--@mbg.generated-->
         update pr_intake
         set countyId   = #{countyId,jdbcType=BIGINT},
-            townId     = #{townId,jdbcType=BIGINT},
-            villageId  = #{villageId,jdbcType=BIGINT},
-            divideId   = #{divideId,jdbcType=BIGINT},
-            blockId    = #{blockId,jdbcType=BIGINT},
-            `name`     = #{name,jdbcType=VARCHAR},
-            lng        = #{lng,jdbcType=DOUBLE},
-            lat        = #{lat,jdbcType=DOUBLE},
-            remarks    = #{remarks,jdbcType=VARCHAR},
-            `operator` = #{operator,jdbcType=BIGINT},
-            operateDt  = #{operateDt,jdbcType=TIMESTAMP},
-            deleted    = #{deleted,jdbcType=TINYINT}
+        townId     = #{townId,jdbcType=BIGINT},
+        villageId  = #{villageId,jdbcType=BIGINT},
+        divideId   = #{divideId,jdbcType=BIGINT},
+        blockId    = #{blockId,jdbcType=BIGINT},
+        `name`     = #{name,jdbcType=VARCHAR},
+        lng        = #{lng,jdbcType=DOUBLE},
+        lat        = #{lat,jdbcType=DOUBLE},
+        remarks    = #{remarks,jdbcType=VARCHAR},
+        `operator` = #{operator,jdbcType=BIGINT},
+        operateDt  = #{operateDt,jdbcType=TIMESTAMP},
+        deleted    = #{deleted,jdbcType=TINYINT}
         where id = #{id,jdbcType=BIGINT}
     </update>
 
@@ -284,42 +284,42 @@
     <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鍙栨按鍙h褰�-->
     <select id="getIntakes" resultType="com.dy.pipIrrGlobal.voPr.VoIntake">
         SELECT CAST(ge.id AS char)                                 AS intakeId,
-               ge.`name`                                           AS intakeName,
-               CAST(divi.id AS char)                               AS divideId,
-               divi.`name`                                         AS divideName,
-               CAST(blo.id AS char)                                AS blockId,
-               blo.`name`                                          AS blockName,
-               CAST(cont.id AS char)                               AS controllerId,
-               cont.rtuAddr                                        AS rtuAddr,
-                cont.protocol                                       AS protocol,
-                cont.findDt                                         AS findDt,
-                rtus.isOnLine                                       AS isOnLine,
-                (SELECT COUNT(*) FROM pr_intake_controller WHERE intakeId = ge.id AND operateType = 1) AS bindNumber,
-               ge.lng,
-               ge.lat,
-               ge.remarks,
-               ge.operator,
-               ge.operateDt                                        As operateDt,
-               (CASE
-                    WHEN ge.id NOT IN (SELECT intakeId FROM pr_controller where deleted = 0) THEN '鏈粦瀹�'
-                    WHEN ge.id IN (SELECT intakeId FROM pr_controller where deleted = 0) THEN '宸茬粦瀹�'
-                   END)                                            AS isBind,
-               CONCAT(country.`name`, town.`name`, village.`name`) AS address
+        ge.`name`                                           AS intakeName,
+        CAST(divi.id AS char)                               AS divideId,
+        divi.`name`                                         AS divideName,
+        CAST(blo.id AS char)                                AS blockId,
+        blo.`name`                                          AS blockName,
+        CAST(cont.id AS char)                               AS controllerId,
+        cont.rtuAddr                                        AS rtuAddr,
+        cont.protocol                                       AS protocol,
+        cont.findDt                                         AS findDt,
+        rtus.isOnLine                                       AS isOnLine,
+        (SELECT COUNT(*) FROM pr_intake_controller WHERE intakeId = ge.id AND operateType = 1) AS bindNumber,
+        ge.lng,
+        ge.lat,
+        ge.remarks,
+        ge.operator,
+        ge.operateDt                                        As operateDt,
+        (CASE
+        WHEN ge.id NOT IN (SELECT intakeId FROM pr_controller where deleted = 0) THEN '鏈粦瀹�'
+        WHEN ge.id IN (SELECT intakeId FROM pr_controller where deleted = 0) THEN '宸茬粦瀹�'
+        END)                                            AS isBind,
+        CONCAT(country.`name`, town.`name`, village.`name`) AS address
         FROM pr_intake ge
-                INNER JOIN pr_divide divi ON ge.divideId = divi.id
-                INNER JOIN ba_block blo ON divi.blockId = blo.id
-                LEFT JOIN ba_district country ON ge.countyId = country.id
-                LEFT JOIN ba_district town ON ge.townId = town.id
-                LEFT JOIN ba_district village ON ge.villageId = village.id
-                LEFT JOIN pr_controller cont ON ge.id = cont.intakeId
-                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 cont.rtuAddr = rtus.rtuAddr
+        INNER JOIN pr_divide divi ON ge.divideId = divi.id
+        INNER JOIN ba_block blo ON divi.blockId = blo.id
+        LEFT JOIN ba_district country ON ge.countyId = country.id
+        LEFT JOIN ba_district town ON ge.townId = town.id
+        LEFT JOIN ba_district village ON ge.villageId = village.id
+        LEFT JOIN pr_controller cont ON ge.id = cont.intakeId
+        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 cont.rtuAddr = rtus.rtuAddr
         <where>
             ge.deleted = 0
             AND divi.deleted = 0
@@ -372,9 +372,9 @@
     <select id="getSupperByVillageId" parameterType="_long" resultType="java.lang.Long">
         select dis_tow.*
         from ba_district dis_vil
-                 inner join
-             ba_district dis_tow
-             on dis_vil.supperId = dis_tow.id
+        inner join
+        ba_district dis_tow
+        on dis_vil.supperId = dis_tow.id
         where dis_vil.id = #{vaId,jdbcType=BIGINT}
     </select>
 
@@ -383,18 +383,18 @@
         SELECT COUNT(*) AS recordCount
         FROM pr_intake
         WHERE deleted = 0
-          AND id = #{intakeId}
+        AND id = #{intakeId}
     </select>
 
     <!--鏍规嵁鏉慖D鑾峰彇鍏ㄩ儴鍦板潃-->
     <select id="getAddressByVillageId" parameterType="_long" resultType="java.lang.String">
         select CONCAT(dis_province.`name`, dis_city.`name`, dis_county.`name`, dis_town.`name`,
-                      dis_village.`name`) AS address
+        dis_village.`name`) AS address
         from ba_district dis_village
-                 inner join ba_district dis_town on dis_village.supperId = dis_town.id
-                 inner join ba_district dis_county on dis_town.supperId = dis_county.id
-                 inner join ba_district dis_city on dis_county.supperId = dis_city.id
-                 inner join ba_district dis_province on dis_city.supperId = dis_province.id
+        inner join ba_district dis_town on dis_village.supperId = dis_town.id
+        inner join ba_district dis_county on dis_town.supperId = dis_county.id
+        inner join ba_district dis_city on dis_county.supperId = dis_city.id
+        inner join ba_district dis_province on dis_city.supperId = dis_province.id
         where dis_village.id = #{villageId,jdbcType=BIGINT}
     </select>
 
@@ -418,31 +418,31 @@
     <select id="getOnLineIntakesCount" resultType="java.lang.Long">
         SELECT COUNT(*) AS recordCount
         FROM pr_intake inta
-            LEFT JOIN pr_controller con ON con.intakeId = inta.id
-            LEFT JOIN rm_on_hour_report_last hou ON hou.intake_id = 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
+        LEFT JOIN pr_controller con ON con.intakeId = inta.id
+        LEFT JOIN rm_on_hour_report_last hou ON hou.intake_id = 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}
@@ -462,43 +462,43 @@
     <!--鑾峰彇鍙栨按鍙e垪琛紙鍦ㄧ嚎鍜屼笉鍦ㄥ厛锛�-->
     <select id="getOnLineIntakes" resultType="com.dy.pipIrrGlobal.voPr.VoOnLineIntake">
         SELECT inta.id                     AS intakeId,
-               con.rtuAddr,
-               inta.name                   AS intakeNum,
-               inta.lng,
-               inta.lat,
-               IFNULL(hou.total_amount, 0) AS totalAmount,
-               (CASE
-                    WHEN con.rtuAddr IS NULL THEN false
-                    WHEN con.rtuAddr IS NOT NULL THEN true
-                   END)                    AS isBinded,
-               rtus.isOnLine,
-               alarm.alarm
+        con.rtuAddr,
+        inta.name                   AS intakeNum,
+        inta.lng,
+        inta.lat,
+        IFNULL(hou.total_amount, 0) AS totalAmount,
+        (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 rm_on_hour_report_last hou ON hou.intake_id = 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)
+        LEFT JOIN pr_controller con ON con.intakeId = inta.id
+        LEFT JOIN rm_on_hour_report_last hou ON hou.intake_id = 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(
+        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
+        rtuAddr VARCHAR(20) PATH '$.rtuAddr',
+        isOnLine BOOLEAN PATH '$.isOnLine'
+        )
+        ) rtus ON con.rtuAddr = rtus.rtuAddr
         <where>
             <if test="isOnLine != null">
                 rtus.isOnLine = #{isOnLine}
@@ -532,26 +532,29 @@
         SELECT COUNT(*) AS recordCount
         FROM pr_intake inta
         INNER JOIN pr_controller con ON con.intakeId = inta.id
-        <if test="onLineMap != null and onLineMap !='' and onLineMap != '[]' and isOnLine != null">
+        <if test="onLineMap != null and onLineMap !='' and isOnLine != null">
             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'
-                )
+            <!--'[{"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
         </if>
         WHERE con.intakeId is not null
         <if test="isOnLine != null and isOnLine == false">
-            <if test="onLineMap != null and onLineMap !='' and onLineMap != '[]'">
-                AND rtus.isOnLine = false OR rtus.rtuAddr IS NULL
-            </if>
+            <choose>
+                <when test="onLineMap != null and onLineMap !=''">
+                    AND rtus.isOnLine = false OR rtus.rtuAddr IS NULL
+                </when>
+                <otherwise>
+                    AND rtus.rtuAddr IS NULL
+                </otherwise>
+            </choose>
         </if>
         <if test="isOnLine != null and isOnLine == true">
-            <if test="onLineMap != null and onLineMap !='' and onLineMap != '[]'">
-                AND rtus.isOnLine = true
-            </if>
+            AND rtus.isOnLine = true
         </if>
         <if test="intakeNum != null and intakeNum != ''">
             AND inta.name = #{intakeNum}
@@ -573,37 +576,40 @@
         INNER JOIN pr_controller con ON con.intakeId = inta.id
         LEFT JOIN rm_on_hour_report_last hou ON hou.intake_id = inta.id
         LEFT JOIN(
-            SELECT intake_id AS intakeId,
-            CONCAT(
-                IF(alarm_loss = 1, '婕忔崯鎶ヨ锛�', ''),
-                IF(alarm_battery_volt = 1, '鐢垫睜鐢靛帇鎶ヨ锛�', ''),
-                IF(alarm_valve = 1, '闃�闂ㄦ姤璀︼紝', ''),
-                IF(alarm_water_meter_fault = 1, '娴侀噺璁℃晠闅滄姤璀︼紝', '')
-            ) AS alarm
-            FROM rm_alarm_state_last
-            WHERE (alarm_loss = 1 OR alarm_battery_volt = 1 OR alarm_valve = 1 OR alarm_water_meter_fault = 1)
-            AND dt >= DATE_SUB(NOW(), INTERVAL 12 HOUR)
+        SELECT intake_id AS intakeId,
+        CONCAT(
+        IF(alarm_loss = 1, '婕忔崯鎶ヨ锛�', ''),
+        IF(alarm_battery_volt = 1, '鐢垫睜鐢靛帇鎶ヨ锛�', ''),
+        IF(alarm_valve = 1, '闃�闂ㄦ姤璀︼紝', ''),
+        IF(alarm_water_meter_fault = 1, '娴侀噺璁℃晠闅滄姤璀︼紝', '')
+        ) AS alarm
+        FROM rm_alarm_state_last
+        WHERE (alarm_loss = 1 OR alarm_battery_volt = 1 OR alarm_valve = 1 OR alarm_water_meter_fault = 1)
+        AND dt >= DATE_SUB(NOW(), INTERVAL 12 HOUR)
         ) alarm ON alarm.intakeId = inta.id
-        <if test="onLineMap != null and onLineMap !='' and onLineMap != '[]' and isOnLine != null">
+        <if test="onLineMap != null and onLineMap !='' and isOnLine != null">
             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'
-                )
+            <!--'[{"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
         </if>
         WHERE con.intakeId is not null
         <if test="isOnLine != null and isOnLine == false">
-            <if test="onLineMap != null and onLineMap !='' and onLineMap != '[]'">
-                AND rtus.isOnLine = false OR rtus.rtuAddr IS NULL
-            </if>
+            <choose>
+                <when test="onLineMap != null and onLineMap !=''">
+                    AND rtus.isOnLine = false OR rtus.rtuAddr IS NULL
+                </when>
+                <otherwise>
+                    AND rtus.rtuAddr IS NULL
+                </otherwise>
+            </choose>
         </if>
         <if test="isOnLine != null and isOnLine == true">
-            <if test="onLineMap != null and onLineMap !='' and onLineMap != '[]'">
-                AND rtus.isOnLine = true
-            </if>
+            AND rtus.isOnLine = true
         </if>
         <if test="intakeNum != null and intakeNum != ''">
             AND inta.name = #{intakeNum}
@@ -629,18 +635,18 @@
     <!--鏍规嵁鍙栨按鍙g紪鍙疯幏鍙栧彇姘村彛瀵硅薄-->
     <select id="getIntakeByName" resultType="com.dy.pipIrrGlobal.voPr.VoOnLineIntake">
         SELECT con.intakeId,
-               con.rtuAddr,
-               inta.name AS intakeNum,
-               rtus.isOnLine
+        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
+        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}
@@ -652,20 +658,20 @@
     <!--鏍规嵁鎿嶄綔鍛樿幏鍙栧父鐢ㄥ彇姘村彛-->
     <select id="getUsedIntakes" resultType="com.dy.pipIrrGlobal.voPr.VoOnLineIntake">
         SELECT DISTINCT con.intakeId,
-                        con.rtuAddr,
-                        inta.name AS intakeNum,
-                        rtus.isOnLine
+        con.rtuAddr,
+        inta.name AS intakeNum,
+        rtus.isOnLine
         FROM pr_controller con
-            INNER JOIN pr_intake inta ON con.intakeId = inta.id
-            INNER JOIN rm_command_history com ON con.rtuAddr = com.rtu_addr
-            INNER JOIN JSON_TABLE(
+        INNER JOIN pr_intake inta ON con.intakeId = inta.id
+        INNER JOIN rm_command_history com ON con.rtuAddr = com.rtu_addr
+        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 con.rtuAddr = rtus.rtuAddr
+        rtuAddr VARCHAR(20) PATH '$.rtuAddr',
+        isOnLine BOOLEAN PATH '$.isOnLine'
+        )
+        ) rtus ON con.rtuAddr = rtus.rtuAddr
         <where>
             <if test="operator != null">
                 com.operator = #{operator}
@@ -692,6 +698,6 @@
         SELECT id AS intakeId
         FROM pr_intake
         WHERE id != #{id}
-          and `name` = #{intakeName}
+        and `name` = #{intakeName}
     </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0