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