From fd2de42e8b0019e660f04c72d0a9d218e032f4e4 Mon Sep 17 00:00:00 2001 From: wuzeyu <1223318623@qq.com> Date: 星期五, 05 七月 2024 13:59:02 +0800 Subject: [PATCH] 添加取水口和更改取水口时判断取水口是否重名 --- pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml | 160 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 143 insertions(+), 17 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 4b6483c..1ce5038 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml @@ -216,9 +216,10 @@ FROM pr_intake ge INNER JOIN pr_divide divi ON ge.divideId = divi.id INNER JOIN ba_block blo ON divi.blockId = blo.id - INNER JOIN ba_district country ON ge.countyId = country.id - INNER JOIN ba_district town ON ge.townId = town.id - INNER JOIN ba_district village ON ge.villageId = village.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 <where> ge.deleted = 0 AND divi.deleted = 0 @@ -227,22 +228,44 @@ AND ge.name LIKE CONCAT('%', #{intakeName}, '%') </if> - <if test="divideName != null and divideName != ''"> - AND divi.name LIKE CONCAT('%', #{divideName}, '%') + <if test = "divideId != null and divideId !=''"> + AND divi.id = #{divideId} </if> - <if test="blockName != null and blockName != ''"> - AND blo.name = #{blockName} + <if test = "blockId != null and blockId !=''"> + AND blo.id = #{blockId} + </if> + + <if test="isBinded == 0"> + AND ge.id NOT IN(SELECT intakeId FROM pr_controller where deleted = 0) + </if> + <if test="isBinded == 1"> + AND ge.id IN(SELECT intakeId FROM pr_controller where deleted = 0) + </if> + <if test="isBinded == null"> + + </if> + <if test="address != null and address != ''"> + AND CONCAT(country.`name`, town.`name`, village.`name`) LIKE CONCAT('%', #{address}, '%') </if> </where> </select> <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鍙栨按鍙h褰�--> <select id="getIntakes" resultType="com.dy.pipIrrGlobal.voPr.VoIntake"> - SELECT (@i:=@i+1) AS id, + 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, + 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 "鏈粦瀹�" @@ -252,10 +275,10 @@ FROM pr_intake ge INNER JOIN pr_divide divi ON ge.divideId = divi.id INNER JOIN ba_block blo ON divi.blockId = blo.id - INNER JOIN ba_district country ON ge.countyId = country.id - INNER JOIN ba_district town ON ge.townId = town.id - INNER JOIN ba_district village ON ge.villageId = village.id - , (SELECT @i:=0) AS itable + 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 <where> ge.deleted = 0 AND divi.deleted = 0 @@ -263,17 +286,31 @@ <if test="intakeName != null and intakeName != ''"> AND ge.name LIKE CONCAT('%', #{intakeName}, '%') </if> - <if test="divideName != null and divideName != ''"> - AND divi.name LIKE CONCAT('%', #{divideName}, '%') + + <if test = "divideId != null and divideId !=''"> + AND divi.id = #{divideId} </if> - <if test="blockName != null and blockName != ''"> - AND blo.name = #{blockName} + <if test = "blockId != null and blockId !=''"> + AND blo.id = #{blockId} + </if> + + <if test="isBinded == 0"> + AND ge.id NOT IN(SELECT intakeId FROM pr_controller where deleted = 0) + </if> + <if test="isBinded == 1"> + AND ge.id IN(SELECT intakeId FROM pr_controller where deleted = 0) + </if> + <if test="isBinded == null"> + + </if> + <if test="address != null and address != ''"> + AND CONCAT(country.`name`, town.`name`, village.`name`) LIKE CONCAT('%', #{address}, '%') </if> </where> ORDER BY ge.operateDt DESC <if test="pageCurr != null and pageSize != null"> - LIMIT ${pageCurr}, ${pageSize} + LIMIT ${(pageCurr-1)*pageSize}, ${pageSize} </if> </select> @@ -321,4 +358,93 @@ WHERE id NOT IN(SELECT intakeId FROM pr_controller) AND deleted = 0 </select> + <!--鑾峰彇鍙栨按鍙f暟閲忥紙鍦ㄧ嚎鍜屼笉鍦ㄥ厛锛�--> + <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 + <where> + <if test="isOnLine != null"> + rtus.isOnLine = #{isOnLine} + </if> + <if test="intakeNum != null and intakeNum != ''"> + AND inta.name LIKE CONCAT('%', #{intakeNum}, '%') + </if> + </where> + </select> + + <!--鑾峰彇鍙栨按鍙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 + <where> + <if test="isOnLine != null"> + rtus.isOnLine = #{isOnLine} + </if> + <if test="intakeNum != null and intakeNum != ''"> + AND inta.name LIKE CONCAT('%', #{intakeNum}, '%') + </if> + </where> + order by con.id ASC + <if test="pageCurr != null and pageSize != null"> + LIMIT ${(pageCurr-1)*pageSize}, ${pageSize} + </if> + </select> + + <!--鏍规嵁鎿嶄綔鍛樿幏鍙栧父鐢ㄥ彇姘村彛--> + <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 + <where> + <if test="operator != null"> + com.operator = #{operator} + </if> + </where> + </select> + + <!--鍙栨按鍙e悕绉版崲鍙栨按鍙D锛屾壂鐮佸紑闃�浣跨敤--> + <select id="getIntakeIdByName" resultType="java.lang.Long"> + 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 + </select> </mapper> \ No newline at end of file -- Gitblit v1.8.0