|  |  |  | 
|---|
|  |  |  | <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> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <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 | 
|---|
|  |  |  | where dis_vil.id = #{vaId,jdbcType=BIGINT} | 
|---|
|  |  |  | </select> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <!--根据下级获取上一级地址--> | 
|---|
|  |  |  | <select id="getSupperByVillageId" parameterType="_long" resultType="java.lang.Long"> | 
|---|
|  |  |  | select dis_tow.* | 
|---|
|  |  |  | from ba_district dis_vil | 
|---|
|  |  |  | 
|---|
|  |  |  | <select id="getRecordCountOfIntake" resultType="java.lang.Integer"> | 
|---|
|  |  |  | SELECT COUNT(*) AS recordCount FROM pr_intake WHERE deleted = 0 AND id = ${intakeId} | 
|---|
|  |  |  | </select> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <!--根据村ID获取全部地址--> | 
|---|
|  |  |  | <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 | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | where dis_village.id = #{villageId,jdbcType=BIGINT} | 
|---|
|  |  |  | </select> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <!--根据区域Id获取区域等级--> | 
|---|
|  |  |  | <select id="getLevelByRegionId" parameterType="_long" resultType="java.lang.Integer"> | 
|---|
|  |  |  | select | 
|---|
|  |  |  | region.level | 
|---|
|  |  |  | from ba_district region | 
|---|
|  |  |  | where region.id = #{regionId,jdbcType=BIGINT} | 
|---|
|  |  |  | </select> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <!--获取未绑控制器的取水口列表--> | 
|---|
|  |  |  | <select id="getNoBindingIntakes" resultType="java.util.HashMap"> | 
|---|
|  |  |  | SELECT | 
|---|
|  |  |  | CAST(inta.id AS char)AS intakeId, | 
|---|
|  |  |  | name AS intakeName | 
|---|
|  |  |  | FROM pr_intake inta | 
|---|
|  |  |  | 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_controller con | 
|---|
|  |  |  | INNER JOIN pr_intake inta ON con.intakeId = inta.id | 
|---|
|  |  |  | 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="isOnLine != null"> | 
|---|
|  |  |  | rtus.isOnLine = #{isOnLine} | 
|---|
|  |  |  | </if> | 
|---|
|  |  |  | <if test="intakeNum != null and intakeNum != ''"> | 
|---|
|  |  |  | AND inta.name LIKE CONCAT('%', #{intakeNum}, '%') | 
|---|
|  |  |  | </if> | 
|---|
|  |  |  | </where> | 
|---|
|  |  |  | </select> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <!--获取取水口列表(在线和不在先)--> | 
|---|
|  |  |  | <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 | 
|---|
|  |  |  | 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="isOnLine != null"> | 
|---|
|  |  |  | rtus.isOnLine = #{isOnLine} | 
|---|
|  |  |  | </if> | 
|---|
|  |  |  | <if test="intakeNum != null and intakeNum != ''"> | 
|---|
|  |  |  | AND inta.name LIKE CONCAT('%', #{intakeNum}, '%') | 
|---|
|  |  |  | </if> | 
|---|
|  |  |  | </where> | 
|---|
|  |  |  | <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.rtuAddr | 
|---|
|  |  |  | 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> | 
|---|
|  |  |  | </mapper> | 
|---|