From 24f91c6e8b6a5e5be813e0b740dec3d381abe254 Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期一, 06 一月 2025 10:56:50 +0800 Subject: [PATCH] 农户用水月统计、年统计查询实现 --- pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountMonthMapper.xml | 58 +++ pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/stClient/StClientCtrl.java | 48 +++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoStClientAmountYearRecords.java | 201 +++++++++++++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoStClientAmountMonth.java | 243 ++++++++++++++++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoStClientAmountYearRecord.java | 49 +++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoStClientAmountYear.java | 20 + pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/stClient/StClientSv.java | 175 +++++++++++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StClientAmountYearMapper.java | 21 + pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountYearMapper.xml | 42 ++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StClientAmountMonthMapper.java | 18 + pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountDayMapper.xml | 16 11 files changed, 882 insertions(+), 9 deletions(-) diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StClientAmountMonthMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StClientAmountMonthMapper.java index c9f99bc..58fdb3f 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StClientAmountMonthMapper.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StClientAmountMonthMapper.java @@ -2,10 +2,12 @@ import com.dy.pipIrrGlobal.pojoSt.StClientAmountMonth; import com.dy.pipIrrGlobal.voSt.VoClientAmountStatistics; +import com.dy.pipIrrGlobal.voSt.VoStClientAmountMonth; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** * @Author: liurunyu @@ -63,6 +65,22 @@ int updateByPrimaryKey(StClientAmountMonth record); + + ////////////////////////////////////// + //鏌ヨ缁熻缁撴灉 + /** + * 鏌ヨ鎬绘暟閲� + * @param params + * @return + */ + Long selectCountMonthStatistics(Map<?, ?> params) ; + /** + * 鏌ヨ鍒嗛〉鏁版嵁 + * @param params + * @return + */ + List<VoStClientAmountMonth> selectMonthStatistics(Map<?, ?> params) ; + ////////////////////////////////////// //缁熻鐩稿叧 /** 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 7bac86b..1af5eda 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 @@ -1,10 +1,12 @@ package com.dy.pipIrrGlobal.daoSt; import com.dy.pipIrrGlobal.pojoSt.StClientAmountYear; +import com.dy.pipIrrGlobal.voSt.VoStClientAmountYearRecord; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** * @Author: liurunyu @@ -61,6 +63,25 @@ */ int updateByPrimaryKey(StClientAmountYear record); + + + ////////////////////////////////////// + //鏌ヨ缁熻缁撴灉 + /** + * 鏌ヨ鎬绘暟閲� + * @param params + * @return + */ + Long selectCountYearStatistics(Map<?, ?> params) ; + /** + * 鏌ヨ鍒嗛〉鏁版嵁 + * @param params + * @return + */ + List<VoStClientAmountYearRecord> selectYearStatistics(Map<?, ?> params) ; + + ////////////////////////////////////// + //缁熻鐩稿叧 /** * 鏌ヨ鏌愬勾 鏌愰噺鍊� * diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoStClientAmountMonth.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoStClientAmountMonth.java new file mode 100644 index 0000000..d78374b --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoStClientAmountMonth.java @@ -0,0 +1,243 @@ +package com.dy.pipIrrGlobal.voSt; + +import com.alibaba.fastjson2.annotation.JSONField; +import com.alibaba.fastjson2.writer.ObjectWriterImplToString; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.Data; + +/** + * @Author: liurunyu + * @Date: 2025/1/4 10:15 + * @Description + */ +@Data +@JsonPropertyOrder({ "id", "clientId", "clientNum", "clientName", "clientAddress" , "year" + ,"amount1" , "money1" , "times1" + ,"amount2" , "money2" , "times2" + ,"amount3" , "money3" , "times3" + ,"amount4" , "money4" , "times4" + ,"amount5" , "money5" , "times5" + ,"amount6" , "money6" , "times6" + ,"amount7" , "money7" , "times7" + ,"amount8" , "money8" , "times8" + ,"amount9" , "money9" , "times9" + ,"amount10" , "money10" , "times10" + ,"amount11" , "money11" , "times11" + ,"amount12" , "money12" , "times12" +}) +public class VoStClientAmountMonth { + + public static final long serialVersionUID = 202501041014001L; + /** + * 涓婚敭 + */ + @JSONField(serializeUsing= ObjectWriterImplToString.class) + public Long id; + + /** + * 澶栭敭锛屾寚鍚戝啘鎴� + */ + @JSONField(serializeUsing= ObjectWriterImplToString.class) + public Long clientId; + + /** + * 鍐滄埛缂栨湀 + */ + public String clientNum ; + + /** + * 鍐滄埛鍚嶇О + */ + public String clientName ; + + /** + * 鍐滄埛鍦板潃 + */ + public String clientAddress ; + + /** + * 骞村害 + */ + public Integer year; + + /** + * 1鏈堢敤姘撮噺缁熻 + */ + public Double amount1; + + /** + * 1鏈堣姳璐归噾棰� + */ + public Double money1; + + /** + * 1鏈堢敤姘存鏁� + */ + public Integer times1; + + /** + * 2鏈堢敤姘撮噺缁熻 + */ + public Double amount2; + + /** + * 2鏈堣姳璐归噾棰� + */ + public Double money2; + + /** + * 2鏈堢敤姘存鏁� + */ + public Integer times2; + + /** + * 3鏈堢敤姘撮噺缁熻 + */ + public Double amount3; + + /** + * 3鏈堣姳璐归噾棰� + */ + public Double money3; + + /** + * 3鏈堢敤姘存鏁� + */ + public Integer times3; + + /** + * 4鏈堢敤姘撮噺缁熻 + */ + public Double amount4; + + /** + * 4鏈堣姳璐归噾棰� + */ + public Double money4; + + /** + * 4鏈堢敤姘存鏁� + */ + public Integer times4; + + /** + * 5鏈堢敤姘撮噺缁熻 + */ + public Double amount5; + + /** + * 5鏈堣姳璐归噾棰� + */ + public Double money5; + + /** + * 5鏈堢敤姘存鏁� + */ + public Integer times5; + + /** + * 6鏈堢敤姘撮噺缁熻 + */ + public Double amount6; + + /** + * 6鏈堣姳璐归噾棰� + */ + public Double money6; + + /** + * 6鏈堢敤姘存鏁� + */ + public Integer times6; + + /** + * 7鏈堢敤姘撮噺缁熻 + */ + public Double amount7; + + /** + * 7鏈堣姳璐归噾棰� + */ + public Double money7; + + /** + * 7鏈堢敤姘存鏁� + */ + public Integer times7; + + /** + * 8鏈堢敤姘撮噺缁熻 + */ + public Double amount8; + + /** + * 8鏈堣姳璐归噾棰� + */ + public Double money8; + + /** + * 8鏈堢敤姘存鏁� + */ + public Integer times8; + + /** + * 9鏈堢敤姘撮噺缁熻 + */ + public Double amount9; + + /** + * 9鏈堣姳璐归噾棰� + */ + public Double money9; + + /** + * 9鏈堢敤姘存鏁� + */ + public Integer times9; + + /** + * 10鏈堢敤姘撮噺缁熻 + */ + public Double amount10; + + /** + * 10鏈堣姳璐归噾棰� + */ + public Double money10; + + /** + * 10鏈堢敤姘存鏁� + */ + public Integer times10; + + /** + * 11鏈堢敤姘撮噺缁熻 + */ + public Double amount11; + + /** + * 11鏈堣姳璐归噾棰� + */ + public Double money11; + + /** + * 11鏈堢敤姘存鏁� + */ + public Integer times11; + + /** + * 12鏈堢敤姘撮噺缁熻 + */ + public Double amount12; + + /** + * 12鏈堣姳璐归噾棰� + */ + public Double money12; + + /** + * 12鏈堢敤姘存鏁� + */ + public Integer times12; + +} diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoStClientAmountYear.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoStClientAmountYear.java new file mode 100644 index 0000000..100bef1 --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoStClientAmountYear.java @@ -0,0 +1,20 @@ +package com.dy.pipIrrGlobal.voSt; + +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.Data; + +import java.util.List; + +/** + * @Author: liurunyu + * @Date: 2025/1/4 11:13 + * @Description + */ +@Data +@JsonPropertyOrder({ "yearGrp", "records" }) +public class VoStClientAmountYear { + + public List<String> yearGrp; + + public List<VoStClientAmountYearRecords> records; +} diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoStClientAmountYearRecord.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoStClientAmountYearRecord.java new file mode 100644 index 0000000..3822500 --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoStClientAmountYearRecord.java @@ -0,0 +1,49 @@ +package com.dy.pipIrrGlobal.voSt; + +import com.alibaba.fastjson2.annotation.JSONField; +import com.alibaba.fastjson2.writer.ObjectWriterImplToString; +import lombok.Data; + +/** + * @Author: liurunyu + * @Date: 2025/1/6 9:38 + * @Description + */ +@Data +public class VoStClientAmountYearRecord { + /** + * 澶栭敭锛屾寚鍚戝啘鎴� + */ + public Long clientId; + + /** + * 鍐滄埛缂栧勾 + */ + public String clientNum ; + + /** + * 鍐滄埛鍚嶇О + */ + public String clientName ; + + /** + * 鍐滄埛鍦板潃 + */ + public String clientAddress ; + + /** + * 1骞寸敤姘撮噺缁熻 + */ + public Double amount; + + /** + * 1骞磋姳璐归噾棰� + */ + public Double money; + + /** + * 1骞寸敤姘存鏁� + */ + public Integer times; + +} diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoStClientAmountYearRecords.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoStClientAmountYearRecords.java new file mode 100644 index 0000000..53a48da --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoStClientAmountYearRecords.java @@ -0,0 +1,201 @@ +package com.dy.pipIrrGlobal.voSt; + +import com.alibaba.fastjson2.annotation.JSONField; +import com.alibaba.fastjson2.writer.ObjectWriterImplToString; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.Data; + +/** + * @Author: liurunyu + * @Date: 2025/1/4 10:15 + * @Description + */ +@Data +@JsonPropertyOrder({ "id", "clientId", "clientNum", "clientName", "clientAddress" + ,"amount1" , "money1" , "times1" + ,"amount2" , "money2" , "times2" + ,"amount3" , "money3" , "times3" + ,"amount4" , "money4" , "times4" + ,"amount5" , "money5" , "times5" + ,"amount6" , "money6" , "times6" + ,"amount7" , "money7" , "times7" + ,"amount8" , "money8" , "times8" + ,"amount9" , "money9" , "times9" + ,"amount10" , "money10" , "times10" +}) +public class VoStClientAmountYearRecords { + + public static final long serialVersionUID = 202501041106001L; + + /** + * 澶栭敭锛屾寚鍚戝啘鎴� + */ + @JSONField(serializeUsing= ObjectWriterImplToString.class) + public Long clientId; + + /** + * 鍐滄埛缂栧勾 + */ + public String clientNum ; + + /** + * 鍐滄埛鍚嶇О + */ + public String clientName ; + + /** + * 鍐滄埛鍦板潃 + */ + public String clientAddress ; + + /** + * 1骞寸敤姘撮噺缁熻 + */ + public Double amount1; + + /** + * 1骞磋姳璐归噾棰� + */ + public Double money1; + + /** + * 1骞寸敤姘存鏁� + */ + public Integer times1; + + /** + * 2骞寸敤姘撮噺缁熻 + */ + public Double amount2; + + /** + * 2骞磋姳璐归噾棰� + */ + public Double money2; + + /** + * 2骞寸敤姘存鏁� + */ + public Integer times2; + + /** + * 3骞寸敤姘撮噺缁熻 + */ + public Double amount3; + + /** + * 3骞磋姳璐归噾棰� + */ + public Double money3; + + /** + * 3骞寸敤姘存鏁� + */ + public Integer times3; + + /** + * 4骞寸敤姘撮噺缁熻 + */ + public Double amount4; + + /** + * 4骞磋姳璐归噾棰� + */ + public Double money4; + + /** + * 4骞寸敤姘存鏁� + */ + public Integer times4; + + /** + * 5骞寸敤姘撮噺缁熻 + */ + public Double amount5; + + /** + * 5骞磋姳璐归噾棰� + */ + public Double money5; + + /** + * 5骞寸敤姘存鏁� + */ + public Integer times5; + + /** + * 6骞寸敤姘撮噺缁熻 + */ + public Double amount6; + + /** + * 6骞磋姳璐归噾棰� + */ + public Double money6; + + /** + * 6骞寸敤姘存鏁� + */ + public Integer times6; + + /** + * 7骞寸敤姘撮噺缁熻 + */ + public Double amount7; + + /** + * 7骞磋姳璐归噾棰� + */ + public Double money7; + + /** + * 7骞寸敤姘存鏁� + */ + public Integer times7; + + /** + * 8骞寸敤姘撮噺缁熻 + */ + public Double amount8; + + /** + * 8骞磋姳璐归噾棰� + */ + public Double money8; + + /** + * 8骞寸敤姘存鏁� + */ + public Integer times8; + + /** + * 9骞寸敤姘撮噺缁熻 + */ + public Double amount9; + + /** + * 9骞磋姳璐归噾棰� + */ + public Double money9; + + /** + * 9骞寸敤姘存鏁� + */ + public Integer times9; + + /** + * 10骞寸敤姘撮噺缁熻 + */ + public Double amount10; + + /** + * 10骞磋姳璐归噾棰� + */ + public Double money10; + + /** + * 10骞寸敤姘存鏁� + */ + public Integer times10; + +} diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountDayMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountDayMapper.xml index 4bd6635..a6fa3e8 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountDayMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountDayMapper.xml @@ -117,7 +117,6 @@ times30, amount31, money31, times31 </sql> <sql id="Base_Column_List_with_alias"> - <!--@mbg.generated--> ${alias}.id, ${alias}.client_id, ${alias}.`year`, ${alias}.`month`, ${alias}.amount1, ${alias}.money1, ${alias}.times1, ${alias}.amount2, ${alias}.money2, ${alias}.times2, ${alias}.amount3, ${alias}.money3, ${alias}.times3, ${alias}.amount4, ${alias}.money4, ${alias}.times4, ${alias}.amount5, ${alias}.money5, ${alias}.times5, ${alias}.amount6, ${alias}.money6, ${alias}.times6, ${alias}.amount7, ${alias}.money7, ${alias}.times7, ${alias}.amount8, ${alias}.money8, ${alias}.times8, ${alias}.amount9, ${alias}.money9, @@ -1207,24 +1206,27 @@ select count(*) from se_client mtb - <where> + where mtb.deleted != 0 + <trim prefix="and" suffixOverrides="and"> <if test="name != null and name != ''"> mtb.name like concat('%', #{name}, '%') </if> - </where> + </trim> </select> <select id="selectDayStatistics" resultType="com.dy.pipIrrGlobal.voSt.VoStClientAmountDay"> select + mtb.id as clientId, mtb.clientNum as clientNum, - mtb.phone as clientPhone, + mtb.name as clientName, mtb.address as clientAddress, <include refid="Base_Column_List_with_alias" > <property name="alias" value="stTb"/> </include> from se_client mtb LEFT JOIN st_client_amount_day stTb on stTb.client_id = mtb.id - <where> + where mtb.deleted != 0 + <trim prefix="and" suffixOverrides="and"> <if test = "year != null"> stTb.year = #{year, jdbcType=INTEGER} </if> @@ -1234,8 +1236,8 @@ <if test="name != null and name != ''"> AND mtb.name like concat('%', #{name}, '%') </if> - </where> - order by mtb.id ASC + </trim> + order by mtb.id DESC <trim prefix="limit " > <if test="start != null and count != null"> #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER} diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountMonthMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountMonthMapper.xml index 559fde2..d43e655 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountMonthMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountMonthMapper.xml @@ -51,6 +51,18 @@ times6, amount7, money7, times7, amount8, money8, times8, amount9, money9, times9, amount10, money10, times10, amount11, money11, times11, amount12, money12, times12 </sql> + <sql id="Base_Column_List_with_alias"> + <!--@mbg.generated--> + ${alias}.id, ${alias}.client_id, ${alias}.`year`, + ${alias}.amount1, ${alias}.money1, ${alias}.times1, ${alias}.amount2, ${alias}.money2, ${alias}.times2, + ${alias}.amount3, ${alias}.money3, ${alias}.times3, ${alias}.amount4, ${alias}.money4, ${alias}.times4, + ${alias}.amount5, ${alias}.money5, ${alias}.times5, ${alias}.amount6, ${alias}.money6, ${alias}.times6, + ${alias}.amount7, ${alias}.money7, ${alias}.times7, ${alias}.amount8, ${alias}.money8, ${alias}.times8, + ${alias}.amount9, ${alias}.money9, ${alias}.times9, ${alias}.amount10, ${alias}.money10, ${alias}.times10, + ${alias}.amount11, ${alias}.money11, ${alias}.times11, ${alias}.amount12, ${alias}.money12, ${alias}.times12 + </sql> + + <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> <!--@mbg.generated--> select @@ -501,6 +513,52 @@ where id = #{id,jdbcType=BIGINT} </update> + <!-- ////////////////////////////////// --> + <!-- 鏌ヨ缁熻缁撴灉 --> + <!-- ////////////////////////////////// --> + <select id="selectCountMonthStatistics" resultType="java.lang.Long"> + select + count(*) + from se_client mtb + where mtb.deleted != 0 + <trim prefix="and" suffixOverrides="and"> + <if test="name != null and name != ''"> + mtb.name like concat('%', #{name}, '%') + </if> + </trim> + </select> + + <select id="selectMonthStatistics" resultType="com.dy.pipIrrGlobal.voSt.VoStClientAmountMonth"> + select + mtb.clientNum as clientNum, + mtb.phone as clientPhone, + mtb.address as clientAddress, + <include refid="Base_Column_List_with_alias" > + <property name="alias" value="stTb"/> + </include> + from se_client mtb + LEFT JOIN st_client_amount_month stTb on stTb.client_id = mtb.id + where mtb.deleted != 0 + <trim prefix="and" suffixOverrides="and"> + <if test = "year != null"> + stTb.year = #{year, jdbcType=INTEGER} + </if> + <if test="name != null and name != ''"> + AND mtb.name like concat('%', #{name}, '%') + </if> + </trim> + order by mtb.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="selectByYear" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> 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 2027ccd..ad80752 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountYearMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountYearMapper.xml @@ -111,6 +111,48 @@ where id = #{id,jdbcType=BIGINT} </update> + <!-- ////////////////////////////////// --> + <!-- 鏌ヨ缁熻缁撴灉 --> + <!-- ////////////////////////////////// --> + <select id="selectCountYearStatistics" resultType="java.lang.Long"> + select + count(*) + from se_client mtb + where mtb.deleted != 0 + <trim prefix="and" suffixOverrides="and"> + <if test="name != null and name != ''"> + mtb.name like concat('%', #{name}, '%') + </if> + </trim> + </select> + + <select id="selectYearStatistics" 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 + LEFT JOIN st_client_amount_year cayTb on cayTb.client_id = ctb.id + where ctb.deleted != 0 + <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> + 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> <!-- ////////////////////////////////// --> <!-- 缁熻鐩稿叧 --> diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/stClient/StClientCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/stClient/StClientCtrl.java index e1fab95..e33506e 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/stClient/StClientCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/stClient/StClientCtrl.java @@ -6,6 +6,8 @@ import com.dy.common.webUtil.BaseResponseUtils; import com.dy.common.webUtil.QueryResultVo; import com.dy.pipIrrGlobal.voSt.VoStClientAmountDay; +import com.dy.pipIrrGlobal.voSt.VoStClientAmountMonth; +import com.dy.pipIrrGlobal.voSt.VoStClientAmountYear; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -13,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.ArrayList; import java.util.List; /** @@ -25,6 +28,8 @@ @RequestMapping(path="stClient") @RequiredArgsConstructor public class StClientCtrl { + + private static final int startYear4YearStatistics = 2024 ; private StClientSv sv ; @@ -50,4 +55,47 @@ qo.month = ymd[1] ; return BaseResponseUtils.buildSuccess(this.sv.selectStClientAmountDay(qo)); } + + + /** + * 鏌ヨ鎸囧畾骞村啘鎴峰悇鏈堢敤姘撮噺 + * @param qo + * @return + */ + @GetMapping(path = "/amountOfMonth") + @SsoAop() + public BaseResponse<QueryResultVo<List<VoStClientAmountMonth>>> amountOfMonth(StClientQo qo) throws Exception { + if(qo.year == null) { + return BaseResponseUtils.buildErrorMsg("鏌ヨ鏉′欢骞村害涓嶈兘涓虹┖"); + } + return BaseResponseUtils.buildSuccess(this.sv.selectStClientAmountMonth(qo)); + } + + + + /** + * 鏌ヨ鎸囧畾骞村啘鎴峰悇骞寸敤姘撮噺 + * @param qo + * @return + */ + @GetMapping(path = "/amountOfYear") + @SsoAop() + public BaseResponse<QueryResultVo<List<VoStClientAmountYear>>> amountOfYear(StClientQo qo) throws Exception { + List<Integer> yearGrp = new ArrayList<Integer>(); + int nowYear = Integer.parseInt(DateTime.yyyy()) ; + if(qo.year == null) { + for(int i = startYear4YearStatistics; i <= nowYear; i++) { + yearGrp.add(i) ; + } + }else{ + if(qo.year > nowYear){ + qo.year = nowYear; + } + if(qo.year < startYear4YearStatistics){ + qo.year = startYear4YearStatistics; + } + yearGrp.add(qo.year) ; + } + return BaseResponseUtils.buildSuccess(this.sv.selectStClientAmountYear(qo, yearGrp)); + } } 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 7cd7cfe..d1c9168 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 @@ -4,13 +4,14 @@ import com.dy.pipIrrGlobal.daoSt.StClientAmountDayMapper ; import com.dy.pipIrrGlobal.daoSt.StClientAmountMonthMapper ; import com.dy.pipIrrGlobal.daoSt.StClientAmountYearMapper ; -import com.dy.pipIrrGlobal.voSt.VoStClientAmountDay; +import com.dy.pipIrrGlobal.voSt.*; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.common.utils.PojoUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.text.ParseException; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -41,7 +42,12 @@ } - public QueryResultVo<List<VoStClientAmountDay>> selectStClientAmountDay(StClientQo qo) throws ParseException { + /** + * 鏌ヨ鍐滄埛鐢ㄦ按鏃ョ粺璁� + * @param qo + * @return + */ + public QueryResultVo<List<VoStClientAmountDay>> selectStClientAmountDay(StClientQo qo) { QueryResultVo<List<VoStClientAmountDay>> rsVo = new QueryResultVo<>() ; // 鐢熸垚鏌ヨ鍙傛暟 Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; @@ -57,4 +63,169 @@ } return rsVo ; } + + + /** + * 鏌ヨ鍐滄埛鐢ㄦ按鏈堢粺璁� + * @param qo + * @return + */ + public QueryResultVo<List<VoStClientAmountMonth>> selectStClientAmountMonth(StClientQo qo) { + QueryResultVo<List<VoStClientAmountMonth>> rsVo = new QueryResultVo<>() ; + // 鐢熸垚鏌ヨ鍙傛暟 + Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; + // 鑾峰彇绗﹀悎鏉′欢鐨勮褰曟暟 + Long itemTotal = stClientAmountMonthDao.selectCountMonthStatistics(params) ; + + if(itemTotal != null && itemTotal > 0) { + rsVo.pageSize = qo.pageSize; + rsVo.pageCurr = qo.pageCurr; + rsVo.calculateAndSet(itemTotal, params); + + rsVo.obj = stClientAmountMonthDao.selectMonthStatistics(params); + } + return rsVo ; + } + + + /** + * 鏌ヨ鍐滄埛鐢ㄦ按骞寸粺璁� + * @param qo + * @return + */ + public QueryResultVo<List<VoStClientAmountYearRecords>> selectStClientAmountYear(StClientQo qo, List<Integer> yearGrp) throws ParseException { + QueryResultVo<List<VoStClientAmountYearRecords>> rsVo = new QueryResultVo<>() ; + // 鐢熸垚鏌ヨ鍙傛暟 + Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; + params.put("yearGrp", yearGrp); + // 鑾峰彇绗﹀悎鏉′欢鐨勮褰曟暟 + Long itemTotal = stClientAmountYearDao.selectCountYearStatistics(params) ; + + if(itemTotal != null && itemTotal > 0) { + rsVo.pageSize = qo.pageSize; + rsVo.pageCurr = qo.pageCurr; + rsVo.calculateAndSet(itemTotal, params); + + List<VoStClientAmountYearRecords> group = new ArrayList<>(); + int count = 1 ; + for(int year: yearGrp){ + params.put("year", year); + List<VoStClientAmountYearRecord> list = stClientAmountYearDao.selectYearStatistics(params); + if(group.isEmpty()){ + this.completion(group, list); + } + this.merge(count, group, list) ; + count += 1 ; + } + rsVo.obj = group ; + } + return rsVo ; + } + + /** + * 琛ュ叏锛� 闆嗗悎涓病鏈夊氨鐢熸垚涓�涓� + * @param group + * @param list + */ + private void completion(List<VoStClientAmountYearRecords> group, List<VoStClientAmountYearRecord> list){ + boolean found ; + for (VoStClientAmountYearRecord voInList : list) { + found = false ; + for(VoStClientAmountYearRecords voInGrp : group) { + if(voInList.clientId.longValue() == voInGrp.clientId.longValue()) { + found = true ; + } + } + if(!found) { + VoStClientAmountYearRecords vo4s = new VoStClientAmountYearRecords(); + vo4s.clientId = voInList.clientId; + vo4s.clientNum = voInList.clientNum; + vo4s.clientName = voInList.clientName; + vo4s.clientAddress = voInList.clientAddress; + group.add(vo4s) ; + } + } + } + + /** + * 鍚堝苟锛� 闆嗗悎涓湁灏卞悎骞� + * @param count + * @param group + * @param list + */ + private void merge(int count, List<VoStClientAmountYearRecords> group, List<VoStClientAmountYearRecord> list){ + for (VoStClientAmountYearRecord voInList : list) { + VoStClientAmountYearRecords voInGrp_ = null ; + for(VoStClientAmountYearRecords voInGrp : group) { + if(voInList.clientId.longValue() == voInGrp.clientId.longValue()) { + voInGrp_ = voInGrp ; + break ; + } + } + if(voInGrp_ != null){ + this.merge(count, voInGrp_, voInList); + } + } + } + + /** + * 鍚堝苟鍊� + * @param count + * @param vo4s + * @param vo + */ + private void merge(int count, VoStClientAmountYearRecords vo4s, VoStClientAmountYearRecord vo){ + switch (count){ + case 1: + vo4s.amount1 = vo.amount; + vo4s.money1 = vo.money; + vo4s.times1 = vo.times; + break; + case 2: + vo4s.amount2 = vo.amount; + vo4s.money2 = vo.money; + vo4s.times2 = vo.times; + break; + case 3: + vo4s.amount3 = vo.amount; + vo4s.money3 = vo.money; + vo4s.times3 = vo.times; + break; + case 4: + vo4s.amount4 = vo.amount; + vo4s.money4 = vo.money; + vo4s.times4 = vo.times; + break; + case 5: + vo4s.amount5 = vo.amount; + vo4s.money5 = vo.money; + vo4s.times5 = vo.times; + break; + case 6: + vo4s.amount6 = vo.amount; + vo4s.money6 = vo.money; + vo4s.times6 = vo.times; + break; + case 7: + vo4s.amount7 = vo.amount; + vo4s.money7 = vo.money; + vo4s.times7 = vo.times; + break; + case 8: + vo4s.amount8 = vo.amount; + vo4s.money8 = vo.money; + vo4s.times8 = vo.times; + break; + case 9: + vo4s.amount9 = vo.amount; + vo4s.money9 = vo.money; + vo4s.times9 = vo.times; + break; + case 10: + vo4s.amount10 = vo.amount; + vo4s.money10 = vo.money; + vo4s.times10 = vo.times; + break; + } + } } -- Gitblit v1.8.0