liurunyu
2024-10-24 3a6ac2949244e6a3f70e165cd3802f1d90b78819
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportHistoryMapper.xml
@@ -205,8 +205,8 @@
      <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 test = "intakeName != null and intakeNum !=''">
        AND inta.name LIKE CONCAT('%',#{intakeNum},'%')
      </if>
      <if test = "rtuAddr != null and rtuAddr !=''">
        AND oh.rtu_addr LIKE CONCAT('%',#{rtuAddr},'%')
@@ -260,8 +260,15 @@
    SELECT
        COUNT(*) AS recordCount
    FROM pr_intake inta
        LEFT JOIN (SELECT * FROM rm_on_hour_report_history WHERE dt BETWEEN #{timeStart} AND #{timeStop}) his ON his.intake_id = inta.id
        INNER JOIN ba_block blo ON blo.id = inta.blockId
    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>
@@ -273,8 +280,15 @@
      inta.name AS intakeNum,
      blo.name AS blockName
    FROM pr_intake inta
           LEFT JOIN (SELECT * FROM rm_on_hour_report_history WHERE dt BETWEEN #{timeStart} AND #{timeStop}) his ON his.intake_id = inta.id
           INNER JOIN ba_block blo ON blo.id = inta.blockId
    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 " >
@@ -283,61 +297,67 @@
      </if>
    </trim>
  </select>
  <!--获取累计流量超过指定值的取水口数量-->
  <select id="getLargeFlowIntakesCount" resultType="java.lang.Long">
  <!--指定时间段内累积流量超过指定值的取水口数量-->
  <select id="getTotalFlowGtValueIntakesCount" resultType="java.lang.Long">
    select
    count(*)
    from
    (
    SELECT
        COUNT(*) AS recordCount
    FROM pr_intake inta
        INNER JOIN rm_on_hour_report_last hou ON hou.intake_id = inta.id
        INNER JOIN ba_block blo ON blo.id = inta.blockId
    WHERE inta.deleted = 0 AND hou.total_amount > #{totalAmount}
  </select>
  <!--获取累计流量超过指定值的取水口-->
  <select id="getLargeFlowIntakes" resultType="com.dy.pipIrrGlobal.voSt.VoCumulativeFlow">
    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,
    CAST(hou.total_amount AS DECIMAL(10, 2)) AS cumulativeFlow,
      hou.dt AS getDate
    FROM pr_intake inta
           INNER JOIN rm_on_hour_report_last hou ON hou.intake_id = inta.id
           INNER JOIN ba_block blo ON blo.id = inta.blockId
    WHERE inta.deleted = 0 AND hou.total_amount > #{totalAmount}
    ORDER BY hou.dt
    <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="getSmallFlowIntakesCount" resultType="java.lang.Long">
    SELECT
        COUNT(*) AS recordCount
    FROM pr_intake inta
        INNER JOIN rm_on_hour_report_last hou ON hou.intake_id = inta.id
        INNER JOIN ba_block blo ON blo.id = inta.blockId
    WHERE inta.deleted = 0 AND hou.total_amount &lt; #{totalAmount}
  </select>
  <!--获取累计流量低于指定值的取水口-->
  <select id="getSmallFlowIntakes" resultType="com.dy.pipIrrGlobal.voSt.VoCumulativeFlow">
    SELECT
        inta.id AS intakeId,
        inta.name AS intakeNum,
        blo.name AS blockName,
<!--    FORMAT(hou.total_amount,2) AS cumulativeFlow,-->
        CAST(hou.total_amount AS DECIMAL(10, 2)) AS cumulativeFlow,
        hou.dt AS getDate
    FROM pr_intake inta
        INNER JOIN rm_on_hour_report_last hou ON hou.intake_id = inta.id
        INNER JOIN ba_block blo ON blo.id = inta.blockId
    WHERE inta.deleted = 0 AND hou.total_amount &lt; #{totalAmount}
    ORDER BY hou.dt
      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}