From 9343e802bd45a58de02343db3832b4c7dd16e49e Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期一, 14 七月 2025 11:06:22 +0800
Subject: [PATCH] 修改用水户年用水量统计查询中的bug

---
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/stClient/StClientQo.java |    4 +-
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoStClientIdAmountYearRecord.java          |   17 ++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/stClient/StClientSv.java |   23 ++++++++++-
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StClientAmountYearMapper.java             |    5 ++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountYearMapper.xml                            |   70 ++++++++++++++++++++++++++++++++++-
 5 files changed, 113 insertions(+), 6 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StClientAmountYearMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StClientAmountYearMapper.java
index 1af5eda..4f30322 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StClientAmountYearMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StClientAmountYearMapper.java
@@ -2,6 +2,7 @@
 
 import com.dy.pipIrrGlobal.pojoSt.StClientAmountYear;
 import com.dy.pipIrrGlobal.voSt.VoStClientAmountYearRecord;
+import com.dy.pipIrrGlobal.voSt.VoStClientIdAmountYearRecord;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -73,11 +74,15 @@
      * @return
      */
     Long selectCountYearStatistics(Map<?, ?> params) ;
+    Long selectCountYearStatistics4OneYear(Map<?, ?> params) ;
+
+    List<VoStClientIdAmountYearRecord> selectClientIds4YearStatistics(Map<?, ?> params) ;
     /**
      * 鏌ヨ鍒嗛〉鏁版嵁
      * @param params
      * @return
      */
+    List<VoStClientAmountYearRecord> selectYearStatistics4OneYear(Map<?, ?> params) ;
     List<VoStClientAmountYearRecord> selectYearStatistics(Map<?, ?> params) ;
 
     //////////////////////////////////////
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoStClientIdAmountYearRecord.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoStClientIdAmountYearRecord.java
new file mode 100644
index 0000000..d2e9f3f
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoStClientIdAmountYearRecord.java
@@ -0,0 +1,17 @@
+package com.dy.pipIrrGlobal.voSt;
+
+import lombok.Data;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/1/6 9:38
+ * @Description
+ */
+@Data
+public class VoStClientIdAmountYearRecord {
+    /**
+     * 鍐滄埛ID
+     */
+    public Long clientId;
+
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountYearMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountYearMapper.xml
index 3a2f404..3003517 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountYearMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountYearMapper.xml
@@ -125,6 +125,63 @@
       </if>
     </trim>
   </select>
+  <select id="selectCountYearStatistics4OneYear" resultType="java.lang.Long">
+    select
+    count(*)
+    from se_client ctb
+    INNER JOIN st_client_amount_year cayTb on cayTb.client_id = ctb.id
+    where ctb.deleted != 1
+    <trim prefix="and" suffixOverrides="and">
+      <if test="year != null">
+        cayTb.`year` = #{year,jdbcType=INTEGER}
+      </if>
+      <if test="name != null and name != ''">
+        and ctb.name like concat('%', #{name}, '%')
+      </if>
+    </trim>
+  </select>
+
+  <select id="selectClientIds4YearStatistics" resultType="com.dy.pipIrrGlobal.voSt.VoStClientIdAmountYearRecord">
+    select
+    mtb.id as clientId
+    from se_client mtb
+    where mtb.deleted != 1
+    <trim prefix="and" suffixOverrides="and">
+      <if test="name != null and name != ''">
+        mtb.name like concat('%', #{name}, '%')
+      </if>
+    </trim>
+    order by mtb.id ASC
+  </select>
+
+  <select id="selectYearStatistics4OneYear" resultType="com.dy.pipIrrGlobal.voSt.VoStClientAmountYearRecord">
+    select
+    ctb.id as clientId,
+    ctb.clientNum as clientNum,
+    ctb.name as clientName,
+    ctb.address as clientAddress,
+    cayTb.amount as amount,
+    cayTb.money as money,
+    cayTb.times as times
+    from se_client ctb
+    INNER JOIN st_client_amount_year cayTb on cayTb.client_id = ctb.id
+    where ctb.deleted != 1
+    <trim prefix="and" suffixOverrides="and">
+      <if test="year != null">
+        cayTb.`year` = #{year,jdbcType=INTEGER}
+      </if>
+      <if test="name != null and name != ''">
+        and ctb.name like concat('%', #{clientName}, '%')
+      </if>
+    </trim>
+    order by ctb.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>
+
 
   <select id="selectYearStatistics" resultType="com.dy.pipIrrGlobal.voSt.VoStClientAmountYearRecord">
     select
@@ -136,14 +193,23 @@
     cayTb.money as money,
     cayTb.times as times
     from se_client ctb
-    LEFT JOIN st_client_amount_year cayTb on cayTb.client_id = ctb.id
+    <if test="clientIdsJson != null and clientIdsJson !=''">
+      INNER JOIN JSON_TABLE(
+      <!--'[{"clientId":"37142501020100215"},{"clientId":"37142501020100215"}]'-->
+      #{clientIdsJson},
+      '$[*]' COLUMNS (
+        clientId BIGINT PATH '$.clientId'
+        )
+      ) clientIdTb ON clientIdTb.clientId = ctb.id
+    </if>
+    LEFT JOIN st_client_amount_year cayTb on cayTb.client_id = clientIdTb.clientId
     where ctb.deleted != 1
     <trim prefix="and" suffixOverrides="and">
       <if test="year != null">
         cayTb.`year` = #{year,jdbcType=INTEGER}
       </if>
       <if test="name != null and name != ''">
-        and ctb.name like concat('%', #{name}, '%')
+        and ctb.name like concat('%', #{clientName}, '%')
       </if>
     </trim>
     order by ctb.id DESC
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/stClient/StClientQo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/stClient/StClientQo.java
index 871d8db..86e4473 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/stClient/StClientQo.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/stClient/StClientQo.java
@@ -28,7 +28,7 @@
     public Integer month;
 
     /**
-     * 鍙栨按鍙g紪鍙�
+     * 鍐滄埛濮撳悕
      */
-    public String clientName;
+    public String name;
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/stClient/StClientSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/stClient/StClientSv.java
index 19f7bb3..0cacebe 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/stClient/StClientSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/stClient/StClientSv.java
@@ -1,5 +1,6 @@
 package com.dy.pipIrrStatistics.stClient;
 
+import com.alibaba.fastjson2.JSON;
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.pipIrrGlobal.daoSt.StClientAmountDayMapper ;
 import com.dy.pipIrrGlobal.daoSt.StClientAmountMonthMapper ;
@@ -100,10 +101,19 @@
         rsVo.yearGrp = yearGrp ;
         rsQrVo.obj = rsVo ;
 
+        boolean oneYear = yearGrp.size() == 1? true : false ;
         // 鐢熸垚鏌ヨ鍙傛暟
         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
         // 鑾峰彇绗﹀悎鏉′欢鐨勮褰曟暟
-        Long itemTotal = stClientAmountYearDao.selectCountYearStatistics(params) ;
+        Long itemTotal = 0L ;
+        String clientIdsJson = null ;
+        if(oneYear){
+            itemTotal = stClientAmountYearDao.selectCountYearStatistics4OneYear(params) ;
+        }else{
+            itemTotal = stClientAmountYearDao.selectCountYearStatistics(params) ;
+            List<VoStClientIdAmountYearRecord> clientIds = stClientAmountYearDao.selectClientIds4YearStatistics(params);
+            clientIdsJson = JSON.toJSONString(clientIds) ;
+        }
 
         if(itemTotal != null && itemTotal > 0) {
             rsQrVo.pageSize = qo.pageSize;
@@ -114,7 +124,16 @@
             int count = 1 ;
             for(int year: yearGrp){
                 params.put("year", year);
-                List<VoStClientAmountYearRecord> list = stClientAmountYearDao.selectYearStatistics(params);
+                List<VoStClientAmountYearRecord> list ;
+                if(oneYear){
+                    list = stClientAmountYearDao.selectYearStatistics4OneYear(params);
+                }else{
+                    if(clientIdsJson != null){
+                        params.put("clientIdsJson", clientIdsJson);
+                    }
+                    list = stClientAmountYearDao.selectYearStatistics(params);
+                }
+
                 if(group.isEmpty()){
                     this.completion(group, list);
                 }

--
Gitblit v1.8.0