From d5426047a2173c69c32eb70166ce5c61b54ff228 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期四, 26 十二月 2024 15:46:34 +0800
Subject: [PATCH] 1、实现农户IC卡充值日、月、年自动化统计; 2、实现农户充值日、月、年自动化统计; 3、部分实现农户IC卡充值日、月、年自动化统计; 4、部分实现农户充值日、月、年自动化统计。

---
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StChargeByIc.java        |   29 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StatisticsJob.java       |   62 +
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml                                  |   17 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StConsumeByIcSv.java     |  349 ++++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StConsumeByIc.java       |   74 ++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeHistoryMapper.xml                                        |   29 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveHistoryMapper.java                   |   14 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StChargeByClient.java    |   30 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/DateTime.java                                               |   40 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientRechargeStatistics.java                       |   16 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StChargeByIcSv.java      |  363 ++++++++++-
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StatisticsListener.java  |    6 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StChargeByClientSv.java  |  362 ++++++++++-
 pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml                                                    |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/schedulerTask/TaskJob.java                                       |    1 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoIcRechargeStatistics.java                           |   17 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StConsumeByClient.java   |   74 ++
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StConsumeByClientSv.java |  344 ++++++++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeHistoryMapper.java                         |   24 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoIcConsumeStatistics.java                            |   16 
 20 files changed, 1,763 insertions(+), 106 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/schedulerTask/TaskJob.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/schedulerTask/TaskJob.java
index af4694d..3cfd140 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/schedulerTask/TaskJob.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/schedulerTask/TaskJob.java
@@ -9,7 +9,6 @@
 
 	/**
 	 * 瀹氭椂璋冨害鐨勫伐浣�(甯﹀弬鏁�)銆�
-	 * @throws JobExecutionException 寮傚父
 	 */
 	public abstract void execute(JobExecutionContext ctx) throws JobExecutionException;
 	
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/DateTime.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/DateTime.java
index 9b32044..ac86459 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/DateTime.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/DateTime.java
@@ -26,6 +26,46 @@
 	public static Date getDate(Long time){
 		return new Date(time) ;
 	}
+
+
+
+	public static Date startOfDay(int year, int month, int day){
+		Date dt = null ;
+		try{
+			dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(year + "-" + (month < 10 ? ("0" + month) : month) + "-" + (day < 10 ? ("0" + day) : day) + " 00:00:00");
+		}catch (Exception e){
+			e.printStackTrace();
+		}
+		return dt  ;
+	}
+
+	public static Date endOfDay(int year, int month, int day){
+		Date dt = null ;
+		try{
+			dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(year + "-" + (month < 10 ? ("0" + month) : month) + "-" + (day < 10 ? ("0" + day) : day) + " 23:59:59");
+		}catch (Exception e){
+			e.printStackTrace();
+		}
+		return dt  ;
+	}
+
+	public static int endDayOfMonth(int year, int month){
+		if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12){
+			return 31 ;
+		}else{
+			if(month == 2){
+				if(DateTime.isLeapYear(year)){
+					return 29 ;
+				}else{
+					return 28 ;
+				}
+			}else{
+				return 30 ;
+			}
+		}
+	}
+
+
 	
 	public static String yyyy() {
 		return new SimpleDateFormat("yyyy", Locale.CHINA).format(new Date(System.currentTimeMillis()));
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveHistoryMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveHistoryMapper.java
index acf5ddc..cffa01f 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveHistoryMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveHistoryMapper.java
@@ -5,12 +5,11 @@
 import com.dy.pipIrrGlobal.voRm.VoExpend;
 import com.dy.pipIrrGlobal.voRm.VoOpenCloseValve;
 import com.dy.pipIrrGlobal.voRm.VoOpenClostWechat;
-import com.dy.pipIrrGlobal.voSt.VoClient;
-import com.dy.pipIrrGlobal.voSt.VoIntake;
-import com.dy.pipIrrGlobal.voSt.VoIntakeAccumulateAmount;
-import com.dy.pipIrrGlobal.voSt.VoIntakeOpenCount;
+import com.dy.pipIrrGlobal.voSt.*;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -346,4 +345,11 @@
      * @return
      */
     List<VoOpenClostWechat> getVcCardOpenClose(Map<String, Object> params);
+
+    //////////////////////////////////////////
+    //                                      //
+    //缁熻鐩稿叧                                //
+    //                                      //
+    //////////////////////////////////////////
+    List<VoIcConsumeStatistics> statisticsByIc(@Param("startDt")Date startDt, @Param("endDt")Date endDt);
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeHistoryMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeHistoryMapper.java
index e80a3c8..d8bc37e 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeHistoryMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeHistoryMapper.java
@@ -2,8 +2,12 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoSe.SeRechargeHistory;
+import com.dy.pipIrrGlobal.voSt.VoClientRechargeStatistics;
+import com.dy.pipIrrGlobal.voSt.VoIcRechargeStatistics;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * @author ZhuBaoMin
@@ -32,4 +36,24 @@
      * @return
      */
     Integer turnRechargeHistoryValidByCardId(@Param("cardId") Long cardId);
+
+
+    ///////////////////////////////
+    //缁熻鐩稿叧
+
+    /**
+     * 浠ュ啘鎴峰拰IC鍗′负鍗曚綅缁熻涓�鏃ョ殑鍏呭��
+     * @param statisticsStartId
+     * @param statisticsEndId
+     * @return
+     */
+    List<VoIcRechargeStatistics> statisticsByIc(@Param("startId")Long statisticsStartId, @Param("endId")Long statisticsEndId) ;
+    /**
+     * 浠ュ啘鎴蜂负鍗曚綅缁熻涓�鏃ョ殑鍏呭��
+     * @param statisticsStartId
+     * @param statisticsEndId
+     * @return
+     */
+    List<VoClientRechargeStatistics> 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/voSt/VoClientRechargeStatistics.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientRechargeStatistics.java
new file mode 100644
index 0000000..56306fd
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientRechargeStatistics.java
@@ -0,0 +1,16 @@
+package com.dy.pipIrrGlobal.voSt;
+
+import lombok.Data;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/12/25 15:40
+ * @Description
+ */
+@Data
+public class VoClientRechargeStatistics {
+    public Long clientId ;
+    public Double amount;//鍏呭�奸噾棰�
+    public Double gift;//璧犻�侀噾棰�
+    public Integer times;//鍏呭�兼鏁�
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoIcConsumeStatistics.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoIcConsumeStatistics.java
new file mode 100644
index 0000000..a1a7846
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoIcConsumeStatistics.java
@@ -0,0 +1,16 @@
+package com.dy.pipIrrGlobal.voSt;
+
+import lombok.Data;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/12/26 14:34
+ * @Description
+ */
+@Data
+public class VoIcConsumeStatistics {
+    public Long clientId ;
+    public Long cardId ;
+    public Double amount;//鑺辫垂閲戦(鎵h垂)
+    public Integer times;//鑺辫垂娆℃暟
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoIcRechargeStatistics.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoIcRechargeStatistics.java
new file mode 100644
index 0000000..62cadeb
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoIcRechargeStatistics.java
@@ -0,0 +1,17 @@
+package com.dy.pipIrrGlobal.voSt;
+
+import lombok.Data;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/12/24 14:13
+ * @Description
+ */
+@Data
+public class VoIcRechargeStatistics {
+    public Long clientId ;
+    public Long cardId ;
+    public Double amount;//鍏呭�奸噾棰�
+    public Double gift;//璧犻�侀噾棰�
+    public Integer times;//鍏呭�兼鏁�
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
index 3256eea..73625af 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -350,7 +350,7 @@
 
 #鑷姩缁熻閰嶇疆锛岃嚜鍔ㄧ粺璁″畾鏃朵换鍔′細姣忓ぉ瀹氭椂杩涜
 auto-statistics:
-    startHour: 0 #寮�濮嬪皬鏃� 0
+    startHour: 0 #寮�濮嬪皬鏃讹紝蹇呴』鏄�0鐐规垨涔嬪悗锛屽彇鍊艰寖鍥存槸0~5锛屽惁StatisticsListener涓嚜鍔ㄨ缃垚0
     startMinute: 5 #寮�濮嬪垎閽� 5
 
 #閽夐拤娑堟伅鎺ㄩ��
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml
index f09df25..48a5d81 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml
@@ -1367,4 +1367,21 @@
             </if>
         </trim>
     </select>
+
+
+
+    <!-- /////////////////////////////////// -->
+    <!-- 缁熻鐩稿叧                              -->
+    <!-- /////////////////////////////////// -->
+    <select id="statisticsByIc" resultType="com.dy.pipIrrGlobal.voSt.VoIcConsumeStatistics">
+        select ocvh.client_id as clientId,
+        cc.id as cardId,
+        sum(ocvh.cl_this_money) as amount,
+        count(ocvh.id) as times
+        from rm_open_close_valve_history ocvh
+        inner join se_client_card cc on cc.cardNum = ocvh.cl_ic_card_no
+        where ocvh.cl_dt <![CDATA[>=]]> #{startDt, jdbcType=BIGINT}
+        and ocvh.cl_dt <![CDATA[<=]]> #{endDt, jdbcType=BIGINT}
+        group by ocvh.client_id, cc.id
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeHistoryMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeHistoryMapper.xml
index 91457c0..bc639e8 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeHistoryMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeHistoryMapper.xml
@@ -191,4 +191,33 @@
         LIMIT 1) AS subquery
     );
   </update>
+
+
+<!-- /////////////////////////////////// -->
+<!-- 缁熻鐩稿叧                              -->
+<!-- /////////////////////////////////// -->
+  <select id="statisticsByIc" resultType="com.dy.pipIrrGlobal.voSt.VoIcRechargeStatistics">
+    select clientId as clientId,
+           cardId as cardId,
+           sum(amount) as amount,
+           sum(gift) as gift,
+           count(*) as times
+    from se_recharge_history
+    where operate_valid = 2
+    and id <![CDATA[>=]]> #{startId, jdbcType=BIGINT}
+    and id <![CDATA[<]]> #{endId, jdbcType=BIGINT}
+    group by clientId, cardId
+  </select>
+  <select id="statisticsByClient" resultType="com.dy.pipIrrGlobal.voSt.VoClientRechargeStatistics">
+    select clientId as clientId,
+           sum(amount) as amount,
+           sum(gift) as gift,
+           count(*) as times
+    from se_recharge_history
+    where operate_valid = 2
+    and id <![CDATA[>=]]> #{startId, jdbcType=BIGINT}
+    and id <![CDATA[<]]> #{endId, jdbcType=BIGINT}
+    group by clientId
+  </select>
+
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StChargeByClient.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StChargeByClient.java
index 6d32ddc..28fee04 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StChargeByClient.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StChargeByClient.java
@@ -20,18 +20,29 @@
 
     private Integer statisticsYear;
     private Integer statisticsMonth;
+    private Integer statisticsDay;
     private Long statisticsStartId ;
     private Long statisticsEndId ;
 
 
-    protected void statistics(Integer statisticsYear,
-                              Integer statisticsMonth,
-                              Long statisticsStartId,
-                              Long statisticsEndId){
+    protected void statistics4Day(Integer statisticsYear,
+                                  Integer statisticsMonth,
+                                  Integer statisticsDay,
+                                  Long statisticsStartId,
+                                  Long statisticsEndId){
         this.statisticsYear = statisticsYear ;
         this.statisticsMonth = statisticsMonth ;
+        this.statisticsDay = statisticsDay ;
         this.statisticsStartId = statisticsStartId ;
         this.statisticsEndId = statisticsEndId ;
+        this.statisticsDay() ;
+    }
+
+
+    protected void statistics4MonthAndYear(Integer statisticsYear,
+                                           Integer statisticsMonth){
+        this.statisticsYear = statisticsYear ;
+        this.statisticsMonth = statisticsMonth ;
         this.statisticsMonth() ;
         this.statisticsYear() ;
     }
@@ -39,8 +50,16 @@
     /**
      * 鏈堢粺璁�---鍐滄埛鍏呭��
      */
+    private void statisticsDay(){
+        sv.statisticsDay(statisticsYear, statisticsMonth, statisticsDay, statisticsStartId, statisticsEndId);
+    }
+
+
+    /**
+     * 鏈堢粺璁�---鍐滄埛鍏呭��
+     */
     private void statisticsMonth(){
-        sv.statisticsMonth(statisticsYear, statisticsMonth, statisticsStartId, statisticsEndId);
+        sv.statisticsMonth(statisticsYear, statisticsMonth);
     }
 
     /**
@@ -50,3 +69,4 @@
         sv.statisticsYear(statisticsYear);
     }
 }
+
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StChargeByClientSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StChargeByClientSv.java
index c732e8c..86036d6 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StChargeByClientSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StChargeByClientSv.java
@@ -1,8 +1,14 @@
 package com.dy.pipIrrStatistics.statistics;
 
-import com.dy.pipIrrGlobal.pojoSt.StIntakeAmountMonth;
-import com.dy.pipIrrGlobal.pojoSt.StIntakeAmountYear;
-import com.dy.pipIrrGlobal.voSt.VoIntakeAmountStatistics;
+import com.dy.pipIrrGlobal.daoSe.SeRechargeHistoryMapper;
+import com.dy.pipIrrGlobal.daoSt.StRechargeClientDayMapper;
+import com.dy.pipIrrGlobal.daoSt.StRechargeClientMonthMapper;
+import com.dy.pipIrrGlobal.daoSt.StRechargeClientYearMapper;
+import com.dy.pipIrrGlobal.pojoSt.StRechargeClientDay;
+import com.dy.pipIrrGlobal.pojoSt.StRechargeClientMonth;
+import com.dy.pipIrrGlobal.pojoSt.StRechargeClientYear;
+import com.dy.pipIrrGlobal.voSt.VoClientRechargeStatistics;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -10,57 +16,329 @@
 
 /**
  * @Author: liurunyu
- * @Date: 2024/12/23 14:54
+ * @Date: 2024/12/23 14:53
  * @Description
  */
 @Component
 public class StChargeByClientSv {
+
+    @Autowired
+    protected SeRechargeHistoryMapper seRechargeHistoryMapper;
+
+    @Autowired
+    protected StRechargeClientDayMapper stRechargeClientDayMapper;
+
+    @Autowired
+    protected StRechargeClientMonthMapper stRechargeClientMonthMapper;
+
+    @Autowired
+    protected StRechargeClientYearMapper stRechargeClientYearMapper;
+
+
     /**
-     * 鏈堢粺璁�---婕忔崯
+     * 鏃ョ粺璁�
      */
     @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 = this.stIntakeAmountMonthDao.selectByIntakeIdAndYearAndMonth(vo.intakeId, statisticsYear, statisticsMonth) ;
-//                if(po == null){
-//                    po = new StIntakeAmountMonth() ;
-//                }
-//                po.intakeId = vo.intakeId ;
-//                po.year = statisticsYear ;
-//                po.month = statisticsMonth ;
-//                po.amount = vo.amount;
-//                if(po.id == null) {
-//                    stIntakeAmountMonthDao.insert(po);
-//                }else{
-//                    stIntakeAmountMonthDao.updateByPrimaryKey(po) ;
-//                }
-//            }
-//        }
+    protected void statisticsDay(Integer statisticsYear, Integer statisticsMonth, Integer statisticsDay, Long statisticsStartId, Long statisticsEndId){
+        //浠ョ敤姘存埛涓哄崟浣嶇粺璁℃煇涓�鏃ョ殑鎵�鏈夊厖鍊艰褰�
+        List<VoClientRechargeStatistics> list = seRechargeHistoryMapper.statisticsByClient(statisticsStartId, statisticsEndId) ;
+        if(list != null && list.size() > 0){
+            for(VoClientRechargeStatistics vo : list){
+                StRechargeClientDay po = this.stRechargeClientDayMapper.selectByClientAndYearAndMonth(vo.clientId, statisticsYear, statisticsMonth) ;
+                if(po == null){
+                    po = new StRechargeClientDay() ;
+                    po.clientId = vo.clientId ;
+                    po.year = statisticsYear ;
+                    po.month = statisticsMonth ;
+                }
+                this.setValueOfDayOfMonth(statisticsDay, vo, po);
+                if(po.id == null) {
+                    stRechargeClientDayMapper.insert(po);
+                }else{
+                    stRechargeClientDayMapper.updateByPrimaryKeySelective(po) ;
+                }
+            }
+        }
     }
 
     /**
-     * 骞寸粺璁�---婕忔崯
+     * 鏈堢粺璁�
+     */
+    @Transactional
+    protected void statisticsMonth(Integer statisticsYear, Integer statisticsMonth){
+        //浠ョ敤姘存埛涓哄崟浣嶇粺璁℃煇涓�鏈堢殑鎵�鏈夊厖鍊艰褰�
+        List<VoClientRechargeStatistics> list = stRechargeClientDayMapper.statisticsByClient(statisticsYear, statisticsMonth) ;
+        if(list != null && list.size() > 0){
+            for(VoClientRechargeStatistics vo : list){
+                StRechargeClientMonth po = this.stRechargeClientMonthMapper.selectByClientAndYear(vo.clientId, statisticsYear) ;
+                if(po == null){
+                    po = new StRechargeClientMonth() ;
+                    po.clientId = vo.clientId ;
+                    po.year = statisticsYear ;
+                }
+                this.setValueOfMonthOfYear(statisticsMonth, vo, po);
+                if(po.id == null) {
+                    stRechargeClientMonthMapper.insert(po);
+                }else{
+                    stRechargeClientMonthMapper.updateByPrimaryKeySelective(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 = stIntakeAmountYearDao.selectByIntakeIdAndYear(vo.intakeId, statisticsYear) ;
-//                if(po == null){
-//                    po = new StIntakeAmountYear() ;
-//                }
-//                po.intakeId = vo.intakeId ;
-//                po.year = statisticsYear ;
-//                po.amount = vo.amount;
-//                if(po.id == null){
-//                    stIntakeAmountYearDao.insert(po) ;
-//                }else{
-//                    stIntakeAmountYearDao.updateByPrimaryKey(po) ;
-//                }
-//            }
-//        }
+        //浠ョ敤姘存埛涓哄崟浣嶇粺璁℃煇涓�骞寸殑鎵�鏈夊厖鍊艰褰�
+        List<VoClientRechargeStatistics> list = stRechargeClientMonthMapper.statisticsByClient(statisticsYear) ;
+        if(list != null && list.size() > 0){
+            for(VoClientRechargeStatistics vo : list){
+                StRechargeClientYear po = this.stRechargeClientYearMapper.selectByClientAndYear(vo.clientId, statisticsYear) ;
+                if(po == null){
+                    po = new StRechargeClientYear() ;
+                    po.clientId = vo.clientId ;
+                    po.year = statisticsYear ;
+                }
+                this.setValueOfYear(vo, po);
+                if(po.id == null) {
+                    stRechargeClientYearMapper.insert(po);
+                }else{
+                    stRechargeClientYearMapper.updateByPrimaryKeySelective(po) ;
+                }
+            }
+        }
+    }
+
+    private void setValueOfDayOfMonth(Integer statisticsDay, VoClientRechargeStatistics vo, StRechargeClientDay po){
+        switch (statisticsDay) {
+            case 1:
+                po.amount1 = vo.amount;
+                po.gift1 = vo.gift;
+                po.times1 = vo.times;
+                break;
+            case 2:
+                po.amount2 = vo.amount;
+                po.gift2 = vo.gift;
+                po.times2 = vo.times;
+                break;
+            case 3:
+                po.amount3 = vo.amount;
+                po.gift3 = vo.gift;
+                po.times3 = vo.times;
+                break;
+            case 4:
+                po.amount4 = vo.amount;
+                po.gift4 = vo.gift;
+                po.times4 = vo.times;
+                break;
+            case 5:
+                po.amount5 = vo.amount;
+                po.gift5 = vo.gift;
+                po.times5 = vo.times;
+                break;
+            case 6:
+                po.amount6 = vo.amount;
+                po.gift6 = vo.gift;
+                po.times6 = vo.times;
+                break;
+            case 7:
+                po.amount7 = vo.amount;
+                po.gift7 = vo.gift;
+                po.times7 = vo.times;
+                break;
+            case 8:
+                po.amount8 = vo.amount;
+                po.gift8 = vo.gift;
+                po.times8 = vo.times;
+                break;
+            case 9:
+                po.amount9 = vo.amount;
+                po.gift9 = vo.gift;
+                po.times9 = vo.times;
+                break;
+            case 10:
+                po.amount10 = vo.amount;
+                po.gift10 = vo.gift;
+                po.times10 = vo.times;
+                break;
+            case 11:
+                po.amount11 = vo.amount;
+                po.gift11 = vo.gift;
+                po.times11 = vo.times;
+                break;
+            case 12:
+                po.amount12 = vo.amount;
+                po.gift12 = vo.gift;
+                po.times12 = vo.times;
+                break;
+            case 13:
+                po.amount13 = vo.amount;
+                po.gift13 = vo.gift;
+                po.times13 = vo.times;
+                break;
+            case 14:
+                po.amount14 = vo.amount;
+                po.gift14 = vo.gift;
+                po.times14 = vo.times;
+                break;
+            case 15:
+                po.amount15 = vo.amount;
+                po.gift15 = vo.gift;
+                po.times15 = vo.times;
+                break;
+            case 16:
+                po.amount16 = vo.amount;
+                po.gift16 = vo.gift;
+                po.times16 = vo.times;
+                break;
+            case 17:
+                po.amount17 = vo.amount;
+                po.gift17 = vo.gift;
+                po.times17 = vo.times;
+                break;
+            case 18:
+                po.amount18 = vo.amount;
+                po.gift18 = vo.gift;
+                po.times18 = vo.times;
+                break;
+            case 19:
+                po.amount19 = vo.amount;
+                po.gift19 = vo.gift;
+                po.times19 = vo.times;
+                break;
+            case 20:
+                po.amount20 = vo.amount;
+                po.gift20 = vo.gift;
+                po.times20 = vo.times;
+                break;
+            case 21:
+                po.amount21 = vo.amount;
+                po.gift21 = vo.gift;
+                po.times21 = vo.times;
+                break;
+            case 22:
+                po.amount22 = vo.amount;
+                po.gift22 = vo.gift;
+                po.times22 = vo.times;
+                break;
+            case 23:
+                po.amount23 = vo.amount;
+                po.gift23 = vo.gift;
+                po.times23 = vo.times;
+                break;
+            case 24:
+                po.amount24 = vo.amount;
+                po.gift24 = vo.gift;
+                po.times24 = vo.times;
+                break;
+            case 25:
+                po.amount25 = vo.amount;
+                po.gift25 = vo.gift;
+                po.times25 = vo.times;
+                break;
+            case 26:
+                po.amount26 = vo.amount;
+                po.gift26 = vo.gift;
+                po.times26 = vo.times;
+                break;
+            case 27:
+                po.amount27 = vo.amount;
+                po.gift27 = vo.gift;
+                po.times27 = vo.times;
+                break;
+            case 28:
+                po.amount28 = vo.amount;
+                po.gift28 = vo.gift;
+                po.times28 = vo.times;
+                break;
+            case 29:
+                po.amount29 = vo.amount;
+                po.gift29 = vo.gift;
+                po.times29 = vo.times;
+                break;
+            case 30:
+                po.amount30 = vo.amount;
+                po.gift30 = vo.gift;
+                po.times30 = vo.times;
+                break;
+            case 31:
+                po.amount31 = vo.amount;
+                po.gift31 = vo.gift;
+                po.times31 = vo.times;
+                break;
+        }
+    }
+
+    private void setValueOfMonthOfYear(Integer statisticsMonth, VoClientRechargeStatistics vo, StRechargeClientMonth po){
+        switch (statisticsMonth) {
+            case 1:
+                po.amount1 = vo.amount;
+                po.gift1 = vo.gift;
+                po.times1 = vo.times;
+                break;
+            case 2:
+                po.amount2 = vo.amount;
+                po.gift2 = vo.gift;
+                po.times2 = vo.times;
+                break;
+            case 3:
+                po.amount3 = vo.amount;
+                po.gift3 = vo.gift;
+                po.times3 = vo.times;
+                break;
+            case 4:
+                po.amount4 = vo.amount;
+                po.gift4 = vo.gift;
+                po.times4 = vo.times;
+                break;
+            case 5:
+                po.amount5 = vo.amount;
+                po.gift5 = vo.gift;
+                po.times5 = vo.times;
+                break;
+            case 6:
+                po.amount6 = vo.amount;
+                po.gift6 = vo.gift;
+                po.times6 = vo.times;
+                break;
+            case 7:
+                po.amount7 = vo.amount;
+                po.gift7 = vo.gift;
+                po.times7 = vo.times;
+                break;
+            case 8:
+                po.amount8 = vo.amount;
+                po.gift8 = vo.gift;
+                po.times8 = vo.times;
+                break;
+            case 9:
+                po.amount9 = vo.amount;
+                po.gift9 = vo.gift;
+                po.times9 = vo.times;
+                break;
+            case 10:
+                po.amount10 = vo.amount;
+                po.gift10 = vo.gift;
+                po.times10 = vo.times;
+                break;
+            case 11:
+                po.amount11 = vo.amount;
+                po.gift11 = vo.gift;
+                po.times11 = vo.times;
+                break;
+            case 12:
+                po.amount12 = vo.amount;
+                po.gift12 = vo.gift;
+                po.times12 = vo.times;
+                break;
+        }
+    }
+
+    private void setValueOfYear(VoClientRechargeStatistics vo, StRechargeClientYear po){
+        po.amount = vo.amount;
+        po.gift = vo.gift;
+        po.times = vo.times;
     }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StChargeByIc.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StChargeByIc.java
index bf30e7f..305d514 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StChargeByIc.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StChargeByIc.java
@@ -20,18 +20,29 @@
 
     private Integer statisticsYear;
     private Integer statisticsMonth;
+    private Integer statisticsDay;
     private Long statisticsStartId ;
     private Long statisticsEndId ;
 
 
-    protected void statistics(Integer statisticsYear,
-                              Integer statisticsMonth,
-                              Long statisticsStartId,
-                              Long statisticsEndId){
+    protected void statistics4Day(Integer statisticsYear,
+                                  Integer statisticsMonth,
+                                  Integer statisticsDay,
+                                  Long statisticsStartId,
+                                  Long statisticsEndId){
         this.statisticsYear = statisticsYear ;
         this.statisticsMonth = statisticsMonth ;
+        this.statisticsDay = statisticsDay ;
         this.statisticsStartId = statisticsStartId ;
         this.statisticsEndId = statisticsEndId ;
+        this.statisticsDay() ;
+    }
+
+
+    protected void statistics4MonthAndYear(Integer statisticsYear,
+                                  Integer statisticsMonth){
+        this.statisticsYear = statisticsYear ;
+        this.statisticsMonth = statisticsMonth ;
         this.statisticsMonth() ;
         this.statisticsYear() ;
     }
@@ -39,8 +50,16 @@
     /**
      * 鏈堢粺璁�---IC鍗″厖鍊�
      */
+    private void statisticsDay(){
+        sv.statisticsDay(statisticsYear, statisticsMonth, statisticsDay, statisticsStartId, statisticsEndId);
+    }
+
+
+    /**
+     * 鏈堢粺璁�---IC鍗″厖鍊�
+     */
     private void statisticsMonth(){
-        sv.statisticsMonth(statisticsYear, statisticsMonth, statisticsStartId, statisticsEndId);
+        sv.statisticsMonth(statisticsYear, statisticsMonth);
     }
 
     /**
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StChargeByIcSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StChargeByIcSv.java
index fbd0d8b..3669d4f 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StChargeByIcSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StChargeByIcSv.java
@@ -1,8 +1,14 @@
 package com.dy.pipIrrStatistics.statistics;
 
-import com.dy.pipIrrGlobal.pojoSt.StIntakeAmountMonth;
-import com.dy.pipIrrGlobal.pojoSt.StIntakeAmountYear;
-import com.dy.pipIrrGlobal.voSt.VoIntakeAmountStatistics;
+import com.dy.pipIrrGlobal.daoSe.SeRechargeHistoryMapper;
+import com.dy.pipIrrGlobal.daoSt.StRechargeIcDayMapper;
+import com.dy.pipIrrGlobal.daoSt.StRechargeIcMonthMapper;
+import com.dy.pipIrrGlobal.daoSt.StRechargeIcYearMapper;
+import com.dy.pipIrrGlobal.pojoSt.StRechargeIcDay;
+import com.dy.pipIrrGlobal.pojoSt.StRechargeIcMonth;
+import com.dy.pipIrrGlobal.pojoSt.StRechargeIcYear;
+import com.dy.pipIrrGlobal.voSt.VoIcRechargeStatistics;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -15,52 +21,327 @@
  */
 @Component
 public class StChargeByIcSv {
+
+    @Autowired
+    protected SeRechargeHistoryMapper seRechargeHistoryMapper;
+
+    @Autowired
+    protected StRechargeIcDayMapper stRechargeIcDayMapper;
+
+    @Autowired
+    protected StRechargeIcMonthMapper stRechargeIcMonthMapper;
+
+    @Autowired
+    protected StRechargeIcYearMapper stRechargeIcYearMapper;
+
+
     /**
-     * 鏈堢粺璁�---婕忔崯
+     * 鏃ョ粺璁�
      */
     @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 = this.stIntakeAmountMonthDao.selectByIntakeIdAndYearAndMonth(vo.intakeId, statisticsYear, statisticsMonth) ;
-//                if(po == null){
-//                    po = new StIntakeAmountMonth() ;
-//                }
-//                po.intakeId = vo.intakeId ;
-//                po.year = statisticsYear ;
-//                po.month = statisticsMonth ;
-//                po.amount = vo.amount;
-//                if(po.id == null) {
-//                    stIntakeAmountMonthDao.insert(po);
-//                }else{
-//                    stIntakeAmountMonthDao.updateByPrimaryKey(po) ;
-//                }
-//            }
-//        }
+    protected void statisticsDay(Integer statisticsYear, Integer statisticsMonth, Integer statisticsDay, Long statisticsStartId, Long statisticsEndId){
+        //浠ョ敤姘存埛鍜孖C涓哄崟浣嶇粺璁℃煇涓�鏃ョ殑鎵�鏈夊厖鍊艰褰�
+        List<VoIcRechargeStatistics> list = seRechargeHistoryMapper.statisticsByIc(statisticsStartId, statisticsEndId) ;
+        if(list != null && list.size() > 0){
+            for(VoIcRechargeStatistics vo : list){
+                StRechargeIcDay po = this.stRechargeIcDayMapper.selectByClientAndCardAndYearAndMonth(vo.clientId, vo.cardId, statisticsYear, statisticsMonth) ;
+                if(po == null){
+                    po = new StRechargeIcDay() ;
+                    po.clientId = vo.clientId ;
+                    po.cardId = vo.cardId ;
+                    po.year = statisticsYear ;
+                    po.month = statisticsMonth ;
+                }
+                this.setValueOfDayOfMonth(statisticsDay, vo, po);
+                if(po.id == null) {
+                    stRechargeIcDayMapper.insert(po);
+                }else{
+                    stRechargeIcDayMapper.updateByPrimaryKeySelective(po) ;
+                }
+            }
+        }
     }
 
     /**
-     * 骞寸粺璁�---婕忔崯
+     * 鏈堢粺璁�
+     */
+    @Transactional
+    protected void statisticsMonth(Integer statisticsYear, Integer statisticsMonth){
+        //浠ョ敤姘存埛鍜孖C涓哄崟浣嶇粺璁℃煇涓�鏈堢殑鎵�鏈夊厖鍊艰褰�
+        List<VoIcRechargeStatistics> list = stRechargeIcDayMapper.statisticsByIc(statisticsYear, statisticsMonth) ;
+        if(list != null && list.size() > 0){
+            for(VoIcRechargeStatistics vo : list){
+                StRechargeIcMonth po = this.stRechargeIcMonthMapper.selectByClientAndCardAndYear(vo.clientId, vo.cardId, statisticsYear) ;
+                if(po == null){
+                    po = new StRechargeIcMonth() ;
+                    po.clientId = vo.clientId ;
+                    po.cardId = vo.cardId ;
+                    po.year = statisticsYear ;
+                }
+                this.setValueOfMonthOfYear(statisticsMonth, vo, po);
+                if(po.id == null) {
+                    stRechargeIcMonthMapper.insert(po);
+                }else{
+                    stRechargeIcMonthMapper.updateByPrimaryKeySelective(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 = stIntakeAmountYearDao.selectByIntakeIdAndYear(vo.intakeId, statisticsYear) ;
-//                if(po == null){
-//                    po = new StIntakeAmountYear() ;
-//                }
-//                po.intakeId = vo.intakeId ;
-//                po.year = statisticsYear ;
-//                po.amount = vo.amount;
-//                if(po.id == null){
-//                    stIntakeAmountYearDao.insert(po) ;
-//                }else{
-//                    stIntakeAmountYearDao.updateByPrimaryKey(po) ;
-//                }
-//            }
-//        }
+        //浠ョ敤姘存埛鍜孖C涓哄崟浣嶇粺璁℃煇涓�骞寸殑鎵�鏈夊厖鍊艰褰�
+        List<VoIcRechargeStatistics> list = stRechargeIcMonthMapper.statisticsByIc(statisticsYear) ;
+        if(list != null && list.size() > 0){
+            for(VoIcRechargeStatistics vo : list){
+                StRechargeIcYear po = this.stRechargeIcYearMapper.selectByClientAndCardAndYear(vo.clientId, vo.cardId, statisticsYear) ;
+                if(po == null){
+                    po = new StRechargeIcYear() ;
+                    po.clientId = vo.clientId ;
+                    po.cardId = vo.cardId ;
+                    po.year = statisticsYear ;
+                }
+                this.setValueOfYear(vo, po);
+                if(po.id == null) {
+                    stRechargeIcYearMapper.insert(po);
+                }else{
+                    stRechargeIcYearMapper.updateByPrimaryKeySelective(po) ;
+                }
+            }
+        }
+    }
+
+    private void setValueOfDayOfMonth(Integer statisticsDay, VoIcRechargeStatistics vo, StRechargeIcDay po){
+        switch (statisticsDay) {
+            case 1:
+                po.amount1 = vo.amount;
+                po.gift1 = vo.gift;
+                po.times1 = vo.times;
+                break;
+            case 2:
+                po.amount2 = vo.amount;
+                po.gift2 = vo.gift;
+                po.times2 = vo.times;
+                break;
+            case 3:
+                po.amount3 = vo.amount;
+                po.gift3 = vo.gift;
+                po.times3 = vo.times;
+                break;
+            case 4:
+                po.amount4 = vo.amount;
+                po.gift4 = vo.gift;
+                po.times4 = vo.times;
+                break;
+            case 5:
+                po.amount5 = vo.amount;
+                po.gift5 = vo.gift;
+                po.times5 = vo.times;
+                break;
+            case 6:
+                po.amount6 = vo.amount;
+                po.gift6 = vo.gift;
+                po.times6 = vo.times;
+                break;
+            case 7:
+                po.amount7 = vo.amount;
+                po.gift7 = vo.gift;
+                po.times7 = vo.times;
+                break;
+            case 8:
+                po.amount8 = vo.amount;
+                po.gift8 = vo.gift;
+                po.times8 = vo.times;
+                break;
+            case 9:
+                po.amount9 = vo.amount;
+                po.gift9 = vo.gift;
+                po.times9 = vo.times;
+                break;
+            case 10:
+                po.amount10 = vo.amount;
+                po.gift10 = vo.gift;
+                po.times10 = vo.times;
+                break;
+            case 11:
+                po.amount11 = vo.amount;
+                po.gift11 = vo.gift;
+                po.times11 = vo.times;
+                break;
+            case 12:
+                po.amount12 = vo.amount;
+                po.gift12 = vo.gift;
+                po.times12 = vo.times;
+                break;
+            case 13:
+                po.amount13 = vo.amount;
+                po.gift13 = vo.gift;
+                po.times13 = vo.times;
+                break;
+            case 14:
+                po.amount14 = vo.amount;
+                po.gift14 = vo.gift;
+                po.times14 = vo.times;
+                break;
+            case 15:
+                po.amount15 = vo.amount;
+                po.gift15 = vo.gift;
+                po.times15 = vo.times;
+                break;
+            case 16:
+                po.amount16 = vo.amount;
+                po.gift16 = vo.gift;
+                po.times16 = vo.times;
+                break;
+            case 17:
+                po.amount17 = vo.amount;
+                po.gift17 = vo.gift;
+                po.times17 = vo.times;
+                break;
+            case 18:
+                po.amount18 = vo.amount;
+                po.gift18 = vo.gift;
+                po.times18 = vo.times;
+                break;
+            case 19:
+                po.amount19 = vo.amount;
+                po.gift19 = vo.gift;
+                po.times19 = vo.times;
+                break;
+            case 20:
+                po.amount20 = vo.amount;
+                po.gift20 = vo.gift;
+                po.times20 = vo.times;
+                break;
+            case 21:
+                po.amount21 = vo.amount;
+                po.gift21 = vo.gift;
+                po.times21 = vo.times;
+                break;
+            case 22:
+                po.amount22 = vo.amount;
+                po.gift22 = vo.gift;
+                po.times22 = vo.times;
+                break;
+            case 23:
+                po.amount23 = vo.amount;
+                po.gift23 = vo.gift;
+                po.times23 = vo.times;
+                break;
+            case 24:
+                po.amount24 = vo.amount;
+                po.gift24 = vo.gift;
+                po.times24 = vo.times;
+                break;
+            case 25:
+                po.amount25 = vo.amount;
+                po.gift25 = vo.gift;
+                po.times25 = vo.times;
+                break;
+            case 26:
+                po.amount26 = vo.amount;
+                po.gift26 = vo.gift;
+                po.times26 = vo.times;
+                break;
+            case 27:
+                po.amount27 = vo.amount;
+                po.gift27 = vo.gift;
+                po.times27 = vo.times;
+                break;
+            case 28:
+                po.amount28 = vo.amount;
+                po.gift28 = vo.gift;
+                po.times28 = vo.times;
+                break;
+            case 29:
+                po.amount29 = vo.amount;
+                po.gift29 = vo.gift;
+                po.times29 = vo.times;
+                break;
+            case 30:
+                po.amount30 = vo.amount;
+                po.gift30 = vo.gift;
+                po.times30 = vo.times;
+                break;
+            case 31:
+                po.amount31 = vo.amount;
+                po.gift31 = vo.gift;
+                po.times31 = vo.times;
+                break;
+        }
+    }
+
+    private void setValueOfMonthOfYear(Integer statisticsMonth, VoIcRechargeStatistics vo, StRechargeIcMonth po){
+        switch (statisticsMonth) {
+            case 1:
+                po.amount1 = vo.amount;
+                po.gift1 = vo.gift;
+                po.times1 = vo.times;
+                break;
+            case 2:
+                po.amount2 = vo.amount;
+                po.gift2 = vo.gift;
+                po.times2 = vo.times;
+                break;
+            case 3:
+                po.amount3 = vo.amount;
+                po.gift3 = vo.gift;
+                po.times3 = vo.times;
+                break;
+            case 4:
+                po.amount4 = vo.amount;
+                po.gift4 = vo.gift;
+                po.times4 = vo.times;
+                break;
+            case 5:
+                po.amount5 = vo.amount;
+                po.gift5 = vo.gift;
+                po.times5 = vo.times;
+                break;
+            case 6:
+                po.amount6 = vo.amount;
+                po.gift6 = vo.gift;
+                po.times6 = vo.times;
+                break;
+            case 7:
+                po.amount7 = vo.amount;
+                po.gift7 = vo.gift;
+                po.times7 = vo.times;
+                break;
+            case 8:
+                po.amount8 = vo.amount;
+                po.gift8 = vo.gift;
+                po.times8 = vo.times;
+                break;
+            case 9:
+                po.amount9 = vo.amount;
+                po.gift9 = vo.gift;
+                po.times9 = vo.times;
+                break;
+            case 10:
+                po.amount10 = vo.amount;
+                po.gift10 = vo.gift;
+                po.times10 = vo.times;
+                break;
+            case 11:
+                po.amount11 = vo.amount;
+                po.gift11 = vo.gift;
+                po.times11 = vo.times;
+                break;
+            case 12:
+                po.amount12 = vo.amount;
+                po.gift12 = vo.gift;
+                po.times12 = vo.times;
+                break;
+        }
+    }
+
+    private void setValueOfYear(VoIcRechargeStatistics vo, StRechargeIcYear po){
+        po.amount = vo.amount;
+        po.gift = vo.gift;
+        po.times = vo.times;
     }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StConsumeByClient.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StConsumeByClient.java
new file mode 100644
index 0000000..e3c8912
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StConsumeByClient.java
@@ -0,0 +1,74 @@
+package com.dy.pipIrrStatistics.statistics;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/12/25 16:40
+ * @Description
+ */
+@Component
+public class StConsumeByClient {
+
+    private static Logger log = LogManager.getLogger(StConsumeByClient.class.getName()) ;
+
+    @Autowired
+    protected StConsumeByClientSv sv ;
+
+    private Integer statisticsYear;
+    private Integer statisticsMonth;
+    private Integer statisticsDay;
+    private Date statisticsStartDt ;
+    private Date statisticsEndDt ;
+
+
+    protected void statistics4Day(Integer statisticsYear,
+                                  Integer statisticsMonth,
+                                  Integer statisticsDay,
+                                  Date statisticsStartDt,
+                                  Date statisticsEndDt){
+        this.statisticsYear = statisticsYear ;
+        this.statisticsMonth = statisticsMonth ;
+        this.statisticsDay = statisticsDay ;
+        this.statisticsStartDt = statisticsStartDt ;
+        this.statisticsEndDt = statisticsEndDt ;
+        this.statisticsDay() ;
+    }
+
+
+    protected void statistics4MonthAndYear(Integer statisticsYear,
+                                           Integer statisticsMonth){
+        this.statisticsYear = statisticsYear ;
+        this.statisticsMonth = statisticsMonth ;
+        this.statisticsMonth() ;
+        this.statisticsYear() ;
+    }
+
+    /**
+     * 鏈堢粺璁�---鍐滄埛娑堣垂
+     */
+    private void statisticsDay(){
+        sv.statisticsDay(statisticsYear, statisticsMonth, statisticsDay, statisticsStartDt, statisticsEndDt);
+    }
+
+
+    /**
+     * 鏈堢粺璁�---鍐滄埛娑堣垂
+     */
+    private void statisticsMonth(){
+        sv.statisticsMonth(statisticsYear, statisticsMonth);
+    }
+
+    /**
+     * 骞寸粺璁�---鍐滄埛娑堣垂
+     */
+    private void statisticsYear(){
+        sv.statisticsYear(statisticsYear);
+    }
+}
+
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StConsumeByClientSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StConsumeByClientSv.java
new file mode 100644
index 0000000..b411e0a
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StConsumeByClientSv.java
@@ -0,0 +1,344 @@
+package com.dy.pipIrrStatistics.statistics;
+
+import com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveHistoryMapper;
+import com.dy.pipIrrGlobal.daoSt.StConsumeClientDayMapper;
+import com.dy.pipIrrGlobal.daoSt.StConsumeClientMonthMapper;
+import com.dy.pipIrrGlobal.daoSt.StConsumeClientYearMapper;
+import com.dy.pipIrrGlobal.pojoSt.StConsumeClientDay;
+import com.dy.pipIrrGlobal.pojoSt.StConsumeClientMonth;
+import com.dy.pipIrrGlobal.pojoSt.StConsumeClientYear;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/12/25 16:40
+ * @Description
+ */
+@Component
+public class StConsumeByClientSv {
+
+    @Autowired
+    protected RmOpenCloseValveHistoryMapper rmOpenCloseValveHistoryMapper;
+
+    @Autowired
+    protected StConsumeClientDayMapper stConsumeClientDayMapper;
+
+    @Autowired
+    protected StConsumeClientMonthMapper stConsumeClientMonthMapper;
+
+    @Autowired
+    protected StConsumeClientYearMapper stConsumeClientYearMapper;
+
+
+    /**
+     * 鏃ョ粺璁�
+     */
+    @Transactional
+    protected void statisticsDay(Integer statisticsYear, Integer statisticsMonth, Integer statisticsDay, Date statisticsStartDt, Date statisticsEndDt){
+        //浠ョ敤姘存埛涓哄崟浣嶇粺璁℃煇涓�鏃ョ殑鎵�鏈夊厖鍊艰褰�
+//        List<VoClientConsumeStatistics> list = seConsumeHistoryMapper.statisticsByClient(statisticsStartId, statisticsEndId) ;
+//        if(list != null && list.size() > 0){
+//            for(VoClientConsumeStatistics vo : list){
+//                StConsumeClientDay po = this.stConsumeClientDayMapper.selectByClientAndYearAndMonth(vo.clientId, statisticsYear, statisticsMonth) ;
+//                if(po == null){
+//                    po = new StConsumeClientDay() ;
+//                    po.clientId = vo.clientId ;
+//                    po.year = statisticsYear ;
+//                    po.month = statisticsMonth ;
+//                }
+//                this.setValueOfDayOfMonth(statisticsDay, vo, po);
+//                if(po.id == null) {
+//                    stConsumeClientDayMapper.insert(po);
+//                }else{
+//                    stConsumeClientDayMapper.updateByPrimaryKeySelective(po) ;
+//                }
+//            }
+//        }
+    }
+
+    /**
+     * 鏈堢粺璁�
+     */
+    @Transactional
+    protected void statisticsMonth(Integer statisticsYear, Integer statisticsMonth){
+        //浠ョ敤姘存埛涓哄崟浣嶇粺璁℃煇涓�鏈堢殑鎵�鏈夊厖鍊艰褰�
+//        List<VoClientConsumeStatistics> list = stConsumeClientDayMapper.statisticsByClient(statisticsYear, statisticsMonth) ;
+//        if(list != null && list.size() > 0){
+//            for(VoClientConsumeStatistics vo : list){
+//                StConsumeClientMonth po = this.stConsumeClientMonthMapper.selectByClientAndYear(vo.clientId, statisticsYear) ;
+//                if(po == null){
+//                    po = new StConsumeClientMonth() ;
+//                    po.clientId = vo.clientId ;
+//                    po.year = statisticsYear ;
+//                }
+//                this.setValueOfMonthOfYear(statisticsMonth, vo, po);
+//                if(po.id == null) {
+//                    stConsumeClientMonthMapper.insert(po);
+//                }else{
+//                    stConsumeClientMonthMapper.updateByPrimaryKeySelective(po) ;
+//                }
+//            }
+//        }
+    }
+
+    /**
+     * 骞寸粺璁�
+     */
+    @Transactional
+    protected void statisticsYear(Integer statisticsYear){
+        //浠ョ敤姘存埛涓哄崟浣嶇粺璁℃煇涓�骞寸殑鎵�鏈夊厖鍊艰褰�
+//        List<VoClientConsumeStatistics> list = stConsumeClientMonthMapper.statisticsByClient(statisticsYear) ;
+//        if(list != null && list.size() > 0){
+//            for(VoClientConsumeStatistics vo : list){
+//                StConsumeClientYear po = this.stConsumeClientYearMapper.selectByClientAndYear(vo.clientId, statisticsYear) ;
+//                if(po == null){
+//                    po = new StConsumeClientYear() ;
+//                    po.clientId = vo.clientId ;
+//                    po.year = statisticsYear ;
+//                }
+//                this.setValueOfYear(vo, po);
+//                if(po.id == null) {
+//                    stConsumeClientYearMapper.insert(po);
+//                }else{
+//                    stConsumeClientYearMapper.updateByPrimaryKeySelective(po) ;
+//                }
+//            }
+//        }
+    }
+
+//    private void setValueOfDayOfMonth(Integer statisticsDay, VoClientConsumeStatistics vo, StConsumeClientDay po){
+//        switch (statisticsDay) {
+//            case 1:
+//                po.amount1 = vo.amount;
+//                po.gift1 = vo.gift;
+//                po.times1 = vo.times;
+//                break;
+//            case 2:
+//                po.amount2 = vo.amount;
+//                po.gift2 = vo.gift;
+//                po.times2 = vo.times;
+//                break;
+//            case 3:
+//                po.amount3 = vo.amount;
+//                po.gift3 = vo.gift;
+//                po.times3 = vo.times;
+//                break;
+//            case 4:
+//                po.amount4 = vo.amount;
+//                po.gift4 = vo.gift;
+//                po.times4 = vo.times;
+//                break;
+//            case 5:
+//                po.amount5 = vo.amount;
+//                po.gift5 = vo.gift;
+//                po.times5 = vo.times;
+//                break;
+//            case 6:
+//                po.amount6 = vo.amount;
+//                po.gift6 = vo.gift;
+//                po.times6 = vo.times;
+//                break;
+//            case 7:
+//                po.amount7 = vo.amount;
+//                po.gift7 = vo.gift;
+//                po.times7 = vo.times;
+//                break;
+//            case 8:
+//                po.amount8 = vo.amount;
+//                po.gift8 = vo.gift;
+//                po.times8 = vo.times;
+//                break;
+//            case 9:
+//                po.amount9 = vo.amount;
+//                po.gift9 = vo.gift;
+//                po.times9 = vo.times;
+//                break;
+//            case 10:
+//                po.amount10 = vo.amount;
+//                po.gift10 = vo.gift;
+//                po.times10 = vo.times;
+//                break;
+//            case 11:
+//                po.amount11 = vo.amount;
+//                po.gift11 = vo.gift;
+//                po.times11 = vo.times;
+//                break;
+//            case 12:
+//                po.amount12 = vo.amount;
+//                po.gift12 = vo.gift;
+//                po.times12 = vo.times;
+//                break;
+//            case 13:
+//                po.amount13 = vo.amount;
+//                po.gift13 = vo.gift;
+//                po.times13 = vo.times;
+//                break;
+//            case 14:
+//                po.amount14 = vo.amount;
+//                po.gift14 = vo.gift;
+//                po.times14 = vo.times;
+//                break;
+//            case 15:
+//                po.amount15 = vo.amount;
+//                po.gift15 = vo.gift;
+//                po.times15 = vo.times;
+//                break;
+//            case 16:
+//                po.amount16 = vo.amount;
+//                po.gift16 = vo.gift;
+//                po.times16 = vo.times;
+//                break;
+//            case 17:
+//                po.amount17 = vo.amount;
+//                po.gift17 = vo.gift;
+//                po.times17 = vo.times;
+//                break;
+//            case 18:
+//                po.amount18 = vo.amount;
+//                po.gift18 = vo.gift;
+//                po.times18 = vo.times;
+//                break;
+//            case 19:
+//                po.amount19 = vo.amount;
+//                po.gift19 = vo.gift;
+//                po.times19 = vo.times;
+//                break;
+//            case 20:
+//                po.amount20 = vo.amount;
+//                po.gift20 = vo.gift;
+//                po.times20 = vo.times;
+//                break;
+//            case 21:
+//                po.amount21 = vo.amount;
+//                po.gift21 = vo.gift;
+//                po.times21 = vo.times;
+//                break;
+//            case 22:
+//                po.amount22 = vo.amount;
+//                po.gift22 = vo.gift;
+//                po.times22 = vo.times;
+//                break;
+//            case 23:
+//                po.amount23 = vo.amount;
+//                po.gift23 = vo.gift;
+//                po.times23 = vo.times;
+//                break;
+//            case 24:
+//                po.amount24 = vo.amount;
+//                po.gift24 = vo.gift;
+//                po.times24 = vo.times;
+//                break;
+//            case 25:
+//                po.amount25 = vo.amount;
+//                po.gift25 = vo.gift;
+//                po.times25 = vo.times;
+//                break;
+//            case 26:
+//                po.amount26 = vo.amount;
+//                po.gift26 = vo.gift;
+//                po.times26 = vo.times;
+//                break;
+//            case 27:
+//                po.amount27 = vo.amount;
+//                po.gift27 = vo.gift;
+//                po.times27 = vo.times;
+//                break;
+//            case 28:
+//                po.amount28 = vo.amount;
+//                po.gift28 = vo.gift;
+//                po.times28 = vo.times;
+//                break;
+//            case 29:
+//                po.amount29 = vo.amount;
+//                po.gift29 = vo.gift;
+//                po.times29 = vo.times;
+//                break;
+//            case 30:
+//                po.amount30 = vo.amount;
+//                po.gift30 = vo.gift;
+//                po.times30 = vo.times;
+//                break;
+//            case 31:
+//                po.amount31 = vo.amount;
+//                po.gift31 = vo.gift;
+//                po.times31 = vo.times;
+//                break;
+//        }
+//    }
+//
+//    private void setValueOfMonthOfYear(Integer statisticsMonth, VoClientConsumeStatistics vo, StConsumeClientMonth po){
+//        switch (statisticsMonth) {
+//            case 1:
+//                po.amount1 = vo.amount;
+//                po.gift1 = vo.gift;
+//                po.times1 = vo.times;
+//                break;
+//            case 2:
+//                po.amount2 = vo.amount;
+//                po.gift2 = vo.gift;
+//                po.times2 = vo.times;
+//                break;
+//            case 3:
+//                po.amount3 = vo.amount;
+//                po.gift3 = vo.gift;
+//                po.times3 = vo.times;
+//                break;
+//            case 4:
+//                po.amount4 = vo.amount;
+//                po.gift4 = vo.gift;
+//                po.times4 = vo.times;
+//                break;
+//            case 5:
+//                po.amount5 = vo.amount;
+//                po.gift5 = vo.gift;
+//                po.times5 = vo.times;
+//                break;
+//            case 6:
+//                po.amount6 = vo.amount;
+//                po.gift6 = vo.gift;
+//                po.times6 = vo.times;
+//                break;
+//            case 7:
+//                po.amount7 = vo.amount;
+//                po.gift7 = vo.gift;
+//                po.times7 = vo.times;
+//                break;
+//            case 8:
+//                po.amount8 = vo.amount;
+//                po.gift8 = vo.gift;
+//                po.times8 = vo.times;
+//                break;
+//            case 9:
+//                po.amount9 = vo.amount;
+//                po.gift9 = vo.gift;
+//                po.times9 = vo.times;
+//                break;
+//            case 10:
+//                po.amount10 = vo.amount;
+//                po.gift10 = vo.gift;
+//                po.times10 = vo.times;
+//                break;
+//            case 11:
+//                po.amount11 = vo.amount;
+//                po.gift11 = vo.gift;
+//                po.times11 = vo.times;
+//                break;
+//            case 12:
+//                po.amount12 = vo.amount;
+//                po.gift12 = vo.gift;
+//                po.times12 = vo.times;
+//                break;
+//        }
+//    }
+//
+//    private void setValueOfYear(VoClientConsumeStatistics vo, StConsumeClientYear po){
+//        po.amount = vo.amount;
+//        po.gift = vo.gift;
+//        po.times = vo.times;
+//    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StConsumeByIc.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StConsumeByIc.java
new file mode 100644
index 0000000..dc4c019
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StConsumeByIc.java
@@ -0,0 +1,74 @@
+package com.dy.pipIrrStatistics.statistics;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/12/25 16:31
+ * @Description
+ */
+@Component
+public class StConsumeByIc {
+
+    private static Logger log = LogManager.getLogger(StConsumeByIc.class.getName()) ;
+
+    @Autowired
+    protected StConsumeByIcSv sv ;
+
+    private Integer statisticsYear;
+    private Integer statisticsMonth;
+    private Integer statisticsDay;
+    private Date statisticsStartDt ;
+    private Date statisticsEndDt ;
+
+
+    protected void statistics4Day(Integer statisticsYear,
+                                  Integer statisticsMonth,
+                                  Integer statisticsDay,
+                                  Date statisticsStartDt,
+                                  Date statisticsEndDt){
+        this.statisticsYear = statisticsYear ;
+        this.statisticsMonth = statisticsMonth ;
+        this.statisticsDay = statisticsDay ;
+        this.statisticsStartDt = statisticsStartDt ;
+        this.statisticsEndDt = statisticsEndDt ;
+        this.statisticsDay() ;
+    }
+
+
+    protected void statistics4MonthAndYear(Integer statisticsYear,
+                                           Integer statisticsMonth){
+        this.statisticsYear = statisticsYear ;
+        this.statisticsMonth = statisticsMonth ;
+        this.statisticsMonth() ;
+        this.statisticsYear() ;
+    }
+
+    /**
+     * 鏈堢粺璁�---IC鍗℃秷璐�
+     */
+    private void statisticsDay(){
+        sv.statisticsDay(statisticsYear, statisticsMonth, statisticsDay, statisticsStartDt, statisticsEndDt);
+    }
+
+
+    /**
+     * 鏈堢粺璁�---IC鍗℃秷璐�
+     */
+    private void statisticsMonth(){
+        sv.statisticsMonth(statisticsYear, statisticsMonth);
+    }
+
+    /**
+     * 骞寸粺璁�---IC鍗℃秷璐�
+     */
+    private void statisticsYear(){
+        sv.statisticsYear(statisticsYear);
+    }
+}
+
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StConsumeByIcSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StConsumeByIcSv.java
new file mode 100644
index 0000000..a45c2ef
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StConsumeByIcSv.java
@@ -0,0 +1,349 @@
+package com.dy.pipIrrStatistics.statistics;
+
+import com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveHistoryMapper;
+import com.dy.pipIrrGlobal.daoSt.StConsumeIcDayMapper;
+import com.dy.pipIrrGlobal.daoSt.StConsumeIcMonthMapper;
+import com.dy.pipIrrGlobal.daoSt.StConsumeIcYearMapper;
+import com.dy.pipIrrGlobal.pojoSt.StConsumeIcDay;
+import com.dy.pipIrrGlobal.pojoSt.StConsumeIcMonth;
+import com.dy.pipIrrGlobal.pojoSt.StConsumeIcYear;
+import com.dy.pipIrrGlobal.voSt.VoIcConsumeStatistics;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/12/25 16:31
+ * @Description
+ */
+@Component
+public class StConsumeByIcSv {
+
+    @Autowired
+    protected RmOpenCloseValveHistoryMapper rmOpenCloseValveHistoryMapper;
+
+    @Autowired
+    protected StConsumeIcDayMapper stConsumeIcDayMapper;
+
+    @Autowired
+    protected StConsumeIcMonthMapper stConsumeIcMonthMapper;
+
+    @Autowired
+    protected StConsumeIcYearMapper stConsumeIcYearMapper;
+
+
+    /**
+     * 鏃ョ粺璁�
+     */
+    @Transactional
+    protected void statisticsDay(Integer statisticsYear, Integer statisticsMonth, Integer statisticsDay, Date statisticsStartDt, Date statisticsEndDt){
+        //浠ョ敤姘存埛鍜孖C涓哄崟浣嶇粺璁℃煇涓�鏃ョ殑鎵�鏈夊厖鍊艰褰�
+//        List<VoIcConsumeStatistics> list = rmOpenCloseValveHistoryMapper.statisticsByIc(statisticsStartDt, statisticsEndDt) ;
+//        if(list != null && list.size() > 0){
+//            for(VoIcConsumeStatistics vo : list){
+//                StConsumeIcDay po = this.stConsumeIcDayMapper.selectByClientAndCardAndYearAndMonth(vo.clientId, vo.cardId, statisticsYear, statisticsMonth) ;
+//                if(po == null){
+//                    po = new StConsumeIcDay() ;
+//                    po.clientId = vo.clientId ;
+//                    po.cardId = vo.cardId ;
+//                    po.year = statisticsYear ;
+//                    po.month = statisticsMonth ;
+//                }
+//                this.setValueOfDayOfMonth(statisticsDay, vo, po);
+//                if(po.id == null) {
+//                    stConsumeIcDayMapper.insert(po);
+//                }else{
+//                    stConsumeIcDayMapper.updateByPrimaryKeySelective(po) ;
+//                }
+//            }
+//        }
+    }
+
+    /**
+     * 鏈堢粺璁�
+     */
+    @Transactional
+    protected void statisticsMonth(Integer statisticsYear, Integer statisticsMonth){
+        //浠ョ敤姘存埛鍜孖C涓哄崟浣嶇粺璁℃煇涓�鏈堢殑鎵�鏈夊厖鍊艰褰�
+//        List<VoIcConsumeStatistics> list = stConsumeIcDayMapper.statisticsByIc(statisticsYear, statisticsMonth) ;
+//        if(list != null && list.size() > 0){
+//            for(VoIcConsumeStatistics vo : list){
+//                StConsumeIcMonth po = this.stConsumeIcMonthMapper.selectByClientAndCardAndYear(vo.clientId, vo.cardId, statisticsYear) ;
+//                if(po == null){
+//                    po = new StConsumeIcMonth() ;
+//                    po.clientId = vo.clientId ;
+//                    po.cardId = vo.cardId ;
+//                    po.year = statisticsYear ;
+//                }
+//                this.setValueOfMonthOfYear(statisticsMonth, vo, po);
+//                if(po.id == null) {
+//                    stConsumeIcMonthMapper.insert(po);
+//                }else{
+//                    stConsumeIcMonthMapper.updateByPrimaryKeySelective(po) ;
+//                }
+//            }
+//        }
+    }
+
+    /**
+     * 骞寸粺璁�
+     */
+    @Transactional
+    protected void statisticsYear(Integer statisticsYear){
+        //浠ョ敤姘存埛鍜孖C涓哄崟浣嶇粺璁℃煇涓�骞寸殑鎵�鏈夊厖鍊艰褰�
+//        List<VoIcConsumeStatistics> list = stConsumeIcMonthMapper.statisticsByIc(statisticsYear) ;
+//        if(list != null && list.size() > 0){
+//            for(VoIcConsumeStatistics vo : list){
+//                StConsumeIcYear po = this.stConsumeIcYearMapper.selectByClientAndCardAndYear(vo.clientId, vo.cardId, statisticsYear) ;
+//                if(po == null){
+//                    po = new StConsumeIcYear() ;
+//                    po.clientId = vo.clientId ;
+//                    po.cardId = vo.cardId ;
+//                    po.year = statisticsYear ;
+//                }
+//                this.setValueOfYear(vo, po);
+//                if(po.id == null) {
+//                    stConsumeIcYearMapper.insert(po);
+//                }else{
+//                    stConsumeIcYearMapper.updateByPrimaryKeySelective(po) ;
+//                }
+//            }
+//        }
+    }
+
+    private void setValueOfDayOfMonth(Integer statisticsDay, VoIcConsumeStatistics vo, StConsumeIcDay po){
+//        switch (statisticsDay) {
+//            case 1:
+//                po.amount1 = vo.amount;
+//                po.gift1 = vo.gift;
+//                po.times1 = vo.times;
+//                break;
+//            case 2:
+//                po.amount2 = vo.amount;
+//                po.gift2 = vo.gift;
+//                po.times2 = vo.times;
+//                break;
+//            case 3:
+//                po.amount3 = vo.amount;
+//                po.gift3 = vo.gift;
+//                po.times3 = vo.times;
+//                break;
+//            case 4:
+//                po.amount4 = vo.amount;
+//                po.gift4 = vo.gift;
+//                po.times4 = vo.times;
+//                break;
+//            case 5:
+//                po.amount5 = vo.amount;
+//                po.gift5 = vo.gift;
+//                po.times5 = vo.times;
+//                break;
+//            case 6:
+//                po.amount6 = vo.amount;
+//                po.gift6 = vo.gift;
+//                po.times6 = vo.times;
+//                break;
+//            case 7:
+//                po.amount7 = vo.amount;
+//                po.gift7 = vo.gift;
+//                po.times7 = vo.times;
+//                break;
+//            case 8:
+//                po.amount8 = vo.amount;
+//                po.gift8 = vo.gift;
+//                po.times8 = vo.times;
+//                break;
+//            case 9:
+//                po.amount9 = vo.amount;
+//                po.gift9 = vo.gift;
+//                po.times9 = vo.times;
+//                break;
+//            case 10:
+//                po.amount10 = vo.amount;
+//                po.gift10 = vo.gift;
+//                po.times10 = vo.times;
+//                break;
+//            case 11:
+//                po.amount11 = vo.amount;
+//                po.gift11 = vo.gift;
+//                po.times11 = vo.times;
+//                break;
+//            case 12:
+//                po.amount12 = vo.amount;
+//                po.gift12 = vo.gift;
+//                po.times12 = vo.times;
+//                break;
+//            case 13:
+//                po.amount13 = vo.amount;
+//                po.gift13 = vo.gift;
+//                po.times13 = vo.times;
+//                break;
+//            case 14:
+//                po.amount14 = vo.amount;
+//                po.gift14 = vo.gift;
+//                po.times14 = vo.times;
+//                break;
+//            case 15:
+//                po.amount15 = vo.amount;
+//                po.gift15 = vo.gift;
+//                po.times15 = vo.times;
+//                break;
+//            case 16:
+//                po.amount16 = vo.amount;
+//                po.gift16 = vo.gift;
+//                po.times16 = vo.times;
+//                break;
+//            case 17:
+//                po.amount17 = vo.amount;
+//                po.gift17 = vo.gift;
+//                po.times17 = vo.times;
+//                break;
+//            case 18:
+//                po.amount18 = vo.amount;
+//                po.gift18 = vo.gift;
+//                po.times18 = vo.times;
+//                break;
+//            case 19:
+//                po.amount19 = vo.amount;
+//                po.gift19 = vo.gift;
+//                po.times19 = vo.times;
+//                break;
+//            case 20:
+//                po.amount20 = vo.amount;
+//                po.gift20 = vo.gift;
+//                po.times20 = vo.times;
+//                break;
+//            case 21:
+//                po.amount21 = vo.amount;
+//                po.gift21 = vo.gift;
+//                po.times21 = vo.times;
+//                break;
+//            case 22:
+//                po.amount22 = vo.amount;
+//                po.gift22 = vo.gift;
+//                po.times22 = vo.times;
+//                break;
+//            case 23:
+//                po.amount23 = vo.amount;
+//                po.gift23 = vo.gift;
+//                po.times23 = vo.times;
+//                break;
+//            case 24:
+//                po.amount24 = vo.amount;
+//                po.gift24 = vo.gift;
+//                po.times24 = vo.times;
+//                break;
+//            case 25:
+//                po.amount25 = vo.amount;
+//                po.gift25 = vo.gift;
+//                po.times25 = vo.times;
+//                break;
+//            case 26:
+//                po.amount26 = vo.amount;
+//                po.gift26 = vo.gift;
+//                po.times26 = vo.times;
+//                break;
+//            case 27:
+//                po.amount27 = vo.amount;
+//                po.gift27 = vo.gift;
+//                po.times27 = vo.times;
+//                break;
+//            case 28:
+//                po.amount28 = vo.amount;
+//                po.gift28 = vo.gift;
+//                po.times28 = vo.times;
+//                break;
+//            case 29:
+//                po.amount29 = vo.amount;
+//                po.gift29 = vo.gift;
+//                po.times29 = vo.times;
+//                break;
+//            case 30:
+//                po.amount30 = vo.amount;
+//                po.gift30 = vo.gift;
+//                po.times30 = vo.times;
+//                break;
+//            case 31:
+//                po.amount31 = vo.amount;
+//                po.gift31 = vo.gift;
+//                po.times31 = vo.times;
+//                break;
+//        }
+    }
+
+    private void setValueOfMonthOfYear(Integer statisticsMonth, VoIcConsumeStatistics vo, StConsumeIcMonth po){
+//        switch (statisticsMonth) {
+//            case 1:
+//                po.amount1 = vo.amount;
+//                po.gift1 = vo.gift;
+//                po.times1 = vo.times;
+//                break;
+//            case 2:
+//                po.amount2 = vo.amount;
+//                po.gift2 = vo.gift;
+//                po.times2 = vo.times;
+//                break;
+//            case 3:
+//                po.amount3 = vo.amount;
+//                po.gift3 = vo.gift;
+//                po.times3 = vo.times;
+//                break;
+//            case 4:
+//                po.amount4 = vo.amount;
+//                po.gift4 = vo.gift;
+//                po.times4 = vo.times;
+//                break;
+//            case 5:
+//                po.amount5 = vo.amount;
+//                po.gift5 = vo.gift;
+//                po.times5 = vo.times;
+//                break;
+//            case 6:
+//                po.amount6 = vo.amount;
+//                po.gift6 = vo.gift;
+//                po.times6 = vo.times;
+//                break;
+//            case 7:
+//                po.amount7 = vo.amount;
+//                po.gift7 = vo.gift;
+//                po.times7 = vo.times;
+//                break;
+//            case 8:
+//                po.amount8 = vo.amount;
+//                po.gift8 = vo.gift;
+//                po.times8 = vo.times;
+//                break;
+//            case 9:
+//                po.amount9 = vo.amount;
+//                po.gift9 = vo.gift;
+//                po.times9 = vo.times;
+//                break;
+//            case 10:
+//                po.amount10 = vo.amount;
+//                po.gift10 = vo.gift;
+//                po.times10 = vo.times;
+//                break;
+//            case 11:
+//                po.amount11 = vo.amount;
+//                po.gift11 = vo.gift;
+//                po.times11 = vo.times;
+//                break;
+//            case 12:
+//                po.amount12 = vo.amount;
+//                po.gift12 = vo.gift;
+//                po.times12 = vo.times;
+//                break;
+//        }
+    }
+
+    private void setValueOfYear(VoIcConsumeStatistics vo, StConsumeIcYear po){
+//        po.amount = vo.amount;
+//        po.gift = vo.gift;
+//        po.times = vo.times;
+    }
+}
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
index a180312..9f82f04 100644
--- 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
@@ -12,6 +12,7 @@
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -24,22 +25,45 @@
     private static Logger log = LogManager.getLogger(Test.class.getName()) ;
 
     private StLoss stLoss ;
-
     private StIntake stIntake ;
-
     private StClient stClient ;
+    private StChargeByIc stChargeByIc ;
+    private StChargeByClient stChargeByClient ;
+    private StConsumeByIc stConsumeByIc ;
+    private StConsumeByClient stConsumeByClient ;
 
     private Integer statisticsYear;
     private Integer statisticsMonth;
+    private Integer statisticsDay;
     private Long statisticsStartId ;
     private Long statisticsEndId ;
+    private Date statisticsStartDt ;
+    private Date statisticsEndDt ;
 
     @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){
+        stChargeByIc = SpringContextUtil.getBean(StChargeByIc.class);
+        stChargeByClient = SpringContextUtil.getBean(StChargeByClient.class);
+        stConsumeByIc = SpringContextUtil.getBean(StConsumeByIc.class);
+        stConsumeByClient = SpringContextUtil.getBean(StConsumeByClient.class);
+        if(stLoss != null && stIntake != null && stClient != null
+                && stChargeByIc != null && stChargeByClient != null
+                && stConsumeByIc != null && stConsumeByClient != null){
+            String yesterday = DateTime.lastXDay_yyyy_MM_dd(1) ;//寰楀埌鏄ㄥぉ锛岄浂鏅ㄦ椂鍒荤粺璁★紝缁熻鏄ㄥぉ鐨勬暟
+            int[] yesterdayGrp = DateTime.yyyy_MM_dd_2_ymdGroup(yesterday) ;
+            statisticsYear = yesterdayGrp[0] ;//缁熻骞�
+            statisticsMonth = yesterdayGrp[1] ;//缁熻鏈�
+            statisticsDay = yesterdayGrp[2] ;//缁熻鏃�
+            statisticsStartId = IDLongGenerator.generateOneDayStartId(statisticsYear, statisticsMonth, 1) ;
+            statisticsEndId = IDLongGenerator.generateOneDayEndId(statisticsYear, statisticsMonth, DateTime.endDayOfMonth(statisticsYear, statisticsMonth)) ;
+            statisticsStartDt = DateTime.startOfDay(statisticsYear, statisticsMonth, statisticsDay) ;
+            statisticsEndDt = DateTime.endOfDay(statisticsYear, statisticsMonth, statisticsDay) ;
+            //缁熻鏃ョ殑閲�
+            doStatisticsDay() ;
+
             int[] ymd = DateTime.yyyy_MM_dd_2_ymdGroup(DateTime.yyyy_MM_dd()) ;
             if(ymd[2] == 1){
                 //缁熻涓婁釜鏈堢殑
@@ -47,15 +71,19 @@
                 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) ;
+                statisticsEndId = IDLongGenerator.generateOneDayEndId(statisticsYear, statisticsMonth, DateTime.endDayOfMonth(statisticsYear, statisticsMonth)) ;
+                statisticsStartDt = DateTime.startOfDay(statisticsYear, statisticsMonth, 1) ;
+                statisticsEndDt = DateTime.endOfDay(statisticsYear, statisticsMonth, DateTime.endDayOfMonth(statisticsYear, statisticsMonth)) ;
             }else{
                 //缁熻鏈湀鐨�
                 statisticsYear = ymd[0] ;//缁熻骞�
                 statisticsMonth =  ymd[1] ;//缁熻鏈�
                 statisticsStartId = IDLongGenerator.generateOneDayStartId(ymd[0], ymd[1], 1) ;
-                statisticsEndId = IDLongGenerator.generateOneDayEndId(ymd[0], ymd[1], 31) ;
+                statisticsEndId = IDLongGenerator.generateOneDayEndId(ymd[0], ymd[1], DateTime.endDayOfMonth(statisticsYear, statisticsMonth)) ;
+                statisticsStartDt = DateTime.startOfDay(statisticsYear, statisticsMonth, 1) ;
+                statisticsEndDt = DateTime.endOfDay(statisticsYear, statisticsMonth, DateTime.endDayOfMonth(statisticsYear, statisticsMonth)) ;
             }
-            doStatistics() ;
+            doStatisticsMonthAndYear() ;
         }else{
             log.error("鏈兘浠嶴pring瀹瑰櫒涓緱鍒扮粺璁ean");
         }
@@ -64,7 +92,22 @@
     /**
      * 缁熻
      */
-    private void doStatistics(){
+    private void doStatisticsDay(){
+        List<Org.OrgVo> orgList = Org.OrgList ;
+        if(orgList != null && orgList.size() >0){
+            for(Org.OrgVo vo : orgList){
+                DataSourceContext.set(vo.tag);//璁剧疆鏁版嵁婧�
+                stChargeByIc.statistics4Day(statisticsYear, statisticsMonth, statisticsDay, statisticsStartId, statisticsEndId);
+                stChargeByClient.statistics4Day(statisticsYear, statisticsMonth, statisticsDay, statisticsStartId, statisticsEndId);
+                stConsumeByIc.statistics4Day(statisticsYear, statisticsMonth, statisticsDay, statisticsStartDt, statisticsEndDt);
+                stConsumeByClient.statistics4Day(statisticsYear, statisticsMonth, statisticsDay, statisticsStartDt, statisticsEndDt);
+            }
+        }
+    }
+    /**
+     * 缁熻
+     */
+    private void doStatisticsMonthAndYear(){
         List<Org.OrgVo> orgList = Org.OrgList ;
         if(orgList != null && orgList.size() >0){
             for(Org.OrgVo vo : orgList){
@@ -72,6 +115,11 @@
                 stLoss.statistics(statisticsYear, statisticsMonth, statisticsStartId, statisticsEndId) ;
                 stIntake.statistics(statisticsYear, statisticsMonth, statisticsStartId, statisticsEndId) ;
                 stClient.statistics(statisticsYear, statisticsMonth, statisticsStartId, statisticsEndId) ;
+
+                stChargeByIc.statistics4MonthAndYear(statisticsYear, statisticsMonth);
+                stChargeByClient.statistics4MonthAndYear(statisticsYear, statisticsMonth);
+                stConsumeByIc.statistics4MonthAndYear(statisticsYear, statisticsMonth);
+                stConsumeByClient.statistics4MonthAndYear(statisticsYear, statisticsMonth);
             }
         }
     }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StatisticsListener.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StatisticsListener.java
index 79c15cf..af3fb64 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StatisticsListener.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/statistics/StatisticsListener.java
@@ -31,6 +31,9 @@
     private static final Integer ThreadPoolMaxCount = 1 ;//绾跨▼姹犵嚎绋嬫渶澶т釜鏁�
     private static final Integer ThreadPoolPriority = 5 ;//绾跨▼浼樺厛绾�
 
+    /**
+     * 缁熻寮�濮嬪皬鏃讹紝蹇呴』0鐐规垨涔嬪悗锛岃StatisticsJob涓粺璁★紝鏃ョ粺璁℃槸缁熻鏄ㄥぉ鐨�
+     */
     @Value("${auto-statistics.startHour: 0}")
     protected Integer startHour;//缁熻寮�濮嬪皬鏃�
 
@@ -61,6 +64,9 @@
      * 鍒濆鍖�
      */
     private void start(ApplicationReadyEvent event) throws Exception{
+        if(startHour < 0 || startHour > 5){
+            startHour = 0 ;
+        }
         SchedulerTaskSupport.setThreadPoolPro(ThreadPoolMaxCount, ThreadPoolPriority);
         SchedulerTaskSupport.addDailyJob(JobName, JobGroupName, StatisticsJob.class, null, startHour, startMinute ) ;
     }

--
Gitblit v1.8.0