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