From 302b525c1bd459b2fc6e27d3b4073aee6e8b3f2b Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期一, 28 十月 2024 17:28:30 +0800 Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV --- pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml | 144 +++++++++++++++++++++--------------------------- 1 files changed, 63 insertions(+), 81 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 e9e854e..329b4be 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml @@ -231,14 +231,9 @@ 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 + <if test = "bindNumber != null and bindNumber > 0"> + JOIN (SELECT intakeId, COUNT(*) num FROM pr_intake_controller WHERE operateType = 1 group by intakeId) AS bindNumTb on bindNumTb.intakeId= ge.id + </if> <where> ge.deleted = 0 AND divi.deleted = 0 @@ -255,10 +250,10 @@ AND blo.id = #{blockId} </if> - <if test="isBinded == 0"> + <if test="isBinded != null and isBinded == 0"> AND ge.id NOT IN (SELECT intakeId FROM pr_controller where deleted = 0) </if> - <if test="isBinded == 1"> + <if test="isBinded != null and isBinded == 1"> AND ge.id IN (SELECT intakeId FROM pr_controller where deleted = 0) </if> <if test="isBinded == null"> @@ -269,21 +264,20 @@ <if test = "rtuAddr != null and rtuAddr !=''"> AND cont.rtuAddr like CONCAT('%',#{rtuAddr},'%') </if> - <if test="isOnLine != null and isOnLine !='' "> - AND rtus.isOnLine = #{isOnLine} - </if> <if test="protocol != null and protocol !='' "> AND cont.protocol = #{protocol} </if> <if test = "bindNumber != null and bindNumber > 0"> - AND (SELECT COUNT(*) FROM pr_intake_controller WHERE intakeId = ge.id AND operateType = 1) = ${bindNumber} + AND bindNumTb.num = #{bindNumber} </if> </where> </select> <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鍙栨按鍙h褰�--> <select id="getIntakes" resultType="com.dy.pipIrrGlobal.voPr.VoIntake"> - SELECT CAST(ge.id AS char) AS intakeId, + WITH intakeIds AS(SELECT intakeId FROM pr_controller where deleted = 0) + + SELECT CAST(ge.id AS char) AS intakeId, ge.`name` AS intakeName, CAST(divi.id AS char) AS divideId, divi.`name` AS divideName, @@ -293,18 +287,14 @@ 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, + bindNumTb.num 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 + IF(ge.id IN (SELECT intakeId FROM intakeIds),'宸茬粦瀹�','鏈粦瀹�') 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 @@ -312,14 +302,7 @@ 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 + JOIN (SELECT intakeId, COUNT(*) num FROM pr_intake_controller WHERE operateType = 1 group by intakeId) AS bindNumTb on bindNumTb.intakeId= ge.id <where> ge.deleted = 0 AND divi.deleted = 0 @@ -327,19 +310,16 @@ <if test="intakeName != null and intakeName != ''"> AND ge.name LIKE CONCAT('%', #{intakeName}, '%') </if> - <if test="divideId != null and divideId != ''"> AND divi.id = #{divideId} </if> - <if test="blockId != null and blockId != ''"> AND blo.id = #{blockId} </if> - - <if test="isBinded == 0"> + <if test="isBinded != null and isBinded == 0"> AND ge.id NOT IN (SELECT intakeId FROM pr_controller where deleted = 0) </if> - <if test="isBinded == 1"> + <if test="isBinded != null and isBinded == 1"> AND ge.id IN (SELECT intakeId FROM pr_controller where deleted = 0) </if> <if test="isBinded == null"> @@ -347,17 +327,14 @@ <if test="address != null and address != ''"> AND CONCAT(country.`name`, town.`name`, village.`name`) LIKE CONCAT('%', #{address}, '%') </if> - <if test = "rtuAddr != null and rtuAddr !=''"> + <if test="rtuAddr != null and rtuAddr !=''"> AND cont.rtuAddr like CONCAT('%',#{rtuAddr},'%') - </if> - <if test="isOnLine != null and isOnLine !='' "> - AND rtus.isOnLine = #{isOnLine} </if> <if test="protocol != null and protocol !='' "> AND cont.protocol = #{protocol} </if> - <if test = "bindNumber != null and bindNumber > 0"> - AND (SELECT COUNT(*) FROM pr_intake_controller WHERE intakeId = ge.id AND operateType = 1) = ${bindNumber} + <if test="bindNumber != null and bindNumber > 0"> + AND bindNumTb.num = #{bindNumber} </if> </where> ORDER BY ge.operateDt DESC @@ -534,19 +511,19 @@ INNER JOIN pr_controller con ON con.intakeId = inta.id <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"> <choose> <when test="onLineMap != null and onLineMap !=''"> - AND rtus.isOnLine = false OR rtus.rtuAddr IS NULL + AND (rtus.isOnLine = false OR rtus.rtuAddr IS NULL) </when> <otherwise> AND rtus.rtuAddr IS NULL @@ -571,37 +548,40 @@ inta.lng, inta.lat, IFNULL(hou.total_amount, 0) AS totalAmount, + <if test="onLineMap != null and onLineMap !='' and isOnLine != null"> + rtus.isOnLine, + </if> alarm.alarm FROM pr_intake inta 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 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"> <choose> <when test="onLineMap != null and onLineMap !=''"> - AND rtus.isOnLine = false OR rtus.rtuAddr IS NULL + AND (rtus.isOnLine = false OR rtus.rtuAddr IS NULL) </when> <otherwise> AND rtus.rtuAddr IS NULL @@ -657,26 +637,28 @@ <!--鏍规嵁鎿嶄綔鍛樿幏鍙栧父鐢ㄥ彇姘村彛--> <select id="getUsedIntakes" resultType="com.dy.pipIrrGlobal.voPr.VoOnLineIntake"> - SELECT DISTINCT con.intakeId, - 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( - <!--'[{"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 + SELECT + com.intake_id AS intakeId, + con.rtuAddr, + inta.name AS intakeNum, + rtus.isOnLine + FROM pr_common_intakes com + INNER JOIN pr_intake inta ON inta.id = com.intake_id + INNER JOIN pr_controller con ON con.intakeId = com.intake_id + INNER JOIN JSON_TABLE( + <!--'[{"rtuAddr":"620201000030","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="operator != null"> - com.operator = #{operator} + com.operator_id = #{operator} </if> </where> + ORDER BY com.last_used_time DESC,com.usage_count DESC </select> <!--鍙栨按鍙e悕绉版崲鍙栨按鍙D锛屾壂鐮佸紑闃�浣跨敤--> -- Gitblit v1.8.0