From 42beb426f466d79c55668c4d854e52613febb0da Mon Sep 17 00:00:00 2001
From: wuzeyu <1223318623@qq.com>
Date: 星期三, 24 七月 2024 15:14:51 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV

---
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOnHourReportHistoryMapper.java                   |   19 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/Org.java                                            |   77 --
 pipIrr-platform/pipIrr-global/src/main/resources/application-database-sp.yml                                             |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StClient.java           |   50 ++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeManagerCardMapper.xml                                          |  124 +++++
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StLossSv.java           |    9 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/ServerProperties.java                          |    3 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeManagerCard.java                                |   72 +++
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java              |   55 ++
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/PipIrrStatisticsApplication.java  |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StatisticsListener.java |   68 ++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoOnHour.java                                       |   75 +++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/DateTime.java                                             |   72 +-
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java                                           |    8 
 pipIrr-platform/pipIrr-global/src/main/resources/application-database-pj.yml                                             |    6 
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java                                     |    4 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/schedulerTask/SchedulerTaskFactory.java                        |    5 
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/util/InitListener.java                        |    2 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeManagerCardMapper.java                           |   35 +
 pipIrr-platform/pipIrr-global/src/main/resources/init-config.xml                                                         |    8 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportCtrl.java                    |   45 +
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/ManagerCard.java              |   33 +
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java                |   31 +
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StLoss.java             |   50 ++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/OrgListenerSupport.java                             |   56 ++
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/qo/ReportQO.java                   |   40 +
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealWorkReport.java       |   38 +
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/application.yml                                      |    6 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportHistoryMapper.xml                                  |   54 ++
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml                                                    |    4 
 /dev/null                                                                                                                |   59 --
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java                    |   13 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StIntake.java           |   50 ++
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StatisticsJob.java      |   68 ++
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportSv.java                      |   72 +++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/IDLongGenerator.java                                      |   27 
 pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml                                                  |   11 
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/util/SsoListener.java                                 |   29 
 pipIrr-platform/pipIrr-global/src/main/resources/application-database-ym.yml                                             |    2 
 39 files changed, 1,156 insertions(+), 228 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/schedulerTask/SchedulerTaskFactory.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/schedulerTask/SchedulerTaskFactory.java
index 1751d79..3b19a91 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/schedulerTask/SchedulerTaskFactory.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/schedulerTask/SchedulerTaskFactory.java
@@ -61,11 +61,6 @@
 				if(threadPoolPriority != null && threadPoolPriority.intValue() >= 0){
 					pro.put("org.quartz.threadPool.threadPriority", "" + (threadPoolPriority==null?5:(threadPoolPriority<=0?5:threadPoolPriority)));
 				}
-				if(threadPoolMaxCount != null && threadPoolPriority != null){
-					if(threadPoolMaxCount.intValue() < threadPoolPriority.intValue()){
-						throw new SchedulerException("threadPoolMaxCount蹇呴』澶т簬绛変簬threadPoolPriority") ;
-					}
-				}
 				scheduler = new StdSchedulerFactory(pro).getScheduler();
 			} catch (SchedulerException e) {
 				log.error(e) ;
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 8e97a16..c5c1bc4 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
@@ -603,7 +603,7 @@
 	 */
 	public static Long lastXMinuteTime(int xMin)  {
 		Calendar cal = Calendar.getInstance();  
-		cal.add(Calendar.MINUTE, -xMin);
+		cal.add(Calendar.MINUTE, xMin<=0?xMin:-xMin);
 		Date date = cal.getTime() ;
 		return date.getTime() ;
 	}
@@ -619,7 +619,7 @@
 		Date d = new SimpleDateFormat("yyyy-MM-dd HH", Locale.CHINA).parse(yyyy_MM_dd_HH);
 		Calendar cal = Calendar.getInstance();  
 		cal.setTime(d);			
-		cal.add(Calendar.HOUR_OF_DAY, -xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?xhour:-xhour);
 		Date date = cal.getTime() ;
 		return DateTime.yyyy_MM_dd_HH(date) ;
 	}
@@ -633,7 +633,7 @@
 		Date d = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.CHINA).parse(yyyy_MM_dd_HH_mm);
 		Calendar cal = Calendar.getInstance();  
 		cal.setTime(d);			
-		cal.add(Calendar.HOUR_OF_DAY, -xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?xhour:-xhour);
 		Date date = cal.getTime() ;
 		return DateTime.yyyy_MM_dd_HH_mm(date) ;
 	}
@@ -647,7 +647,7 @@
 		Date d = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA).parse(yyyy_MM_dd_HH_mm_ss);
 		Calendar cal = Calendar.getInstance();  
 		cal.setTime(d);			
-		cal.add(Calendar.HOUR_OF_DAY, -xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?xhour:-xhour);
 		Date date = cal.getTime() ;
 		return DateTime.yyyy_MM_dd_HH_mm_ss(date) ;
 	}
@@ -661,7 +661,7 @@
 		Date d = new SimpleDateFormat("yyyyMMddHH", Locale.CHINA).parse(yyyyMMddHH);
 		Calendar cal = Calendar.getInstance();  
 		cal.setTime(d);			
-		cal.add(Calendar.HOUR_OF_DAY, -xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?xhour:-xhour);
 		Date date = cal.getTime() ;
 		return DateTime.yyyyMMddHH(date) ;
 	}
@@ -675,7 +675,7 @@
 		Date d = new SimpleDateFormat("yyyyMMddHHmm", Locale.CHINA).parse(yyyyMMddHHmm);
 		Calendar cal = Calendar.getInstance();  
 		cal.setTime(d);			
-		cal.add(Calendar.HOUR_OF_DAY, -xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?xhour:-xhour);
 		Date date = cal.getTime() ;
 		return DateTime.yyyyMMddHHmm(date) ;
 	}
@@ -689,7 +689,7 @@
 		Date d = new SimpleDateFormat("yyyyMMddHHmmss", Locale.CHINA).parse(yyyyMMddHHmmss);
 		Calendar cal = Calendar.getInstance();  
 		cal.setTime(d);			
-		cal.add(Calendar.HOUR_OF_DAY, -xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?xhour:-xhour);
 		Date date = cal.getTime() ;
 		return DateTime.yyyyMMddHHmmss(date) ;
 	}
@@ -703,7 +703,7 @@
 	public static String lastXHour_yyyy_MM_dd_HH(int xhour){
 		Date date = new Date();
 		Calendar cal = Calendar.getInstance();
-		cal.add(Calendar.HOUR_OF_DAY, -xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?xhour:-xhour);
 		date.setTime(cal.getTimeInMillis());			
 		return DateTime.yyyy_MM_dd_HH(date) ;
 	}
@@ -715,7 +715,7 @@
 	public static String lastXHour_yyyy_MM_dd_HH_mm(int xhour){
 		Date date = new Date();
 		Calendar cal = Calendar.getInstance();
-		cal.add(Calendar.HOUR_OF_DAY, -xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?xhour:-xhour);
 		date.setTime(cal.getTimeInMillis());			
 		return DateTime.yyyy_MM_dd_HH_mm(date) ;
 	}
@@ -727,7 +727,7 @@
 	public static String lastXHour_yyyy_MM_dd_HH_mm_ss(int xhour){
 		Date date = new Date();
 		Calendar cal = Calendar.getInstance();
-		cal.add(Calendar.HOUR_OF_DAY, -xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?xhour:-xhour);
 		date.setTime(cal.getTimeInMillis());			
 		return DateTime.yyyy_MM_dd_HH_mm_ss(date) ;
 	}
@@ -739,7 +739,7 @@
 	public static String lastXHour_yyyyMMddHH(int xhour){
 		Date date = new Date();
 		Calendar cal = Calendar.getInstance();
-		cal.add(Calendar.HOUR_OF_DAY, -xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?xhour:-xhour);
 		date.setTime(cal.getTimeInMillis());			
 		return DateTime.yyyyMMddHH(date) ;
 	}
@@ -751,7 +751,7 @@
 	public static String lastXHour_yyyyMMddHHmm(int xhour){
 		Date date = new Date();
 		Calendar cal = Calendar.getInstance();
-		cal.add(Calendar.HOUR_OF_DAY, -xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?xhour:-xhour);
 		date.setTime(cal.getTimeInMillis());			
 		return DateTime.yyyyMMddHHmm(date) ;
 	}
@@ -763,7 +763,7 @@
 	public static String lastXHour_yyyyMMddHHmmss(int xhour){
 		Date date = new Date();
 		Calendar cal = Calendar.getInstance();
-		cal.add(Calendar.HOUR_OF_DAY, -xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?xhour:-xhour);
 		date.setTime(cal.getTimeInMillis());			
 		return DateTime.yyyyMMddHHmmss(date) ;
 	}
@@ -779,7 +779,7 @@
 		Date d = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA).parse(yyyy_MM_dd_HH_mm_ss);
 		Calendar cal = Calendar.getInstance();  
 		cal.setTime(d);			
-		cal.add(Calendar.MINUTE, xminute);
+		cal.add(Calendar.MINUTE, xminute<=0?-xminute:xminute );
 		Date date = cal.getTime() ;
 		return DateTime.yyyy_MM_dd_HH_mm_ss(date) ;
 	}
@@ -795,7 +795,7 @@
 		Date d = new SimpleDateFormat("yyyy-MM-dd HH", Locale.CHINA).parse(yyyy_MM_dd_HH);
 		Calendar cal = Calendar.getInstance();  
 		cal.setTime(d);			
-		cal.add(Calendar.HOUR_OF_DAY, xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?-xhour:xhour );
 		Date date = cal.getTime() ;
 		return DateTime.yyyy_MM_dd_HH(date) ;
 	}
@@ -809,7 +809,7 @@
 		Date d = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.CHINA).parse(yyyy_MM_dd_HH_mm);
 		Calendar cal = Calendar.getInstance();  
 		cal.setTime(d);			
-		cal.add(Calendar.HOUR_OF_DAY, xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?-xhour:xhour);
 		Date date = cal.getTime() ;
 		return DateTime.yyyy_MM_dd_HH_mm(date) ;
 	}	
@@ -823,7 +823,7 @@
 		Date d = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA).parse(yyyy_MM_dd_HH_mm_ss);
 		Calendar cal = Calendar.getInstance();  
 		cal.setTime(d);			
-		cal.add(Calendar.HOUR_OF_DAY, xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?-xhour:xhour);
 		Date date = cal.getTime() ;
 		return DateTime.yyyy_MM_dd_HH_mm_ss(date) ;
 	}
@@ -837,7 +837,7 @@
 		Date d = new SimpleDateFormat("yyyyMMddHH", Locale.CHINA).parse(yyyyMMddHH);
 		Calendar cal = Calendar.getInstance();  
 		cal.setTime(d);			
-		cal.add(Calendar.HOUR_OF_DAY, xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?-xhour:xhour);
 		Date date = cal.getTime() ;
 		return DateTime.yyyyMMddHH(date) ;
 	}
@@ -851,7 +851,7 @@
 		Date d = new SimpleDateFormat("yyyyMMddHHmm", Locale.CHINA).parse(yyyyMMddHHmm);
 		Calendar cal = Calendar.getInstance();  
 		cal.setTime(d);			
-		cal.add(Calendar.HOUR_OF_DAY, xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?-xhour:xhour);
 		Date date = cal.getTime() ;
 		return DateTime.yyyyMMddHHmm(date) ;
 	}	/**
@@ -864,7 +864,7 @@
 		Date d = new SimpleDateFormat("yyyyMMddHHmmss", Locale.CHINA).parse(yyyyMMddHHmmss);
 		Calendar cal = Calendar.getInstance();  
 		cal.setTime(d);			
-		cal.add(Calendar.HOUR_OF_DAY, xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?-xhour:xhour);
 		Date date = cal.getTime() ;
 		return DateTime.yyyyMMddHHmmss(date) ;
 	}
@@ -878,7 +878,7 @@
 	public static String nextXHour_yyyy_MM_dd_HH(int xhour){
 		Date date = new Date();
 		Calendar cal = Calendar.getInstance();
-		cal.add(Calendar.HOUR_OF_DAY, xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?-xhour:xhour);
 		date.setTime(cal.getTimeInMillis());			
 		return DateTime.yyyy_MM_dd_HH(date) ;
 	}
@@ -890,7 +890,7 @@
 	public static String nextXHour_yyyy_MM_dd_HH_mm(int xhour){
 		Date date = new Date();
 		Calendar cal = Calendar.getInstance();
-		cal.add(Calendar.HOUR_OF_DAY, xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?-xhour:xhour);
 		date.setTime(cal.getTimeInMillis());			
 		return DateTime.yyyy_MM_dd_HH_mm(date) ;
 	}
@@ -902,7 +902,7 @@
 	public static String nextXHour_yyyy_MM_dd_HH_mm_ss(int xhour){
 		Date date = new Date();
 		Calendar cal = Calendar.getInstance();
-		cal.add(Calendar.HOUR_OF_DAY, xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?-xhour:xhour);
 		date.setTime(cal.getTimeInMillis());			
 		return DateTime.yyyy_MM_dd_HH_mm_ss(date) ;
 	}
@@ -916,7 +916,7 @@
 	public static String nextXHour_yyyyMMddHH(int xhour){
 		Date date = new Date();
 		Calendar cal = Calendar.getInstance();
-		cal.add(Calendar.HOUR_OF_DAY, xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?-xhour:xhour);
 		date.setTime(cal.getTimeInMillis());			
 		return DateTime.yyyyMMddHH(date) ;
 	}
@@ -928,7 +928,7 @@
 	public static String nextXHour_yyyyMMddHHmm(int xhour){
 		Date date = new Date();
 		Calendar cal = Calendar.getInstance();
-		cal.add(Calendar.HOUR_OF_DAY, xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?-xhour:xhour);
 		date.setTime(cal.getTimeInMillis());			
 		return DateTime.yyyyMMddHHmm(date) ;
 	}
@@ -940,7 +940,7 @@
 	public static String nextXHour_yyyyMMddHHmmss(int xhour){
 		Date date = new Date();
 		Calendar cal = Calendar.getInstance();
-		cal.add(Calendar.HOUR_OF_DAY, xhour);
+		cal.add(Calendar.HOUR_OF_DAY, xhour<=0?-xhour:xhour);
 		date.setTime(cal.getTimeInMillis());			
 		return DateTime.yyyyMMddHHmmss(date) ;
 	}
@@ -959,7 +959,7 @@
 		Date d = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).parse(yyyy_MM_dd);
 		Calendar cal = Calendar.getInstance();  
 		cal.setTime(d);			
-		cal.add(Calendar.DAY_OF_YEAR, -xday);
+		cal.add(Calendar.DAY_OF_YEAR, xday<=0?xday:-xday);
 		Date date = cal.getTime() ;
 		return DateTime.yyyy_MM_dd(date) ;
 	}
@@ -973,7 +973,7 @@
 		Date d = new SimpleDateFormat("yyyyMMdd", Locale.CHINA).parse(yyyyMMdd);
 		Calendar cal = Calendar.getInstance();  
 		cal.setTime(d);			
-		cal.add(Calendar.DAY_OF_YEAR, -xday);
+		cal.add(Calendar.DAY_OF_YEAR, xday<=0?xday:-xday);
 		Date date = cal.getTime() ;
 		return DateTime.yyyyMMdd(date) ;
 	}
@@ -985,7 +985,7 @@
 	public static String lastXDay_yyyy_MM_dd(int xday){
 		Date date = new Date();
 		Calendar cal = Calendar.getInstance();
-		cal.add(Calendar.DAY_OF_YEAR, -xday);
+		cal.add(Calendar.DAY_OF_YEAR, xday<=0?xday:-xday);
 		date.setTime(cal.getTimeInMillis());			
 		return DateTime.yyyy_MM_dd(date) ;
 	}
@@ -997,7 +997,7 @@
 	public static String lastXDay_yyyy_MM_dd_HH_ss(int xday){
 		Date date = new Date();
 		Calendar cal = Calendar.getInstance();
-		cal.add(Calendar.DAY_OF_YEAR, -xday);
+		cal.add(Calendar.DAY_OF_YEAR, xday<=0?xday:-xday);
 		date.setTime(cal.getTimeInMillis());			
 		return DateTime.yyyy_MM_dd_HH_mm_ss(date) ;
 	}
@@ -1009,7 +1009,7 @@
 	public static String lastXDay_yyyyMMdd(int xday){
 		Date date = new Date();
 		Calendar cal = Calendar.getInstance();
-		cal.add(Calendar.DAY_OF_YEAR, -xday);
+		cal.add(Calendar.DAY_OF_YEAR, xday<=0?xday:-xday);
 		date.setTime(cal.getTimeInMillis());			
 		return DateTime.yyyyMMdd(date) ;
 	}
@@ -1028,7 +1028,7 @@
 		Date d = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).parse(yyyy_MM_dd);
 		Calendar cal = Calendar.getInstance();  
 		cal.setTime(d);			
-		cal.add(Calendar.DAY_OF_YEAR, xday);
+		cal.add(Calendar.DAY_OF_YEAR, xday<=0?-xday:xday);
 		Date date = cal.getTime() ;
 		return DateTime.yyyy_MM_dd(date) ;
 	}
@@ -1042,7 +1042,7 @@
 		Date d = new SimpleDateFormat("yyyyMMdd", Locale.CHINA).parse(yyyyMMdd);
 		Calendar cal = Calendar.getInstance();  
 		cal.setTime(d);			
-		cal.add(Calendar.DAY_OF_YEAR, xday);
+		cal.add(Calendar.DAY_OF_YEAR, xday<=0?-xday:xday);
 		Date date = cal.getTime() ;
 		return DateTime.yyyyMMdd(date) ;
 	}
@@ -1054,7 +1054,7 @@
 	public static String nextXDay_yyyy_MM_dd(int xday){
 		Date date = new Date();
 		Calendar cal = Calendar.getInstance();
-		cal.add(Calendar.DAY_OF_YEAR, xday);
+		cal.add(Calendar.DAY_OF_YEAR, xday<=0?-xday:xday);
 		date.setTime(cal.getTimeInMillis());			
 		return DateTime.yyyy_MM_dd(date) ;
 	}
@@ -1066,7 +1066,7 @@
 	public static String nextXDay_yyyyMMdd(int xday){
 		Date date = new Date();
 		Calendar cal = Calendar.getInstance();
-		cal.add(Calendar.DAY_OF_YEAR, xday);
+		cal.add(Calendar.DAY_OF_YEAR, xday<=0?-xday:xday);
 		date.setTime(cal.getTimeInMillis());			
 		return DateTime.yyyyMMdd(date) ;
 	}
@@ -1640,6 +1640,8 @@
 		Date dt = getDate(1447857387L) ;
 		String s = yyyy_MM_dd_HH_mm_ss(dt);
 		System.out.println(s);
+
+		System.out.println(lastMonth_ym()) ;
 	}
 
 
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/IDLongGenerator.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/IDLongGenerator.java
index 9f6e86f..3b8a133 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/IDLongGenerator.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/IDLongGenerator.java
@@ -11,7 +11,7 @@
 
 	private static final Object synObj = new Object() ;
 
-	private static final int yearLenght = 4 ;//4锛氬勾搴﹀彇鍥涗綅锛� 3锛氬勾搴﹀彇涓変綅锛� 2锛氬勾搴﹀彇涓や綅锛� 1锛氬勾搴﹀彇涓�浣嶏紝 0锛氬勾搴﹀彇0浣�
+	private static final int yearLength = 4 ;//4锛氬勾搴﹀彇鍥涗綅锛� 3锛氬勾搴﹀彇涓変綅锛� 2锛氬勾搴﹀彇涓や綅锛� 1锛氬勾搴﹀彇涓�浣嶏紝 0锛氬勾搴﹀彇0浣�
 
 	private static int add = 0 ;
 	private static final int chengShu = 1000 ;//1000锛氫笁浣嶈嚜澧為噺锛屽嵆涓�绉掗挓鍙骇鐢�10000涓狪D
@@ -114,17 +114,17 @@
     		//涓婃鐢熸垚ID 涓庢湰娆$敓鎴怚D 涓嶅湪鍚屼竴绉掑唴
     		last = now ;
     		add = 0 ;
-    		id = last * chengShu + add ++;
+    		id = last * chengShu + add++;
     	}else{
     		//涓婃鐢熸垚ID 涓庢湰娆$敓鎴怚D 鍦ㄥ悓涓�绉掑唴
     		if(add >= maxAdd){
     			//闄勫姞閲忓凡缁忕敤灏�
     			waitNextSecond(last) ;//绛夊埌涓嬩竴绉�
-    			id = last * chengShu + add ++ ;//杩斿洖涓婁竴绉掔敓鎴愮殑ID
+    			id = last * chengShu + add++ ;//杩斿洖涓婁竴绉掔敓鎴愮殑ID
 				add = 0 ;//闄勫姞閲忓綊闆讹紝涓轰笅涓�绉掑噯澶�
     		}else{
     			//闄勫姞閲忔湭鐢ㄥ敖
-    			id = last * chengShu + add ++ ;
+    			id = last * chengShu + add++ ;
     		}
     	}
     	return (id * 100) + suffix ;
@@ -238,28 +238,31 @@
 	 * @return 澶勭悊鍚庣殑骞村害
 	 */
 	private static int dealYear(int year){
-		if(yearLenght == 0){
+		if(yearLength == 0){
 			return 0 ;
-		}else if(yearLenght == 1){
+		}else if(yearLength == 1){
 			return year % 10 ;
-		}else if(yearLenght == 2){
+		}else if(yearLength == 2){
 			return year % 100 ;
-		}else if(yearLenght == 3){
+		}else if(yearLength == 3){
 			return year % 1000 ;
-		}else if(yearLenght == 4){
+		}else if(yearLength == 4){
 			return year ;
 		}else{
 			return year ;
 		}
 	}
-//
+
 //	public static void main(String[] args){
+//		Calendar cal = Calendar.getInstance();
+//		System.out.println(cal.get(Calendar.MONTH) + 1) ;
+//
 //		IDLongGenerator o = new IDLongGenerator() ;
-//		int total = 800 ;
-//		long start = System.currentTimeMillis() ;
+//		int total = 1 ;
 //		for(int i = 0 ; i < total ; i++){
 //			System.out.println(o.generate()) ;
 //		}
+//		long start = System.currentTimeMillis() ;
 //		long end = System.currentTimeMillis() ;
 //		System.out.println("浜х敓" + total + "ID鐢ㄦ椂" + (end - start) + "姣");
 //
diff --git a/pipIrr-platform/pipIrr-global/src/bak/RmLossHistory.java b/pipIrr-platform/pipIrr-global/src/bak/RmLossHistory.java
deleted file mode 100644
index 7497e81..0000000
--- a/pipIrr-platform/pipIrr-global/src/bak/RmLossHistory.java
+++ /dev/null
@@ -1,97 +0,0 @@
-package com.dy.pipIrrGlobal.pojoRm;
-
-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.mw.protocol.p206V1_0_0.DataV1_0_1;
-import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCdC0Vo;
-import com.dy.common.po.BaseEntity;
-import com.dy.common.util.DateTime;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-
-import java.util.Date;
-
-/**
- * @Author liurunyu
- * @Date 2024/2/28 15:31
- * @LastEditTime 2024/2/28 15:31
- * @Description 鎺у埗鍣ㄦ棩婕忔崯姘撮噺鍘嗗彶鏁版嵁
- */
-@TableName(value="rm_loss_history_history", autoResultMap = true)
-@Data
-@Builder
-@ToString
-@NoArgsConstructor
-@AllArgsConstructor
-@Schema(name = "鎺у埗鍣ㄦ棩婕忔崯姘撮噺鍘嗗彶鏁版嵁 ")
-public class RmLossHistory implements BaseEntity {
-
-    public static final long serialVersionUID = 202402281620001L;
-    /**
-     * 涓婚敭
-     */
-    @Schema(description = "涓婚敭", requiredMode = Schema.RequiredMode.REQUIRED)
-    @JSONField(serializeUsing= ObjectWriterImplToString.class)
-    @TableId(type = IdType.INPUT)
-    public Long id;
-
-
-    /**
-     * 鎺у埗鍣ㄥ疄浣揑D锛堝閿級
-     */
-    @Schema(description = "鎺у埗鍣ㄥ疄浣撳閿�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @JSONField(serializeUsing= ObjectWriterImplToString.class)
-    public Long controllerId;
-
-    /**
-     * 鍙栨按鍙e疄浣揑D锛堝閿級
-     */
-    @Schema(description = "鍙栨按鍙e疄浣撳閿�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @JSONField(serializeUsing= ObjectWriterImplToString.class)
-    public Long intakeId;
-
-    /**
-     * 鎺у埗鍣ㄥ湴鍧�
-     */
-    @Schema(description = "鎺у埗鍣ㄥ湴鍧�", requiredMode = Schema.RequiredMode.REQUIRED)
-    public String rtuAddr;
-
-    /**
-     * 鏁版嵁鎺ユ敹鏃ユ湡鏃堕棿
-     */
-    @Schema(description = "涓婃姤鏃ユ湡鏃堕棿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    public Date dt;
-
-    /**
-     * 鎺у埗鍣ㄥ綋鏃ユ渶鍚庝笂鎶ユ暟鎹椂闂�
-     */
-    @Schema(description = "鎺у埗鍣ㄥ綋鏃ユ渶鍚庝笂鎶ユ暟鎹椂闂�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:SS")
-    public Date dtLast;
-
-    /**
-     * 鎺у埗鍣ㄥ綋鏃ユ渶鍚庝笂鎶ユ暟鎹腑鐨勬帶鍒跺櫒鏃堕挓
-     */
-    @Schema(description = "鎺у埗鍣ㄦ椂閽�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:SS")
-    public Date dtRtu;
-
-    /**
-    * 鏃ユ紡鎹熸祦閲�
-    */
-    @Schema(description = "鏃ユ紡鎹熼噺锛坢3锛�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    public Double lossAmount;
-
-
-    public void valueFrom(DataV1_0_1 dV1_0_1, DataCdC0Vo cdData) throws Exception{
-        this.dt = DateTime.dateFrom_yyyy_MM_dd1(dV1_0_1.dt);
-        this.dtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt);
-        this.dtRtu = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt);
-        this.lossAmount = cdData.lossAmount ;// 鎹熷け娴侀噺(浠�0鏃跺埌褰撳墠鐨勬紡鎹熺疮璁℃祦閲忥紝24鏃朵竴涓懆鏈燂紝0鏃跺綊0)鍗曚綅涓簃3銆�
-    }
-}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/bak/RmLossHistoryMapper.java b/pipIrr-platform/pipIrr-global/src/bak/RmLossHistoryMapper.java
deleted file mode 100644
index 3630d80..0000000
--- a/pipIrr-platform/pipIrr-global/src/bak/RmLossHistoryMapper.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package com.dy.pipIrrGlobal.daoRm;
-
-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 {
-    /**
-     * 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/bak/RmLossHistoryMapper.xml b/pipIrr-platform/pipIrr-global/src/bak/RmLossHistoryMapper.xml
deleted file mode 100644
index 858ff67..0000000
--- a/pipIrr-platform/pipIrr-global/src/bak/RmLossHistoryMapper.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?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">
-    <!--@mbg.generated-->
-    <!--@Table rm_loss_history-->
-    <id column="id" jdbcType="BIGINT" property="id" />
-    <result column="controller_id" jdbcType="BIGINT" property="controllerId" />
-    <result column="intake_id" jdbcType="BIGINT" property="intakeId" />
-    <result column="rtu_addr" jdbcType="VARCHAR" property="rtuAddr" />
-    <result column="dt" jdbcType="DATE" property="dt" />
-    <result column="dt_last" jdbcType="TIMESTAMP" property="dtLast" />
-    <result column="dt_rtu" jdbcType="TIMESTAMP" property="dtRtu" />
-    <result column="loss_amount" jdbcType="DOUBLE" property="lossAmount" />
-  </resultMap>
-  <sql id="Base_Column_List">
-    <!--@mbg.generated-->
-    id, controller_id, intake_id, rtu_addr, dt, dt_last, dt_rtu, loss_amount
-  </sql>
-  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
-    <!--@mbg.generated-->
-    select 
-    <include refid="Base_Column_List" />
-    from rm_loss_history
-    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
-    where dt = #{dt,jdbcType=DATE}
-  </select>
-  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
-    <!--@mbg.generated-->
-    delete from rm_loss_history
-    where id = #{id,jdbcType=BIGINT}
-  </delete>
-  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossHistory">
-    <!--@mbg.generated-->
-    insert into rm_loss_history (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">
-    <!--@mbg.generated-->
-    insert into rm_loss_history
-    <trim prefix="(" suffix=")" suffixOverrides=",">
-      <if test="id != null">
-        id,
-      </if>
-      <if test="controllerId != null">
-        controller_id,
-      </if>
-      <if test="intakeId != null">
-        intake_id,
-      </if>
-      <if test="rtuAddr != null">
-        rtu_addr,
-      </if>
-      <if test="dt != null">
-        dt,
-      </if>
-      <if test="dtLast != null">
-        dt_last,
-      </if>
-     <if test="dtRtu != null">
-        dt_rtu,
-      </if>
-      <if test="lossAmount != null">
-        loss_amount,
-      </if>
-    </trim>
-    <trim prefix="values (" suffix=")" suffixOverrides=",">
-      <if test="id != null">
-        #{id,jdbcType=BIGINT},
-      </if>
-      <if test="controllerId != null">
-        #{controllerId,jdbcType=BIGINT},
-      </if>
-      <if test="intakeId != null">
-        #{intakeId,jdbcType=BIGINT},
-      </if>
-      <if test="rtuAddr != null">
-        #{rtuAddr,jdbcType=VARCHAR},
-      </if>
-      <if test="dt != null">
-        #{dt,jdbcType=DATE},
-      </if>
-      <if test="dtLast != null">
-        #{dtLast,jdbcType=TIMESTAMP},
-      </if>
-      <if test="dtRtu != null">
-        #{dtRtu,jdbcType=TIMESTAMP},
-      </if>
-      <if test="lossAmount != null">
-        #{lossAmount,jdbcType=DOUBLE},
-      </if>
-    </trim>
-  </insert>
-  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossHistory">
-    <!--@mbg.generated-->
-    update rm_loss_history
-    <set>
-      <if test="controllerId != null">
-        controller_id = #{controllerId,jdbcType=BIGINT},
-      </if>
-      <if test="intakeId != null">
-        intake_id = #{intakeId,jdbcType=BIGINT},
-      </if>
-      <if test="rtuAddr != null">
-        rtu_addr = #{rtuAddr,jdbcType=VARCHAR},
-      </if>
-      <if test="dt != null">
-        dt = #{dt,jdbcType=DATE},
-      </if>
-      <if test="dtLast != null">
-        dt_last = #{dtLast,jdbcType=TIMESTAMP},
-      </if>
-      <if test="dtRtu != null">
-        dt_rtu = #{dtRtu,jdbcType=TIMESTAMP},
-      </if>
-      <if test="lossAmount != null">
-        loss_amount = #{lossAmount,jdbcType=DOUBLE},
-      </if>
-    </set>
-    where id = #{id,jdbcType=BIGINT}
-  </update>
-  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossHistory">
-    <!--@mbg.generated-->
-    update rm_loss_history
-    set controller_id = #{controllerId,jdbcType=BIGINT},
-      intake_id = #{intakeId,jdbcType=BIGINT},
-      rtu_addr = #{rtuAddr,jdbcType=VARCHAR},
-      dt = #{dt,jdbcType=DATE},
-      dt_last = #{dtLast,jdbcType=TIMESTAMP},
-      dt_rtu = #{dtRtu,jdbcType=TIMESTAMP},
-      loss_amount = #{lossAmount,jdbcType=DOUBLE}
-    where id = #{id,jdbcType=BIGINT}
-  </update>
-</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/bak/RmLossLast.java b/pipIrr-platform/pipIrr-global/src/bak/RmLossLast.java
deleted file mode 100644
index 5b5479d..0000000
--- a/pipIrr-platform/pipIrr-global/src/bak/RmLossLast.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package com.dy.pipIrrGlobal.pojoRm;
-
-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.mw.protocol.p206V1_0_0.DataV1_0_1;
-import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCdC0Vo;
-import com.dy.common.po.BaseEntity;
-import com.dy.common.util.DateTime;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-
-import java.util.Date;
-
-/**
- * @Author liurunyu
- * @Date 2024/2/28 15:31
- * @LastEditTime 2024/2/28 15:31
- * @Description 鎺у埗鍣ㄦ棩婕忔崯姘撮噺鏈�鏂版暟鎹�
- */
-@TableName(value="rm_loss_last_history", autoResultMap = true)
-@Data
-@Builder
-@ToString
-@NoArgsConstructor
-@AllArgsConstructor
-@Schema(name = "鎺у埗鍣ㄦ棩婕忔崯姘撮噺鏈�鏂版暟鎹�")
-public class RmLossLast implements BaseEntity {
-
-    public static final long serialVersionUID = 202402281621001L;
-    /**
-     * 涓婚敭
-     */
-    @Schema(description = "涓婚敭", requiredMode = Schema.RequiredMode.REQUIRED)
-    @JSONField(serializeUsing= ObjectWriterImplToString.class)
-    @TableId(type = IdType.INPUT)
-    public Long id;
-
-    /**
-     * 鐢辨渶鏂版暟鎹寔鏈夊巻鍙叉暟鎹腑鐨勬渶鏂拌褰旾D锛屼互鏂逛究蹇�熸煡璇�
-     * json涓嶅簭鍒楀寲姝ゅ睘鎬э紝鍗充笉鍚戝墠绔〉闈㈠彂閫佸強鏄剧ず
-     */
-    @Schema(hidden=true)
-    @JSONField(serialize = false)
-    public Long lastHistoryId;
-
-    /**
-     * 鎺у埗鍣ㄥ疄浣揑D锛堝閿級
-     */
-    @Schema(description = "鎺у埗鍣ㄥ疄浣撳閿�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @JSONField(serializeUsing= ObjectWriterImplToString.class)
-    public Long controllerId;
-
-    /**
-     * 鍙栨按鍙e疄浣揑D锛堝閿級
-     */
-    @Schema(description = "鍙栨按鍙e疄浣撳閿�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @JSONField(serializeUsing= ObjectWriterImplToString.class)
-    public Long intakeId;
-
-    /**
-     * 鎺у埗鍣ㄥ湴鍧�
-     */
-    @Schema(description = "鎺у埗鍣ㄥ湴鍧�", requiredMode = Schema.RequiredMode.REQUIRED)
-    public String rtuAddr;
-
-    /**
-     * 缁熻鏃�
-     */
-    @Schema(description = "缁熻鏃�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    public Date dt;
-
-    /**
-     * 鎺у埗鍣ㄥ綋鏃ユ渶鍚庝笂鎶ユ暟鎹椂闂�
-     */
-    @Schema(description = "鎺у埗鍣ㄥ綋鏃ユ渶鍚庝笂鎶ユ暟鎹椂闂�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:SS")
-    public Date dtLast;
-
-    /**
-     * 鎺у埗鍣ㄥ綋鏃ユ渶鍚庝笂鎶ユ暟鎹腑鐨勬帶鍒跺櫒鏃堕挓
-     */
-    @Schema(description = "鎺у埗鍣ㄦ椂閽�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:SS")
-    public Date dtRtu;
-
-    /**
-     * 鏃ユ紡鎹熸祦閲�
-     */
-    @Schema(description = "鏃ユ紡鎹熼噺锛坢3锛�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    public Double lossAmount;
-
-    public void valueFrom(DataV1_0_1 dV1_0_1, DataCdC0Vo cdData) throws Exception{
-        this.dt = DateTime.dateFrom_yyyy_MM_dd1(dV1_0_1.dt);
-        this.dtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt);
-        this.dtRtu = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt);
-        this.lossAmount = cdData.lossAmount ;// 鎹熷け娴侀噺(浠�0鏃跺埌褰撳墠鐨勬紡鎹熺疮璁℃祦閲忥紝24鏃朵竴涓懆鏈燂紝0鏃跺綊0)鍗曚綅涓簃3銆�
-    }
-
-}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/bak/RmLossLastMapper.java b/pipIrr-platform/pipIrr-global/src/bak/RmLossLastMapper.java
deleted file mode 100644
index 2e7733c..0000000
--- a/pipIrr-platform/pipIrr-global/src/bak/RmLossLastMapper.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package com.dy.pipIrrGlobal.daoRm;
-
-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 RmLossLastMapper {
-    /**
-     * 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(RmLossLast record);
-
-    /**
-     * insert record to table selective
-     * @param record the record
-     * @return insert count
-     */
-    int insertSelective(RmLossLast record);
-
-    /**
-     * select by primary key
-     * @param id primary key
-     * @return object by primary key
-     */
-    RmLossLast selectByPrimaryKey(Long id);
-
-    /**
-     * select by rtuAddr
-     * @param intakeId 鎺у埗鍣ㄦ墍缁戝彇姘村彛ID
-     * @return object by rtuAddr
-     */
-    List<RmLossLast> selectByIntakeId(Long intakeId) ;
-   /**
-     * select by dt
-     * @param date 鏃ユ湡锛坹yyy-mm-dd锛�
-     * @return object by rtuAddr
-     */
-    List<RmLossLast> selectByDate(Date date) ;
-
-    /**
-     * update record selective
-     * @param record the updated record
-     * @return update count
-     */
-    int updateByPrimaryKeySelective(RmLossLast record);
-
-    /**
-     * update record
-     * @param record the updated record
-     * @return update count
-     */
-    int updateByPrimaryKey(RmLossLast record);
-}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/bak/RmLossLastMapper.xml b/pipIrr-platform/pipIrr-global/src/bak/RmLossLastMapper.xml
deleted file mode 100644
index 5a99947..0000000
--- a/pipIrr-platform/pipIrr-global/src/bak/RmLossLastMapper.xml
+++ /dev/null
@@ -1,162 +0,0 @@
-<?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">
-    <!--@mbg.generated-->
-    <!--@Table rm_loss_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" />
-    <result column="intake_id" jdbcType="BIGINT" property="intakeId" />
-    <result column="rtu_addr" jdbcType="VARCHAR" property="rtuAddr" />
-    <result column="dt" jdbcType="DATE" property="dt" />
-    <result column="dt_last" jdbcType="TIMESTAMP" property="dtLast" />
-    <result column="dt_rtu" jdbcType="TIMESTAMP" property="dtRtu" />
-    <result column="loss_amount" jdbcType="DOUBLE" property="lossAmount" />
-  </resultMap>
-  <sql id="Base_Column_List">
-    <!--@mbg.generated-->
-    id, last_history_id, controller_id, intake_id, rtu_addr, dt, dt_last, dt_rtu, loss_amount
-  </sql>
-  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
-    <!--@mbg.generated-->
-    select 
-    <include refid="Base_Column_List" />
-    from rm_loss_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
-    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
-    where dt = #{dt,jdbcType=DATE}
-  </select>
-  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
-    <!--@mbg.generated-->
-    delete from rm_loss_last
-    where id = #{id,jdbcType=BIGINT}
-  </delete>
-  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossLast">
-    <!--@mbg.generated-->
-    insert into rm_loss_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">
-    <!--@mbg.generated-->
-    insert into rm_loss_last
-    <trim prefix="(" suffix=")" suffixOverrides=",">
-      <if test="id != null">
-        id,
-      </if>
-      <if test="lastHistoryId != null">
-        last_history_id,
-      </if>
-      <if test="controllerId != null">
-        controller_id,
-      </if>
-      <if test="intakeId != null">
-        intake_id,
-      </if>
-      <if test="rtuAddr != null">
-        rtu_addr,
-      </if>
-      <if test="dt != null">
-        dt,
-      </if>
-      <if test="dtLast != null">
-        dt_last,
-      </if>
-      <if test="dtRtu != null">
-        dt_rtu,
-      </if>
-      <if test="lossAmount != null">
-        loss_amount,
-      </if>
-    </trim>
-    <trim prefix="values (" suffix=")" suffixOverrides=",">
-      <if test="id != null">
-        #{id,jdbcType=BIGINT},
-      </if>
-      <if test="lastHistoryId != null">
-        #{lastHistoryId,jdbcType=BIGINT},
-      </if>
-      <if test="controllerId != null">
-        #{controllerId,jdbcType=BIGINT},
-      </if>
-      <if test="intakeId != null">
-        #{intakeId,jdbcType=BIGINT},
-      </if>
-      <if test="rtuAddr != null">
-        #{rtuAddr,jdbcType=VARCHAR},
-      </if>
-      <if test="dt != null">
-        #{dt,jdbcType=DATE},
-      </if>
-      <if test="dtLast != null">
-        #{dtLast,jdbcType=TIMESTAMP},
-      </if>
-      <if test="dtRtu != null">
-        #{dtRtu,jdbcType=TIMESTAMP},
-      </if>
-      <if test="lossAmount != null">
-        #{lossAmount,jdbcType=DOUBLE},
-      </if>
-    </trim>
-  </insert>
-  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossLast">
-    <!--@mbg.generated-->
-    update rm_loss_last
-    <set>
-      <if test="lastHistoryId != null">
-        last_history_id = #{lastHistoryId,jdbcType=BIGINT},
-      </if>
-      <if test="controllerId != null">
-        controller_id = #{controllerId,jdbcType=BIGINT},
-      </if>
-      <if test="intakeId != null">
-        intake_id = #{intakeId,jdbcType=BIGINT},
-      </if>
-      <if test="rtuAddr != null">
-        rtu_addr = #{rtuAddr,jdbcType=VARCHAR},
-      </if>
-      <if test="dt != null">
-        dt = #{dt,jdbcType=DATE},
-      </if>
-     <if test="dtLast != null">
-       dt_last = #{dtLast,jdbcType=TIMESTAMP},
-      </if>
-     <if test="dtRtu != null">
-       dt_rtu = #{dtRtu,jdbcType=TIMESTAMP},
-      </if>
-      <if test="lossAmount != null">
-        loss_amount = #{lossAmount,jdbcType=DOUBLE},
-      </if>
-    </set>
-    where id = #{id,jdbcType=BIGINT}
-  </update>
-  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmLossLast">
-    <!--@mbg.generated-->
-    update rm_loss_last
-    set last_history_id = #{lastHistoryId,jdbcType=BIGINT},
-      controller_id = #{controllerId,jdbcType=BIGINT},
-      intake_id = #{intakeId,jdbcType=BIGINT},
-      rtu_addr = #{rtuAddr,jdbcType=VARCHAR},
-      dt = #{dt,jdbcType=DATE},
-      dt_last = #{dtLast,jdbcType=TIMESTAMP},
-      dt_rtu = #{dtRtu,jdbcType=TIMESTAMP},
-      loss_amount = #{lossAmount,jdbcType=DOUBLE}
-    where id = #{id,jdbcType=BIGINT}
-  </update>
-</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOnHourReportHistoryMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOnHourReportHistoryMapper.java
index edcde57..1eaa921 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOnHourReportHistoryMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOnHourReportHistoryMapper.java
@@ -2,8 +2,11 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoRm.RmOnHourReportHistory;
-import com.dy.pipIrrGlobal.pojoRm.RmOnHourReportLast;
+import com.dy.pipIrrGlobal.voRm.VoOnHour;
 import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * @Author: liurunyu
@@ -53,4 +56,18 @@
      * @return update count
      */
     int updateByPrimaryKey(RmOnHourReportHistory record);
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鏁寸偣鎶ュ巻鍙茶褰曟暟閲�
+     * @param params
+     * @return
+     */
+    Long getOnHourReportsCount_history(Map<?, ?> params);
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鏁寸偣鎶ュ巻鍙茶褰�
+     * @param params
+     * @return
+     */
+    List<VoOnHour> getOnHourReports_history(Map<?, ?> params);
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeManagerCardMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeManagerCardMapper.java
new file mode 100644
index 0000000..6df948a
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeManagerCardMapper.java
@@ -0,0 +1,35 @@
+package com.dy.pipIrrGlobal.daoSe;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoSe.SeManagerCard;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-07-24 10:36
+ * @LastEditTime 2024-07-24 10:36
+ * @Description
+ */
+
+@Mapper
+public interface SeManagerCardMapper extends BaseMapper<SeManagerCard> {
+    int deleteByPrimaryKey(Long id);
+
+    int insert(SeManagerCard record);
+
+    int insertSelective(SeManagerCard record);
+
+    SeManagerCard selectByPrimaryKey(Long id);
+
+    int updateByPrimaryKeySelective(SeManagerCard record);
+
+    int updateByPrimaryKey(SeManagerCard record);
+
+    /**
+     * 鏍规嵁琛屾斂鍖哄垝涓叉ā绯婃煡璇㈢鐞嗗崱缂栧彿
+     * @param areaCode
+     * @return
+     */
+    String getManagerCardNumOfMax(@Param("areaCode") String areaCode);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeManagerCard.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeManagerCard.java
new file mode 100644
index 0000000..6bf4d99
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeManagerCard.java
@@ -0,0 +1,72 @@
+package com.dy.pipIrrGlobal.pojoSe;
+
+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 com.fasterxml.jackson.annotation.JsonFormat;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.*;
+import org.hibernate.validator.constraints.Length;
+
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-07-24 10:36
+ * @LastEditTime 2024-07-24 10:36
+ * @Description
+ */
+/**
+ * 绠$悊鍛樻按鍗¤〃
+ */
+
+@TableName(value = "se_manager_card", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+public class SeManagerCard implements BaseEntity {
+    public static final long serialVersionUID = 202407241040001L;
+
+    /**
+    * 涓婚敭
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    private Long id;
+
+    /**
+    * 鍗$墖鍦板潃
+    */
+    @NotBlank(message = "鍗$墖鍦板潃涓嶈兘涓虹┖")
+    private String cardAddr;
+
+    /**
+    * 鍗$墖缂栧彿
+    */
+    @NotBlank(message = "鍗$墖缂栧彿涓嶈兘涓虹┖")
+    private String cardNum;
+
+    /**
+    * 鍗$墖绫诲瀷;2-绠$悊绉戯紝4-寮�鍏抽榾鍗★紝5娓呯┖鍗�
+    */
+    @NotNull(message = "鍗$墖绫诲瀷涓嶈兘涓虹┖")
+    private Byte cardType;
+
+    /**
+    * 寮�鍗℃椂闂�
+    */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /**
+    * 澶囨敞淇℃伅
+    */
+    @Length(max = 200)
+    private String remarks;
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/Org.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/Org.java
index fa3fdc0..5e3341f 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/Org.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/Org.java
@@ -1,67 +1,28 @@
 package com.dy.pipIrrGlobal.util;
 
-
-import com.alibaba.fastjson2.JSONObject;
-import com.alibaba.fastjson2.annotation.JSONField;
-import com.baomidou.mybatisplus.annotation.EnumValue;
-
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-public enum Org {
-
-//    Ym("ym", "鍏冭皨"),
-//    Pj("pj", "鐗囪闀�"),
-    Sp("sp", "娌欑洏"),
-    Jyg("ym", "鍢夊唱鍏�");
-
-    @EnumValue
-    public String tag ;
-    public String name ;
-
-    Org(String tag, String name){
-        this.tag = tag ;
-        this.name = name ;
-    }
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/24 11:45
+ * @Description
+ */
+public class Org {
     //鐢ㄦ潵杞琷son
-    public static List<Map> OrgList = new ArrayList<>();
-    static {
-        Org[] all = Org.values();
-        for (Org one : all) {
-            Map<String, String> objMap = new HashMap<>();
-            objMap.put("tag", one.tag);
-            objMap.put("name", one.name);
-            OrgList.add(objMap) ;
+    public static List<OrgVo> OrgList = new ArrayList<>();
+
+    public class OrgVo{
+        public String tag ;
+        public String name ;
+
+        public String getTag() {
+            return this.tag ;
+        }
+
+        public String getName() {
+            return this.name ;
         }
     }
-
-    public String getTag() {
-        return this.tag ;
-    }
-
-    public String getName() {
-        return this.name ;
-    }
-
-    public static Org get(String tag){
-//        if(tag.equals(Ym.tag) || tag.equals(Jyg.tag)){
-//            return Ym ;
-//        }else if(tag.equals(Pj.tag)){
-//            return Pj ;
-//        }
-        if(tag.equals(Jyg.tag)){
-            return Jyg ;
-        }else if(tag.equals(Sp.tag)) {
-            return Sp;
-        }
-        return null ;
-    }
-
-
-    @JSONField
-    public JSONObject toJson() {
-        return JSONObject.of("tag", getTag(), "name", getName());
-    }
-}
\ No newline at end of file
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/OrgListenerSupport.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/OrgListenerSupport.java
new file mode 100644
index 0000000..d4c1c14
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/OrgListenerSupport.java
@@ -0,0 +1,56 @@
+package com.dy.pipIrrGlobal.util;
+
+import com.dy.common.util.ConfigXml;
+import com.dy.common.webListener.ConfigListener;
+import org.jdom2.Document;
+import org.springframework.boot.context.event.ApplicationReadyEvent;
+
+import java.net.URL;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/24 13:41
+ * @Description
+ */
+public abstract class OrgListenerSupport {
+
+    /**
+     * 瀹炲鍖�
+     */
+    @SuppressWarnings("unused ")
+    protected void init() {
+        this.init(null);
+    }
+    /**
+     * 瀹炲鍖�
+     */
+    @SuppressWarnings("unused ")
+    protected void init(ApplicationReadyEvent event) {
+        try {
+            URL configFileURL = ConfigListener.class.getResource("/init-config.xml");
+            ConfigXml configXml = new ConfigXml();
+            Document doc = configXml.createDom(configFileURL);
+            this.doInit(configXml, doc);
+        } catch (Exception e) {
+            System.out.println("绯荤粺鍚姩鏃讹紝鍒濆鍖栭厤缃嚭閿� !");
+            System.out.println(e.getMessage());
+            e.printStackTrace();
+        }
+    }
+    private void doInit(ConfigXml configXml, Document doc) throws Exception {
+        if (configXml != null && doc != null) {
+            for (int num = 1; num <= 10000; num++) {
+                if (configXml.existElement(doc, "config.orgs.org" + num)) {
+                    String orgTag = configXml.getSetAttrTxt(doc, "config.orgs.org" + num, "tag", null, false, null);
+                    String orgName = configXml.getSetAttrTxt(doc, "config.orgs.org" + num, "name", null, false, null);
+                    Org.OrgVo vo = new Org().new OrgVo() ;
+                    vo.tag = orgTag ;
+                    vo.name = orgName ;
+                    Org.OrgList.add(vo) ;
+                }else{
+                    break ;
+                }
+            }
+        }
+    }
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoOnHour.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoOnHour.java
new file mode 100644
index 0000000..26dece0
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoOnHour.java
@@ -0,0 +1,75 @@
+package com.dy.pipIrrGlobal.voRm;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-07-23 17:12
+ * @LastEditTime 2024-07-23 17:12
+ * @Description 鏁寸偣鎶ユ暟鎹鍥惧璞�
+ */
+
+@Data
+public class VoOnHour {
+    private static final long serialVersionUID = 202407231713001L;
+
+    /**
+     * 鍙栨按鍙D
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long intakeId;
+
+    /**
+     * 鍙栨按鍙g紪鍙�
+     */
+    private String intakeNum;
+
+    /**
+     * 闃�鎺у櫒鍦板潃
+     */
+    private String rtuAddr;
+
+    /**
+     * 鏁版嵁鎺ユ敹鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private String receiveTime;
+
+    /**
+     * 鐬椂娴侀噺
+     */
+    private Double instantAmount;
+
+    /**
+     * 绱娴侀噺
+     */
+    private Double totalAmount;
+
+    /**
+     * 鎹熷け娴侀噺锛屼粠褰撴棩0鏃跺埌褰撳墠鐨勬紡鎹熺疮璁℃祦閲�
+     */
+    private Double lossAmount;
+
+    /**
+     * 姘村帇
+     */
+    private Double waterPress;
+
+    /**
+     * 钃勭數姹犵數鍘�
+     */
+    private Double batteryVolt;
+
+    /**
+     * 淇″彿寮哄害
+     */
+    private Integer signalValue;
+
+    /**
+     * 姘翠环
+     */
+    private Double waterPrice;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/application-database-pj.yml b/pipIrr-platform/pipIrr-global/src/main/resources/application-database-pj.yml
index 41ba0b1..04da6ce 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/application-database-pj.yml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/application-database-pj.yml
@@ -14,10 +14,10 @@
                 # 鏁版嵁婧愬悕绉帮細褰撳瓨鍦ㄥ涓暟鎹簮鏃讹紝璁剧疆鍚嶅瓧鍙互寰堟柟渚跨殑鏉ヨ繘琛屽尯鍒�,榛樿鑷姩鐢熸垚鍚嶇О锛屾牸寮忔槸锛�"DataSource-" + System.identityHashCode(this)
                 name: druid-mysql-pj
                 #閰嶇疆鍒濆鍖栧ぇ灏忋�佹渶灏忋�佹渶澶�
-                initialSize: 1
-                minIdle: 1
+                initialSize: 10
+                minIdle: 10
                 maxActive: 100
-                #閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂达紝鍗曚綅鏄绉�
+                # 鑾峰彇杩炴帴鏃舵渶澶х瓑寰呮椂闂�,鍗曚綅姣銆傞厤缃簡maxWait涔嬪悗,缂虹渷鍚敤鍏钩閿�,骞跺彂鏁堢巼浼氭湁鎵�涓嬮檷,濡傛灉闇�瑕佸彲浠ラ�氳繃閰嶇疆useUnfairLock灞炴�т负true浣跨敤闈炲叕骞抽攣
                 maxWait: 6000
                 #閰嶇疆闂撮殧澶氫箙杩涜涓�娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆绉掋�� 榛樿鏄�60s锛屽お闀垮彲鑳戒細瀵艰嚧鏃犳硶鍙婃椂妫�娴嬪埌杩炴帴涓柇
                 timeBetweenEvictionRunsMillis: 60000
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/application-database-sp.yml b/pipIrr-platform/pipIrr-global/src/main/resources/application-database-sp.yml
index 89a4fbc..12a5301 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/application-database-sp.yml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/application-database-sp.yml
@@ -16,7 +16,7 @@
         #閰嶇疆鍒濆鍖栧ぇ灏忋�佹渶灏忋�佹渶澶�
         initialSize: 10
         minIdle: 10
-        maxActive: 200
+        maxActive: 100
         # 鑾峰彇杩炴帴鏃舵渶澶х瓑寰呮椂闂�,鍗曚綅姣銆傞厤缃簡maxWait涔嬪悗,缂虹渷鍚敤鍏钩閿�,骞跺彂鏁堢巼浼氭湁鎵�涓嬮檷,濡傛灉闇�瑕佸彲浠ラ�氳繃閰嶇疆useUnfairLock灞炴�т负true浣跨敤闈炲叕骞抽攣
         maxWait: 60000
         #閰嶇疆闂撮殧澶氫箙杩涜涓�娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆绉掋�� 榛樿鏄�60s锛屽お闀垮彲鑳戒細瀵艰嚧鏃犳硶鍙婃椂妫�娴嬪埌杩炴帴涓柇
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/application-database-ym.yml b/pipIrr-platform/pipIrr-global/src/main/resources/application-database-ym.yml
index 3b1c640..407c631 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/application-database-ym.yml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/application-database-ym.yml
@@ -16,7 +16,7 @@
                 #閰嶇疆鍒濆鍖栧ぇ灏忋�佹渶灏忋�佹渶澶�
                 initialSize: 10
                 minIdle: 10
-                maxActive: 200
+                maxActive: 100
                 # 鑾峰彇杩炴帴鏃舵渶澶х瓑寰呮椂闂�,鍗曚綅姣銆傞厤缃簡maxWait涔嬪悗,缂虹渷鍚敤鍏钩閿�,骞跺彂鏁堢巼浼氭湁鎵�涓嬮檷,濡傛灉闇�瑕佸彲浠ラ�氳繃閰嶇疆useUnfairLock灞炴�т负true浣跨敤闈炲叕骞抽攣
                 maxWait: 60000
                 #閰嶇疆闂撮殧澶氫箙杩涜涓�娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆绉掋�� 榛樿鏄�60s锛屽お闀垮彲鑳戒細瀵艰嚧鏃犳硶鍙婃椂妫�娴嬪埌杩炴帴涓柇
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 1490364..cf03082 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -136,6 +136,8 @@
     projectNo: 10
     #鎺у埗鍣ㄧ被鍨�
     controllerType: 57
+    #榛樿琛屾斂鍖哄垝缂栫爜锛堝ぉ娲�-澶╂触甯�-姝︽竻鍖�-浜花宸ヤ笟鍥�-澶х鑺傛按锛�
+    divisionCode: 120114403100
 
 
 #閫氳鍗忚
@@ -157,10 +159,7 @@
         - /sso/sso
         - /remote/comRes/receive
         - /wx/comRes/receive
-#鑷姩缁熻閰嶇疆
+#鑷姩缁熻閰嶇疆锛岃嚜鍔ㄧ粺璁″畾鏃朵换鍔′細姣忓ぉ瀹氭椂杩涜
 auto-statistics:
-    #鏈堢粺璁�
-    month:
-        startDay: 1
-        startHour: 0
-        startMinute: 5
+    startHour: 9 #寮�濮嬪皬鏃� 0
+    startMinute: 51 #寮�濮嬪垎閽� 5
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/init-config.xml b/pipIrr-platform/pipIrr-global/src/main/resources/init-config.xml
index 2302751..e346337 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/init-config.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/init-config.xml
@@ -2,7 +2,7 @@
 <config>
     <orgs>
         <!-- 澶氫釜缁勭粐锛岀敤缂栧彿鍖哄垎锛岀紪鍙蜂粠1寮�濮� -->
-        <org1 name="ym">
+        <org1 tag="ym" name="鍏冭皨">
             <districts>
                 <province name="浜戝崡鐪�" num="53" level="1">
                     <city name="妤氶泟褰濇棌鑷不宸�" num="23" level="2">
@@ -18,8 +18,8 @@
                 <item4 name="閾惰杞处"/>
             </payments>
             <settings>
-                    <item1 item_name="lng" item_value="101.87345" remarks="缁忓害"/>
-                    <item2 item_name="lat" item_value="25.70424" remarks="绾害"/>
+                <item1 item_name="lng" item_value="101.87345" remarks="缁忓害"/>
+                <item2 item_name="lat" item_value="25.70424" remarks="绾害"/>
             </settings>
             <waterTypes>
                 <item1 typeName="鐏屾簤鐢ㄦ按"/>
@@ -29,7 +29,7 @@
                 <item5 typeName="缁垮寲鐢ㄦ按"/>
             </waterTypes>
         </org1>
-        <org2 name="sp">
+        <org2 tag="sp" name="娌欑洏">
             <districts>
                 <province name="澶╂触" num="53" level="1">
                     <city name="澶╂触甯�" num="23" level="2">
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportHistoryMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportHistoryMapper.xml
index a06bd6d..dab83eb 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportHistoryMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportHistoryMapper.xml
@@ -194,4 +194,58 @@
       water_price = #{waterPrice,jdbcType=FLOAT}
     where id = #{id,jdbcType=BIGINT}
   </update>
+
+  <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鏁寸偣鎶ュ巻鍙茶褰曟暟閲�-->
+  <select id="getOnHourReportsCount_history" resultType="java.lang.Long">
+    SELECT
+        COUNT(*) AS recordCount
+    FROM rm_on_hour_report_history oh
+    INNER JOIN pr_intake inta ON inta.id = oh.intake_id
+    <where>
+      <if test = "intakeName != null and intakeName !=''">
+        AND inta.name LIKE CONCAT('%',#{intakeName},'%')
+      </if>
+      <if test = "rtuAddr != null and rtuAddr !=''">
+        AND oh.rtu_addr LIKE CONCAT('%',#{rtuAddr},'%')
+      </if>
+      <if test = "timeStart != null and timeStop != null">
+        AND oh.dt BETWEEN #{timeStart} AND #{timeStop}
+      </if>
+    </where>
+  </select>
+
+  <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鏁寸偣鎶ュ巻鍙茶褰�-->
+  <select id="getOnHourReports_history" resultType="com.dy.pipIrrGlobal.voRm.VoOnHour">
+    SELECT
+      oh.intake_id AS intakeId,
+      inta.`name` AS intakeNum,
+      oh.rtu_addr AS rtuAddr,
+      oh.dt AS receiveTime,
+      oh.instant_amount AS instantAmount,
+      oh.total_amount AS totalAmount,
+      oh.loss_amount AS lossAmount,
+      oh.water_press AS waterPress,
+      oh.battery_volt AS batteryVolt,
+      oh.signal_value AS signalValue,
+      oh.water_price AS waterPrice
+    FROM rm_on_hour_report_history oh
+        INNER JOIN pr_intake inta ON inta.id = oh.intake_id
+    <where>
+      <if test = "intakeNum != null and intakeNum !=''">
+        AND inta.name LIKE CONCAT('%',#{intakeNum},'%')
+      </if>
+      <if test = "rtuAddr != null and rtuAddr !=''">
+        AND oh.rtu_addr LIKE CONCAT('%',#{rtuAddr},'%')
+      </if>
+      <if test = "timeStart != null and timeStop != null">
+        AND oh.dt BETWEEN #{timeStart} AND #{timeStop}
+      </if>
+    </where>
+    ORDER BY oh.dt DESC
+    <trim prefix="limit " >
+      <if test="start != null and count != null">
+        #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
+      </if>
+    </trim>
+  </select>
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeManagerCardMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeManagerCardMapper.xml
new file mode 100644
index 0000000..dc41740
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeManagerCardMapper.xml
@@ -0,0 +1,124 @@
+<?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.daoSe.SeManagerCardMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoSe.SeManagerCard">
+    <!--@mbg.generated-->
+    <!--@Table se_manager_card-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="card_addr" jdbcType="VARCHAR" property="cardAddr" />
+    <result column="card_num" jdbcType="VARCHAR" property="cardNum" />
+    <result column="card_type" jdbcType="TINYINT" property="cardType" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+    <result column="remarks" jdbcType="VARCHAR" property="remarks" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, card_addr, card_num, card_type, create_time, remarks
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from se_manager_card
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from se_manager_card
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeManagerCard">
+    <!--@mbg.generated-->
+    insert into se_manager_card (id, card_addr, card_num, 
+      card_type, create_time, remarks
+      )
+    values (#{id,jdbcType=BIGINT}, #{cardAddr,jdbcType=VARCHAR}, #{cardNum,jdbcType=VARCHAR}, 
+      #{cardType,jdbcType=TINYINT}, #{createTime,jdbcType=TIMESTAMP}, #{remarks,jdbcType=VARCHAR}
+      )
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeManagerCard">
+    <!--@mbg.generated-->
+    insert into se_manager_card
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="cardAddr != null">
+        card_addr,
+      </if>
+      <if test="cardNum != null">
+        card_num,
+      </if>
+      <if test="cardType != null">
+        card_type,
+      </if>
+      <if test="createTime != null">
+        create_time,
+      </if>
+      <if test="remarks != null">
+        remarks,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="cardAddr != null">
+        #{cardAddr,jdbcType=VARCHAR},
+      </if>
+      <if test="cardNum != null">
+        #{cardNum,jdbcType=VARCHAR},
+      </if>
+      <if test="cardType != null">
+        #{cardType,jdbcType=TINYINT},
+      </if>
+      <if test="createTime != null">
+        #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="remarks != null">
+        #{remarks,jdbcType=VARCHAR},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeManagerCard">
+    <!--@mbg.generated-->
+    update se_manager_card
+    <set>
+      <if test="cardAddr != null">
+        card_addr = #{cardAddr,jdbcType=VARCHAR},
+      </if>
+      <if test="cardNum != null">
+        card_num = #{cardNum,jdbcType=VARCHAR},
+      </if>
+      <if test="cardType != null">
+        card_type = #{cardType,jdbcType=TINYINT},
+      </if>
+      <if test="createTime != null">
+        create_time = #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="remarks != null">
+        remarks = #{remarks,jdbcType=VARCHAR},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeManagerCard">
+    <!--@mbg.generated-->
+    update se_manager_card
+    set card_addr = #{cardAddr,jdbcType=VARCHAR},
+      card_num = #{cardNum,jdbcType=VARCHAR},
+      card_type = #{cardType,jdbcType=TINYINT},
+      create_time = #{createTime,jdbcType=TIMESTAMP},
+      remarks = #{remarks,jdbcType=VARCHAR}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+
+  <!--鏍规嵁琛屾斂鍖哄垝涓叉ā绯婃煡璇㈢鐞嗗崱缂栧彿-->
+  <select id="getManagerCardNumOfMax"  resultType="java.lang.String">
+    SELECT card_num
+    FROM se_manager_card
+    WHERE card_num LIKE CONCAT(#{areaCode},'%')
+    ORDER BY card_num desc
+    LIMIT 0,1
+  </select>
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java
index cedbfa8..2dd5d45 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java
@@ -180,13 +180,19 @@
 			if(ServerProperties.cacheUpDownDataMaxCount <= ServerProperties.cacheUpDownDataWarnCount){
 				throw new Exception("cacheUpDownDataMaxCount蹇呴』澶т簬cacheUpDownDataWarnCount") ;
 			}
-			//娌℃湁涓婅鏁版嵁鐨勫垎閽熸暟锛岃揪鍒拌繖涓垎閽熸暟锛岃涓篟TU鏂綉浜嗭紝鍙栧�艰寖鍥存槸2_100
+			//娌℃湁涓婅鏁版嵁鐨勫垎閽熸暟锛岃揪鍒拌繖涓垎閽熸暟锛岃涓篟TU鏂綉浜嗭紝鍙栧�艰寖鍥存槸2-100
 			ServerProperties.disconnectedByNoUpDataMinutes =  0L + conf.getSetAttrPlusInt(doc, "config.base", "disconnectedByNoUpDataMinutes", null, 1, 100, null) ;
 			if(ServerProperties.disconnectedByNoUpDataMinutes < 1 || ServerProperties.disconnectedByNoUpDataMinutes > 100){
 				throw new Exception("disconnectedByNoUpDataMinutes鍙栧�煎繀椤绘槸1~100") ;
 			}
 			ServerProperties.disconnectedByNoUpDataMinutes = ServerProperties.disconnectedByNoUpDataMinutes * 60 * 1000 ;
 
+			//宸ヤ綔鎶ュお棰戠箒锛孨娆′笂鎶ュ鐞�1娆★紝鍙栧�艰寖鍥存槸1-100
+			ServerProperties.workReportDealOneByTimes =  conf.getSetAttrPlusInt(doc, "config.base", "workReportDealOneByTimes", null, 1, 100, null) ;
+			if(ServerProperties.workReportDealOneByTimes < 1 || ServerProperties.workReportDealOneByTimes > 100){
+				throw new Exception("workReportDealOneByTimes鍙栧�煎繀椤绘槸1~100") ;
+			}
+
 			//璁剧疆ID鐢熸垚鍣ㄧ殑鍚庣紑
 			IDLongGenerator.setSuffix(ServerProperties.dbDataIdSuffix.intValue());
 
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/ServerProperties.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/ServerProperties.java
index e225ebd..c68f753 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/ServerProperties.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/ServerProperties.java
@@ -43,4 +43,7 @@
 	//娌℃湁涓婅鏁版嵁鐨勫垎閽熸暟锛岃揪鍒拌繖涓垎閽熸暟锛岃涓篟TU鏂綉浜嗭紝鍙栧�艰寖鍥存槸2000_100000
 	public static Long disconnectedByNoUpDataMinutes = 3000L ;
 
+	//宸ヤ綔鎶ュお棰戠箒锛孨娆′笂鎶ュ鐞�1娆�
+	public static Integer workReportDealOneByTimes = 5 ;
+
 }
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealWorkReport.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealWorkReport.java
index c24d04f..62c90c5 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealWorkReport.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealWorkReport.java
@@ -1,6 +1,7 @@
 package com.dy.rtuMw.server.rtuData.p206V1_0_0;
 
 import com.dy.pipIrrGlobal.pojoSe.SeClient;
+import com.dy.rtuMw.server.ServerProperties;
 import com.dy.rtuMw.server.rtuData.TaskSurpport;
 import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
 import com.dy.common.mw.protocol.Data;
@@ -12,6 +13,9 @@
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * @Author liurunyu
  * @Date 2024/2/27 14:20
@@ -21,6 +25,8 @@
 public class TkDealWorkReport extends TaskSurpport {
 
     private static final Logger log = LogManager.getLogger(TkDealWorkReport.class.getName()) ;
+
+    private static final Map<String, Integer> RtuReportTimes = new HashMap<>();
 
     //绫籌D锛屼竴瀹氫笌Tree.xml閰嶇疆鏂囦欢涓厤缃竴鑷�
     public static final String taskId = "TkDealWorkReport" ;
@@ -35,14 +41,30 @@
         DataV1_0_1 dV1_0_1 = (DataV1_0_1) d.getSubData();//鍓嶉潰浠诲姟宸茬粡鍒ゆ柇涓嶄负null
         Object cdObj = dV1_0_1.subData;
         if (cdObj != null && cdObj instanceof DataCd84Vo) {
-            Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
-            DbSv sv = (DbSv)objs[0] ;
-            PrController controller = (PrController)objs[1] ;
-            SeClient clientVo = (SeClient)objs[3] ;//杩欎釜鍊煎璞′腑鍙湁id鍜宯ame浼氭湁鍊�
-            try{
-                this.doDeal(sv, clientVo, controller, d.getRtuAddr(), dV1_0_1, (DataCd84Vo)cdObj) ;
-            }catch (Exception e){
-                log.error("淇濆瓨鎺у埗鍣ㄩ榾寮�宸ヤ綔鎶ユ椂鍙戠敓寮傚父", e);
+            boolean deal = false ;
+            Integer times = RtuReportTimes.get(d.rtuAddr) ;
+            if(times == null){
+                times = 1 ;
+                RtuReportTimes.put(d.rtuAddr, times) ;
+                deal = true ;//绗竴娆�
+            }else{
+                times++ ;
+                if(times > ServerProperties.workReportDealOneByTimes){
+                    times = 1 ;//寰幆绗竴娆�
+                    deal = true ;
+                }
+                RtuReportTimes.put(d.rtuAddr, times) ;
+            }
+            if(deal){
+                Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
+                DbSv sv = (DbSv)objs[0] ;
+                PrController controller = (PrController)objs[1] ;
+                SeClient clientVo = (SeClient)objs[3] ;//杩欎釜鍊煎璞′腑鍙湁id鍜宯ame浼氭湁鍊�
+                try{
+                    this.doDeal(sv, clientVo, controller, d.getRtuAddr(), dV1_0_1, (DataCd84Vo)cdObj) ;
+                }catch (Exception e){
+                    log.error("淇濆瓨鎺у埗鍣ㄩ榾寮�宸ヤ綔鎶ユ椂鍙戠敓寮傚父", e);
+                }
             }
         }
     }
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml
index 2c5875c..fe018e1 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml
@@ -18,7 +18,8 @@
 		dbDataIdSuffix锛氭暟鎹簱鏁版嵁id鐢熸垚鍣ㄧ殑id鍚庣紑锛�0鏄粯璁ょ殑鍚庣紑锛屼竴鑸瑆eb绯荤粺搴旂敤锛屾暟鎹腑闂翠欢id鍚庣紑澶т簬绛変簬1 
 		cacheUpDownDataWarnCount锛氫笂涓嬭鏁版嵁缂撳瓨闃熷垪涓紦瀛樻暟鎹釜鏁扮殑鎶ヨ閲忥紝杩欎釜涓庣幇瀹為」鐩墍鎺ユ按琛ㄦ暟鐩稿叧
 		cacheUpDownDataMaxCount锛氫笂涓嬭鏁版嵁缂撳瓨闃熷垪涓紦瀛樻暟鎹釜鏁扮殑鏈�澶у�硷紝杩欎釜涓庣幇瀹為」鐩墍鎺ユ按琛ㄦ暟鐩稿叧
-		disconnectedByNoUpDataMinutes锛氭病鏈変笂琛屾暟鎹殑鍒嗛挓鏁帮紝杈惧埌杩欎釜鍒嗛挓鏁帮紝璁や负RTU鏂綉浜嗭紝鍙栧�艰寖鍥存槸2_100
+		disconnectedByNoUpDataMinutes锛氭病鏈変笂琛屾暟鎹殑鍒嗛挓鏁帮紝杈惧埌杩欎釜鍒嗛挓鏁帮紝璁や负RTU鏂綉浜嗭紝鍙栧�艰寖鍥存槸2-100
+		workReportDealOneByTimes: 宸ヤ綔鎶ュお棰戠箒锛孨娆′笂鎶ュ鐞�1娆★紝鍙栧�艰寖鍥存槸1-100
 		 -->
 		<base
 			orgTag="ym"
@@ -34,6 +35,7 @@
 			cacheUpDownDataWarnCount="100000"
 			cacheUpDownDataMaxCount="110000"
 			disconnectedByNoUpDataMinutes="3"
+			workReportDealOneByTimes="5"
 		/>
 		
 		<!-- 
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/util/InitListener.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/util/InitListener.java
index fd569a6..6c87c31 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/util/InitListener.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/util/InitListener.java
@@ -103,7 +103,7 @@
         if(configXml != null && doc != null){
             for(int num = 1; num <= 10000; num++){
                 if(configXml.existElement(doc, "config.orgs.org" + num)){
-                    String orgTag = configXml.getSetAttrTxt(doc, "config.orgs.org" + num,"name", null, false, null) ;
+                    String orgTag = configXml.getSetAttrTxt(doc, "config.orgs.org" + num,"tag", null, false, null) ;
                     //璁剧疆鏁版嵁婧�
                     DataSourceContext.set(orgTag);
                     if(!this.existDistricts()){
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportCtrl.java
new file mode 100644
index 0000000..e3cdcda
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportCtrl.java
@@ -0,0 +1,45 @@
+package com.dy.pipIrrRemote.report;
+
+import com.dy.common.aop.SsoAop;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.common.webUtil.QueryResultVo;
+import com.dy.pipIrrGlobal.voRm.VoOnHour;
+import com.dy.pipIrrRemote.report.qo.ReportQO;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-07-23 16:01
+ * @LastEditTime 2024-07-23 16:01
+ * @Description 鍚勭被鏁版嵁鎶ユ帶鍒剁被
+ */
+
+@Slf4j
+@RestController
+@RequestMapping(path = "report")
+@RequiredArgsConstructor
+public class ReportCtrl {
+    private final ReportSv reportSv;
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鏁寸偣鎶ュ巻鍙茶褰�
+     * @param qo
+     * @return
+     */
+    @GetMapping(path = "/on_hour_report_history")
+    @SsoAop()
+    public BaseResponse<QueryResultVo<List<VoOnHour>>> getOnHourReportHistory(ReportQO qo){
+        try {
+            return BaseResponseUtils.buildSuccess(reportSv.getOnHourReportsHistory(qo));
+        } catch (Exception e) {
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportSv.java
new file mode 100644
index 0000000..ed17765
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportSv.java
@@ -0,0 +1,72 @@
+package com.dy.pipIrrRemote.report;
+
+import com.dy.common.webUtil.QueryResultVo;
+import com.dy.pipIrrGlobal.daoRm.*;
+import com.dy.pipIrrGlobal.voRm.VoOnHour;
+import com.dy.pipIrrRemote.report.qo.ReportQO;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.common.utils.PojoUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-07-23 16:02
+ * @LastEditTime 2024-07-23 16:02
+ * @Description 鍚勭被鏁版嵁鎶ユ湇鍔$被
+ */
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class ReportSv {
+    // 闃�鎺у櫒鏁寸偣鎶AO
+    private final RmOnHourReportHistoryMapper rmOnHourReportHistoryMapper;
+    private final RmOnHourReportLastMapper rmOnHourReportLastMapper;
+
+    // 闃�鎺у櫒寮�鍏抽榾鎶AO
+    private final RmOpenCloseValveHistoryMapper rmOpenCloseValveHistoryMapper;
+    private final RmOpenCloseValveLastMapper rmOpenCloseValveLastMapper;
+
+    // 闃�鎺у櫒瀹氭椂鎶AO
+    private final RmTimingReportHistoryMapper rmTimingReportHistoryMapper;
+    private final RmTimingReportLastMapper rmTimingReportLastMapper;
+
+    // 宸ヤ綔鎶AO
+    private final RmWorkReportHistoryMapper rmWorkReportHistoryMapper;
+    private final RmWorkReportLastMapper rmWorkReportLastMapper;
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鏁寸偣鎶ュ巻鍙茶褰�
+     * @param qo
+     * @return
+     */
+    public QueryResultVo<List<VoOnHour>> getOnHourReportsHistory(ReportQO qo) {
+        String timeStart = qo.getTimeStart();
+        String timeStop = qo.getTimeStop();
+        if(timeStart != null) {
+            timeStart = timeStart + " 00:00:00";
+            qo.setTimeStart(timeStart);
+        }
+        if(timeStop != null) {
+            timeStop = timeStop + " 23:59:59";
+            qo.setTimeStop(timeStop);
+        }
+
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo);
+        Long itemTotal = rmOnHourReportHistoryMapper.getOnHourReportsCount_history(params);
+
+        QueryResultVo<List<VoOnHour>> rsVo = new QueryResultVo<>() ;
+        rsVo.pageSize = qo.pageSize ;
+        rsVo.pageCurr = qo.pageCurr ;
+
+        rsVo.calculateAndSet(itemTotal, params);
+        rsVo.obj = rmOnHourReportHistoryMapper.getOnHourReports_history(params);
+        return rsVo ;
+    }
+
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/qo/ReportQO.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/qo/ReportQO.java
new file mode 100644
index 0000000..92b88f6
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/qo/ReportQO.java
@@ -0,0 +1,40 @@
+package com.dy.pipIrrRemote.report.qo;
+
+import com.dy.common.webUtil.QueryConditionVo;
+import lombok.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-07-23 16:31
+ * @LastEditTime 2024-07-23 16:31
+ * @Description
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ToString(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class ReportQO extends QueryConditionVo {
+
+    /**
+     * 鍙栨按鍙g紪鍙�
+     */
+    private String intakeNum;
+
+    /**
+     * 闃�鎺у櫒鍦板潃
+     */
+    private String rtuAddr;
+
+    /**
+     * 鏌ヨ寮�濮嬫棩鏈�
+     */
+    private String timeStart;
+
+    /**
+     * 鏌ヨ缁撴潫鏃ユ湡
+     */
+    private String timeStop;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java
index 5cb744f..c0d55cf 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java
@@ -10,6 +10,7 @@
 import com.dy.pipIrrGlobal.pojoBa.BaClient;
 import com.dy.pipIrrGlobal.pojoSe.SeCardOperate;
 import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
+import com.dy.pipIrrGlobal.pojoSe.SeManagerCard;
 import com.dy.pipIrrGlobal.util.AmountToChinese;
 import com.dy.pipIrrGlobal.voSe.VoActiveCard;
 import com.dy.pipIrrGlobal.voSe.VoOperate;
@@ -31,6 +32,7 @@
 import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.MediaType;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.BindingResult;
@@ -55,6 +57,8 @@
     private final CardOperateSv cardOperateSv;
     private final ClientCardSv clientCardSv;
 
+    @Value("${project.divisionCode}")
+    private String divisionCode;
     /**
      * 寮�鍗�
      * @param po 寮�鍗′紶鍏ュ璞�
@@ -748,6 +752,57 @@
     }
 
     /**
+     * 鍒涘缓绠$悊鍗�
+     * @param po
+     * @param bindingResult
+     * @return
+     */
+    @PostMapping(path = "create_manager_card", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @Transactional(rollbackFor = Exception.class)
+    @SsoAop()
+    public BaseResponse<Boolean> createManagerCard(@RequestBody @Valid ManagerCard po, BindingResult bindingResult){
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        /**
+         * 鏍规嵁琛屾斂鍖哄垝涓诧紙divisionCode锛夊湪绠$悊鍗¤〃涓拡瀵瑰崱鐗囩紪鍙凤紙cardNum锛夎繘琛屾ā绯婃煡璇�
+         * 濡傛灉椤哄簭鍙峰凡缁忚揪鍒版渶澶у�硷紝鎻愮ず鐢ㄦ埛鑱旂郴绯荤粺绠$悊鍛�
+         * 濡傛灉椤哄簭鍙锋湭杈惧埌鏈�澶у�硷紝鍒欏姞1
+         * cardNum涓烘柊鐨勫崱鍙�
+         */
+        String cardNum = Optional.ofNullable(cardOperateSv.getManagerCardNumOfMax(divisionCode)).orElse("");
+        if(cardNum != null && cardNum.trim().length() > 0) {
+            Integer number = Integer.parseInt(cardNum.substring(12));
+            number = number + 1;
+            if(number > 65535) {
+                return BaseResponseUtils.buildErrorMsg(SellResultCode.CARD_NUMBER_OVERRUN.getMessage());
+            }
+            cardNum = cardNum.substring(0, 12) + String.format("%05d", number);
+        } else {
+            cardNum = divisionCode + "00001";
+        }
+
+        SeManagerCard seManagerCard = new SeManagerCard();
+        seManagerCard.setCardAddr(po.getCardAddr());
+        seManagerCard.setCardNum(cardNum);
+        seManagerCard.setCardType(po.getCardType());
+        seManagerCard.setCreateTime(new Date());
+        seManagerCard.setRemarks(po.getRemarks());
+        Long managerCardId = cardOperateSv.addManagerCard(seManagerCard);
+        if(managerCardId == 0) {
+            return BaseResponseUtils.buildErrorMsg(SellResultCode.CREATE_MANAGER_CARD_ERROR.getMessage());
+        }
+
+        return BaseResponseUtils.buildSuccess(cardNum);
+
+        //Map map = new HashMap();
+        //map.put("cardNum", cardNum);
+        //return BaseResponseUtils.buildSuccess(map) ;
+    }
+
+
+    /**
      * 鑾峰彇鍏呭�艰褰�
      * @param vo
      * @return
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java
index 84cc589..5ff8607 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java
@@ -7,12 +7,10 @@
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.pipIrrGlobal.daoBa.BaSettingsMapper;
-import com.dy.pipIrrGlobal.daoSe.SeCardOperateMapper;
-import com.dy.pipIrrGlobal.daoSe.SeClientCardMapper;
-import com.dy.pipIrrGlobal.daoSe.SeClientMapper;
-import com.dy.pipIrrGlobal.daoSe.SeGeneralMapper;
+import com.dy.pipIrrGlobal.daoSe.*;
 import com.dy.pipIrrGlobal.pojoSe.SeCardOperate;
 import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
+import com.dy.pipIrrGlobal.pojoSe.SeManagerCard;
 import com.dy.pipIrrGlobal.voSe.*;
 import com.dy.pipIrrSell.cardOperate.dto.DtoRecharge;
 import com.dy.pipIrrSell.cardOperate.enums.OperateTypeENUM;
@@ -56,6 +54,9 @@
     @Autowired
     private BaSettingsMapper baSettingsMapper;
 
+    @Autowired
+    private SeManagerCardMapper seManagerCardMapper;
+
 
     /**
      * 娣诲姞寮�鍗¤褰�
@@ -88,16 +89,36 @@
     public Long getAreaCodeById(Long clientId) {
         return seClientMapper.getAreaCodeById(clientId);
     }
+
     /**
      * 鏍规嵁琛屾斂鍖哄垝涓叉ā鍧楁煡璇㈡按鍗$紪鍙凤紝寮�鍗′娇鐢�
      * @param areaCode
      * @return
      */
-    String getCardNumOfMax(String areaCode) {
+    public String getCardNumOfMax(String areaCode) {
         return seClientCardMapper.getCardNumOfMax(areaCode);
     }
 
     /**
+     * 鏍规嵁琛屾斂鍖哄垝涓叉ā绯婃煡璇㈢鐞嗗崱缂栧彿锛屽垱寤虹鐞嗗崱浣跨敤
+     * @param areaCode
+     * @return
+     */
+    public String getManagerCardNumOfMax(String areaCode) {
+        return seManagerCardMapper.getManagerCardNumOfMax(areaCode);
+    }
+
+    /**
+     * 鍒涘缓绠$悊鍗�
+     * @param po
+     * @return
+     */
+    public Long addManagerCard(SeManagerCard po) {
+        seManagerCardMapper.insert(po);
+        return po.getId();
+    }
+
+    /**
      * 鏍规嵁鍐滄埛缂栧彿鑾峰彇鍐滄埛ID锛屽紑鍗′娇鐢�
      * @param clientNum
      * @return
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/ManagerCard.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/ManagerCard.java
new file mode 100644
index 0000000..0b28e12
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/ManagerCard.java
@@ -0,0 +1,33 @@
+package com.dy.pipIrrSell.cardOperate.dto;
+
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-07-24 11:25
+ * @LastEditTime 2024-07-24 11:25
+ * @Description 绠$悊鍗′紶杈撳璞�
+ */
+
+@Data
+public class ManagerCard {
+    public static final long serialVersionUID = 202407241125001L;
+
+    /**
+     * 姘村崱鍦板潃锛屼粎淇濆瓨锛屾棤涓氬姟
+     */
+    @NotBlank(message = "姘村崱鍦板潃涓嶈兘涓虹┖")
+    private String cardAddr;
+
+    /**
+     * 鍗$墖绫诲瀷锛�2-绠$悊绉戯紝4-寮�鍏抽榾鍗★紝5-娓呯┖鍗�
+     */
+    private Byte cardType;
+
+
+    /**
+     * 澶囨敞淇℃伅
+     */
+    private String remarks;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java
index 23112df..7dc0cf8 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java
@@ -28,13 +28,12 @@
     No_ActiveCards(10009, "娌℃湁绗﹀悎鏉′欢鐨勫紑鍗℃暟鎹�"),
     No_RECHARGES(10010, "娌℃湁绗﹀悎鏉′欢鐨勫厖鍊兼暟鎹�"),
     No_ReissueCards(10011, "娌℃湁绗﹀悎鏉′欢鐨勮ˉ鍗℃暟鎹�"),
-    No_CANCELS(10010, "娌℃湁绗﹀悎鏉′欢鐨勬敞閿�鏁版嵁"),
-    PARAMS_ERROR(10010, "鎿嶄綔绫诲瀷鍙傛暟閿欒"),
-
-    THE_CARD_NOT_EXIST(10012, "娌℃湁绗﹀悎鏉′欢鐨勬按鍗�"),
-    THE_CARD_NOT_SUPPORT_THIS_OPERATION(10013, "姘村崱鐘舵�佷笉鏀寔褰撳墠鎿嶄綔"),
-
-    THE_FEE_CANNOT_BE_REFUNDED(10014, "鍘熷崱鎸傚け鏃跺凡閫�娆撅紝琛ュ崱鏃朵笉鑳借ˉ璐圭敤"),
+    No_CANCELS(10012, "娌℃湁绗﹀悎鏉′欢鐨勬敞閿�鏁版嵁"),
+    PARAMS_ERROR(10013, "鎿嶄綔绫诲瀷鍙傛暟閿欒"),
+    CREATE_MANAGER_CARD_ERROR(10014, "鍒涘缓绠$悊鍗″け璐�"),
+    THE_CARD_NOT_EXIST(10015, "娌℃湁绗﹀悎鏉′欢鐨勬按鍗�"),
+    THE_CARD_NOT_SUPPORT_THIS_OPERATION(10016, "姘村崱鐘舵�佷笉鏀寔褰撳墠鎿嶄綔"),
+    THE_FEE_CANNOT_BE_REFUNDED(10017, "鍘熷崱鎸傚け鏃跺凡閫�娆撅紝琛ュ崱鏃朵笉鑳借ˉ璐圭敤"),
 
     /**
      * 鍏呭��
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java
index e2ab54b..b15cb61 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java
@@ -29,8 +29,6 @@
 import java.util.Objects;
 import java.util.UUID;
 
-//import org.springframework.cache.CacheManager;
-
 /**
  * 娉ㄨВTag 鍦ˋPI涓樉绀猴細 Tag 娉ㄨВ, 缁欐暣涓帴鍙h捣浜嗕釜鍚嶅瓧涓庢弿杩�"
  * 娉ㄨВApiResponses 鍜� 娉ㄨВApiResponse 鐢ㄦ潵閰嶇疆鍝嶅簲锛�
@@ -70,7 +68,7 @@
             )
     })
     @GetMapping(path = "allOrg")
-    public BaseResponse<List<Org>> allOrg(){
+    public BaseResponse<List<Org.OrgVo>> allOrg(){
         //List<Org> list = Arrays.asList(Org.Ym, Org.Pj) ;
         return BaseResponseUtils.buildSuccess(Org.OrgList);
     }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/util/SsoListener.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/util/SsoListener.java
index 9098e5b..5f6339c 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/util/SsoListener.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/util/SsoListener.java
@@ -1,22 +1,25 @@
 package com.dy.sso.util;
 
-import jakarta.servlet.ServletContext;
-import jakarta.servlet.ServletContextEvent;
-import jakarta.servlet.ServletContextListener;
-import lombok.extern.slf4j.Slf4j;
+import com.dy.pipIrrGlobal.util.OrgListenerSupport;
+import org.springframework.boot.context.event.ApplicationReadyEvent;
+import org.springframework.context.ApplicationListener;
+import org.springframework.stereotype.Component;
 
-@Slf4j
-public class SsoListener implements ServletContextListener {
+@Component
+public class SsoListener extends OrgListenerSupport implements ApplicationListener<ApplicationReadyEvent> {
+
 
     @Override
-    public void contextInitialized(ServletContextEvent event) {
-        ServletContextListener.super.contextInitialized(event);
-        ServletContext con = event.getServletContext();
+    public void onApplicationEvent(ApplicationReadyEvent event) {
+        try {
+            //绛�1绉掞紝绛夊緟com.alibaba.druid.pool.DruidDataSource瀹炲鍖栧畬鎴�
+            Thread.sleep(1000L);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        } finally {
+            super.init();
+        }
     }
 
-    @Override
-    public void contextDestroyed(ServletContextEvent event) {
-        ServletContextListener.super.contextDestroyed(event);
-    }
 
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/PipIrrStatisticsApplication.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/PipIrrStatisticsApplication.java
index bd2ef1d..e658f54 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/PipIrrStatisticsApplication.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/PipIrrStatisticsApplication.java
@@ -18,7 +18,7 @@
                 })
         }
 )
-@MapperScan(basePackages={"com.dy.pipIrrGlobal.daoBa"})
+@MapperScan(basePackages={"com.dy.pipIrrGlobal.daoRm", "com.dy.pipIrrGlobal.daoPr", "com.dy.pipIrrGlobal.daoSe", "com.dy.pipIrrGlobal.daoBa"})
 public class PipIrrStatisticsApplication {
 
     public static void main(String[] args) {
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/listeners/StClient.java
new file mode 100644
index 0000000..7a917ce
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StClient.java
@@ -0,0 +1,50 @@
+package com.dy.pipIrrStatistics.listeners;
+
+import com.dy.pipIrrGlobal.daoRm.RmClientAmountDayMapper;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/24 9:31
+ * @Description
+ */
+@Component
+public class StClient {
+
+    private static Logger log = LogManager.getLogger(StClient.class.getName()) ;
+
+    @Autowired
+    protected RmClientAmountDayMapper rmClientAmountDayDao ;
+
+    private String statisticsYyyy_mm;
+    private Long statisticsStartId ;
+    private Long statisticsEndId ;
+
+    protected void statistics(String statisticsYyyy_mm,
+                              Long statisticsStartId,
+                              Long statisticsEndId){
+        this.statisticsYyyy_mm = statisticsYyyy_mm ;
+        this.statisticsStartId = statisticsStartId ;
+        this.statisticsEndId = statisticsEndId ;
+        this.statisticsMonth() ;
+        this.statisticsYear() ;
+    }
+
+    /**
+     * 鏈堢粺璁�---鍐滄埛
+     */
+    private void statisticsMonth(){
+        log.info(statisticsYyyy_mm + "  " + statisticsStartId + "  " + statisticsEndId);
+        log.info(rmClientAmountDayDao.toString());
+    }
+
+    /**
+     * 骞寸粺璁�---鍐滄埛
+     */
+    private void statisticsYear(){
+
+    }
+}
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/listeners/StIntake.java
new file mode 100644
index 0000000..1544c52
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StIntake.java
@@ -0,0 +1,50 @@
+package com.dy.pipIrrStatistics.listeners;
+
+import com.dy.pipIrrGlobal.daoRm.RmIntakeAmountDayMapper;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/24 9:30
+ * @Description
+ */
+@Component
+public class StIntake {
+
+    private static Logger log = LogManager.getLogger(StIntake.class.getName()) ;
+
+    @Autowired
+    protected RmIntakeAmountDayMapper rmIntakeAmountDayDao ;
+
+    private String statisticsYyyy_mm;
+    private Long statisticsStartId ;
+    private Long statisticsEndId ;
+
+    protected void statistics(String statisticsYyyy_mm,
+                              Long statisticsStartId,
+                              Long statisticsEndId){
+        this.statisticsYyyy_mm = statisticsYyyy_mm ;
+        this.statisticsStartId = statisticsStartId ;
+        this.statisticsEndId = statisticsEndId ;
+        this.statisticsMonth() ;
+        this.statisticsYear() ;
+    }
+
+    /**
+     * 鏈堢粺璁�---鍙栨按鍙�
+     */
+    private void statisticsMonth(){
+        log.info(statisticsYyyy_mm + "  " + statisticsStartId + "  " + statisticsEndId);
+        log.info(rmIntakeAmountDayDao.toString());
+    }
+
+    /**
+     * 骞寸粺璁�---鍙栨按鍙�
+     */
+    private void statisticsYear(){
+
+    }
+}
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/listeners/StLoss.java
new file mode 100644
index 0000000..f2d6b90
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StLoss.java
@@ -0,0 +1,50 @@
+package com.dy.pipIrrStatistics.listeners;
+
+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;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/24 9:10
+ * @Description
+ */
+@Component
+public class StLoss {
+
+    private static Logger log = LogManager.getLogger(StLoss.class.getName()) ;
+
+    @Autowired
+    protected RmLossHistoryMapper rmLossHistoryDao ;
+
+    private String statisticsYyyy_mm;
+    private Long statisticsStartId ;
+    private Long statisticsEndId ;
+
+    protected void statistics(String statisticsYyyy_mm,
+                              Long statisticsStartId,
+                              Long statisticsEndId){
+        this.statisticsYyyy_mm = statisticsYyyy_mm ;
+        this.statisticsStartId = statisticsStartId ;
+        this.statisticsEndId = statisticsEndId ;
+        this.statisticsMonth() ;
+        this.statisticsYear() ;
+    }
+
+    /**
+     * 鏈堢粺璁�---婕忔崯
+     */
+    private void statisticsMonth(){
+        log.info(statisticsYyyy_mm + "  " + statisticsStartId + "  " + statisticsEndId);
+        log.info(rmLossHistoryDao.toString());
+    }
+
+    /**
+     * 骞寸粺璁�---婕忔崯
+     */
+    private void statisticsYear(){
+
+    }
+}
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
new file mode 100644
index 0000000..9b6ab74
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StLossSv.java
@@ -0,0 +1,9 @@
+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
new file mode 100644
index 0000000..a7ecb8d
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StatisticsJob.java
@@ -0,0 +1,68 @@
+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/StatisticsListener.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StatisticsListener.java
new file mode 100644
index 0000000..4d19109
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StatisticsListener.java
@@ -0,0 +1,68 @@
+package com.dy.pipIrrStatistics.listeners;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/22 14:39
+ * @Description
+ */
+
+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;
+import org.springframework.lang.NonNull;
+import org.springframework.stereotype.Component;
+
+/**
+ * 鐩戝惉鍣紝瀹炵幇鍔熻兘锛氬湪绯荤粺鍚姩鏃跺垵濮嬪寲锛屽悜鏁版嵁搴撲腑鎻掑叆鏁版嵁
+ * 鏈洃鍚櫒涓嶈兘閲囩敤ServletContextListener鏂瑰紡锛屽洜涓篠ervlet涓婁笅鏂嘋ontext鍒涘缓鍚�
+ * Spring瀹瑰櫒骞舵病鏈夊垱寤哄畬锛岃�屾湰绫讳腑鐢ㄤ簡Spring瀹瑰櫒涓殑Bean锛屽嵆*Dao 銆�
+ * 鎵�浠ラ噰鐢ㄤ簡Spring浜嬩欢鐩戝惉鍣ㄦ潵瀹炵幇
+ */
+@Component
+public class StatisticsListener implements ApplicationListener<ApplicationReadyEvent> {
+
+    private static Logger log = LogManager.getLogger(StatisticsListener.class.getName()) ;
+
+    private static final String JobName = "statisticsJob" ;
+    private static final String JobGroupName = "statisticsGroup" ;
+    private static final Integer ThreadPoolMaxCount = 1 ;//绾跨▼姹犵嚎绋嬫渶澶т釜鏁�
+    private static final Integer ThreadPoolPriority = 5 ;//绾跨▼浼樺厛绾�
+
+    @Value("${auto-statistics.startHour: 0}")
+    protected Integer startHour;//缁熻寮�濮嬪皬鏃�
+
+    @Value("${auto-statistics.startMinute: 5}")
+    protected Integer startMinute;//缁熻寮�濮嬪垎閽�
+
+    /**
+     * SpringBoot瀹瑰櫒宸茬粡鍑嗗濂戒簡锛屾墽琛屼笅闈㈡柟娉�
+     * @param event 浜嬩欢
+     */
+    @Override
+    public void onApplicationEvent(@NonNull ApplicationReadyEvent event) {
+        try {
+            //绛�1绉掞紝绛夊緟com.alibaba.druid.pool.DruidDataSource瀹炲鍖栧畬鎴�
+            Thread.sleep(1000L);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }finally {
+            try{
+                this.start(event);
+            }catch (Exception e){
+                log.error("娉ㄥ唽缁熻瀹氭椂浠诲姟鍑洪敊", e);
+            }
+
+        }
+    }
+    /**
+     * 鍒濆鍖�
+     */
+    private void start(ApplicationReadyEvent event) throws Exception{
+        SchedulerTaskSupport.setThreadPoolPro(ThreadPoolMaxCount, ThreadPoolPriority);
+        SchedulerTaskSupport.addDailyJob(JobName, JobGroupName, StatisticsJob.class, null, startHour, startMinute ) ;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StatisticsMonthListener.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StatisticsMonthListener.java
deleted file mode 100644
index c41f507..0000000
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StatisticsMonthListener.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.dy.pipIrrStatistics.listeners;
-
-/**
- * @Author: liurunyu
- * @Date: 2024/7/22 14:39
- * @Description
- */
-
-import com.dy.common.util.ConfigXml;
-import com.dy.common.webListener.ConfigListener;
-import org.jdom2.Document;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.context.event.ApplicationReadyEvent;
-import org.springframework.context.ApplicationListener;
-import org.springframework.lang.NonNull;
-import org.springframework.stereotype.Component;
-
-import java.net.URL;
-
-/**
- * 鐩戝惉鍣紝瀹炵幇鍔熻兘锛氬湪绯荤粺鍚姩鏃跺垵濮嬪寲锛屽悜鏁版嵁搴撲腑鎻掑叆鏁版嵁
- * 鏈洃鍚櫒涓嶈兘閲囩敤ServletContextListener鏂瑰紡锛屽洜涓篠ervlet涓婁笅鏂嘋ontext鍒涘缓鍚�
- * Spring瀹瑰櫒骞舵病鏈夊垱寤哄畬锛岃�屾湰绫讳腑鐢ㄤ簡Spring瀹瑰櫒涓殑Bean锛屽嵆*Dao 銆�
- * 鎵�浠ラ噰鐢ㄤ簡Spring浜嬩欢鐩戝惉鍣ㄦ潵瀹炵幇
- */
-@Component
-public class StatisticsMonthListener implements ApplicationListener<ApplicationReadyEvent> {
-
-    @Value("${auto-statistics.month.startDay: 1}")
-    private Integer startDay ;//鏈堢粺璁″紑濮嬫棩鏈�
-
-    @Value("${auto-statistics.month.startHour: 0}")
-    private Integer startHour ;//鏈堢粺璁″紑濮嬪皬鏃�
-
-    @Value("${auto-statistics.month.startMinute: 5}")
-    private Integer startMinute ;//鏈堢粺璁″紑濮嬪垎閽�
-
-    /**
-     * SpringBoot瀹瑰櫒宸茬粡鍑嗗濂戒簡
-     * @param event 浜嬩欢
-     */
-    @Override
-    public void onApplicationEvent(@NonNull ApplicationReadyEvent event) {
-        try {
-            //绛�1绉掞紝绛夊緟com.alibaba.druid.pool.DruidDataSource瀹炲鍖栧畬鎴�
-            Thread.sleep(1000L);
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-        }finally {
-            this.start(event);
-        }
-    }
-    /**
-     * 瀹炲鍖�
-     */
-    private void start(ApplicationReadyEvent event){
-
-    }
-}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/application.yml
index 0031756..5e27163 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/application.yml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/application.yml
@@ -1,6 +1,6 @@
 spring:
     profiles:
-        include: global, database
+        include: global, database, database-ym, database-pj, database-sp
 
 #actutor鐨剋eb绔彛
 management:
@@ -10,9 +10,9 @@
 server:
     port: ${pipIrr.statistics.webPort}
     servlet:
-        context-path: /sso #web璁块棶涓婁笅鏂囪矾寰�
+        context-path: /statistics #web璁块棶涓婁笅鏂囪矾寰�
         context-parameters:
             #GenerateIdSetSuffixListener涓簲鐢紝鍙栧�艰寖鍥存槸0-99
             IdSuffix: ${pipIrr.statistics.IdSuffix}
             #ConfigListener涓簲鐢�
-            configFileNames: config-global.xml,config-sso.xml
+            configFileNames: config-global.xml

--
Gitblit v1.8.0