| | |
| | | <select id="getRecordCount" parameterType="java.util.Map" resultType="java.lang.Long"> |
| | | SELECT COUNT(*) AS recordCount |
| | | FROM pr_intake ge |
| | | INNER JOIN ba_divide divi ON ge.divideId = divi.id |
| | | 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 |
| | |
| | | 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> |
| | | |
| | | <!--根据指定条件获取取水口记录--> |
| | | <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 "未绑定" |
| | | 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 |
| | | 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 |
| | |
| | | <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> |
| | | |
| | |
| | | WHERE id NOT IN(SELECT intakeId FROM pr_controller) AND deleted = 0 |
| | | </select> |
| | | |
| | | <!--获取取水口数量(在线和不在先)--> |
| | | <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( |
| | | 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 = #{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> |
| | | |
| | | <!--获取取水口列表(在线和不在先)--> |
| | | <select id="getOnLineIntakes" resultType="com.dy.pipIrrGlobal.voPr.VoOnLineIntake"> |
| | | SELECT |
| | | 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 = #{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> |
| | | |
| | | <!--根据取水口编号获取取水口对象--> |
| | | <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> |
| | | |
| | | <!--根据操作员获取常用取水口--> |
| | | <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> |
| | | |
| | | <!--取水口名称换取水口ID,扫码开阀使用--> |
| | | <select id="getIntakeIdByName" resultType="java.lang.Long"> |
| | | SELECT id AS intakeId FROM pr_intake WHERE `name` = #{intakeName} |
| | | </select> |
| | | |
| | | <!--取水口名称换取水口ID,验证是否重复名称使用--> |
| | | <select id="getIntakeIdsByName" resultType="java.lang.Long"> |
| | | SELECT id AS intakeId FROM pr_intake WHERE `name` = #{intakeName} |
| | | </select> |
| | | |
| | | <!--取水口名称换取水口ID,验证是否重复名称使用--> |
| | | <select id="getIntakeIdByNameExcludeId" resultType="java.lang.Long"> |
| | | SELECT id AS intakeId FROM pr_intake WHERE id != #{id} and `name` = #{intakeName} |
| | | </select> |
| | | |
| | | |
| | | |
| | | </mapper> |