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