From db8bd443faa40789e3b82a75ccebeb744d55a5ae Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期四, 12 十二月 2024 11:45:59 +0800 Subject: [PATCH] 漏损日统计实现 --- pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/MonitorSv.java | 2 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/loss/LossQo.java | 49 ++++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmLossDayMapper.java | 26 ++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoDayLoss.java | 79 +++-- pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossDayMapper.xml | 386 ++++++++++++++++++++++++++++++++ pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/loss/LossCtrl.java | 63 +++++ pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/loss/LossSv.java | 59 ++++ pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/DateTime.java | 11 8 files changed, 639 insertions(+), 36 deletions(-) diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/DateTime.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/DateTime.java index 9a33cc5..76f4ac2 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/DateTime.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/DateTime.java @@ -501,6 +501,17 @@ ////////////////////////////////////////////////////////////////////////// /** + * 瀛楃涓插瀷鏃ユ湡(2024-12)杞垚骞存湀鏃ユ暟缁� + * @param yyyy_MM 骞存湀鏃� + * @return 骞存湀鏃ユ暟缁� + */ + public static int[] yyyy_MM_ymdGroup(String yyyy_MM){ + int y = Integer.parseInt(yyyy_MM.substring(0 , 4)) ; + int m = Integer.parseInt(yyyy_MM.substring(5 , 7)) ; + return new int[]{y,m} ; + } + + /** * 瀛楃涓插瀷鏃ユ湡(2009-09-10)杞垚骞存湀鏃ユ暟缁� * @param yyyy_MM_DD 骞存湀鏃� * @return 骞存湀鏃ユ暟缁� diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmLossDayMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmLossDayMapper.java index 7647fa9..73c29dc 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmLossDayMapper.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmLossDayMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dy.pipIrrGlobal.pojoRm.RmLossDay; import com.dy.pipIrrGlobal.voRm.VoLossDay; +import com.dy.pipIrrGlobal.voSt.VoDayLoss; import com.dy.pipIrrGlobal.voSt.VoIntakeLossStatistics; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -97,4 +98,29 @@ * @return */ List<VoIntakeLossStatistics> statisticsByIntake(@Param("startId")Long statisticsStartId, @Param("endId")Long statisticsEndId) ; + + //////////////////////////////////////////////// + // 缁熻鏌ヨ + /////////////////////////////////////////////// + + /** + * 涓烘煡璇㈢粺璁″彇姘村彛鏃ユ紡鎹熼噺锛岀粺璁″彇姘村彛鏁伴噺 + * @param intakeN + * @return + */ + Long selectIntakeCount4LossDay(@Param("intakeNum")String intakeN) ; + + /** + * 涓烘煡璇㈢粺璁″彇姘村彛鏃ユ紡鎹熼噺锛屾煡璇竴椤靛彇姘村彛ID + * @param params + * @return + */ + List<VoDayLoss> selectIntakes4LossDay(Map<?, ?> params) ; + + /** + * 鏌ヨ缁熻鍙栨按鍙f棩婕忔崯閲忥紝缁熻鍙栨按鍙f暟閲� + * @param params + * @return + */ + List<VoDayLoss> selectLossAmountOfDay(Map<?, ?> params); } \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoDayLoss.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoDayLoss.java index bd2baa3..fc0985f 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoDayLoss.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoDayLoss.java @@ -14,81 +14,90 @@ */ @Data -@JsonPropertyOrder({ "intakeId", "intakeNum", "lossAmount1" , "lossAmount2" , "lossAmount3" , "lossAmount4" , "lossAmount5" , "lossAmount6" , "lossAmount7" , "lossAmount8" , "lossAmount9" , "lossAmount10" , "lossAmount11" , "lossAmount12" , "lossAmount13" , "lossAmount14" , "lossAmount15" , "lossAmount16" , "lossAmount17" , "lossAmount18" , "lossAmount19" , "lossAmount20" , "lossAmount21" , "lossAmount22" , "lossAmount23" , "lossAmount24" , "lossAmount25" , "lossAmount26" , "lossAmount27" , "lossAmount28" , "lossAmount29" , "lossAmount30" , "lossAmount31" }) +@JsonPropertyOrder({ "intakeId", "intakeNum", "intakeLng", "intakeLat", "lossAmount1" , "lossAmount2" , "lossAmount3" , "lossAmount4" , "lossAmount5" , "lossAmount6" , "lossAmount7" , "lossAmount8" , "lossAmount9" , "lossAmount10" , "lossAmount11" , "lossAmount12" , "lossAmount13" , "lossAmount14" , "lossAmount15" , "lossAmount16" , "lossAmount17" , "lossAmount18" , "lossAmount19" , "lossAmount20" , "lossAmount21" , "lossAmount22" , "lossAmount23" , "lossAmount24" , "lossAmount25" , "lossAmount26" , "lossAmount27" , "lossAmount28" , "lossAmount29" , "lossAmount30" , "lossAmount31" }) public class VoDayLoss { - private static final long serialVersionUID = 202408081523001L; + public static final long serialVersionUID = 202408081523001L; /** * 鍙栨按鍙D */ @JSONField(serializeUsing= ObjectWriterImplToString.class) - private Long intakeId; + public Long intakeId; /** * 鍙栨按鍙g紪鍙� */ - private String intakeNum; + public String intakeNum; + + /** + * 缁忓害 + */ + public Double intakeLng; + /** + * 绾害 + */ + public Double intakeLat; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount1; + public Double lossAmount1; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount2; + public Double lossAmount2; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount3; + public Double lossAmount3; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount4; + public Double lossAmount4; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount5; + public Double lossAmount5; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount6; + public Double lossAmount6; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount7; + public Double lossAmount7; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount8; + public Double lossAmount8; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount9; + public Double lossAmount9; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount10; + public Double lossAmount10; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount11; + public Double lossAmount11; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount12; + public Double lossAmount12; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount13; + public Double lossAmount13; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount14; + public Double lossAmount14; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount15; + public Double lossAmount15; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount16; + public Double lossAmount16; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount17; + public Double lossAmount17; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount18; + public Double lossAmount18; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount19; + public Double lossAmount19; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount20; + public Double lossAmount20; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount21; + public Double lossAmount21; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount22; + public Double lossAmount22; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount23; + public Double lossAmount23; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount24; + public Double lossAmount24; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount25; + public Double lossAmount25; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount26; + public Double lossAmount26; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount27; + public Double lossAmount27; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount28; + public Double lossAmount28; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount29; + public Double lossAmount29; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount30; + public Double lossAmount30; @JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) - private Double lossAmount31; + public Double lossAmount31; } 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..7734065 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,390 @@ 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, jdbcType=DATE, jdbcType=DATE} + </if> + <if test="endDt != null "> + AND dt <![CDATA[<]]> #{endDt, jdbcType=DATE, jdbcType=DATE} + </if> + </where> + order by intake_id DESC, id ASC + ) as rld ON rld.intake_id = inta.intakeId + </select> + + + <!--缁熻鎸囧畾鏈堜唤鍚勫ぉ婕忔崯閲�--> + <select id="selectLossAmountOfDay" resultType="com.dy.pipIrrGlobal.voSt.VoDayLoss"> + WITH intakeLossAmountDay AS ( + 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, jdbcType=DATE, jdbcType=DATE} + </if> + <if test="endDt != null "> + AND rld.dt <![CDATA[<=]]> #{endDt, jdbcType=DATE, jdbcType=DATE} + </if> + </where> + ) + + 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, + 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 + 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 + 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 + 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 + 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 + 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 + 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 diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/MonitorSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/MonitorSv.java index 442bc71..ae9cb03 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/MonitorSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/MonitorSv.java @@ -61,7 +61,7 @@ } /** - * 鏌ヨRTU鍦ㄩ�氫俊涓棿浠朵腑鐨勬敮琛岀姸鎬� + * 鏌ヨRTU鍦ㄩ�氫俊涓棿浠朵腑鐨勫湪绾跨姸鎬� * @param rtuAddr * @return */ diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/loss/LossCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/loss/LossCtrl.java new file mode 100644 index 0000000..f3e7f67 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/loss/LossCtrl.java @@ -0,0 +1,63 @@ +package com.dy.pipIrrStatistics.loss; + +import com.dy.common.aop.SsoAop; +import com.dy.common.util.DateTime; +import com.dy.common.webUtil.BaseResponse; +import com.dy.common.webUtil.BaseResponseUtils; +import com.dy.common.webUtil.QueryResultVo; +import com.dy.pipIrrGlobal.voSt.VoDayLoss; +import com.dy.pipIrrStatistics.intake.IntakeSv; +import com.dy.pipIrrStatistics.intake.qo.IntakeAmountQO; +import com.dy.pipIrrStatistics.result.StatisticlResultCode; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +/** + * @Author: liurunyu + * @Date: 2024/12/12 8:33 + * @Description 鏈夊叧婕忔崯鐨勭粺璁� + */ +@Slf4j +@RestController +@RequestMapping(path="loss") +@RequiredArgsConstructor +public class LossCtrl { + + private LossSv sv; + + @Autowired + public void setSv(LossSv sv){ + this.sv = sv ; + } + + /** + * 鏌ヨ鎸囧畾鏈堜唤鍚勬棩婕忔崯閲� + * @param qo + * @return + */ + @GetMapping(path = "/lossAmountOfDay") + @SsoAop() + public BaseResponse<QueryResultVo<List<VoDayLoss>>> lossAmountOfDay(LossQo qo) throws Exception { + String yearMonth = qo.getYearMonth(); + if(yearMonth == null || yearMonth.trim().equals("")) { + return BaseResponseUtils.buildErrorMsg("鏌ヨ鏉′欢骞存湀涓嶈兘涓虹┖"); + } + qo.startDt = DateTime.dateFrom_yyyy_MM_dd(yearMonth + "-01"); + qo.endDt = DateTime.dateFrom_yyyy_MM_dd(yearMonth + "-31"); + + int[] ymd = DateTime.yyyy_MM_ymdGroup(yearMonth) ; + qo.year = ymd[0] ; + qo.month = ymd[1] ; + + return BaseResponseUtils.buildSuccess(this.sv.lossAmountOfDay(qo)); + } + +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/loss/LossQo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/loss/LossQo.java new file mode 100644 index 0000000..619ab8b --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/loss/LossQo.java @@ -0,0 +1,49 @@ +package com.dy.pipIrrStatistics.loss; + +import com.dy.common.webUtil.QueryConditionVo; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * @Author: liurunyu + * @Date: 2024/12/12 8:37 + * @Description + */ + +@Data +@EqualsAndHashCode(callSuper = false) +public class LossQo extends QueryConditionVo { + + /** + * 缁熻骞存湀 + */ + public String yearMonth; + + /** + * 鏌ヨ寮�濮嬫棩鏈燂紙骞存湀鏃ワ級 + */ + public Date startDt ; + + /** + * 鏌ヨ鎴鏃ユ湡锛堝勾鏈堟棩锛� + */ + public Date endDt ; + + + /** + * 骞� + */ + public Integer year; + + /** + * 鏈� + */ + public Integer month; + + /** + * 鍙栨按鍙g紪鍙� + */ + public String intakeNum; +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/loss/LossSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/loss/LossSv.java new file mode 100644 index 0000000..e3ea07e --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/loss/LossSv.java @@ -0,0 +1,59 @@ +package com.dy.pipIrrStatistics.loss; + +import com.alibaba.fastjson2.JSON; +import com.dy.common.webUtil.QueryResultVo; +import com.dy.pipIrrGlobal.daoRm.RmLossDayMapper; +import com.dy.pipIrrGlobal.voSt.VoDayLoss; +import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.common.utils.PojoUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.text.ParseException; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +/** + * @Author: liurunyu + * @Date: 2024/12/12 8:33 + * @Description + */ + +@Slf4j +@Service +public class LossSv { + + @Autowired + private RmLossDayMapper rmLossDayMapper ; + + /** + * 缁熻鎸囧畾鏈堜唤鍚勫ぉ婕忔崯閲� + * @param qo + * @return + */ + public QueryResultVo<List<VoDayLoss>> lossAmountOfDay(LossQo qo) throws ParseException { + QueryResultVo<List<VoDayLoss>> rsVo = new QueryResultVo<>() ; + // 鐢熸垚鏌ヨ鍙傛暟 + Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; + // 鑾峰彇绗﹀悎鏉′欢鐨勮褰曟暟 + Long itemTotal = rmLossDayMapper.selectIntakeCount4LossDay(qo.intakeNum) ; + + if(itemTotal != null && itemTotal > 0){ + rsVo.pageSize = qo.pageSize ; + rsVo.pageCurr = qo.pageCurr ; + rsVo.calculateAndSet(itemTotal, params); + + List<VoDayLoss> list = rmLossDayMapper.selectIntakes4LossDay(params); + if(list == null || list.size() == 0){ + rsVo.obj = list ; + }else{ + String json = JSON.toJSONString(list) ; + params.put("intakesJson", json); + rsVo.obj = rmLossDayMapper.selectLossAmountOfDay(params); + } + } + return rsVo ; + } + +} -- Gitblit v1.8.0