zhubaomin
2025-04-07 e67870fff62635cd14beb0d5988f08aeef4b22fa
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossDayMapper.xml
@@ -275,10 +275,10 @@
        from rm_loss_day
        <where>
          <if test="startDt != null ">
            AND dt <![CDATA[>=]]> #{startDt, jdbcType=DATE, jdbcType=DATE}
            AND dt <![CDATA[>=]]> #{startDt, javaType=DATE, jdbcType=DATE}
          </if>
          <if test="endDt != null ">
            AND dt <![CDATA[<]]> #{endDt, jdbcType=DATE, jdbcType=DATE}
            AND dt <![CDATA[<]]> #{endDt, javaType=DATE, jdbcType=DATE}
          </if>
        </where>
        order by intake_id DESC, id ASC
@@ -286,9 +286,7 @@
  </select>
  <!--统计指定月份各天漏损量-->
  <select id="selectLossAmountOfDay" resultType="com.dy.pipIrrGlobal.voSt.VoDayLoss">
    WITH intakeLossAmountDay AS (
  <sql id="selectLossAmountOfDay_with">
      SELECT intaId.intakeId   AS intakeId,
             rld.dt            AS dt,
             rld.loss_amount   AS lossAmount
@@ -301,14 +299,17 @@
      INNER JOIN rm_loss_day rld ON rld.intake_id = intaId.intakeId
      <where>
        <if test="startDt != null ">
          AND rld.dt <![CDATA[>=]]> #{startDt, jdbcType=DATE, jdbcType=DATE}
          AND rld.dt <![CDATA[>=]]> #{startDt, javaType=DATE, jdbcType=DATE}
        </if>
        <if test="endDt != null ">
          AND rld.dt <![CDATA[<=]]> #{endDt, jdbcType=DATE, jdbcType=DATE}
          AND rld.dt <![CDATA[<=]]> #{endDt, javaType=DATE, jdbcType=DATE}
        </if>
      </where>
    )
  </sql>
  <!--统计指定月份各天漏损量(1号到5号)-->
  <select id="selectLossAmountOfDay01_05" resultType="com.dy.pipIrrGlobal.voSt.VoDayLoss">
    WITH intakeLossAmountDay AS (<include refid="selectLossAmountOfDay_with"/>)
    SELECT inta.intakeId     AS intakeId,
           inta.intakeNum    AS intakeNum,
           inta.intakeLng    AS intakeLng,
@@ -317,33 +318,7 @@
           tb02.lossAmount   AS lossAmount2,
           tb03.lossAmount   AS lossAmount3,
           tb04.lossAmount   AS lossAmount4,
           tb05.lossAmount   AS lossAmount5,
           tb06.lossAmount   AS lossAmount6,
           tb07.lossAmount   AS lossAmount7,
           tb08.lossAmount   AS lossAmount8,
           tb09.lossAmount   AS lossAmount9,
           tb10.lossAmount   AS lossAmount10,
           tb11.lossAmount   AS lossAmount11,
           tb12.lossAmount   AS lossAmount12,
           tb13.lossAmount   AS lossAmount13,
           tb14.lossAmount   AS lossAmount14,
           tb15.lossAmount   AS lossAmount15,
           tb16.lossAmount   AS lossAmount16,
           tb17.lossAmount   AS lossAmount17,
           tb18.lossAmount   AS lossAmount18,
           tb19.lossAmount   AS lossAmount19,
           tb20.lossAmount   AS lossAmount20,
           tb21.lossAmount   AS lossAmount21,
           tb22.lossAmount   AS lossAmount22,
           tb23.lossAmount   AS lossAmount23,
           tb24.lossAmount   AS lossAmount24,
           tb25.lossAmount   AS lossAmount25,
           tb26.lossAmount   AS lossAmount26,
           tb27.lossAmount   AS lossAmount27,
           tb28.lossAmount   AS lossAmount28,
           tb29.lossAmount   AS lossAmount29,
           tb30.lossAmount   AS lossAmount30,
           tb31.lossAmount   AS lossAmount31
           tb05.lossAmount   AS lossAmount5
    FROM JSON_TABLE(
      #{intakesJson},
      '$[*]' COLUMNS (
@@ -354,7 +329,7 @@
      )
    ) inta
    LEFT JOIN (
        SELECT tb.intakeId AS intakeId,
       SELECT tb.intakeId AS intakeId,
               tb.lossAmount AS lossAmount
        FROM intakeLossAmountDay AS tb
        WHERE YEAR(tb.dt) = #{year}
@@ -393,6 +368,30 @@
        AND MONTH(tb.dt) = #{month}
        AND DAY(tb.dt) = 5
    ) as tb05 on tb05.intakeId = inta.intakeId
  </select>
  <!--统计指定月份各天漏损量(6号到10号)-->
  <select id="selectLossAmountOfDay06_10" resultType="com.dy.pipIrrGlobal.voSt.VoDayLoss">
    WITH intakeLossAmountDay AS (<include refid="selectLossAmountOfDay_with"/>)
    SELECT inta.intakeId     AS intakeId,
           inta.intakeNum    AS intakeNum,
           inta.intakeLng    AS intakeLng,
           inta.intakeLat    AS intakeLat,
           tb06.lossAmount   AS lossAmount6,
           tb07.lossAmount   AS lossAmount7,
           tb08.lossAmount   AS lossAmount8,
           tb09.lossAmount   AS lossAmount9,
           tb10.lossAmount   AS lossAmount10
    FROM JSON_TABLE(
      #{intakesJson},
      '$[*]' COLUMNS (
        intakeId BIGINT PATH '$.intakeId',
        intakeNum VARCHAR(100) PATH '$.intakeNum',
        intakeLng DOUBLE PATH '$.intakeLng',
        intakeLat DOUBLE PATH '$.intakeLat'
      )
    ) inta
    LEFT JOIN (
        SELECT tb.intakeId AS intakeId,
               tb.lossAmount AS lossAmount
@@ -433,6 +432,29 @@
        AND MONTH(tb.dt) = #{month}
        AND DAY(tb.dt) = 10
    ) as tb10 on tb10.intakeId = inta.intakeId
  </select>
  <!--统计指定月份各天漏损量(11号到15号)-->
  <select id="selectLossAmountOfDay11_15" resultType="com.dy.pipIrrGlobal.voSt.VoDayLoss">
    WITH intakeLossAmountDay AS (<include refid="selectLossAmountOfDay_with"/>)
    SELECT inta.intakeId     AS intakeId,
           inta.intakeNum    AS intakeNum,
           inta.intakeLng    AS intakeLng,
           inta.intakeLat    AS intakeLat,
           tb11.lossAmount   AS lossAmount11,
           tb12.lossAmount   AS lossAmount12,
           tb13.lossAmount   AS lossAmount13,
           tb14.lossAmount   AS lossAmount14,
           tb15.lossAmount   AS lossAmount15
    FROM JSON_TABLE(
      #{intakesJson},
      '$[*]' COLUMNS (
        intakeId BIGINT PATH '$.intakeId',
        intakeNum VARCHAR(100) PATH '$.intakeNum',
        intakeLng DOUBLE PATH '$.intakeLng',
        intakeLat DOUBLE PATH '$.intakeLat'
      )
    ) inta
    LEFT JOIN (
        SELECT tb.intakeId AS intakeId,
               tb.lossAmount AS lossAmount
@@ -473,6 +495,29 @@
        AND MONTH(tb.dt) = #{month}
        AND DAY(tb.dt) = 15
    ) as tb15 on tb15.intakeId = inta.intakeId
  </select>
  <!--统计指定月份各天漏损量(20号到16号)-->
  <select id="selectLossAmountOfDay16_20" resultType="com.dy.pipIrrGlobal.voSt.VoDayLoss">
    WITH intakeLossAmountDay AS (<include refid="selectLossAmountOfDay_with"/>)
    SELECT inta.intakeId     AS intakeId,
           inta.intakeNum    AS intakeNum,
           inta.intakeLng    AS intakeLng,
           inta.intakeLat    AS intakeLat,
           tb16.lossAmount   AS lossAmount16,
           tb17.lossAmount   AS lossAmount17,
           tb18.lossAmount   AS lossAmount18,
           tb19.lossAmount   AS lossAmount19,
           tb20.lossAmount   AS lossAmount20
    FROM JSON_TABLE(
      #{intakesJson},
      '$[*]' COLUMNS (
        intakeId BIGINT PATH '$.intakeId',
        intakeNum VARCHAR(100) PATH '$.intakeNum',
        intakeLng DOUBLE PATH '$.intakeLng',
        intakeLat DOUBLE PATH '$.intakeLat'
      )
    ) inta
   LEFT JOIN (
        SELECT tb.intakeId AS intakeId,
               tb.lossAmount AS lossAmount
@@ -513,6 +558,29 @@
        AND MONTH(tb.dt) = #{month}
        AND DAY(tb.dt) = 20
    ) as tb20 on tb20.intakeId = inta.intakeId
  </select>
  <!--统计指定月份各天漏损量(21号到25号)-->
  <select id="selectLossAmountOfDay21_25" resultType="com.dy.pipIrrGlobal.voSt.VoDayLoss">
    WITH intakeLossAmountDay AS (<include refid="selectLossAmountOfDay_with"/>)
    SELECT inta.intakeId     AS intakeId,
           inta.intakeNum    AS intakeNum,
           inta.intakeLng    AS intakeLng,
           inta.intakeLat    AS intakeLat,
           tb21.lossAmount   AS lossAmount21,
           tb22.lossAmount   AS lossAmount22,
           tb23.lossAmount   AS lossAmount23,
           tb24.lossAmount   AS lossAmount24,
           tb25.lossAmount   AS lossAmount25
    FROM JSON_TABLE(
      #{intakesJson},
      '$[*]' COLUMNS (
        intakeId BIGINT PATH '$.intakeId',
        intakeNum VARCHAR(100) PATH '$.intakeNum',
        intakeLng DOUBLE PATH '$.intakeLng',
        intakeLat DOUBLE PATH '$.intakeLat'
      )
    ) inta
   LEFT JOIN (
        SELECT tb.intakeId AS intakeId,
               tb.lossAmount AS lossAmount
@@ -553,6 +621,30 @@
        AND MONTH(tb.dt) = #{month}
        AND DAY(tb.dt) = 25
    ) as tb25 on tb25.intakeId = inta.intakeId
  </select>
  <!--统计指定月份各天漏损量(26号到31号)-->
  <select id="selectLossAmountOfDay26_31" resultType="com.dy.pipIrrGlobal.voSt.VoDayLoss">
    WITH intakeLossAmountDay AS (<include refid="selectLossAmountOfDay_with"/>)
    SELECT inta.intakeId     AS intakeId,
           inta.intakeNum    AS intakeNum,
           inta.intakeLng    AS intakeLng,
           inta.intakeLat    AS intakeLat,
           tb26.lossAmount   AS lossAmount26,
           tb27.lossAmount   AS lossAmount27,
           tb28.lossAmount   AS lossAmount28,
           tb29.lossAmount   AS lossAmount29,
           tb30.lossAmount   AS lossAmount30,
           tb31.lossAmount   AS lossAmount31
    FROM JSON_TABLE(
      #{intakesJson},
      '$[*]' COLUMNS (
        intakeId BIGINT PATH '$.intakeId',
        intakeNum VARCHAR(100) PATH '$.intakeNum',
        intakeLng DOUBLE PATH '$.intakeLng',
        intakeLat DOUBLE PATH '$.intakeLat'
      )
    ) inta
   LEFT JOIN (
        SELECT tb.intakeId AS intakeId,
               tb.lossAmount AS lossAmount
@@ -602,4 +694,6 @@
        AND DAY(tb.dt) = 31
    ) as tb31 on tb31.intakeId = inta.intakeId
  </select>
</mapper>