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