From 74a55ea167e15526ea65c9bec39edc29f3399461 Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期四, 12 十二月 2024 14:51:38 +0800 Subject: [PATCH] 漏损日统计改变实现方法 --- pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmLossDayMapper.java | 8 + pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossDayMapper.xml | 156 +++++++++++++++++++++++++++++++------- pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/loss/LossSv.java | 75 ++++++++++++++++++ 3 files changed, 207 insertions(+), 32 deletions(-) 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 73c29dc..835e3e8 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 @@ -122,5 +122,11 @@ * @param params * @return */ - List<VoDayLoss> selectLossAmountOfDay(Map<?, ?> params); + //涓嬮潰1鍒�31鍙峰垎浜�6涓煡璇紝鍘熷洜鏄叆涓�涓煡璇腑锛岄潪甯告參锛屼笉鐭ラ亾浠�涔堝師鍥狅紝涔熻鏄瓙鏌ヨ澶鐨勫師鍥� + List<VoDayLoss> selectLossAmountOfDay01_05(Map<?, ?> params); + List<VoDayLoss> selectLossAmountOfDay06_10(Map<?, ?> params); + List<VoDayLoss> selectLossAmountOfDay11_15(Map<?, ?> params); + List<VoDayLoss> selectLossAmountOfDay16_20(Map<?, ?> params); + List<VoDayLoss> selectLossAmountOfDay21_25(Map<?, ?> params); + List<VoDayLoss> selectLossAmountOfDay26_31(Map<?, ?> params); } \ No newline at end of file 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 7734065..a57afa2 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossDayMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossDayMapper.xml @@ -286,8 +286,7 @@ </select> - <!--缁熻鎸囧畾鏈堜唤鍚勫ぉ婕忔崯閲�--> - <select id="selectLossAmountOfDay" resultType="com.dy.pipIrrGlobal.voSt.VoDayLoss"> + <sql id="selectLossAmountOfDay_with"> WITH intakeLossAmountDay AS ( SELECT intaId.intakeId AS intakeId, rld.dt AS dt, @@ -308,7 +307,11 @@ </if> </where> ) + </sql> + <!--缁熻鎸囧畾鏈堜唤鍚勫ぉ婕忔崯閲�(1鍙峰埌5鍙�)--> + <select id="selectLossAmountOfDay01_05" resultType="com.dy.pipIrrGlobal.voSt.VoDayLoss"> + <include refid="selectLossAmountOfDay_with" /> SELECT inta.intakeId AS intakeId, inta.intakeNum AS intakeNum, inta.intakeLng AS intakeLng, @@ -317,33 +320,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 +331,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 +370,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"> + <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 +434,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"> + <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 +497,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"> + <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 +560,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"> + <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 +623,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"> + <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 +696,6 @@ 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-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 index e3ea07e..fcf0413 100644 --- 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 @@ -50,10 +50,83 @@ }else{ String json = JSON.toJSONString(list) ; params.put("intakesJson", json); - rsVo.obj = rmLossDayMapper.selectLossAmountOfDay(params); + + List<VoDayLoss> list01_05 = rmLossDayMapper.selectLossAmountOfDay01_05(params); + if(list01_05 != null && list01_05.size() > 0){ + //涓嬮潰1鍒�31鍙峰垎浜�6涓煡璇紝鍘熷洜鏄叆涓�涓煡璇腑锛岄潪甯告參锛屼笉鐭ラ亾浠�涔堝師鍥狅紝涔熻鏄瓙鏌ヨ澶鐨勫師鍥� + List<VoDayLoss> list06_10 = rmLossDayMapper.selectLossAmountOfDay06_10(params); + List<VoDayLoss> list11_15 = rmLossDayMapper.selectLossAmountOfDay11_15(params); + List<VoDayLoss> list16_20 = rmLossDayMapper.selectLossAmountOfDay16_20(params); + List<VoDayLoss> list21_25 = rmLossDayMapper.selectLossAmountOfDay21_25(params); + List<VoDayLoss> list26_31 = rmLossDayMapper.selectLossAmountOfDay26_31(params); + this.merge(list01_05, list06_10, list11_15, list16_20, list21_25, list26_31); + } + rsVo.obj = list01_05 ; } } return rsVo ; } + private void merge(List<VoDayLoss> list01_05, + List<VoDayLoss> list06_10, + List<VoDayLoss> list11_15, + List<VoDayLoss> list16_20, + List<VoDayLoss> list21_25, + List<VoDayLoss> list26_31){ + for(VoDayLoss vo01_05 : list01_05){ + for(VoDayLoss vo06_10 : list06_10){ + if(vo01_05.intakeId.longValue() == vo06_10.intakeId.longValue()){ + vo01_05.lossAmount6 = vo06_10.lossAmount6 ; + vo01_05.lossAmount7 = vo06_10.lossAmount7 ; + vo01_05.lossAmount8 = vo06_10.lossAmount8 ; + vo01_05.lossAmount9 = vo06_10.lossAmount9 ; + vo01_05.lossAmount10 = vo06_10.lossAmount10 ; + break ; + } + } + for(VoDayLoss vo11_15 : list11_15){ + if(vo01_05.intakeId.longValue() == vo11_15.intakeId.longValue()){ + vo01_05.lossAmount11 = vo11_15.lossAmount11 ; + vo01_05.lossAmount12 = vo11_15.lossAmount12 ; + vo01_05.lossAmount13 = vo11_15.lossAmount13 ; + vo01_05.lossAmount14 = vo11_15.lossAmount14 ; + vo01_05.lossAmount15 = vo11_15.lossAmount15 ; + break ; + } + } + for(VoDayLoss vo16_20 : list16_20){ + if(vo01_05.intakeId.longValue() == vo16_20.intakeId.longValue()){ + vo01_05.lossAmount16 = vo16_20.lossAmount16 ; + vo01_05.lossAmount17 = vo16_20.lossAmount17 ; + vo01_05.lossAmount18 = vo16_20.lossAmount18 ; + vo01_05.lossAmount19 = vo16_20.lossAmount19 ; + vo01_05.lossAmount20 = vo16_20.lossAmount20 ; + break ; + } + } + for(VoDayLoss vo21_25 : list21_25){ + if(vo01_05.intakeId.longValue() == vo21_25.intakeId.longValue()){ + vo01_05.lossAmount21 = vo21_25.lossAmount21 ; + vo01_05.lossAmount22 = vo21_25.lossAmount22 ; + vo01_05.lossAmount23 = vo21_25.lossAmount23 ; + vo01_05.lossAmount24 = vo21_25.lossAmount24 ; + vo01_05.lossAmount25 = vo21_25.lossAmount25 ; + break ; + } + } + for(VoDayLoss vo26_31 : list26_31){ + if(vo01_05.intakeId.longValue() == vo26_31.intakeId.longValue()){ + vo01_05.lossAmount26 = vo26_31.lossAmount26 ; + vo01_05.lossAmount27 = vo26_31.lossAmount27 ; + vo01_05.lossAmount28 = vo26_31.lossAmount28 ; + vo01_05.lossAmount29 = vo26_31.lossAmount29 ; + vo01_05.lossAmount30 = vo26_31.lossAmount30 ; + vo01_05.lossAmount31 = vo26_31.lossAmount31 ; + break ; + } + } + } + + } + } -- Gitblit v1.8.0