wuzeyu
2024-06-12 e9e91d14c9436b29292054e3de0445dbb7d8601c
pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
@@ -219,6 +219,7 @@
    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
@@ -227,11 +228,11 @@
        AND ge.name LIKE CONCAT('%', #{intakeName}, '%')
      </if>
      <if test = "divideId != null">
      <if test = "divideId != null and divideId !=''">
        AND divi.id = #{divideId}
      </if>
      <if test = "blockId != null">
      <if test = "blockId != null and blockId !=''">
        AND blo.id = #{blockId}
      </if>
@@ -259,6 +260,8 @@
    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,
@@ -275,6 +278,7 @@
    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
@@ -283,11 +287,11 @@
        AND ge.name LIKE CONCAT('%', #{intakeName}, '%')
      </if>
      <if test = "divideId != null">
      <if test = "divideId != null and divideId !=''">
        AND divi.id = #{divideId}
      </if>
      <if test = "blockId != null">
      <if test = "blockId != null and blockId !=''">
        AND blo.id = #{blockId}
      </if>
@@ -354,4 +358,83 @@
    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
        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 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
        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 LIKE CONCAT('%', #{intakeNum}, '%')
      </if>
    </where>
    order by con.id ASC
    <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.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>
</mapper>