From e5d5a773f76de73471b58d388f165dedc9570c4a Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期三, 24 七月 2024 17:23:21 +0800
Subject: [PATCH] 1、以定时任务方式实现定时统计; 2、实现取水口漏损月统计、年统计; 3、实现取水口取水量月统计、年统计; 4、实现农户用水量及费用月统计、年统计。

---
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StatisticsJob.java      |   79 ++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmIntakeAmountDayLastMapper.java                    |    2 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StClientAmountMonth.java                           |   67 +
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StClientSv.java         |   66 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StIntakeAmountYearMapper.java                       |   55 +
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StClient.java           |   21 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java                          |   29 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountMonthMapper.xml                                     |  122 +++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/StIntakeAmountYearMapper.xml                                      |   91 ++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StLossYearMapper.java                               |   55 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StLossMonth.java                                   |   65 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmIntakeAmountDayMapper.java                        |   16 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmIntakeAmountDayMapper.xml                                       |    9 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmLossDayMapper.java                                |   78 ++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmLossDayLastMapper.java                            |   19 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StClientAmountYearMapper.java                       |   55 +
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/util/OrgListener.java              |   22 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/StIntakeAmountMonthMapper.xml                                     |  110 +++
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StLoss.java             |   19 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmLossDay.java                                     |    6 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/StLossYearMapper.xml                                              |   90 ++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoIntakeLossStatistics.java                          |   14 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StClientAmountYear.java                            |   61 +
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealLoss.java              |   20 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StLossMonthMapper.java                              |   72 ++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientAmountStatistics.java                        |   15 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/StLossMonthMapper.xml                                             |  111 +++
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StIntakeSv.java         |   66 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmLossDayLast.java                                 |    6 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoIntakeAmountStatistics.java                        |   14 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StIntakeAmountMonthMapper.java                      |   67 +
 /dev/null                                                                                                                 |   68 -
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StIntakeAmountMonth.java                           |   61 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StLossYear.java                                    |   55 +
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossDayMapper.xml                                               |   36 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StIntakeAmountYear.java                            |   55 +
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StLossSv.java           |   66 +
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StatisticsListener.java |    3 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StIntake.java           |   18 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmClientAmountDayMapper.xml                                       |    9 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossDayLastMapper.xml                                           |   30 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmClientAmountDayMapper.java                        |   12 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountYearMapper.xml                                      |  102 ++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StClientAmountMonthMapper.java                      |   67 +
 44 files changed, 1,932 insertions(+), 172 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmClientAmountDayMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmClientAmountDayMapper.java
index 0ab6a70..807bfae 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmClientAmountDayMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmClientAmountDayMapper.java
@@ -3,7 +3,7 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoRm.RmClientAmountDay;
 import com.dy.pipIrrGlobal.voRm.VoClientAmountDay;
-import com.dy.pipIrrGlobal.voRm.VoControllerAlarmState;
+import com.dy.pipIrrGlobal.voSt.VoClientAmountStatistics;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -88,4 +88,14 @@
      * @return
      */
     List<VoClientAmountDay> getClientAmountDayHistory(Map<?, ?> params);
+
+
+    /**
+     * 浠ュ啘鎴风淮搴︾粺璁$敤姘撮噺鍙婅垂鐢�
+     * @param statisticsStartId 缁熻鏃堕棿娈靛紑濮嬫椂闂村搴旂殑ID
+     * @param statisticsEndId 缁熻鏃堕棿娈垫埅姝㈡椂闂村搴旂殑ID
+     * @return
+     */
+    List<VoClientAmountStatistics> statisticsByClient(@Param("startId")Long statisticsStartId, @Param("endId")Long statisticsEndId) ;
+
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmIntakeAmountDayLastMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmIntakeAmountDayLastMapper.java
index e347da8..b9ef67d 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmIntakeAmountDayLastMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmIntakeAmountDayLastMapper.java
@@ -1,9 +1,7 @@
 package com.dy.pipIrrGlobal.daoRm;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.dy.pipIrrGlobal.pojoRm.RmIntakeAmountDay;
 import com.dy.pipIrrGlobal.pojoRm.RmIntakeAmountDayLast;
-import com.dy.pipIrrGlobal.pojoRm.RmLossLast;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmIntakeAmountDayMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmIntakeAmountDayMapper.java
index 3b3cd14..4b2a87e 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmIntakeAmountDayMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmIntakeAmountDayMapper.java
@@ -2,9 +2,10 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoRm.RmIntakeAmountDay;
-import com.dy.pipIrrGlobal.pojoRm.RmLossHistory;
-import com.dy.pipIrrGlobal.pojoRm.RmOnHourReportHistory;
+import com.dy.pipIrrGlobal.voSt.VoIntakeAmountStatistics;
+import com.dy.pipIrrGlobal.voSt.VoIntakeLossStatistics;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.Date;
 import java.util.List;
@@ -64,4 +65,15 @@
      * @return update count
      */
     int updateByPrimaryKey(RmIntakeAmountDay record);
+
+
+    /**
+     * 浠ュ彇姘村彛缁村害缁熻鍙栨按閲�
+     * @param statisticsStartId 缁熻鏃堕棿娈靛紑濮嬫椂闂村搴旂殑ID
+     * @param statisticsEndId 缁熻鏃堕棿娈垫埅姝㈡椂闂村搴旂殑ID
+     * @return
+     */
+    List<VoIntakeAmountStatistics> statisticsByIntake(@Param("startId")Long statisticsStartId, @Param("endId")Long statisticsEndId) ;
+
+
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmLossLastMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmLossDayLastMapper.java
similarity index 71%
rename from pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmLossLastMapper.java
rename to pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmLossDayLastMapper.java
index 0dd4bc9..eb2831b 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmLossLastMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmLossDayLastMapper.java
@@ -1,8 +1,7 @@
 package com.dy.pipIrrGlobal.daoRm;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.dy.pipIrrGlobal.pojoRm.RmLossHistory;
-import com.dy.pipIrrGlobal.pojoRm.RmLossLast;
+import com.dy.pipIrrGlobal.pojoRm.RmLossDayLast;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.Date;
@@ -15,7 +14,7 @@
  * @Description
  */   
 @Mapper
-public interface RmLossLastMapper extends BaseMapper<RmLossLast> {
+public interface RmLossDayLastMapper extends BaseMapper<RmLossDayLast> {
     /**
      * delete by primary key
      * @param id primaryKey
@@ -28,46 +27,46 @@
      * @param record the record
      * @return insert count
      */
-    int insert(RmLossLast record);
+    int insert(RmLossDayLast record);
 
     /**
      * insert record to table selective
      * @param record the record
      * @return insert count
      */
-    int insertSelective(RmLossLast record);
+    int insertSelective(RmLossDayLast record);
 
     /**
      * select by primary key
      * @param id primary key
      * @return object by primary key
      */
-    RmLossLast selectByPrimaryKey(Long id);
+    RmLossDayLast selectByPrimaryKey(Long id);
 
     /**
      * select by rtuAddr
      * @param intakeId 鎺у埗鍣ㄦ墍缁戝彇姘村彛ID
      * @return object by rtuAddr
      */
-    List<RmLossLast> selectByIntakeId(Long intakeId) ;
+    List<RmLossDayLast> selectByIntakeId(Long intakeId) ;
    /**
      * select by dt
      * @param date 鏃ユ湡锛坹yyy-mm-dd锛�
      * @return object by rtuAddr
      */
-    List<RmLossLast> selectByDate(Date date) ;
+    List<RmLossDayLast> selectByDate(Date date) ;
 
     /**
      * update record selective
      * @param record the updated record
      * @return update count
      */
-    int updateByPrimaryKeySelective(RmLossLast record);
+    int updateByPrimaryKeySelective(RmLossDayLast record);
 
     /**
      * update record
      * @param record the updated record
      * @return update count
      */
-    int updateByPrimaryKey(RmLossLast record);
+    int updateByPrimaryKey(RmLossDayLast record);
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmLossDayMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmLossDayMapper.java
new file mode 100644
index 0000000..086fea3
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmLossDayMapper.java
@@ -0,0 +1,78 @@
+package com.dy.pipIrrGlobal.daoRm;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoRm.RmLossDay;
+import com.dy.pipIrrGlobal.voSt.VoIntakeLossStatistics;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/2/28 15:31
+ * @LastEditTime 2024/2/28 15:31
+ * @Description
+ */   
+@Mapper
+public interface RmLossDayMapper extends BaseMapper<RmLossDay> {
+    /**
+     * delete by primary key
+     * @param id primaryKey
+     * @return deleteCount
+     */
+    int deleteByPrimaryKey(Long id);
+
+    /**
+     * insert record to table
+     * @param record the record
+     * @return insert count
+     */
+    int insert(RmLossDay record);
+
+    /**
+     * insert record to table selective
+     * @param record the record
+     * @return insert count
+     */
+    int insertSelective(RmLossDay record);
+
+    /**
+     * select by primary key
+     * @param id primary key
+     * @return object by primary key
+     */
+    RmLossDay selectByPrimaryKey(Long id);
+
+    /**
+     * select by dt
+     * @param date 鏃ユ湡锛坹yyy-mm-dd锛�
+     * @return object by rtuAddr
+     */
+    List<RmLossDay> selectByDate(Date date) ;
+
+    /**
+     * update record selective
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKeySelective(RmLossDay record);
+
+    /**
+     * update record
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKey(RmLossDay record);
+
+    /**
+     * 浠ュ彇姘村彛缁村害缁熻婕忔崯閲�
+     * @param statisticsStartId 缁熻鏃堕棿娈靛紑濮嬫椂闂村搴旂殑ID
+     * @param statisticsEndId 缁熻鏃堕棿娈垫埅姝㈡椂闂村搴旂殑ID
+     * @return
+     */
+    List<VoIntakeLossStatistics> statisticsByIntake(@Param("startId")Long statisticsStartId, @Param("endId")Long statisticsEndId) ;
+
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmLossHistoryMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmLossHistoryMapper.java
deleted file mode 100644
index d346315..0000000
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmLossHistoryMapper.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.dy.pipIrrGlobal.daoRm;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.dy.pipIrrGlobal.pojoRm.RmIntakeAmountDay;
-import com.dy.pipIrrGlobal.pojoRm.RmLossHistory;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.Date;
-import java.util.List;
-
-/**
- * @Author liurunyu
- * @Date 2024/2/28 15:31
- * @LastEditTime 2024/2/28 15:31
- * @Description
- */   
-@Mapper
-public interface RmLossHistoryMapper extends BaseMapper<RmLossHistory> {
-    /**
-     * delete by primary key
-     * @param id primaryKey
-     * @return deleteCount
-     */
-    int deleteByPrimaryKey(Long id);
-
-    /**
-     * insert record to table
-     * @param record the record
-     * @return insert count
-     */
-    int insert(RmLossHistory record);
-
-    /**
-     * insert record to table selective
-     * @param record the record
-     * @return insert count
-     */
-    int insertSelective(RmLossHistory record);
-
-    /**
-     * select by primary key
-     * @param id primary key
-     * @return object by primary key
-     */
-    RmLossHistory selectByPrimaryKey(Long id);
-
-    /**
-     * select by dt
-     * @param date 鏃ユ湡锛坹yyy-mm-dd锛�
-     * @return object by rtuAddr
-     */
-    List<RmLossHistory> selectByDate(Date date) ;
-
-    /**
-     * update record selective
-     * @param record the updated record
-     * @return update count
-     */
-    int updateByPrimaryKeySelective(RmLossHistory record);
-
-    /**
-     * update record
-     * @param record the updated record
-     * @return update count
-     */
-    int updateByPrimaryKey(RmLossHistory record);
-}
\ No newline at end of file
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
new file mode 100644
index 0000000..43a55a6
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StClientAmountMonthMapper.java
@@ -0,0 +1,67 @@
+package com.dy.pipIrrGlobal.daoSt;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoSt.StClientAmountMonth;
+import com.dy.pipIrrGlobal.voSt.VoClientAmountStatistics;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/24 17:03
+ * @Description
+ */
+@Mapper
+public interface StClientAmountMonthMapper extends BaseMapper<StClientAmountMonth> {
+    /**
+     * delete by primary key
+     * @param id primaryKey
+     * @return deleteCount
+     */
+    int deleteByPrimaryKey(Long id);
+
+    /**
+     * insert record to table
+     * @param record the record
+     * @return insert count
+     */
+    int insert(StClientAmountMonth record);
+
+    /**
+     * insert record to table selective
+     * @param record the record
+     * @return insert count
+     */
+    int insertSelective(StClientAmountMonth record);
+
+    /**
+     * select by primary key
+     * @param id primary key
+     * @return object by primary key
+     */
+    StClientAmountMonth selectByPrimaryKey(Long id);
+
+    /**
+     * update record selective
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKeySelective(StClientAmountMonth record);
+
+    /**
+     * update record
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKey(StClientAmountMonth record);
+
+
+    /**
+     * 浠ュ啘鎴风淮搴︾粺璁$敤姘撮噺鍙婅垂鐢�
+     * @param year 缁熻骞村害
+     * @return
+     */
+    List<VoClientAmountStatistics> statisticsByClient(Integer year) ;
+}
\ No newline at end of file
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
new file mode 100644
index 0000000..d25a617
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StClientAmountYearMapper.java
@@ -0,0 +1,55 @@
+package com.dy.pipIrrGlobal.daoSt;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoSt.StClientAmountYear;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/24 17:03
+ * @Description
+ */
+@Mapper
+public interface StClientAmountYearMapper extends BaseMapper<StClientAmountYear> {
+    /**
+     * delete by primary key
+     * @param id primaryKey
+     * @return deleteCount
+     */
+    int deleteByPrimaryKey(Long id);
+
+    /**
+     * insert record to table
+     * @param record the record
+     * @return insert count
+     */
+    int insert(StClientAmountYear record);
+
+    /**
+     * insert record to table selective
+     * @param record the record
+     * @return insert count
+     */
+    int insertSelective(StClientAmountYear record);
+
+    /**
+     * select by primary key
+     * @param id primary key
+     * @return object by primary key
+     */
+    StClientAmountYear selectByPrimaryKey(Long id);
+
+    /**
+     * update record selective
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKeySelective(StClientAmountYear record);
+
+    /**
+     * update record
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKey(StClientAmountYear record);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StIntakeAmountMonthMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StIntakeAmountMonthMapper.java
new file mode 100644
index 0000000..8b643fa
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StIntakeAmountMonthMapper.java
@@ -0,0 +1,67 @@
+package com.dy.pipIrrGlobal.daoSt;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoSt.StIntakeAmountMonth;
+import com.dy.pipIrrGlobal.pojoSt.StLossMonth;
+import com.dy.pipIrrGlobal.voSt.VoIntakeAmountStatistics;
+import com.dy.pipIrrGlobal.voSt.VoIntakeLossStatistics;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/24 16:38
+ * @Description
+ */
+@Mapper
+public interface StIntakeAmountMonthMapper extends BaseMapper<StIntakeAmountMonth> {
+    /**
+     * delete by primary key
+     * @param id primaryKey
+     * @return deleteCount
+     */
+    int deleteByPrimaryKey(Long id);
+
+    /**
+     * insert record to table
+     * @param record the record
+     * @return insert count
+     */
+    int insert(StIntakeAmountMonth record);
+
+    /**
+     * insert record to table selective
+     * @param record the record
+     * @return insert count
+     */
+    int insertSelective(StIntakeAmountMonth record);
+
+    /**
+     * select by primary key
+     * @param id primary key
+     * @return object by primary key
+     */
+    StIntakeAmountMonth selectByPrimaryKey(Long id);
+
+    /**
+     * update record selective
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKeySelective(StIntakeAmountMonth record);
+
+    /**
+     * update record
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKey(StIntakeAmountMonth record);
+
+    /**
+     * 浠ュ彇姘村彛缁村害缁熻鍙栨按閲�
+     * @param year 缁熻骞村害
+     * @return
+     */
+    List<VoIntakeAmountStatistics> statisticsByIntake(Integer year) ;
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StIntakeAmountYearMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StIntakeAmountYearMapper.java
new file mode 100644
index 0000000..3c75c42
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StIntakeAmountYearMapper.java
@@ -0,0 +1,55 @@
+package com.dy.pipIrrGlobal.daoSt;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoSt.StIntakeAmountYear;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/24 16:38
+ * @Description
+ */
+@Mapper
+public interface StIntakeAmountYearMapper extends BaseMapper<StIntakeAmountYear> {
+    /**
+     * delete by primary key
+     * @param id primaryKey
+     * @return deleteCount
+     */
+    int deleteByPrimaryKey(Long id);
+
+    /**
+     * insert record to table
+     * @param record the record
+     * @return insert count
+     */
+    int insert(StIntakeAmountYear record);
+
+    /**
+     * insert record to table selective
+     * @param record the record
+     * @return insert count
+     */
+    int insertSelective(StIntakeAmountYear record);
+
+    /**
+     * select by primary key
+     * @param id primary key
+     * @return object by primary key
+     */
+    StIntakeAmountYear selectByPrimaryKey(Long id);
+
+    /**
+     * update record selective
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKeySelective(StIntakeAmountYear record);
+
+    /**
+     * update record
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKey(StIntakeAmountYear record);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StLossMonthMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StLossMonthMapper.java
new file mode 100644
index 0000000..712f239
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StLossMonthMapper.java
@@ -0,0 +1,72 @@
+package com.dy.pipIrrGlobal.daoSt;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoSt.StLossMonth;
+import com.dy.pipIrrGlobal.voSt.VoIntakeLossStatistics;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/24 15:48
+ * @Description
+ */
+@Mapper
+public interface StLossMonthMapper extends BaseMapper<StLossMonth> {
+    /**
+     * delete by primary key
+     *
+     * @param id primaryKey
+     * @return deleteCount
+     */
+    int deleteByPrimaryKey(Long id);
+
+    /**
+     * insert record to table
+     *
+     * @param record the record
+     * @return insert count
+     */
+    int insert(StLossMonth record);
+
+    /**
+     * insert record to table selective
+     *
+     * @param record the record
+     * @return insert count
+     */
+    int insertSelective(StLossMonth record);
+
+    /**
+     * select by primary key
+     *
+     * @param id primary key
+     * @return object by primary key
+     */
+    StLossMonth selectByPrimaryKey(Long id);
+
+    /**
+     * update record selective
+     *
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKeySelective(StLossMonth record);
+
+    /**
+     * update record
+     *
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKey(StLossMonth record);
+
+    /**
+     * 浠ュ彇姘村彛缁村害缁熻婕忔崯閲�
+     * @param year 缁熻骞村害
+     * @return
+     */
+    List<VoIntakeLossStatistics> statisticsByIntake(Integer year) ;
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StLossYearMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StLossYearMapper.java
new file mode 100644
index 0000000..5fa6d70
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSt/StLossYearMapper.java
@@ -0,0 +1,55 @@
+package com.dy.pipIrrGlobal.daoSt;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoSt.StLossYear;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/24 15:18
+ * @Description
+ */
+@Mapper
+public interface StLossYearMapper extends BaseMapper<StLossYear> {
+    /**
+     * delete by primary key
+     * @param id primaryKey
+     * @return deleteCount
+     */
+    int deleteByPrimaryKey(Long id);
+
+    /**
+     * insert record to table
+     * @param record the record
+     * @return insert count
+     */
+    int insert(StLossYear record);
+
+    /**
+     * insert record to table selective
+     * @param record the record
+     * @return insert count
+     */
+    int insertSelective(StLossYear record);
+
+    /**
+     * select by primary key
+     * @param id primary key
+     * @return object by primary key
+     */
+    StLossYear selectByPrimaryKey(Long id);
+
+    /**
+     * update record selective
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKeySelective(StLossYear record);
+
+    /**
+     * update record
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKey(StLossYear record);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmLossHistory.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmLossDay.java
similarity index 94%
rename from pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmLossHistory.java
rename to pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmLossDay.java
index fd5fd49..2463d47 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmLossHistory.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmLossDay.java
@@ -21,14 +21,14 @@
  * @LastEditTime 2024/2/28 15:31
  * @Description 鎺у埗鍣ㄦ棩婕忔崯姘撮噺鍘嗗彶鏁版嵁
  */
-@TableName(value="rm_loss_history_history", autoResultMap = true)
+@TableName(value="rm_loss_day", autoResultMap = true)
 @Data
 @Builder
 @ToString
 @NoArgsConstructor
 @AllArgsConstructor
-@Schema(name = "鎺у埗鍣ㄦ棩婕忔崯姘撮噺鍘嗗彶鏁版嵁 ")
-public class RmLossHistory implements BaseEntity {
+@Schema(name = "鍙栨按鍙f棩婕忔崯缁熻")
+public class RmLossDay implements BaseEntity {
 
     public static final long serialVersionUID = 202402281620001L;
     /**
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmLossLast.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmLossDayLast.java
similarity index 95%
rename from pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmLossLast.java
rename to pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmLossDayLast.java
index 7b38ffa..fc2d6f8 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmLossLast.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmLossDayLast.java
@@ -21,14 +21,14 @@
  * @LastEditTime 2024/2/28 15:31
  * @Description 鎺у埗鍣ㄦ棩婕忔崯姘撮噺鏈�鏂版暟鎹�
  */
-@TableName(value="rm_loss_last_history", autoResultMap = true)
+@TableName(value="rm_loss_day_last", autoResultMap = true)
 @Data
 @Builder
 @ToString
 @NoArgsConstructor
 @AllArgsConstructor
-@Schema(name = "鎺у埗鍣ㄦ棩婕忔崯姘撮噺鏈�鏂版暟鎹�")
-public class RmLossLast implements BaseEntity {
+@Schema(name = "鍙栨按鍙f棩婕忔崯鏈�鏂版暟鎹�")
+public class RmLossDayLast implements BaseEntity {
 
     public static final long serialVersionUID = 202402281621001L;
     /**
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StClientAmountMonth.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StClientAmountMonth.java
new file mode 100644
index 0000000..7a6b8db
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StClientAmountMonth.java
@@ -0,0 +1,67 @@
+package com.dy.pipIrrGlobal.pojoSt;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/24 17:03
+ * @Description
+ */
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dy.common.po.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+@TableName(value="rm_client_amount_month", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "鍐滄埛鐢ㄦ按閲忓強璐圭敤鏈堢粺璁�")
+public class StClientAmountMonth implements BaseEntity {
+
+    public static final long serialVersionUID = 202407241705001L;
+    /**
+     * 涓婚敭
+     */
+    @Schema(description = "涓婚敭", requiredMode = Schema.RequiredMode.REQUIRED)
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    public Long id;
+
+    /**
+    * 鍐滄埛ID
+    */
+    @Schema(description = "鍐滄埛澶栭敭", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long clientId;
+
+    /**
+    * 缁熻骞村害
+    */
+    @Schema(description = "缁熻骞村害", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Integer year;
+
+    /**
+    * 缁熻鏈堜唤
+    */
+    @Schema(description = "缁熻鏈堜唤", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Integer month;
+
+    /**
+    * 鐢ㄦ按閲忥紙m3锛�
+    */
+    @Schema(description = "鏈堢敤姘撮噺锛坢3锛�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double amount;
+
+    /**
+    * 璐圭敤锛堝厓锛�
+    */
+    @Schema(description = "鏈堣垂鐢紙鍏冿級", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double money;
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StClientAmountYear.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StClientAmountYear.java
new file mode 100644
index 0000000..ca94c39
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StClientAmountYear.java
@@ -0,0 +1,61 @@
+package com.dy.pipIrrGlobal.pojoSt;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/24 17:03
+ * @Description
+ */
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dy.common.po.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+@TableName(value="rm_client_amount_year", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "鍐滄埛鐢ㄦ按閲忓強璐圭敤骞寸粺璁�")
+public class StClientAmountYear implements BaseEntity {
+
+    public static final long serialVersionUID = 202407241705002L;
+    /**
+     * 涓婚敭
+     */
+    @Schema(description = "涓婚敭", requiredMode = Schema.RequiredMode.REQUIRED)
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    public Long id;
+
+    /**
+    * 鍐滄埛ID
+    */
+    @Schema(description = "鍐滄埛澶栭敭", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long clientId;
+
+    /**
+    * 缁熻骞村害
+    */
+    @Schema(description = "缁熻骞村害", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Integer year;
+
+    /**
+    * 骞寸敤姘撮噺
+    */
+    @Schema(description = "骞寸敤姘撮噺锛坢3锛�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double amount;
+
+    /**
+    * 骞磋垂鐢�
+    */
+    @Schema(description = "骞磋垂鐢紙鍏冿級", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double money;
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StIntakeAmountMonth.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StIntakeAmountMonth.java
new file mode 100644
index 0000000..69ab585
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StIntakeAmountMonth.java
@@ -0,0 +1,61 @@
+package com.dy.pipIrrGlobal.pojoSt;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/24 16:38
+ * @Description
+ */
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dy.common.po.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+@TableName(value="rm_intake_amount_month", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "鍙栨按鍙e彇姘撮噺鏈堢粺璁�")
+public class StIntakeAmountMonth implements BaseEntity {
+
+    public static final long serialVersionUID = 202407241644001L;
+    /**
+     * 涓婚敭
+     */
+    @Schema(description = "涓婚敭", requiredMode = Schema.RequiredMode.REQUIRED)
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    public Long id;
+
+    /**
+    * 鍙栨按鍙D
+    */
+    @Schema(description = "鍙栨按鍙e閿�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long intakeId;
+
+    /**
+    * 缁熻骞村害
+    */
+    @Schema(description = "缁熻骞村害", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Integer year;
+
+    /**
+    * 缁熻鏈堜唤
+    */
+    @Schema(description = "缁熻鏈堜唤", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Integer month;
+
+    /**
+    * 鏈堝彇姘撮噺
+    */
+    @Schema(description = "鏈堝彇姘撮噺锛坢3锛�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double amount;
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StIntakeAmountYear.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StIntakeAmountYear.java
new file mode 100644
index 0000000..9b56873
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StIntakeAmountYear.java
@@ -0,0 +1,55 @@
+package com.dy.pipIrrGlobal.pojoSt;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/24 16:38
+ * @Description
+ */
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dy.common.po.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+@TableName(value="rm_intake_amount_year", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "鍙栨按鍙e勾鍙栨按閲忕粺璁�")
+public class StIntakeAmountYear implements BaseEntity {
+
+    public static final long serialVersionUID = 202407241644002L;
+    /**
+     * 涓婚敭
+     */
+    @Schema(description = "涓婚敭", requiredMode = Schema.RequiredMode.REQUIRED)
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    public Long id;
+
+    /**
+    * 鍙栨按鍙D
+    */
+    @Schema(description = "鍙栨按鍙e疄浣撳閿�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long intakeId;
+
+    /**
+    * 缁熻骞村害
+    */
+    @Schema(description = "缁熻骞村害", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Integer year;
+
+    /**
+    * 骞村彇姘撮噺
+    */
+    @Schema(description = "骞村彇姘撮噺", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double amount;
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StLossMonth.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StLossMonth.java
new file mode 100644
index 0000000..4356bc1
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StLossMonth.java
@@ -0,0 +1,65 @@
+package com.dy.pipIrrGlobal.pojoSt;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dy.common.po.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/24 15:48
+ * @Description 鍙栨按鍙f紡鎹熸湀缁熻
+ */
+
+@TableName(value="rm_loss_month", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "鍙栨按鍙f紡鎹熸湀缁熻")
+public class StLossMonth implements BaseEntity {
+
+    public static final long serialVersionUID = 202407241523001L;
+    /**
+     * 涓婚敭
+     */
+    @Schema(description = "涓婚敭", requiredMode = Schema.RequiredMode.REQUIRED)
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    public Long id;
+
+
+    /**
+     * 鍙栨按鍙D
+     */
+    /**
+     * 鍙栨按鍙D
+     */
+    @Schema(description = "鍙栨按鍙e閿�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long intakeId;
+
+    /**
+     * 缁熻骞�
+     */
+    @Schema(description = "缁熻骞村害", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Integer year;
+
+    /**
+     * 缁熻鏈�
+     */
+    @Schema(description = "缁熻鏈堜唤", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Integer month;
+
+    /**
+     * 鏈堢粺璁�
+     */
+    @Schema(description = "鏈堟紡鎹熼噺锛坢3锛�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double amount;
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StLossYear.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StLossYear.java
new file mode 100644
index 0000000..7ce65e3
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSt/StLossYear.java
@@ -0,0 +1,55 @@
+package com.dy.pipIrrGlobal.pojoSt;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dy.common.po.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/24 15:18
+ * @Description 鍙栨按鍙f紡鎹熷勾缁熻
+ */
+
+@TableName(value="rm_loss_year", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "鍙栨按鍙f紡鎹熷勾缁熻")
+public class StLossYear implements BaseEntity {
+
+    public static final long serialVersionUID = 202407241523002L;
+    /**
+     * 涓婚敭
+     */
+    @Schema(description = "涓婚敭", requiredMode = Schema.RequiredMode.REQUIRED)
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    public Long id;
+
+    /**
+    * 鍙栨按鍙D
+    */
+    @Schema(description = "鍙栨按鍙e疄浣撳閿�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long intakeId;
+
+    /**
+    * 骞村害
+    */
+    @Schema(description = "缁熻骞村害", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Integer year;
+
+    /**
+    * 骞存紡鎹熺粺璁�
+    */
+    @Schema(description = "骞存紡鎹熼噺锛坢3锛�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double amount;
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientAmountStatistics.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientAmountStatistics.java
new file mode 100644
index 0000000..dfdbe82
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientAmountStatistics.java
@@ -0,0 +1,15 @@
+package com.dy.pipIrrGlobal.voSt;
+
+import lombok.Data;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/24 17:09
+ * @Description
+ */
+@Data
+public class VoClientAmountStatistics {
+    public Long clientId ;
+    public Double amount;
+    public Double money;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoIntakeAmountStatistics.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoIntakeAmountStatistics.java
new file mode 100644
index 0000000..508e4ae
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoIntakeAmountStatistics.java
@@ -0,0 +1,14 @@
+package com.dy.pipIrrGlobal.voSt;
+
+import lombok.Data;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/24 14:16
+ * @Description 浠ュ彇姘村彛缁熻婕忔崯
+ */
+@Data
+public class VoIntakeAmountStatistics {
+    public Long intakeId ;
+    public Double amount;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoIntakeLossStatistics.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoIntakeLossStatistics.java
new file mode 100644
index 0000000..72cda07
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoIntakeLossStatistics.java
@@ -0,0 +1,14 @@
+package com.dy.pipIrrGlobal.voSt;
+
+import lombok.Data;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/24 14:16
+ * @Description 浠ュ彇姘村彛缁熻婕忔崯
+ */
+@Data
+public class VoIntakeLossStatistics {
+    public Long intakeId ;
+    public Double amount;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmClientAmountDayMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmClientAmountDayMapper.xml
index 8c8f8ef..0be82af 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmClientAmountDayMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmClientAmountDayMapper.xml
@@ -227,4 +227,13 @@
       LIMIT ${(pageCurr-1)*pageSize}, ${pageSize}
     </if>
   </select>
+
+
+  <select id="statisticsByClient" resultType="com.dy.pipIrrGlobal.voSt.VoClientAmountStatistics">
+    select client_id, sum(amount) as amount, sum(money) as amount
+    from rm_client_amount_day
+    where id <![CDATA[>=]]> #{startId,jdbcType=BIGINT} and id <![CDATA[<]]> #{endId,jdbcType=BIGINT}
+    group by client_id
+  </select>
+
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmIntakeAmountDayMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmIntakeAmountDayMapper.xml
index f96ad0c..69b434b 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmIntakeAmountDayMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmIntakeAmountDayMapper.xml
@@ -155,4 +155,13 @@
       rtu_dt_last = #{rtuDtLast,jdbcType=TIMESTAMP}
     where id = #{id,jdbcType=BIGINT}
   </update>
+
+
+  <select id="statisticsByIntake" resultType="com.dy.pipIrrGlobal.voSt.VoIntakeAmountStatistics">
+    select intake_id, sum(amount) as amount
+    from rm_intake_amount_day
+    where id <![CDATA[>=]]> #{startId,jdbcType=BIGINT} and id <![CDATA[<]]> #{endId,jdbcType=BIGINT}
+    group by intake_id
+  </select>
+
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossLastMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossDayLastMapper.xml
similarity index 91%
rename from pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossLastMapper.xml
rename to pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossDayLastMapper.xml
index 5a99947..94c0e2c 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossLastMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossDayLastMapper.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.dy.pipIrrGlobal.daoRm.RmLossLastMapper">
-  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmLossLast">
+<mapper namespace="com.dy.pipIrrGlobal.daoRm.RmLossDayLastMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmLossDayLast">
     <!--@mbg.generated-->
-    <!--@Table rm_loss_last-->
+    <!--@Table rm_loss_day_last-->
     <id column="id" jdbcType="BIGINT" property="id" />
     <result column="last_history_id" jdbcType="BIGINT" property="lastHistoryId" />
     <result column="controller_id" jdbcType="BIGINT" property="controllerId" />
@@ -22,40 +22,40 @@
     <!--@mbg.generated-->
     select 
     <include refid="Base_Column_List" />
-    from rm_loss_last
+    from rm_loss_day_last
     where id = #{id,jdbcType=BIGINT}
   </select>
   <select id="selectByIntakeId" parameterType="java.lang.Long" resultMap="BaseResultMap">
     <!--@mbg.generated-->
     select
     <include refid="Base_Column_List" />
-    from rm_loss_last
+    from rm_loss_day_last
     where intake_id = #{intakeId,jdbcType=BIGINT}
   </select>
   <select id="selectByDate" parameterType="java.util.Date" resultMap="BaseResultMap">
     <!--@mbg.generated-->
     select
     <include refid="Base_Column_List" />
-    from rm_loss_last
+    from rm_loss_day_last
     where dt = #{dt,jdbcType=DATE}
   </select>
   <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
     <!--@mbg.generated-->
-    delete from rm_loss_last
+    delete from rm_loss_day_last
     where id = #{id,jdbcType=BIGINT}
   </delete>
-  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossLast">
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossDayLast">
     <!--@mbg.generated-->
-    insert into rm_loss_last (id, last_history_id, controller_id, 
+    insert into rm_loss_day_last (id, last_history_id, controller_id, 
       intake_id, rtu_addr, dt, dt_last, dt_rtu,
       loss_amount)
     values (#{id,jdbcType=BIGINT}, #{lastHistoryId,jdbcType=BIGINT}, #{controllerId,jdbcType=BIGINT}, 
       #{intakeId,jdbcType=BIGINT}, #{rtuAddr,jdbcType=VARCHAR}, #{dt,jdbcType=DATE}, #{dtLast,jdbcType=TIMESTAMP}, #{dtRtu,jdbcType=TIMESTAMP},
       #{lossAmount,jdbcType=DOUBLE})
   </insert>
-  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossLast">
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossDayLast">
     <!--@mbg.generated-->
-    insert into rm_loss_last
+    insert into rm_loss_day_last
     <trim prefix="(" suffix=")" suffixOverrides=",">
       <if test="id != null">
         id,
@@ -115,9 +115,9 @@
       </if>
     </trim>
   </insert>
-  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossLast">
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossDayLast">
     <!--@mbg.generated-->
-    update rm_loss_last
+    update rm_loss_day_last
     <set>
       <if test="lastHistoryId != null">
         last_history_id = #{lastHistoryId,jdbcType=BIGINT},
@@ -146,9 +146,9 @@
     </set>
     where id = #{id,jdbcType=BIGINT}
   </update>
-  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossLast">
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossDayLast">
     <!--@mbg.generated-->
-    update rm_loss_last
+    update rm_loss_day_last
     set last_history_id = #{lastHistoryId,jdbcType=BIGINT},
       controller_id = #{controllerId,jdbcType=BIGINT},
       intake_id = #{intakeId,jdbcType=BIGINT},
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossHistoryMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossDayMapper.xml
similarity index 86%
rename from pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossHistoryMapper.xml
rename to pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossDayMapper.xml
index 858ff67..384e86a 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossHistoryMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmLossDayMapper.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.dy.pipIrrGlobal.daoRm.RmLossHistoryMapper">
-  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmLossHistory">
+<mapper namespace="com.dy.pipIrrGlobal.daoRm.RmLossDayMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmLossDay">
     <!--@mbg.generated-->
-    <!--@Table rm_loss_history-->
+    <!--@Table rm_loss_day-->
     <id column="id" jdbcType="BIGINT" property="id" />
     <result column="controller_id" jdbcType="BIGINT" property="controllerId" />
     <result column="intake_id" jdbcType="BIGINT" property="intakeId" />
@@ -21,33 +21,33 @@
     <!--@mbg.generated-->
     select 
     <include refid="Base_Column_List" />
-    from rm_loss_history
+    from rm_loss_day
     where id = #{id,jdbcType=BIGINT}
   </select>
   <select id="selectByDate" parameterType="java.util.Date" resultMap="BaseResultMap">
     <!--@mbg.generated-->
     select
     <include refid="Base_Column_List" />
-    from rm_loss_history
+    from rm_loss_day
     where dt = #{dt,jdbcType=DATE}
   </select>
   <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
     <!--@mbg.generated-->
-    delete from rm_loss_history
+    delete from rm_loss_day
     where id = #{id,jdbcType=BIGINT}
   </delete>
-  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossHistory">
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossDay">
     <!--@mbg.generated-->
-    insert into rm_loss_history (id, controller_id, intake_id, 
+    insert into rm_loss_day (id, controller_id, intake_id,
       rtu_addr, dt, dt_last, dt_rtu, loss_amount
       )
     values (#{id,jdbcType=BIGINT}, #{controllerId,jdbcType=BIGINT}, #{intakeId,jdbcType=BIGINT}, 
       #{rtuAddr,jdbcType=VARCHAR}, #{dt,jdbcType=DATE}, #{dtLast,jdbcType=TIMESTAMP}, #{dtRtu,jdbcType=TIMESTAMP}, #{lossAmount,jdbcType=DOUBLE}
       )
   </insert>
-  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossHistory">
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossDay">
     <!--@mbg.generated-->
-    insert into rm_loss_history
+    insert into rm_loss_day
     <trim prefix="(" suffix=")" suffixOverrides=",">
       <if test="id != null">
         id,
@@ -101,9 +101,9 @@
       </if>
     </trim>
   </insert>
-  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossHistory">
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossDay">
     <!--@mbg.generated-->
-    update rm_loss_history
+    update rm_loss_day
     <set>
       <if test="controllerId != null">
         controller_id = #{controllerId,jdbcType=BIGINT},
@@ -129,9 +129,9 @@
     </set>
     where id = #{id,jdbcType=BIGINT}
   </update>
-  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossHistory">
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossDay">
     <!--@mbg.generated-->
-    update rm_loss_history
+    update rm_loss_day
     set controller_id = #{controllerId,jdbcType=BIGINT},
       intake_id = #{intakeId,jdbcType=BIGINT},
       rtu_addr = #{rtuAddr,jdbcType=VARCHAR},
@@ -141,4 +141,12 @@
       loss_amount = #{lossAmount,jdbcType=DOUBLE}
     where id = #{id,jdbcType=BIGINT}
   </update>
+
+  <select id="statisticsByIntake" resultType="com.dy.pipIrrGlobal.voSt.VoIntakeLossStatistics">
+    select intake_id, sum(loss_amount) as amount
+    from rm_loss_day
+    where id <![CDATA[>=]]> #{startId,jdbcType=BIGINT} and id <![CDATA[<]]> #{endId,jdbcType=BIGINT}
+    group by intake_id
+  </select>
+
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountMonthMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountMonthMapper.xml
new file mode 100644
index 0000000..f1f8237
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountMonthMapper.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dy.pipIrrGlobal.daoSt.StClientAmountMonthMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoSt.StClientAmountMonth">
+    <!--@mbg.generated-->
+    <!--@Table st_client_amount_month-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="client_id" jdbcType="BIGINT" property="clientId" />
+    <result column="year" jdbcType="INTEGER" property="year" />
+    <result column="month" jdbcType="INTEGER" property="month" />
+    <result column="amount" jdbcType="FLOAT" property="amount" />
+    <result column="money" jdbcType="FLOAT" property="money" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, client_id, `year`, `month`, amount, money
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from st_client_amount_month
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from st_client_amount_month
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSt.StClientAmountMonth">
+    <!--@mbg.generated-->
+    insert into st_client_amount_month (id, client_id, `year`, 
+      `month`, amount, money)
+    values (#{id,jdbcType=BIGINT}, #{clientId,jdbcType=BIGINT}, #{year,jdbcType=INTEGER}, 
+      #{month,jdbcType=INTEGER}, #{amount,jdbcType=FLOAT}, #{money,jdbcType=FLOAT})
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSt.StClientAmountMonth">
+    <!--@mbg.generated-->
+    insert into st_client_amount_month
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="clientId != null">
+        client_id,
+      </if>
+      <if test="year != null">
+        `year`,
+      </if>
+      <if test="month != null">
+        `month`,
+      </if>
+      <if test="amount != null">
+        amount,
+      </if>
+      <if test="money != null">
+        money,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="clientId != null">
+        #{clientId,jdbcType=BIGINT},
+      </if>
+      <if test="year != null">
+        #{year,jdbcType=INTEGER},
+      </if>
+      <if test="month != null">
+        #{month,jdbcType=INTEGER},
+      </if>
+      <if test="amount != null">
+        #{amount,jdbcType=FLOAT},
+      </if>
+      <if test="money != null">
+        #{money,jdbcType=FLOAT},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoSt.StClientAmountMonth">
+    <!--@mbg.generated-->
+    update st_client_amount_month
+    <set>
+      <if test="clientId != null">
+        client_id = #{clientId,jdbcType=BIGINT},
+      </if>
+      <if test="year != null">
+        `year` = #{year,jdbcType=INTEGER},
+      </if>
+      <if test="month != null">
+        `month` = #{month,jdbcType=INTEGER},
+      </if>
+      <if test="amount != null">
+        amount = #{amount,jdbcType=FLOAT},
+      </if>
+      <if test="money != null">
+        money = #{money,jdbcType=FLOAT},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSt.StClientAmountMonth">
+    <!--@mbg.generated-->
+    update st_client_amount_month
+    set client_id = #{clientId,jdbcType=BIGINT},
+      `year` = #{year,jdbcType=INTEGER},
+      `month` = #{month,jdbcType=INTEGER},
+      amount = #{amount,jdbcType=FLOAT},
+      money = #{money,jdbcType=FLOAT}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+
+
+  <select id="statisticsByClient" resultType="com.dy.pipIrrGlobal.voSt.VoClientAmountStatistics">
+    select client_id, sum(amount) as amount, sum(money) as money
+    from st_client_amount_month
+    where `year` = #{year,jdbcType=INTEGER}
+    group by client_id
+  </select>
+
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountYearMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountYearMapper.xml
new file mode 100644
index 0000000..c3abc50
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StClientAmountYearMapper.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dy.pipIrrGlobal.daoSt.StClientAmountYearMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoSt.StClientAmountYear">
+    <!--@mbg.generated-->
+    <!--@Table st_client_amount_year-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="client_id" jdbcType="BIGINT" property="clientId" />
+    <result column="year" jdbcType="INTEGER" property="year" />
+    <result column="amount" jdbcType="FLOAT" property="amount" />
+    <result column="money" jdbcType="FLOAT" property="money" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, client_id, `year`, amount, money
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from st_client_amount_year
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from st_client_amount_year
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSt.StClientAmountYear">
+    <!--@mbg.generated-->
+    insert into st_client_amount_year (id, client_id, `year`, 
+      amount, money)
+    values (#{id,jdbcType=BIGINT}, #{clientId,jdbcType=BIGINT}, #{year,jdbcType=INTEGER}, 
+      #{amount,jdbcType=FLOAT}, #{money,jdbcType=FLOAT})
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSt.StClientAmountYear">
+    <!--@mbg.generated-->
+    insert into st_client_amount_year
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="clientId != null">
+        client_id,
+      </if>
+      <if test="year != null">
+        `year`,
+      </if>
+      <if test="amount != null">
+        amount,
+      </if>
+      <if test="money != null">
+        money,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="clientId != null">
+        #{clientId,jdbcType=BIGINT},
+      </if>
+      <if test="year != null">
+        #{year,jdbcType=INTEGER},
+      </if>
+      <if test="amount != null">
+        #{amount,jdbcType=FLOAT},
+      </if>
+      <if test="money != null">
+        #{money,jdbcType=FLOAT},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoSt.StClientAmountYear">
+    <!--@mbg.generated-->
+    update st_client_amount_year
+    <set>
+      <if test="clientId != null">
+        client_id = #{clientId,jdbcType=BIGINT},
+      </if>
+      <if test="year != null">
+        `year` = #{year,jdbcType=INTEGER},
+      </if>
+      <if test="amount != null">
+        amount = #{amount,jdbcType=FLOAT},
+      </if>
+      <if test="money != null">
+        money = #{money,jdbcType=FLOAT},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSt.StClientAmountYear">
+    <!--@mbg.generated-->
+    update st_client_amount_year
+    set client_id = #{clientId,jdbcType=BIGINT},
+      `year` = #{year,jdbcType=INTEGER},
+      amount = #{amount,jdbcType=FLOAT},
+      money = #{money,jdbcType=FLOAT}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StIntakeAmountMonthMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StIntakeAmountMonthMapper.xml
new file mode 100644
index 0000000..92ae711
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StIntakeAmountMonthMapper.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dy.pipIrrGlobal.daoSt.StIntakeAmountMonthMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoSt.StIntakeAmountMonth">
+    <!--@mbg.generated-->
+    <!--@Table st_intake_amount_month-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="intake_id" jdbcType="BIGINT" property="intakeId" />
+    <result column="year" jdbcType="INTEGER" property="year" />
+    <result column="month" jdbcType="INTEGER" property="month" />
+    <result column="amount" jdbcType="FLOAT" property="amount" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, intake_id, `year`, `month`, amount
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from st_intake_amount_month
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from st_intake_amount_month
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSt.StIntakeAmountMonth">
+    <!--@mbg.generated-->
+    insert into st_intake_amount_month (id, intake_id, `year`, 
+      `month`, amount)
+    values (#{id,jdbcType=BIGINT}, #{intakeId,jdbcType=BIGINT}, #{year,jdbcType=INTEGER}, 
+      #{month,jdbcType=INTEGER}, #{amount,jdbcType=FLOAT})
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSt.StIntakeAmountMonth">
+    <!--@mbg.generated-->
+    insert into st_intake_amount_month
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="intakeId != null">
+        intake_id,
+      </if>
+      <if test="year != null">
+        `year`,
+      </if>
+      <if test="month != null">
+        `month`,
+      </if>
+      <if test="amount != null">
+        amount,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="intakeId != null">
+        #{intakeId,jdbcType=BIGINT},
+      </if>
+      <if test="year != null">
+        #{year,jdbcType=INTEGER},
+      </if>
+      <if test="month != null">
+        #{month,jdbcType=INTEGER},
+      </if>
+      <if test="amount != null">
+        #{amount,jdbcType=FLOAT},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoSt.StIntakeAmountMonth">
+    <!--@mbg.generated-->
+    update st_intake_amount_month
+    <set>
+      <if test="intakeId != null">
+        intake_id = #{intakeId,jdbcType=BIGINT},
+      </if>
+      <if test="year != null">
+        `year` = #{year,jdbcType=INTEGER},
+      </if>
+      <if test="month != null">
+        `month` = #{month,jdbcType=INTEGER},
+      </if>
+      <if test="amount != null">
+        amount = #{amount,jdbcType=FLOAT},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSt.StIntakeAmountMonth">
+    <!--@mbg.generated-->
+    update st_intake_amount_month
+    set intake_id = #{intakeId,jdbcType=BIGINT},
+      `year` = #{year,jdbcType=INTEGER},
+      `month` = #{month,jdbcType=INTEGER},
+      amount = #{amount,jdbcType=FLOAT}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+
+  <select id="statisticsByIntake" resultType="com.dy.pipIrrGlobal.voSt.VoIntakeAmountStatistics">
+    select intake_id, sum(amount) as amount
+    from st_intake_amount_month
+    where `year` = #{year,jdbcType=INTEGER}
+    group by intake_id
+  </select>
+
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StIntakeAmountYearMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StIntakeAmountYearMapper.xml
new file mode 100644
index 0000000..d76e2f0
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StIntakeAmountYearMapper.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dy.pipIrrGlobal.daoSt.StIntakeAmountYearMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoSt.StIntakeAmountYear">
+    <!--@mbg.generated-->
+    <!--@Table st_intake_amount_year-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="intake_id" jdbcType="BIGINT" property="intakeId" />
+    <result column="year" jdbcType="INTEGER" property="year" />
+    <result column="amount" jdbcType="FLOAT" property="amount" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, intake_id, `year`, amount
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from st_intake_amount_year
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from st_intake_amount_year
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSt.StIntakeAmountYear">
+    <!--@mbg.generated-->
+    insert into st_intake_amount_year (id, intake_id, `year`, 
+      amount)
+    values (#{id,jdbcType=BIGINT}, #{intakeId,jdbcType=BIGINT}, #{year,jdbcType=INTEGER}, 
+      #{amount,jdbcType=FLOAT})
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSt.StIntakeAmountYear">
+    <!--@mbg.generated-->
+    insert into st_intake_amount_year
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="intakeId != null">
+        intake_id,
+      </if>
+      <if test="year != null">
+        `year`,
+      </if>
+      <if test="amount != null">
+        amount,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="intakeId != null">
+        #{intakeId,jdbcType=BIGINT},
+      </if>
+      <if test="year != null">
+        #{year,jdbcType=INTEGER},
+      </if>
+      <if test="amount != null">
+        #{amount,jdbcType=FLOAT},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoSt.StIntakeAmountYear">
+    <!--@mbg.generated-->
+    update st_intake_amount_year
+    <set>
+      <if test="intakeId != null">
+        intake_id = #{intakeId,jdbcType=BIGINT},
+      </if>
+      <if test="year != null">
+        `year` = #{year,jdbcType=INTEGER},
+      </if>
+      <if test="amount != null">
+        amount = #{amount,jdbcType=FLOAT},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSt.StIntakeAmountYear">
+    <!--@mbg.generated-->
+    update st_intake_amount_year
+    set intake_id = #{intakeId,jdbcType=BIGINT},
+      `year` = #{year,jdbcType=INTEGER},
+      amount = #{amount,jdbcType=FLOAT}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StLossMonthMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StLossMonthMapper.xml
new file mode 100644
index 0000000..4783b47
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StLossMonthMapper.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dy.pipIrrGlobal.daoSt.StLossMonthMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoSt.StLossMonth">
+    <!--@mbg.generated-->
+    <!--@Table st_loss_month-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="intake_id" jdbcType="BIGINT" property="intakeId" />
+    <result column="year" jdbcType="INTEGER" property="year" />
+    <result column="month" jdbcType="INTEGER" property="month" />
+    <result column="amount" jdbcType="FLOAT" property="amount" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, intake_id, `year`, `month`, amount
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from st_loss_month
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from st_loss_month
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSt.StLossMonth">
+    <!--@mbg.generated-->
+    insert into st_loss_month (id, intake_id, `year`, 
+      `month`, amount)
+    values (#{id,jdbcType=BIGINT}, #{intakeId,jdbcType=BIGINT}, #{year,jdbcType=INTEGER}, 
+      #{month,jdbcType=INTEGER}, #{amount,jdbcType=FLOAT})
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSt.StLossMonth">
+    <!--@mbg.generated-->
+    insert into st_loss_month
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="intakeId != null">
+        intake_id,
+      </if>
+      <if test="year != null">
+        `year`,
+      </if>
+      <if test="month != null">
+        `month`,
+      </if>
+      <if test="amount != null">
+        amount,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="intakeId != null">
+        #{intakeId,jdbcType=BIGINT},
+      </if>
+      <if test="year != null">
+        #{year,jdbcType=INTEGER},
+      </if>
+      <if test="month != null">
+        #{month,jdbcType=INTEGER},
+      </if>
+      <if test="amount != null">
+        #{amount,jdbcType=FLOAT},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoSt.StLossMonth">
+    <!--@mbg.generated-->
+    update st_loss_month
+    <set>
+      <if test="intakeId != null">
+        intake_id = #{intakeId,jdbcType=BIGINT},
+      </if>
+      <if test="year != null">
+        `year` = #{year,jdbcType=INTEGER},
+      </if>
+      <if test="month != null">
+        `month` = #{month,jdbcType=INTEGER},
+      </if>
+      <if test="amount != null">
+        amount = #{amount,jdbcType=FLOAT},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSt.StLossMonth">
+    <!--@mbg.generated-->
+    update st_loss_month
+    set intake_id = #{intakeId,jdbcType=BIGINT},
+      `year` = #{year,jdbcType=INTEGER},
+      `month` = #{month,jdbcType=INTEGER},
+      amount = #{amount,jdbcType=FLOAT}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+
+
+  <select id="statisticsByIntake" resultType="com.dy.pipIrrGlobal.voSt.VoIntakeLossStatistics">
+    select intake_id, sum(amount) as amount
+    from st_loss_month
+    where `year` = #{year,jdbcType=INTEGER}
+    group by intake_id
+  </select>
+
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StLossYearMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StLossYearMapper.xml
new file mode 100644
index 0000000..3013771
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/StLossYearMapper.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dy.pipIrrGlobal.daoSt.StLossYearMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoSt.StLossYear">
+    <!--@mbg.generated-->
+    <!--@Table st_loss_year-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="intake_id" jdbcType="BIGINT" property="intakeId" />
+    <result column="year" jdbcType="INTEGER" property="year" />
+    <result column="amount" jdbcType="FLOAT" property="amount" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, intake_id, `year`, amount
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from st_loss_year
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from st_loss_year
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSt.StLossYear">
+    <!--@mbg.generated-->
+    insert into st_loss_year (id, intake_id, `year`, amount)
+    values (#{id,jdbcType=BIGINT}, #{intakeId,jdbcType=BIGINT}, #{year,jdbcType=INTEGER},
+    #{amount,jdbcType=FLOAT})
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSt.StLossYear">
+    <!--@mbg.generated-->
+    insert into st_loss_year
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="intakeId != null">
+        intake_id,
+      </if>
+      <if test="year != null">
+        `year`,
+      </if>
+      <if test="amount != null">
+        amount,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="intakeId != null">
+        #{intakeId,jdbcType=BIGINT},
+      </if>
+      <if test="year != null">
+        #{year,jdbcType=INTEGER},
+      </if>
+      <if test="amount != null">
+        #{amount,jdbcType=FLOAT},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoSt.StLossYear">
+    <!--@mbg.generated-->
+    update st_loss_year
+    <set>
+      <if test="intakeId != null">
+        intake_id = #{intakeId,jdbcType=BIGINT},
+      </if>
+      <if test="year != null">
+        `year` = #{year,jdbcType=INTEGER},
+      </if>
+      <if test="amount != null">
+        amount = #{amount,jdbcType=FLOAT},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSt.StLossYear">
+    <!--@mbg.generated-->
+    update st_loss_year
+    set intake_id = #{intakeId,jdbcType=BIGINT},
+    `year` = #{year,jdbcType=INTEGER},
+    amount = #{amount,jdbcType=FLOAT}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java
index 847d2b8..97bada3 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java
@@ -1,14 +1,11 @@
 package com.dy.rtuMw.server.rtuData.dbSv;
 
 import com.dy.common.util.NumUtil;
-import com.dy.common.webUtil.BaseResponseUtils;
-import com.dy.pipIrrGlobal.daoBa.BaClientMapper;
 import com.dy.pipIrrGlobal.daoPr.PrControllerMapper;
 import com.dy.pipIrrGlobal.daoPr.PrControllerTrampMapper;
 import com.dy.pipIrrGlobal.daoRm.*;
 import com.dy.pipIrrGlobal.daoSe.SeClientCardMapper;
 import com.dy.pipIrrGlobal.daoSe.SeVirtualCardMapper;
-import com.dy.pipIrrGlobal.pojoBa.BaClient;
 import com.dy.pipIrrGlobal.pojoPr.PrController;
 import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp;
 import com.dy.pipIrrGlobal.pojoRm.*;
@@ -58,9 +55,9 @@
     @Autowired
     private RmClientAmountDayMapper rmClientAmountDayMapperDao ;//鍐滄埛鏃ョ敤姘撮噺缁熻鏁版嵁DAO
     @Autowired
-    private RmLossLastMapper rmLossLastMapperDao ;//鎺у埗鍣ㄦ紡鎹熸按閲忕粺璁℃渶鏂版暟鎹瓺AO
+    private RmLossDayLastMapper rmLossLastMapperDao ;//鎺у埗鍣ㄦ紡鎹熸按閲忕粺璁℃渶鏂版暟鎹瓺AO
     @Autowired
-    private RmLossHistoryMapper rmLossHistoryMapperDao ;//鎺у埗鍣ㄦ紡鎹熸按閲忕粺璁″巻鍙叉暟鎹瓺AO
+    private RmLossDayMapper rmLossHistoryMapperDao ;//鎺у埗鍣ㄦ紡鎹熸按閲忕粺璁″巻鍙叉暟鎹瓺AO
     @Autowired
     private RmCommandHistoryMapper rmCommandHistoryDao ;//杩滅▼鍛戒护鏃ュ織鐩稿叧
     @Autowired
@@ -559,8 +556,8 @@
      * @param intakeId
      * @return
      */
-    public RmLossLast getRmLossLast(Long intakeId){
-        List<RmLossLast> list = rmLossLastMapperDao.selectByIntakeId(intakeId) ;
+    public RmLossDayLast getRmLossLast(Long intakeId){
+        List<RmLossDayLast> list = rmLossLastMapperDao.selectByIntakeId(intakeId) ;
         if(list != null && list.size() > 0){
             return list.get(0) ;
         }
@@ -571,7 +568,7 @@
      * @param po
      */
     @Transactional(rollbackFor = Exception.class)
-    public void saveRmLossLast(RmLossLast po){
+    public void saveRmLossLast(RmLossDayLast po){
         this.rmLossLastMapperDao.insert(po) ;
     }
   /**
@@ -579,7 +576,7 @@
      * @param po
      */
     @Transactional(rollbackFor = Exception.class)
-    public void saveRmLossHistory(RmLossHistory po){
+    public void saveRmLossHistory(RmLossDay po){
         this.rmLossHistoryMapperDao.insert(po) ;
     }
     /**
@@ -587,7 +584,7 @@
      * @param po
      */
     @Transactional(rollbackFor = Exception.class)
-    public void updateRmLossLast(RmLossLast po){
+    public void updateRmLossLast(RmLossDayLast po){
         this.rmLossLastMapperDao.updateByPrimaryKey(po) ;
     }
     /**
@@ -595,7 +592,7 @@
      * @param po
      */
     @Transactional(rollbackFor = Exception.class)
-    public void updateRmLossHistory(RmLossHistory po){
+    public void updateRmLossHistory(RmLossDay po){
         this.rmLossHistoryMapperDao.updateByPrimaryKey(po) ;
     }
 
@@ -604,7 +601,7 @@
      * @param id
      * @return
      */
-    public RmLossHistory getRmLossHistory(Long id){
+    public RmLossDay getRmLossHistory(Long id){
         return rmLossHistoryMapperDao.selectByPrimaryKey(id) ;
     }
 
@@ -614,8 +611,8 @@
      * @param dt
      * @return
      */
-    public RmLossLast getRmLossLastByDate(Date dt){
-        List<RmLossLast> list = rmLossLastMapperDao.selectByDate(dt) ;
+    public RmLossDayLast getRmLossLastByDate(Date dt){
+        List<RmLossDayLast> list = rmLossLastMapperDao.selectByDate(dt) ;
         if(list != null && list.size() > 0){
             return list.get(0) ;
         }
@@ -627,8 +624,8 @@
      * @param dt
      * @return
      */
-    public RmLossHistory getRmLossHistoryByDate(Date dt){
-        List<RmLossHistory> list = rmLossHistoryMapperDao.selectByDate(dt) ;
+    public RmLossDay getRmLossHistoryByDate(Date dt){
+        List<RmLossDay> list = rmLossHistoryMapperDao.selectByDate(dt) ;
         if(list != null && list.size() > 0){
             return list.get(0) ;
         }
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealLoss.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealLoss.java
index 225fc0c..fbefd1c 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealLoss.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealLoss.java
@@ -1,7 +1,7 @@
 package com.dy.rtuMw.server.rtuData.p206V1_0_0;
 
-import com.dy.pipIrrGlobal.pojoRm.RmLossHistory;
-import com.dy.pipIrrGlobal.pojoRm.RmLossLast;
+import com.dy.pipIrrGlobal.pojoRm.RmLossDay;
+import com.dy.pipIrrGlobal.pojoRm.RmLossDayLast;
 import com.dy.rtuMw.server.rtuData.TaskSurpport;
 import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
 import com.dy.common.mw.protocol.Data;
@@ -56,7 +56,7 @@
      * @param dataCdC0Vo 寮�闃�涓婃姤鏁版嵁瀵硅薄
      */
     private void doDeal(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCdC0Vo dataCdC0Vo) throws Exception {
-        RmLossLast poLast = sv.getRmLossLast(controller.getIntakeId());
+        RmLossDayLast poLast = sv.getRmLossLast(controller.getIntakeId());
         if (poLast == null) {
             //鏁版嵁搴撲腑涓嶅瓨鍦ㄨ鍙栨按鍙g殑婕忔崯鏁版嵁
             //棣栧厛鐢熸垚鏈�鏂版暟鎹強鍘嗗彶鏁版嵁锛屽苟鍏堜繚瀛�
@@ -67,7 +67,7 @@
             if(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt).equals(poLast.dtRtu)){
                 //鏃堕棿涓�鑷达紝閲嶅涓婃姤鏁版嵁锛屼笉杩涜浠讳綍澶勭悊
             }else{
-                RmLossHistory poHistory = null ;
+                RmLossDay poHistory = null ;
                 if(poLast.lastHistoryId != null){
                     poHistory = sv.getRmLossHistory(poLast.lastHistoryId) ;
                 }
@@ -107,8 +107,8 @@
      * @return
      * @throws Exception
      */
-    private RmLossLast newRmLossLast(PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCdC0Vo cdData)throws Exception {
-        RmLossLast po = new RmLossLast() ;
+    private RmLossDayLast newRmLossLast(PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCdC0Vo cdData)throws Exception {
+        RmLossDayLast po = new RmLossDayLast() ;
         po.controllerId = controller==null?null:controller.getId();
         po.intakeId = controller==null?null:controller.getIntakeId();
         po.rtuAddr = rtuAddr;
@@ -125,8 +125,8 @@
      * @return
      * @throws Exception
      */
-    private RmLossHistory newRmLossHistory(PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCdC0Vo cdData)throws Exception {
-        RmLossHistory po = new RmLossHistory() ;
+    private RmLossDay newRmLossHistory(PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCdC0Vo cdData)throws Exception {
+        RmLossDay po = new RmLossDay() ;
         po.controllerId = controller==null?null:controller.getId();
         po.intakeId = controller==null?null:controller.getIntakeId();
         po.rtuAddr = rtuAddr;
@@ -146,8 +146,8 @@
      * @throws Exception
      * @return RmLossHistory
      */
-    private RmLossHistory newAndSaveHistoryDataDeal(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCdC0Vo dataCdC0Vo, RmLossLast poLast)throws Exception {
-        RmLossHistory poHistory = this.newRmLossHistory(controller, rtuAddr, dV1_0_1, dataCdC0Vo) ;
+    private RmLossDay newAndSaveHistoryDataDeal(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCdC0Vo dataCdC0Vo, RmLossDayLast poLast)throws Exception {
+        RmLossDay poHistory = this.newRmLossHistory(controller, rtuAddr, dV1_0_1, dataCdC0Vo) ;
         sv.saveRmLossHistory(poHistory);
         //鐢辨渶鏂版暟鎹寔鏈夊巻鍙叉暟鎹腑鐨勬渶鏂拌褰旾D锛屼互鏂逛究蹇�熸煡璇�
         poLast.lastHistoryId = poHistory == null ? null: poHistory.id ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StLossSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StLossSv.java
deleted file mode 100644
index 9b6ab74..0000000
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StLossSv.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.dy.pipIrrStatistics.listeners;
-
-/**
- * @Author: liurunyu
- * @Date: 2024/7/24 11:24
- * @Description
- */
-public class StLossSv {
-}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StatisticsJob.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StatisticsJob.java
deleted file mode 100644
index a7ecb8d..0000000
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StatisticsJob.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package com.dy.pipIrrStatistics.listeners;
-
-import com.dy.common.schedulerTask.TaskJob;
-import com.dy.common.schedulerTask.Test;
-import com.dy.common.springUtil.SpringContextUtil;
-import com.dy.common.util.DateTime;
-import com.dy.common.util.IDLongGenerator;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-/**
- * @Author: liurunyu
- * @Date: 2024/7/22 16:41
- * @Description
- */
-public class StatisticsJob extends TaskJob {
-
-    private static Logger log = LogManager.getLogger(Test.class.getName()) ;
-
-    private StLoss stLoss ;
-
-    private StIntake stIntake ;
-
-    private StClient stClient ;
-
-    private String statisticsYyyy_mm;
-    private Long statisticsStartId ;
-    private Long statisticsEndId ;
-
-    @Override
-    public void execute(JobExecutionContext ctx) throws JobExecutionException {
-        stLoss = SpringContextUtil.getBean(StLoss.class);
-        stIntake = SpringContextUtil.getBean(StIntake.class);
-        stClient = SpringContextUtil.getBean(StClient.class);
-        if(stLoss != null && stIntake != null && stClient != null){
-            int[] ymd = DateTime.yyyy_MM_dd_2_ymdGroup(DateTime.yyyy_MM_dd()) ;
-            if(ymd[2] == 1){
-                //缁熻涓婁釜鏈堢殑
-                statisticsYyyy_mm = DateTime.lastMonth_ym() ;//缁熻鏈�
-                int lastYear = Integer.parseInt(statisticsYyyy_mm.substring(0, 4)) ;
-                int lastMonth = Integer.parseInt(statisticsYyyy_mm.substring(5, 7)) ;
-                statisticsStartId = IDLongGenerator.generateOneDayStartId(lastYear, lastMonth, 1) ;
-                statisticsEndId = IDLongGenerator.generateOneDayEndId(lastYear, lastMonth, 31) ;
-            }else{
-                //缁熻鏈湀鐨�
-                statisticsYyyy_mm = ymd[0] + "-" + ymd[1] ;//缁熻鏈�
-                statisticsStartId = IDLongGenerator.generateOneDayStartId(ymd[0], ymd[1], 1) ;
-                statisticsEndId = IDLongGenerator.generateOneDayEndId(ymd[0], ymd[1], 31) ;
-            }
-            doStatistics() ;
-        }else{
-            log.error("鏈兘浠嶴pring瀹瑰櫒涓緱鍒扮粺璁ean");
-        }
-    }
-
-    /**
-     * 缁熻
-     */
-    private void doStatistics(){
-        stLoss.statistics(statisticsYyyy_mm, statisticsStartId, statisticsEndId) ;
-        stIntake.statistics(statisticsYyyy_mm, statisticsStartId, statisticsEndId) ;
-        stClient.statistics(statisticsYyyy_mm, statisticsStartId, statisticsEndId) ;
-    }
-}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StClient.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StClient.java
similarity index 66%
rename from pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StClient.java
rename to pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StClient.java
index 7a917ce..9dd32eb 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StClient.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StClient.java
@@ -1,4 +1,4 @@
-package com.dy.pipIrrStatistics.listeners;
+package com.dy.pipIrrStatistics.statistics;
 
 import com.dy.pipIrrGlobal.daoRm.RmClientAmountDayMapper;
 import org.apache.logging.log4j.LogManager;
@@ -16,17 +16,21 @@
 
     private static Logger log = LogManager.getLogger(StClient.class.getName()) ;
 
-    @Autowired
-    protected RmClientAmountDayMapper rmClientAmountDayDao ;
 
-    private String statisticsYyyy_mm;
+    @Autowired
+    protected StClientSv sv ;
+
+    private Integer statisticsYear;
+    private Integer statisticsMonth;
     private Long statisticsStartId ;
     private Long statisticsEndId ;
 
-    protected void statistics(String statisticsYyyy_mm,
+    protected void statistics(Integer statisticsYear,
+                              Integer statisticsMonth,
                               Long statisticsStartId,
                               Long statisticsEndId){
-        this.statisticsYyyy_mm = statisticsYyyy_mm ;
+        this.statisticsYear = statisticsYear ;
+        this.statisticsMonth = statisticsMonth ;
         this.statisticsStartId = statisticsStartId ;
         this.statisticsEndId = statisticsEndId ;
         this.statisticsMonth() ;
@@ -37,14 +41,13 @@
      * 鏈堢粺璁�---鍐滄埛
      */
     private void statisticsMonth(){
-        log.info(statisticsYyyy_mm + "  " + statisticsStartId + "  " + statisticsEndId);
-        log.info(rmClientAmountDayDao.toString());
+        sv.statisticsMonth(statisticsYear, statisticsMonth, statisticsStartId, statisticsEndId);
     }
 
     /**
      * 骞寸粺璁�---鍐滄埛
      */
     private void statisticsYear(){
-
+        sv.statisticsYear(statisticsYear);
     }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StClientSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StClientSv.java
new file mode 100644
index 0000000..e453ab8
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StClientSv.java
@@ -0,0 +1,66 @@
+package com.dy.pipIrrStatistics.statistics;
+
+import com.dy.pipIrrGlobal.daoRm.RmClientAmountDayMapper;
+import com.dy.pipIrrGlobal.daoSt.StClientAmountMonthMapper;
+import com.dy.pipIrrGlobal.daoSt.StClientAmountYearMapper;
+import com.dy.pipIrrGlobal.pojoSt.StClientAmountMonth;
+import com.dy.pipIrrGlobal.pojoSt.StClientAmountYear;
+import com.dy.pipIrrGlobal.voSt.VoClientAmountStatistics;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/24 16:28
+ * @Description
+ */
+@Component
+public class StClientSv {
+
+    @Autowired
+    protected RmClientAmountDayMapper rmClientAmountDayDao;
+
+    @Autowired
+    protected StClientAmountMonthMapper stClientAmountMonthDao ;
+
+    @Autowired
+    protected StClientAmountYearMapper stClientAmountYearDao ;
+
+    /**
+     * 鏈堢粺璁�---婕忔崯
+     */
+    @Transactional
+    protected void statisticsMonth(Integer statisticsYear, Integer statisticsMonth, Long statisticsStartId, Long statisticsEndId){
+        List<VoClientAmountStatistics> list = rmClientAmountDayDao.statisticsByClient(statisticsStartId, statisticsEndId) ;
+        if(list != null && list.size() > 0){
+            for(VoClientAmountStatistics vo : list){
+                StClientAmountMonth po = new StClientAmountMonth() ;
+                po.clientId = vo.clientId ;
+                po.year = statisticsYear ;
+                po.month = statisticsMonth ;
+                po.amount = vo.amount;
+                stClientAmountMonthDao.insert(po) ;
+            }
+        }
+    }
+
+    /**
+     * 骞寸粺璁�---婕忔崯
+     */
+    @Transactional
+    protected void statisticsYear(Integer statisticsYear){
+        List<VoClientAmountStatistics> list = stClientAmountMonthDao.statisticsByClient(statisticsYear) ;
+        if(list != null && list.size() > 0){
+            for(VoClientAmountStatistics vo : list){
+                StClientAmountYear po = new StClientAmountYear() ;
+                po.clientId = vo.clientId ;
+                po.year = statisticsYear ;
+                po.amount = vo.amount;
+                stClientAmountYearDao.insert(po) ;
+            }
+        }
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StIntake.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StIntake.java
similarity index 66%
rename from pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StIntake.java
rename to pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StIntake.java
index 1544c52..2d644bd 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StIntake.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StIntake.java
@@ -1,4 +1,4 @@
-package com.dy.pipIrrStatistics.listeners;
+package com.dy.pipIrrStatistics.statistics;
 
 import com.dy.pipIrrGlobal.daoRm.RmIntakeAmountDayMapper;
 import org.apache.logging.log4j.LogManager;
@@ -17,16 +17,19 @@
     private static Logger log = LogManager.getLogger(StIntake.class.getName()) ;
 
     @Autowired
-    protected RmIntakeAmountDayMapper rmIntakeAmountDayDao ;
+    protected StIntakeSv sv ;
 
-    private String statisticsYyyy_mm;
+    private Integer statisticsYear;
+    private Integer statisticsMonth;
     private Long statisticsStartId ;
     private Long statisticsEndId ;
 
-    protected void statistics(String statisticsYyyy_mm,
+    protected void statistics(Integer statisticsYear,
+                              Integer statisticsMonth,
                               Long statisticsStartId,
                               Long statisticsEndId){
-        this.statisticsYyyy_mm = statisticsYyyy_mm ;
+        this.statisticsYear = statisticsYear ;
+        this.statisticsMonth = statisticsMonth ;
         this.statisticsStartId = statisticsStartId ;
         this.statisticsEndId = statisticsEndId ;
         this.statisticsMonth() ;
@@ -37,14 +40,13 @@
      * 鏈堢粺璁�---鍙栨按鍙�
      */
     private void statisticsMonth(){
-        log.info(statisticsYyyy_mm + "  " + statisticsStartId + "  " + statisticsEndId);
-        log.info(rmIntakeAmountDayDao.toString());
+        sv.statisticsMonth(statisticsYear, statisticsMonth, statisticsStartId, statisticsEndId);
     }
 
     /**
      * 骞寸粺璁�---鍙栨按鍙�
      */
     private void statisticsYear(){
-
+        sv.statisticsYear(statisticsYear);
     }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StIntakeSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StIntakeSv.java
new file mode 100644
index 0000000..7118779
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StIntakeSv.java
@@ -0,0 +1,66 @@
+package com.dy.pipIrrStatistics.statistics;
+
+import com.dy.pipIrrGlobal.daoRm.RmIntakeAmountDayMapper;
+import com.dy.pipIrrGlobal.daoSt.StIntakeAmountMonthMapper;
+import com.dy.pipIrrGlobal.daoSt.StIntakeAmountYearMapper;
+import com.dy.pipIrrGlobal.pojoSt.StIntakeAmountMonth;
+import com.dy.pipIrrGlobal.pojoSt.StIntakeAmountYear;
+import com.dy.pipIrrGlobal.voSt.VoIntakeAmountStatistics;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/24 16:28
+ * @Description
+ */
+@Component
+public class StIntakeSv {
+
+    @Autowired
+    protected RmIntakeAmountDayMapper rmIntakeAmountDayDao;
+
+    @Autowired
+    protected StIntakeAmountMonthMapper stIntakeAmountMonthDao ;
+
+    @Autowired
+    protected StIntakeAmountYearMapper stIntakeAmountYearDao ;
+
+    /**
+     * 鏈堢粺璁�---婕忔崯
+     */
+    @Transactional
+    protected void statisticsMonth(Integer statisticsYear, Integer statisticsMonth, Long statisticsStartId, Long statisticsEndId){
+        List<VoIntakeAmountStatistics> list = rmIntakeAmountDayDao.statisticsByIntake(statisticsStartId, statisticsEndId) ;
+        if(list != null && list.size() > 0){
+            for(VoIntakeAmountStatistics vo : list){
+                StIntakeAmountMonth po = new StIntakeAmountMonth() ;
+                po.intakeId = vo.intakeId ;
+                po.year = statisticsYear ;
+                po.month = statisticsMonth ;
+                po.amount = vo.amount;
+                stIntakeAmountMonthDao.insert(po) ;
+            }
+        }
+    }
+
+    /**
+     * 骞寸粺璁�---婕忔崯
+     */
+    @Transactional
+    protected void statisticsYear(Integer statisticsYear){
+        List<VoIntakeAmountStatistics> list = stIntakeAmountMonthDao.statisticsByIntake(statisticsYear) ;
+        if(list != null && list.size() > 0){
+            for(VoIntakeAmountStatistics vo : list){
+                StIntakeAmountYear po = new StIntakeAmountYear() ;
+                po.intakeId = vo.intakeId ;
+                po.year = statisticsYear ;
+                po.amount = vo.amount;
+                stIntakeAmountYearDao.insert(po) ;
+            }
+        }
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StLoss.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StLoss.java
similarity index 65%
rename from pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StLoss.java
rename to pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StLoss.java
index f2d6b90..6c17169 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StLoss.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StLoss.java
@@ -1,6 +1,5 @@
-package com.dy.pipIrrStatistics.listeners;
+package com.dy.pipIrrStatistics.statistics;
 
-import com.dy.pipIrrGlobal.daoRm.RmLossHistoryMapper;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -17,16 +16,19 @@
     private static Logger log = LogManager.getLogger(StLoss.class.getName()) ;
 
     @Autowired
-    protected RmLossHistoryMapper rmLossHistoryDao ;
+    protected StLossSv sv ;
 
-    private String statisticsYyyy_mm;
+    private Integer statisticsYear;
+    private Integer statisticsMonth;
     private Long statisticsStartId ;
     private Long statisticsEndId ;
 
-    protected void statistics(String statisticsYyyy_mm,
+    protected void statistics(Integer statisticsYear,
+                              Integer statisticsMonth,
                               Long statisticsStartId,
                               Long statisticsEndId){
-        this.statisticsYyyy_mm = statisticsYyyy_mm ;
+        this.statisticsYear = statisticsYear ;
+        this.statisticsMonth = statisticsMonth ;
         this.statisticsStartId = statisticsStartId ;
         this.statisticsEndId = statisticsEndId ;
         this.statisticsMonth() ;
@@ -37,14 +39,13 @@
      * 鏈堢粺璁�---婕忔崯
      */
     private void statisticsMonth(){
-        log.info(statisticsYyyy_mm + "  " + statisticsStartId + "  " + statisticsEndId);
-        log.info(rmLossHistoryDao.toString());
+        sv.statisticsMonth(statisticsYear, statisticsMonth, statisticsStartId, statisticsEndId);
     }
 
     /**
      * 骞寸粺璁�---婕忔崯
      */
     private void statisticsYear(){
-
+        sv.statisticsYear(statisticsYear);
     }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StLossSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StLossSv.java
new file mode 100644
index 0000000..a3c517f
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StLossSv.java
@@ -0,0 +1,66 @@
+package com.dy.pipIrrStatistics.statistics;
+
+import com.dy.pipIrrGlobal.daoRm.RmLossDayMapper;
+import com.dy.pipIrrGlobal.daoSt.StLossMonthMapper;
+import com.dy.pipIrrGlobal.daoSt.StLossYearMapper;
+import com.dy.pipIrrGlobal.pojoSt.StLossMonth;
+import com.dy.pipIrrGlobal.pojoSt.StLossYear;
+import com.dy.pipIrrGlobal.voSt.VoIntakeLossStatistics;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/24 11:24
+ * @Description
+ */
+@Component
+public class StLossSv {
+
+    @Autowired
+    protected RmLossDayMapper rmLossDayDao;
+
+    @Autowired
+    protected StLossMonthMapper stLossMonthDao ;
+
+    @Autowired
+    protected StLossYearMapper stLossYearDao ;
+
+    /**
+     * 鏈堢粺璁�---婕忔崯
+     */
+    @Transactional
+    protected void statisticsMonth(Integer statisticsYear, Integer statisticsMonth, Long statisticsStartId, Long statisticsEndId){
+        List<VoIntakeLossStatistics> list = rmLossDayDao.statisticsByIntake(statisticsStartId, statisticsEndId) ;
+        if(list != null && list.size() > 0){
+            for(VoIntakeLossStatistics vo : list){
+                StLossMonth po = new StLossMonth() ;
+                po.intakeId = vo.intakeId ;
+                po.year = statisticsYear ;
+                po.month = statisticsMonth ;
+                po.amount = vo.amount;
+                stLossMonthDao.insert(po) ;
+            }
+        }
+    }
+
+    /**
+     * 骞寸粺璁�---婕忔崯
+     */
+    @Transactional
+    protected void statisticsYear(Integer statisticsYear){
+        List<VoIntakeLossStatistics> list = stLossMonthDao.statisticsByIntake(statisticsYear) ;
+        if(list != null && list.size() > 0){
+            for(VoIntakeLossStatistics vo : list){
+                StLossYear po = new StLossYear() ;
+                po.intakeId = vo.intakeId ;
+                po.year = statisticsYear ;
+                po.amount = vo.amount;
+                stLossYearDao.insert(po) ;
+            }
+        }
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StatisticsJob.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StatisticsJob.java
new file mode 100644
index 0000000..0f4af36
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StatisticsJob.java
@@ -0,0 +1,79 @@
+package com.dy.pipIrrStatistics.statistics;
+
+import com.dy.common.multiDataSource.DataSourceContext;
+import com.dy.common.schedulerTask.TaskJob;
+import com.dy.common.schedulerTask.Test;
+import com.dy.common.springUtil.SpringContextUtil;
+import com.dy.common.util.DateTime;
+import com.dy.common.util.IDLongGenerator;
+import com.dy.pipIrrGlobal.util.Org;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+
+import java.util.List;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/22 16:41
+ * @Description
+ */
+public class StatisticsJob extends TaskJob {
+
+    private static Logger log = LogManager.getLogger(Test.class.getName()) ;
+
+    private StLoss stLoss ;
+
+    private StIntake stIntake ;
+
+    private StClient stClient ;
+
+    private Integer statisticsYear;
+    private Integer statisticsMonth;
+    private Long statisticsStartId ;
+    private Long statisticsEndId ;
+
+    @Override
+    public void execute(JobExecutionContext ctx) throws JobExecutionException {
+
+        stLoss = SpringContextUtil.getBean(StLoss.class);
+        stIntake = SpringContextUtil.getBean(StIntake.class);
+        stClient = SpringContextUtil.getBean(StClient.class);
+        if(stLoss != null && stIntake != null && stClient != null){
+            int[] ymd = DateTime.yyyy_MM_dd_2_ymdGroup(DateTime.yyyy_MM_dd()) ;
+            if(ymd[2] == 1){
+                //缁熻涓婁釜鏈堢殑
+                String statisticsYyyy_mm = DateTime.lastMonth_ym() ; //缁熻骞存湀
+                statisticsYear = Integer.parseInt(statisticsYyyy_mm.substring(0, 4)) ;//缁熻骞�
+                statisticsMonth = Integer.parseInt(statisticsYyyy_mm.substring(5, 7)) ;//缁熻鏈�
+                statisticsStartId = IDLongGenerator.generateOneDayStartId(statisticsYear, statisticsMonth, 1) ;
+                statisticsEndId = IDLongGenerator.generateOneDayEndId(statisticsYear, statisticsMonth, 31) ;
+            }else{
+                //缁熻鏈湀鐨�
+                statisticsYear = ymd[0] ;//缁熻鏈�
+                statisticsMonth =  ymd[1] ;//缁熻鏈�
+                statisticsStartId = IDLongGenerator.generateOneDayStartId(ymd[0], ymd[1], 1) ;
+                statisticsEndId = IDLongGenerator.generateOneDayEndId(ymd[0], ymd[1], 31) ;
+            }
+            doStatistics() ;
+        }else{
+            log.error("鏈兘浠嶴pring瀹瑰櫒涓緱鍒扮粺璁ean");
+        }
+    }
+
+    /**
+     * 缁熻
+     */
+    private void doStatistics(){
+        List<Org.OrgVo> orgList = Org.OrgList ;
+        if(orgList != null && orgList.size() >0){
+            for(Org.OrgVo vo : orgList){
+                DataSourceContext.set(vo.tag);//璁剧疆鏁版嵁婧�
+                stLoss.statistics(statisticsYear, statisticsMonth, statisticsStartId, statisticsEndId) ;
+                stIntake.statistics(statisticsYear, statisticsMonth, statisticsStartId, statisticsEndId) ;
+                stClient.statistics(statisticsYear, statisticsMonth, statisticsStartId, statisticsEndId) ;
+            }
+        }
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StatisticsListener.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StatisticsListener.java
similarity index 95%
rename from pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StatisticsListener.java
rename to pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StatisticsListener.java
index 4d19109..79c15cf 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StatisticsListener.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StatisticsListener.java
@@ -1,4 +1,4 @@
-package com.dy.pipIrrStatistics.listeners;
+package com.dy.pipIrrStatistics.statistics;
 
 /**
  * @Author: liurunyu
@@ -9,7 +9,6 @@
 import com.dy.common.schedulerTask.SchedulerTaskSupport;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.context.event.ApplicationReadyEvent;
 import org.springframework.context.ApplicationListener;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/util/OrgListener.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/util/OrgListener.java
new file mode 100644
index 0000000..3aa1ae5
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/util/OrgListener.java
@@ -0,0 +1,22 @@
+package com.dy.pipIrrStatistics.util;
+
+import com.dy.pipIrrGlobal.util.OrgListenerSupport;
+import org.springframework.boot.context.event.ApplicationReadyEvent;
+import org.springframework.context.ApplicationListener;
+import org.springframework.stereotype.Component;
+
+@Component
+public class OrgListener extends OrgListenerSupport implements ApplicationListener<ApplicationReadyEvent> {
+
+    @Override
+    public void onApplicationEvent(ApplicationReadyEvent event) {
+        try {
+            //绛�1绉掞紝绛夊緟com.alibaba.druid.pool.DruidDataSource瀹炲鍖栧畬鎴�
+            Thread.sleep(1000L);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        } finally {
+            super.init();
+        }
+    }
+}
\ No newline at end of file

--
Gitblit v1.8.0