liurunyu
2024-10-24 3a6ac2949244e6a3f70e165cd3802f1d90b78819
pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml
@@ -9,6 +9,7 @@
    <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" />
@@ -22,7 +23,7 @@
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, intakeId, rtuAddr, protocol, findDt, addWays, `operator`, operateDt, deleted
    id, intakeId, rtuAddr, protocol, findDt, orgTag, addWays, `operator`, operateDt, deleted
  </sql>
  <sql id="Part_Column_List">
    <!--@mbg.generated-->
@@ -43,12 +44,13 @@
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoPr.PrController">
    <!--@mbg.generated-->
    insert into pr_controller (id, intakeId, rtuAddr,
      protocol, findDt, addWays,
      protocol, findDt, orgTag, addWays,
      `operator`, operateDt, deleted
      )
    values (#{id,jdbcType=BIGINT}, #{intakeId,jdbcType=BIGINT}, #{rtuAddr,jdbcType=VARCHAR},
      #{protocol,jdbcType=VARCHAR}, #{findDt,jdbcType=TIMESTAMP}, #{addWays,jdbcType=TINYINT},
      #{operator,jdbcType=BIGINT}, #{operateDt,jdbcType=TIMESTAMP}, #{deleted,jdbcType=TINYINT}
      #{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">
@@ -69,6 +71,9 @@
      </if>
      <if test="findDt != null">
        findDt,
      </if>
      <if test="orgTag != null">
        orgTag,
      </if>
      <if test="addWays != null">
        addWays,
@@ -98,6 +103,9 @@
      </if>
      <if test="findDt != null">
        #{findDt,jdbcType=TIMESTAMP},
      </if>
      <if test="orgTag != null">
        #{orgTag,jdbcType=VARCHAR},
      </if>
      <if test="addWays != null">
        #{addWays,jdbcType=TINYINT},
@@ -129,6 +137,9 @@
      <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>
@@ -151,6 +162,7 @@
      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},
@@ -168,20 +180,28 @@
    SELECT
        COUNT(*) AS recordCount
    FROM pr_controller con
        INNER JOIN pr_intake_controller ic ON ic.controllerId = con.id
        INNER JOIN pr_intake inta ON con.intakeId = inta.id
    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 ic.operateType = 1
      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>
@@ -194,26 +214,36 @@
        CAST(con.id AS char) AS id,
        con.rtuAddr AS rtuAddr,
        inta.name AS intakeName,
        "在线" AS onlineState,
        (SELECT COUNT(*) FROM pr_intake_controller WHERE controllerId = con.id AND intakeId = inta.id AND operateType = 1) AS bindNumber,
        con.protocol,
        inta.remarks,
        rtus.isOnLine,
        (SELECT COUNT(*) FROM pr_intake_controller WHERE controllerId = con.id AND operateType = 1) AS bindNumber,
        con.findDt AS findDt
    FROM pr_controller con
        INNER JOIN pr_intake_controller ic ON ic.controllerId = con.id
        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 ic.operateType = 1
      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}
        AND (SELECT COUNT(*) FROM pr_intake_controller WHERE controllerId = con.id AND operateType = 1) = ${bindNumber}
      </if>
    </where>
    ORDER BY con.operateDt DESC
@@ -230,11 +260,16 @@
  </select>
  <!--根据控制器地址获取控制器列表-->
  <select id="getControllersByRtuAddrAndIntakeNotNull" parameterType="java.lang.String" resultMap="PartResultMap">
    SELECT
    <include refid="Part_Column_List">
    </include>
    FROM pr_controller WHERE deleted = 0 AND intakeId is not null AND rtuAddr=#{rtuAddr,jdbcType=VARCHAR}
  <select id="getControllersByRtuAddrAndIntakeNotNull" parameterType="java.lang.String" resultType="com.dy.pipIrrGlobal.pojoPr.PrController">
    SELECT tb.id id,
    tb.rtuAddr rtuAddr,
    tb.intakeId intakeId,
    tb.findDt findDt,
    tb.operateDt operateDt,
    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>
  <!--根据控制器编号逻辑删除控制-->
@@ -252,13 +287,18 @@
    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="getControllerByIntakeId" resultType="com.dy.pipIrrGlobal.pojoPr.PrController">
    SELECT * FROM pr_controller WHERE deleted = 0 AND intakeId = #{intakeId} LIMIT 0,1
  </select>
  <!--根据RTU地址获取阀控器对象-->
  <select id="getControllerByRtuAddr" resultType="com.dy.pipIrrGlobal.pojoPr.PrController">
    SELECT * FROM pr_controller WHERE deleted = 0 AND rtuAddr = #{rtuAddr} LIMIT 0,1
  <!--根据取水口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>