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