zhubaomin
2024-08-28 b5ef534819e9d1cbcbb138e4cf58acb6a5d7ca6c
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportHistoryMapper.xml
@@ -202,6 +202,9 @@
    FROM rm_on_hour_report_history oh
    INNER JOIN pr_intake inta ON inta.id = oh.intake_id
    <where>
      <if test="intakeId != null and intakeId >0">
        AND oh.intake_id = #{intakeId}
      </if>
      <if test = "intakeName != null and intakeName !=''">
        AND inta.name LIKE CONCAT('%',#{intakeName},'%')
      </if>
@@ -231,6 +234,9 @@
    FROM rm_on_hour_report_history oh
        INNER JOIN pr_intake inta ON inta.id = oh.intake_id
    <where>
      <if test="intakeId != null and intakeId >0">
        AND oh.intake_id = #{intakeId}
      </if>
      <if test = "intakeNum != null and intakeNum !=''">
        AND inta.name LIKE CONCAT('%',#{intakeNum},'%')
      </if>
@@ -248,4 +254,114 @@
      </if>
    </trim>
  </select>
  <!--获取指定时间段内未上线取水口数量-->
  <select id="getNotOnlineIntakesCount" resultType="java.lang.Long">
    SELECT
        COUNT(*) AS recordCount
    FROM pr_intake inta
    LEFT JOIN
         (SELECT * FROM rm_on_hour_report_history
         <where>
           <if test = "timeStart != null and timeStop != null">
           dt BETWEEN #{timeStart} AND #{timeStop}
           </if>
         </where>) his
         ON his.intake_id = inta.id
    INNER JOIN ba_block blo ON blo.id = inta.blockId
    WHERE his.intake_id IS NULL AND inta.deleted = 0
  </select>
  <!--获取指定时间段内未上线的取水口-->
  <select id="getNotOnlineIntakes" resultType="com.dy.pipIrrGlobal.voSt.VoIntake">
    SELECT
      inta.id AS intakeId,
      inta.name AS intakeNum,
      blo.name AS blockName
    FROM pr_intake inta
    LEFT JOIN
    (SELECT * FROM rm_on_hour_report_history
    <where>
      <if test = "timeStart != null and timeStop != null">
        dt BETWEEN #{timeStart} AND #{timeStop}
      </if>
    </where>) his
    ON his.intake_id = inta.id
    INNER JOIN ba_block blo ON blo.id = inta.blockId
    WHERE his.intake_id IS NULL AND inta.deleted = 0
    ORDER BY inta.id
    <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="getTotalFlowGtValueIntakesCount" resultType="java.lang.Long">
    select
    count(*)
    from
    (
    SELECT
    inta.id AS intakeId,
    inta.NAME AS intakeNum,
    blo.NAME AS blockName ,
    IFNULL(b.total_amount, 0)-IFNULL(a.total_amount, 0) AS value
    FROM
    pr_intake inta
    INNER JOIN ba_block blo ON blo.id = inta.blockId
    LEFT JOIN (SELECT
    intake_id,
    total_amount
    FROM
    rm_on_hour_report_history rohrs
    WHERE rohrs.rtu_dt = (    SELECT MAX(rtu_dt)
    FROM rm_on_hour_report_history
    WHERE rtu_dt &lt;= #{timeStart})) AS a ON inta.id = a.intake_id
    LEFT JOIN (    SELECT
    intake_id,
    total_amount
    FROM
    rm_on_hour_report_history rohrs
    WHERE rohrs.rtu_dt = (    SELECT MAX(rtu_dt)
    FROM rm_on_hour_report_history
    WHERE rtu_dt &lt;= #{timeStop})) AS b ON inta.id = b.intake_id
    WHERE IFNULL(b.total_amount, 0)-IFNULL(a.total_amount, 0) &gt; #{value} AND inta.deleted = 0
    ) c
    </select>
  <!--指定时间段内累积流量超过指定值的取水口-->
  <select id="getTotalFlowGtValueIntakes" resultType="com.dy.pipIrrGlobal.voSt.VoIntakeAccumulateAmount">
    SELECT
      inta.id AS intakeId,
      inta.NAME AS intakeNum,
      blo.NAME AS blockName ,
      IFNULL(b.total_amount, 0)-IFNULL(a.total_amount, 0) AS value
    FROM
      pr_intake inta
      INNER JOIN ba_block blo ON blo.id = inta.blockId
      LEFT JOIN (SELECT
      intake_id,
      total_amount
      FROM
      rm_on_hour_report_history rohrs
      WHERE rohrs.rtu_dt = (    SELECT MAX(rtu_dt)
      FROM rm_on_hour_report_history
      WHERE rtu_dt &lt;= #{timeStart})) AS a ON inta.id = a.intake_id
    LEFT JOIN (    SELECT
    intake_id,
    total_amount
    FROM
    rm_on_hour_report_history rohrs
    WHERE rohrs.rtu_dt = (    SELECT MAX(rtu_dt)
    FROM rm_on_hour_report_history
    WHERE rtu_dt &lt;= #{timeStop})) AS b ON inta.id = b.intake_id
    WHERE IFNULL(b.total_amount, 0)-IFNULL(a.total_amount, 0) &gt; #{value} AND inta.deleted = 0
    ORDER BY inta.id
    <trim prefix="limit " >
      <if test="start != null and count != null">
        #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
      </if>
    </trim>
  </select>
</mapper>