zhubaomin
2024-08-08 c60767599cf741fde1cb7a10544d8c0ebb8db6a5
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossDayLastMapper.xml
@@ -16,7 +16,15 @@
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, last_history_id, controller_id, intake_id, rtu_addr, dt, dt_last, dt_rtu, loss_amount
        id,
        last_history_id,
        controller_id,
        intake_id,
        rtu_addr,
        dt,
        dt_last,
        dt_rtu,
        loss_amount
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
@@ -41,7 +49,8 @@
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    delete from rm_loss_day_last
        delete
        from rm_loss_day_last
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossDayLast">
@@ -50,7 +59,8 @@
    intake_id, rtu_addr, dt, dt_last, dt_rtu,
    loss_amount)
    values (#{id,jdbcType=BIGINT}, #{lastHistoryId,jdbcType=BIGINT}, #{controllerId,jdbcType=BIGINT},
    #{intakeId,jdbcType=BIGINT}, #{rtuAddr,jdbcType=VARCHAR}, #{dt,jdbcType=DATE}, #{dtLast,jdbcType=TIMESTAMP}, #{dtRtu,jdbcType=TIMESTAMP},
                #{intakeId,jdbcType=BIGINT}, #{rtuAddr,jdbcType=VARCHAR}, #{dt,jdbcType=DATE},
                #{dtLast,jdbcType=TIMESTAMP}, #{dtRtu,jdbcType=TIMESTAMP},
    #{lossAmount,jdbcType=DOUBLE})
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossDayLast">
@@ -166,7 +176,7 @@
    Left join pr_intake pint on pint.id = rldl.intake_id
    <where>
      <if test="intakeId != null and intakeId != '' ">
        and rash.intake_id = #{intakeId}
                and rldl.intake_id = #{intakeId}
      </if>
      <if test="intakeName != null and intakeName != '' ">
        and pint.name like CONCAT('%',#{intakeName,jdbcType=VARCHAR},'%')
@@ -181,8 +191,7 @@
  </select>
  <!--根据指定条件获取记录-->
  <select id="getLossDayLast" resultType="com.dy.pipIrrGlobal.voRm.VoLossDay">
    select
    CAST(rldl.intake_id AS char)AS intakeId,
        select CAST(rldl.intake_id AS char)     AS intakeId,
    CAST(rldl.controller_id AS char)AS controllerId,
    pint.name as intakeName,
    rldl.rtu_addr as rtuAddr,
@@ -194,7 +203,7 @@
    Left join pr_intake pint on pint.id = rldl.intake_id
    <where>
      <if test="intakeId != null and intakeId != '' ">
        and rash.intake_id = #{intakeId}
                and rldl.intake_id = #{intakeId}
      </if>
      <if test="intakeName != null and intakeName != '' ">
        and pint.name like CONCAT('%',#{intakeName,jdbcType=VARCHAR},'%')
@@ -207,9 +216,333 @@
      </if>
    </where>
    ORDER BY rldl.dt DESC , rldl.loss_amount DESC
    <if test="pageCurr != null and pageSize != null">
      LIMIT ${(pageCurr-1)*pageSize}, ${pageSize}
        <!--    <if test="pageCurr != null and pageSize != null">-->
        <!--      LIMIT ${(pageCurr-1)*pageSize}, ${pageSize}-->
        <!--    </if>-->
        <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="getDayLossAmountCount" resultType="java.lang.Long">
        SELECT COUNT(*) AS recordCount
        FROM pr_intake inta
        <where>
            AND inta.deleted = 0
            <if test="intakeNum != null and intakeNum != ''">
                AND inta.name = #{intakeNum}
            </if>
        </where>
    </select>
    <!--统计指定月份各天漏损量-->
    <select id="getDayLossAmount" resultType="com.dy.pipIrrGlobal.voSt.VoDayLoss">
        SELECT inta.id                                 AS intakeId,
               inta.name                               AS intakeNum,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 1), 0)  AS lossAmount1,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 2), 0)  AS lossAmount2,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 3), 0)  AS lossAmount3,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 4), 0)  AS lossAmount4,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 5), 0)  AS lossAmount5,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 6), 0)  AS lossAmount6,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 7), 0)  AS lossAmount7,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 8), 0)  AS lossAmount8,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 9), 0)  AS lossAmount9,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 10), 0) AS lossAmount10,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 11), 0) AS lossAmount11,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 12), 0) AS lossAmount12,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 13), 0) AS lossAmount13,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 14), 0) AS lossAmount14,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 15), 0) AS lossAmount15,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 16), 0) AS lossAmount16,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 17), 0) AS lossAmount17,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 18), 0) AS lossAmount18,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 19), 0) AS lossAmount19,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 20), 0) AS lossAmount20,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 21), 0) AS lossAmount21,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 22), 0) AS lossAmount22,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 23), 0) AS lossAmount23,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 24), 0) AS lossAmount24,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 25), 0) AS lossAmount25,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 26), 0) AS lossAmount26,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 27), 0) AS lossAmount27,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 28), 0) AS lossAmount28,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 29), 0) AS lossAmount29,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 30), 0) AS lossAmount30,
               IFNULL((SELECT IFNULL(loss_amount, 0)
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = #{month}
                         AND DAY(intaDay.dt) = 31), 0) AS lossAmount31
        FROM pr_intake inta
        <where>
            AND inta.deleted = 0
            <if test="intakeNum != null and intakeNum != ''">
                AND inta.name = #{intakeNum}
            </if>
        </where>
        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="getMonthLossAmountCount" resultType="java.lang.Long">
        SELECT COUNT(*) AS recordCount
        FROM pr_intake inta
        <where>
            AND inta.deleted = 0
            <if test="intakeNum != null and intakeNum != ''">
                AND inta.name = #{intakeNum}
            </if>
        </where>
    </select>
    <!--统计指定年份各月漏损量-->
    <select id="getMonthLossAmount" resultType="com.dy.pipIrrGlobal.voSt.VoMonthAmount">
        SELECT inta.id                                  AS intakeId,
               inta.name                                AS intakeNum,
               IFNULL((SELECT SUM(loss_amount) AS amount
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = 1
                       GROUP BY(intaDay.intake_id)), 0) AS month1,
               IFNULL((SELECT SUM(loss_amount) AS amount
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = 2
                       GROUP BY(intaDay.intake_id)), 0) AS month2,
               IFNULL((SELECT SUM(loss_amount) AS amount
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = 3
                       GROUP BY(intaDay.intake_id)), 0) AS month3,
               IFNULL((SELECT SUM(loss_amount) AS amount
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = 4
                       GROUP BY(intaDay.intake_id)), 0) AS month4,
               IFNULL((SELECT SUM(loss_amount) AS amount
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = 5
                       GROUP BY(intaDay.intake_id)), 0) AS month5,
               IFNULL((SELECT SUM(loss_amount) AS amount
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = 6
                       GROUP BY(intaDay.intake_id)), 0) AS month6,
               IFNULL((SELECT SUM(loss_amount) AS amount
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = 7
                       GROUP BY(intaDay.intake_id)), 0) AS month7,
               IFNULL((SELECT SUM(loss_amount) AS amount
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = 8
                       GROUP BY(intaDay.intake_id)), 0) AS month8,
               IFNULL((SELECT SUM(loss_amount) AS amount
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = 9
                       GROUP BY(intaDay.intake_id)), 0) AS month9,
               IFNULL((SELECT SUM(loss_amount) AS amount
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = 10
                       GROUP BY(intaDay.intake_id)), 0) AS month10,
               IFNULL((SELECT SUM(loss_amount) AS amount
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = 11
                       GROUP BY(intaDay.intake_id)), 0) AS month11,
               IFNULL((SELECT SUM(loss_amount) AS amount
                       FROM rm_loss_day_last intaDay
                       WHERE intaDay.intake_id = inta.id
                         AND YEAR(intaDay.dt) = #{year}
                         AND MONTH(intaDay.dt) = 12
                       GROUP BY(intaDay.intake_id)), 0) AS month12
        FROM pr_intake inta
        <where>
            AND inta.deleted = 0
            <if test="intakeNum != null and intakeNum != ''">
                AND inta.name = #{intakeNum}
            </if>
        </where>
        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>