<?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.PrControllerMapper"> 
 | 
  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoPr.PrController"> 
 | 
    <!--@mbg.generated--> 
 | 
    <!--@Table pr_controller--> 
 | 
    <id column="id" jdbcType="BIGINT" property="id" /> 
 | 
    <result column="intakeId" jdbcType="BIGINT" property="intakeId" /> 
 | 
    <result column="rtuAddr" jdbcType="VARCHAR" property="rtuAddr" /> 
 | 
    <result column="protocol" jdbcType="VARCHAR" property="protocol" /> 
 | 
    <result column="findDt" jdbcType="TIMESTAMP" property="findDt" /> 
 | 
    <result column="orgTag" jdbcType="VARCHAR" property="orgTag" /> 
 | 
    <result column="addWays" jdbcType="TINYINT" property="addWays" /> 
 | 
    <result column="operator" jdbcType="BIGINT" property="operator" /> 
 | 
    <result column="operateDt" jdbcType="TIMESTAMP" property="operateDt" /> 
 | 
    <result column="deleted" jdbcType="TINYINT" property="deleted" /> 
 | 
  </resultMap> 
 | 
  <resultMap id="PartResultMap" type="com.dy.pipIrrGlobal.pojoPr.PrController"> 
 | 
    <id column="id" jdbcType="BIGINT" property="id" /> 
 | 
    <result column="intakeId" jdbcType="BIGINT" property="intakeId" /> 
 | 
    <result column="rtuAddr" jdbcType="VARCHAR" property="rtuAddr" /> 
 | 
  </resultMap> 
 | 
  
 | 
  <sql id="Base_Column_List"> 
 | 
    <!--@mbg.generated--> 
 | 
    id, intakeId, rtuAddr, protocol, findDt, orgTag, addWays, `operator`, operateDt, deleted 
 | 
  </sql> 
 | 
  <sql id="Part_Column_List"> 
 | 
    <!--@mbg.generated--> 
 | 
    id, rtuAddr, intakeId 
 | 
  </sql> 
 | 
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> 
 | 
    <!--@mbg.generated--> 
 | 
    select 
 | 
    <include refid="Base_Column_List" /> 
 | 
    from pr_controller 
 | 
    where id = #{id,jdbcType=BIGINT} 
 | 
  </select> 
 | 
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long"> 
 | 
    <!--@mbg.generated--> 
 | 
    delete from pr_controller 
 | 
    where id = #{id,jdbcType=BIGINT} 
 | 
  </delete> 
 | 
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoPr.PrController"> 
 | 
    <!--@mbg.generated--> 
 | 
    insert into pr_controller (id, intakeId, rtuAddr, 
 | 
      protocol, findDt, orgTag, addWays, 
 | 
      `operator`, operateDt, deleted 
 | 
      ) 
 | 
    values (#{id,jdbcType=BIGINT}, #{intakeId,jdbcType=BIGINT}, #{rtuAddr,jdbcType=VARCHAR}, 
 | 
      #{protocol,jdbcType=VARCHAR}, #{findDt,jdbcType=TIMESTAMP}, #{orgTag,jdbcType=VARCHAR}, 
 | 
      #{addWays,jdbcType=TINYINT}, #{operator,jdbcType=BIGINT}, #{operateDt,jdbcType=TIMESTAMP}, 
 | 
      #{deleted,jdbcType=TINYINT} 
 | 
      ) 
 | 
  </insert> 
 | 
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrController"> 
 | 
    <!--@mbg.generated--> 
 | 
    insert into pr_controller 
 | 
    <trim prefix="(" suffix=")" suffixOverrides=","> 
 | 
      <if test="id != null"> 
 | 
        id, 
 | 
      </if> 
 | 
      <if test="intakeId != null"> 
 | 
        intakeId, 
 | 
      </if> 
 | 
      <if test="rtuAddr != null"> 
 | 
        rtuAddr, 
 | 
      </if> 
 | 
      <if test="protocol != null"> 
 | 
        protocol, 
 | 
      </if> 
 | 
      <if test="findDt != null"> 
 | 
        findDt, 
 | 
      </if> 
 | 
      <if test="orgTag != null"> 
 | 
        orgTag, 
 | 
      </if> 
 | 
      <if test="addWays != null"> 
 | 
        addWays, 
 | 
      </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="intakeId != null"> 
 | 
        #{intakeId,jdbcType=BIGINT}, 
 | 
      </if> 
 | 
      <if test="rtuAddr != null"> 
 | 
        #{rtuAddr,jdbcType=VARCHAR}, 
 | 
      </if> 
 | 
      <if test="protocol != null"> 
 | 
        #{protocol,jdbcType=VARCHAR}, 
 | 
      </if> 
 | 
      <if test="findDt != null"> 
 | 
        #{findDt,jdbcType=TIMESTAMP}, 
 | 
      </if> 
 | 
      <if test="orgTag != null"> 
 | 
        #{orgTag,jdbcType=VARCHAR}, 
 | 
      </if> 
 | 
      <if test="addWays != null"> 
 | 
        #{addWays,jdbcType=TINYINT}, 
 | 
      </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.PrController"> 
 | 
    <!--@mbg.generated--> 
 | 
    update pr_controller 
 | 
    <set> 
 | 
      <if test="intakeId != null"> 
 | 
        intakeId = #{intakeId,jdbcType=BIGINT}, 
 | 
      </if> 
 | 
      <if test="rtuAddr != null"> 
 | 
        rtuAddr = #{rtuAddr,jdbcType=VARCHAR}, 
 | 
      </if> 
 | 
      <if test="protocol != null"> 
 | 
        protocol = #{protocol,jdbcType=VARCHAR}, 
 | 
      </if> 
 | 
      <if test="findDt != null"> 
 | 
        findDt = #{findDt,jdbcType=TIMESTAMP}, 
 | 
      </if> 
 | 
     <if test="orgTag != null"> 
 | 
       orgTag = #{orgTag,jdbcType=VARCHAR}, 
 | 
      </if> 
 | 
      <if test="addWays != null"> 
 | 
        addWays = #{addWays,jdbcType=TINYINT}, 
 | 
      </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.PrController"> 
 | 
    <!--@mbg.generated--> 
 | 
    update pr_controller 
 | 
    set intakeId = #{intakeId,jdbcType=BIGINT}, 
 | 
      rtuAddr = #{rtuAddr,jdbcType=VARCHAR}, 
 | 
      protocol = #{protocol,jdbcType=VARCHAR}, 
 | 
      findDt = #{findDt,jdbcType=TIMESTAMP}, 
 | 
      orgTag = #{orgTag,jdbcType=VARCHAR}, 
 | 
      addWays = #{addWays,jdbcType=TINYINT}, 
 | 
      `operator` = #{operator,jdbcType=BIGINT}, 
 | 
      operateDt = #{operateDt,jdbcType=TIMESTAMP}, 
 | 
      deleted = #{deleted,jdbcType=TINYINT} 
 | 
    where id = #{id,jdbcType=BIGINT} 
 | 
  </update> 
 | 
  
 | 
  <!--根据控制器编号删除取水口编号--> 
 | 
  <update id="deleteIntakeId"> 
 | 
    UPDATE pr_controller SET intakeId = null WHERE id = ${controllerId} 
 | 
  </update> 
 | 
  
 | 
  <!--根据指定条件获取控制器记录数--> 
 | 
  <select id="getRecordCount" resultType="java.lang.Long"> 
 | 
    SELECT 
 | 
        COUNT(*) AS recordCount 
 | 
    FROM pr_controller con 
 | 
    LEFT JOIN pr_intake_controller ic ON ic.controllerId = con.id 
 | 
    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> 
 | 
      AND con.deleted = 0 
 | 
  
 | 
      <if test = "id != null and id > 0"> 
 | 
        AND con.id = ${id} 
 | 
      </if> 
 | 
      <if test = "rtuAddr != null and rtuAddr !=''"> 
 | 
        AND con.rtuAddr like CONCAT('%',#{rtuAddr},'%') 
 | 
      </if> 
 | 
      <if test="isOnLine != null and isOnLine !='' "> 
 | 
        AND rtus.isOnLine = #{isOnLine} 
 | 
      </if> 
 | 
      <if test = "bindNumber != null and bindNumber > 0"> 
 | 
        AND (SELECT COUNT(*) FROM pr_intake_controller WHERE controllerId = con.id AND intakeId = inta.id AND operateType = 1) = ${bindNumber} 
 | 
      </if> 
 | 
    </where> 
 | 
  </select> 
 | 
  
 | 
  <!--根据指定条件获取控制器记录--> 
 | 
  <select id="getControllers" resultType="com.dy.pipIrrGlobal.voPr.VoController"> 
 | 
    SELECT 
 | 
        CAST(con.id AS char) AS id, 
 | 
        con.rtuAddr AS rtuAddr, 
 | 
        inta.name AS intakeName, 
 | 
        con.protocol, 
 | 
        inta.remarks, 
 | 
        rtus.isOnLine, 
 | 
        (SELECT COUNT(*) FROM pr_intake_controller WHERE controllerId = con.id AND intakeId = inta.id AND operateType = 1) AS bindNumber, 
 | 
        con.findDt AS findDt 
 | 
    FROM pr_controller con 
 | 
        LEFT JOIN pr_intake_controller ic ON ic.controllerId = con.id 
 | 
        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> 
 | 
      AND con.deleted = 0 
 | 
  
 | 
      <if test = "id != null and id > 0"> 
 | 
        AND con.id = ${id} 
 | 
      </if> 
 | 
      <if test = "rtuAddr != null and rtuAddr !=''"> 
 | 
        AND con.rtuAddr like CONCAT('%',#{rtuAddr},'%') 
 | 
      </if> 
 | 
      <if test="isOnLine != null and isOnLine !='' "> 
 | 
        AND rtus.isOnLine = #{isOnLine} 
 | 
      </if> 
 | 
      <if test = "bindNumber != null and bindNumber > 0"> 
 | 
        AND (SELECT COUNT(*) FROM pr_intake_controller WHERE controllerId = con.id AND intakeId = inta.id AND operateType = 1) = ${bindNumber} 
 | 
      </if> 
 | 
    </where> 
 | 
    ORDER BY con.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="getControllersByAddr" resultType="java.util.Map"> 
 | 
    SELECT id, rtuAddr FROM pr_controller WHERE deleted = 0 AND rtuAddr LIKE CONCAT('%',#{rtuAddr},'%') 
 | 
  </select> 
 | 
  
 | 
  <!--根据控制器地址获取控制器列表--> 
 | 
  <select id="getControllersByRtuAddrAndIntakeNotNull" parameterType="java.lang.String" resultType="com.dy.pipIrrGlobal.pojoPr.PrController"> 
 | 
    SELECT tb.id id, 
 | 
    tb.rtuAddr rtuAddr, 
 | 
    tb.intakeId intakeId, 
 | 
    itb.name intakeName 
 | 
    FROM pr_controller tb 
 | 
    INNER JOIN pr_intake itb on tb.intakeId = itb.id 
 | 
    WHERE tb.deleted = 0 AND tb.intakeId is not null AND tb.rtuAddr=#{rtuAddr,jdbcType=VARCHAR} 
 | 
  </select> 
 | 
  
 | 
  <!--根据控制器编号逻辑删除控制--> 
 | 
  <update id="deleteControllerById"> 
 | 
    UPDATE pr_controller SET deleted = 1 WHERE id = ${controllerId} 
 | 
  </update> 
 | 
  
 | 
  <!--根据控制器编号获取未删除的控制器数量--> 
 | 
  <select id="getRecordCountOfController" resultType="java.lang.Integer"> 
 | 
    SELECT COUNT(*) AS recordCount FROM pr_controller WHERE deleted = 0 AND id = ${controllerId} 
 | 
  </select> 
 | 
  
 | 
  <!--根据流浪控制器编号获取已绑定记录数--> 
 | 
  <select id="getBindedCount" resultType="java.lang.Integer"> 
 | 
    SELECT COUNT(*) AS recordCount FROM pr_controller WHERE rtuAddr = (SELECT rtuAddr FROM pr_controller_tramp WHERE id = ${controllerId}) AND intakeId IS NOT NULL 
 | 
  </select> 
 | 
  
 | 
  <!--根据取水口ID或阀控器地址获取阀控器对象--> 
 | 
  <select id="getRtu" resultType="com.dy.pipIrrGlobal.pojoPr.PrController"> 
 | 
    SELECT * FROM pr_controller 
 | 
    <where> 
 | 
      AND deleted = 0 
 | 
      <if test = "intakeId != null"> 
 | 
        AND intakeId = #{intakeId} 
 | 
      </if> 
 | 
      <if test = "rtuAddr != null"> 
 | 
        AND rtuAddr = #{rtuAddr} 
 | 
      </if> 
 | 
    </where> 
 | 
    LIMIT 0,1 
 | 
  </select> 
 | 
</mapper> 
 |