From 6dacac48ebb596797dfd8e5bf3a803ed0b583643 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期三, 05 二月 2025 17:11:31 +0800
Subject: [PATCH] 取水口综合信息-统计数据逻辑处理模块完善
---
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossDayMapper.xml | 480 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 480 insertions(+), 0 deletions(-)
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossDayMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossDayMapper.xml
index c295ea9..10f472c 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossDayMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossDayMapper.xml
@@ -216,4 +216,484 @@
where id <![CDATA[>=]]> #{startId, jdbcType=BIGINT} and id <![CDATA[<]]> #{endId, jdbcType=BIGINT}
group by intake_id
</select>
+
+ <!-- 涓烘煡璇㈢粺璁″彇姘村彛鏃ユ紡鎹熼噺锛岀粺璁″彇姘村彛鏁伴噺 -->
+ <select id="selectIntakeCount4LossDay" resultType="java.lang.Long">
+ SELECT COUNT(*)
+ FROM pr_intake tb
+ <where>
+ AND tb.deleted != 1
+ <if test="intakeNum != null and intakeNum != ''">
+ AND tb.name = #{intakeNum}
+ </if>
+ </where>
+ </select>
+
+ <!-- 涓烘煡璇㈢粺璁″彇姘村彛鏃ユ紡鎹熼噺锛屾煡璇竴椤靛彇姘村彛ID -->
+ <select id="selectIntakes4LossDay" resultType="com.dy.pipIrrGlobal.voSt.VoDayLoss">
+ SELECT id as intakeId,
+ name as intakeNum,
+ lat as intakeLat,
+ lng as intakeLng
+ FROM pr_intake
+ <where>
+ AND deleted != 1
+ <if test="intakeNum != null and intakeNum != ''">
+ AND name = #{intakeNum}
+ </if>
+ </where>
+ order by id DESC
+ <trim prefix="limit " >
+ <if test="start != null and count != null">
+ #{start, javaType=Integer, jdbcType=INTEGER}, #{count, javaType=Integer, jdbcType=INTEGER}
+ </if>
+ </trim>
+ </select>
+
+
+ <!--缁熻鎸囧畾鏈堜唤鍚勫ぉ婕忔崯閲� 鏆傛椂鏈敤 鍒樻鼎鐜� 2024-12-12-->
+ <select id="temp" resultType="com.dy.pipIrrGlobal.voSt.VoDayLoss">
+ SELECT inta.intakeId AS intakeId,
+ inta.intakeNum AS intakeNum,
+ inta.intakeLng AS intakeLng,
+ inta.intakeLat AS intakeLat,
+ rld.id AS id,
+ rld.dt AS dt,
+ rld.loss_amount AS lossAmount1
+ 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 id, intake_id, dt, loss_amount
+ from rm_loss_day
+ <where>
+ <if test="startDt != null ">
+ AND dt <![CDATA[>=]]> #{startDt, javaType=DATE, jdbcType=DATE}
+ </if>
+ <if test="endDt != null ">
+ AND dt <![CDATA[<]]> #{endDt, javaType=DATE, jdbcType=DATE}
+ </if>
+ </where>
+ order by intake_id DESC, id ASC
+ ) as rld ON rld.intake_id = inta.intakeId
+ </select>
+
+
+ <sql id="selectLossAmountOfDay_with">
+ SELECT intaId.intakeId AS intakeId,
+ rld.dt AS dt,
+ rld.loss_amount AS lossAmount
+ FROM JSON_TABLE(
+ #{intakesJson},
+ '$[*]' COLUMNS (
+ intakeId BIGINT PATH '$.intakeId'
+ )
+ ) intaId
+ INNER JOIN rm_loss_day rld ON rld.intake_id = intaId.intakeId
+ <where>
+ <if test="startDt != null ">
+ AND rld.dt <![CDATA[>=]]> #{startDt, javaType=DATE, jdbcType=DATE}
+ </if>
+ <if test="endDt != null ">
+ 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,
+ inta.intakeLat AS intakeLat,
+ tb01.lossAmount AS lossAmount1,
+ tb02.lossAmount AS lossAmount2,
+ tb03.lossAmount AS lossAmount3,
+ tb04.lossAmount AS lossAmount4,
+ tb05.lossAmount AS lossAmount5
+ 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
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 1
+ ) as tb01 on tb01.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 2
+ ) as tb02 on tb02.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 3
+ ) as tb03 on tb03.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 4
+ ) as tb04 on tb04.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ 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
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 6
+ ) as tb06 on tb06.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 7
+ ) as tb07 on tb07.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 8
+ ) as tb08 on tb08.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 9
+ ) as tb09 on tb09.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ 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
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 11
+ ) as tb11 on tb11.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 12
+ ) as tb12 on tb12.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 13
+ ) as tb13 on tb13.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 14
+ ) as tb14 on tb14.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ 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
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 16
+ ) as tb16 on tb16.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 17
+ ) as tb17 on tb17.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 18
+ ) as tb18 on tb18.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 19
+ ) as tb19 on tb19.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ 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
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 21
+ ) as tb21 on tb21.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 22
+ ) as tb22 on tb22.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 23
+ ) as tb23 on tb23.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 24
+ ) as tb24 on tb24.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ 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
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 26
+ ) as tb26 on tb26.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 27
+ ) as tb27 on tb27.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 28
+ ) as tb28 on tb28.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 29
+ ) as tb29 on tb29.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 30
+ ) as tb30 on tb30.intakeId = inta.intakeId
+ LEFT JOIN (
+ SELECT tb.intakeId AS intakeId,
+ tb.lossAmount AS lossAmount
+ FROM intakeLossAmountDay AS tb
+ WHERE YEAR(tb.dt) = #{year}
+ AND MONTH(tb.dt) = #{month}
+ AND DAY(tb.dt) = 31
+ ) as tb31 on tb31.intakeId = inta.intakeId
+ </select>
+
+
</mapper>
\ No newline at end of file
--
Gitblit v1.8.0