<?xml version="1.0" encoding="UTF-8"?> 
 | 
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 
 | 
<mapper namespace="com.dy.pipIrrGlobal.daoPr.PrIntakeMapper"> 
 | 
    <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoPr.PrIntake"> 
 | 
        <!--@mbg.generated--> 
 | 
        <!--@Table pr_intake--> 
 | 
        <id column="id" jdbcType="BIGINT" property="id"/> 
 | 
        <result column="countyId" jdbcType="BIGINT" property="countyId"/> 
 | 
        <result column="townId" jdbcType="BIGINT" property="townId"/> 
 | 
        <result column="villageId" jdbcType="BIGINT" property="villageId"/> 
 | 
        <result column="divideId" jdbcType="BIGINT" property="divideId"/> 
 | 
        <result column="blockId" jdbcType="BIGINT" property="blockId"/> 
 | 
        <result column="name" jdbcType="VARCHAR" property="name"/> 
 | 
        <result column="lng" jdbcType="DOUBLE" property="lng"/> 
 | 
        <result column="lat" jdbcType="DOUBLE" property="lat"/> 
 | 
        <result column="remarks" jdbcType="VARCHAR" property="remarks"/> 
 | 
        <result column="operator" jdbcType="BIGINT" property="operator"/> 
 | 
        <result column="operateDt" jdbcType="TIMESTAMP" property="operateDt"/> 
 | 
        <result column="deleted" jdbcType="TINYINT" property="deleted"/> 
 | 
    </resultMap> 
 | 
    <sql id="Base_Column_List"> 
 | 
        <!--@mbg.generated--> 
 | 
        id, 
 | 
        countyId, 
 | 
        townId, 
 | 
        villageId, 
 | 
        divideId, 
 | 
        blockId, 
 | 
        `name`, 
 | 
        lng, 
 | 
        lat, 
 | 
        remarks, 
 | 
        `operator`, 
 | 
        operateDt, 
 | 
        deleted 
 | 
    </sql> 
 | 
    <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> 
 | 
        <!--@mbg.generated--> 
 | 
        select 
 | 
        <include refid="Base_Column_List"/> 
 | 
        from pr_intake 
 | 
        where id = #{id,jdbcType=BIGINT} 
 | 
          and deleted = 0 
 | 
    </select> 
 | 
  
 | 
    <delete id="deleteLogicById" parameterType="java.lang.Long"> 
 | 
        <!--@mbg.generated--> 
 | 
        update pr_intake 
 | 
        set deleted = 1 
 | 
        where id = #{id,jdbcType=BIGINT} 
 | 
    </delete> 
 | 
  
 | 
    <select id="selectAll" resultMap="BaseResultMap"> 
 | 
        <!--@mbg.generated--> 
 | 
        select 
 | 
        <include refid="Base_Column_List"/> 
 | 
        from pr_intake 
 | 
        where deleted != 1 
 | 
    </select> 
 | 
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long"> 
 | 
        <!--@mbg.generated--> 
 | 
        delete 
 | 
        from pr_intake 
 | 
        where id = #{id,jdbcType=BIGINT} 
 | 
    </delete> 
 | 
    <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) 
 | 
        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}) 
 | 
    </insert> 
 | 
    <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrIntake"> 
 | 
        <!--@mbg.generated--> 
 | 
        insert into pr_intake 
 | 
        <trim prefix="(" suffix=")" suffixOverrides=","> 
 | 
            <if test="id != null"> 
 | 
                id, 
 | 
            </if> 
 | 
            <if test="countyId != null"> 
 | 
                countyId, 
 | 
            </if> 
 | 
            <if test="townId != null"> 
 | 
                townId, 
 | 
            </if> 
 | 
            <if test="villageId != null"> 
 | 
                villageId, 
 | 
            </if> 
 | 
            <if test="divideId != null"> 
 | 
                divideId, 
 | 
            </if> 
 | 
            <if test="blockId != null"> 
 | 
                blockId, 
 | 
            </if> 
 | 
            <if test="name != null"> 
 | 
                `name`, 
 | 
            </if> 
 | 
            <if test="lng != null"> 
 | 
                lng, 
 | 
            </if> 
 | 
            <if test="lat != null"> 
 | 
                lat, 
 | 
            </if> 
 | 
            <if test="remarks != null"> 
 | 
                remarks, 
 | 
            </if> 
 | 
            <if test="operator != null"> 
 | 
                `operator`, 
 | 
            </if> 
 | 
            <if test="operateDt != null"> 
 | 
                operateDt, 
 | 
            </if> 
 | 
            <if test="deleted != null"> 
 | 
                deleted, 
 | 
            </if> 
 | 
        </trim> 
 | 
        <trim prefix="values (" suffix=")" suffixOverrides=","> 
 | 
            <if test="id != null"> 
 | 
                #{id,jdbcType=BIGINT}, 
 | 
            </if> 
 | 
            <if test="countyId != null"> 
 | 
                #{countyId,jdbcType=BIGINT}, 
 | 
            </if> 
 | 
            <if test="townId != null"> 
 | 
                #{townId,jdbcType=BIGINT}, 
 | 
            </if> 
 | 
            <if test="villageId != null"> 
 | 
                #{villageId,jdbcType=BIGINT}, 
 | 
            </if> 
 | 
            <if test="divideId != null"> 
 | 
                #{divideId,jdbcType=BIGINT}, 
 | 
            </if> 
 | 
            <if test="blockId != null"> 
 | 
                #{blockId,jdbcType=BIGINT}, 
 | 
            </if> 
 | 
            <if test="name != null"> 
 | 
                #{name,jdbcType=VARCHAR}, 
 | 
            </if> 
 | 
            <if test="lng != null"> 
 | 
                #{lng,jdbcType=DOUBLE}, 
 | 
            </if> 
 | 
            <if test="lat != null"> 
 | 
                #{lat,jdbcType=DOUBLE}, 
 | 
            </if> 
 | 
            <if test="remarks != null"> 
 | 
                #{remarks,jdbcType=VARCHAR}, 
 | 
            </if> 
 | 
            <if test="operator != null"> 
 | 
                #{operator,jdbcType=BIGINT}, 
 | 
            </if> 
 | 
            <if test="operateDt != null"> 
 | 
                #{operateDt,jdbcType=TIMESTAMP}, 
 | 
            </if> 
 | 
            <if test="deleted != null"> 
 | 
                #{deleted,jdbcType=TINYINT}, 
 | 
            </if> 
 | 
        </trim> 
 | 
    </insert> 
 | 
    <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrIntake"> 
 | 
        <!--@mbg.generated--> 
 | 
        update pr_intake 
 | 
        <set> 
 | 
            <if test="countyId != null"> 
 | 
                countyId = #{countyId,jdbcType=BIGINT}, 
 | 
            </if> 
 | 
            <if test="townId != null"> 
 | 
                townId = #{townId,jdbcType=BIGINT}, 
 | 
            </if> 
 | 
            <if test="villageId != null"> 
 | 
                villageId = #{villageId,jdbcType=BIGINT}, 
 | 
            </if> 
 | 
            <if test="divideId != null"> 
 | 
                divideId = #{divideId,jdbcType=BIGINT}, 
 | 
            </if> 
 | 
            <if test="blockId != null"> 
 | 
                blockId = #{blockId,jdbcType=BIGINT}, 
 | 
            </if> 
 | 
            <if test="name != null"> 
 | 
                `name` = #{name,jdbcType=VARCHAR}, 
 | 
            </if> 
 | 
            <if test="lng != null"> 
 | 
                lng = #{lng,jdbcType=DOUBLE}, 
 | 
            </if> 
 | 
            <if test="lat != null"> 
 | 
                lat = #{lat,jdbcType=DOUBLE}, 
 | 
            </if> 
 | 
            <if test="remarks != null"> 
 | 
                remarks = #{remarks,jdbcType=VARCHAR}, 
 | 
            </if> 
 | 
            <if test="operator != null"> 
 | 
                `operator` = #{operator,jdbcType=BIGINT}, 
 | 
            </if> 
 | 
            <if test="operateDt != null"> 
 | 
                operateDt = #{operateDt,jdbcType=TIMESTAMP}, 
 | 
            </if> 
 | 
            <if test="deleted != null"> 
 | 
                deleted = #{deleted,jdbcType=TINYINT}, 
 | 
            </if> 
 | 
        </set> 
 | 
        where id = #{id,jdbcType=BIGINT} 
 | 
    </update> 
 | 
    <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoPr.PrIntake"> 
 | 
        <!--@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} 
 | 
        where id = #{id,jdbcType=BIGINT} 
 | 
    </update> 
 | 
  
 | 
    <!--根据指定条件获取取水口记录数--> 
 | 
    <select id="getRecordCount" parameterType="java.util.Map" resultType="java.lang.Long"> 
 | 
        SELECT COUNT(*) AS recordCount 
 | 
        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 
 | 
        <where> 
 | 
            ge.deleted = 0 
 | 
              AND divi.deleted = 0 
 | 
              and blo.deleted = 0 
 | 
            <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"> 
 | 
                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 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 
 | 
                 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 blo.deleted = 0 
 | 
            <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"> 
 | 
                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 
 | 
        <trim prefix="limit "> 
 | 
            <if test="start != null and count != null"> 
 | 
                #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER} 
 | 
            </if> 
 | 
        </trim> 
 | 
    </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="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_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 
 | 
        <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, 
 | 
               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) 
 | 
        ) 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 
 | 
        <trim prefix="limit "> 
 | 
            <if test="start != null and count != null"> 
 | 
                #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER} 
 | 
            </if> 
 | 
        </trim> 
 | 
    </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> 
 |