Administrator
2024-07-24 f844554d994465a14e93b0334c2677a37876d7eb
Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV
1 文件已重命名
24个文件已修改
9个文件已删除
11个文件已添加
2037 ■■■■ 已修改文件
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/schedulerTask/SchedulerTaskFactory.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/DateTime.java 72 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/IDLongGenerator.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/bak/RmLossHistory.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/bak/RmLossHistoryMapper.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/bak/RmLossHistoryMapper.xml 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/bak/RmLossLast.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/bak/RmLossLastMapper.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/bak/RmLossLastMapper.xml 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmClientAmountDayLastMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmClientAmountDayMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/Org.java 77 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/OrgListenerSupport.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoClientAmountDay.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoControllerAlarmState.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/application-database-pj.yml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/application-database-sp.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/application-database-ym.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/init-config.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateHistoryMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmClientAmountDayLastMapper.xml 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmClientAmountDayMapper.xml 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/ServerProperties.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealWorkReport.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/util/InitListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/controllerAlarmState/ControllerAlarmStateCtrl.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/controllerAlarmState/ControllerAlarmStateSv.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/records/ClientAmountDayQueryVo.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/records/ControllerAlarmStateQueryVo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/records/RecordsCtrl.java 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/records/RecordsSv.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/util/SsoListener.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/PipIrrStatisticsApplication.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StClient.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StIntake.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StLoss.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StLossSv.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StatisticsJob.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StatisticsListener.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StatisticsMonthListener.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/application.yml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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) ;
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()) ;
    }
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个ID
@@ -114,17 +114,17 @@
            //上次生成ID 与本次生成ID 不在同一秒内
            last = now ;
            add = 0 ;
            id = last * chengShu + add ++;
            id = last * chengShu + add++;
        }else{
            //上次生成ID 与本次生成ID 在同一秒内
            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) + "毫秒");
//
pipIrr-platform/pipIrr-global/src/bak/RmLossHistory.java
File was deleted
pipIrr-platform/pipIrr-global/src/bak/RmLossHistoryMapper.java
File was deleted
pipIrr-platform/pipIrr-global/src/bak/RmLossHistoryMapper.xml
File was deleted
pipIrr-platform/pipIrr-global/src/bak/RmLossLast.java
File was deleted
pipIrr-platform/pipIrr-global/src/bak/RmLossLastMapper.java
File was deleted
pipIrr-platform/pipIrr-global/src/bak/RmLossLastMapper.xml
File was deleted
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmClientAmountDayLastMapper.java
@@ -2,9 +2,11 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoRm.RmClientAmountDayLast;
import com.dy.pipIrrGlobal.voRm.VoClientAmountDay;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
/**
 * @Author: liurunyu
@@ -62,4 +64,19 @@
     * @return update count
     */
    int updateByPrimaryKey(RmClientAmountDayLast record);
    /**
     * 根据指定条件获取记录总数
     * @param params
     * @return
     */
    Long getRecordCount(Map<?, ?> params);
    /**
     * 根据指定条件获取记录
     * @param params
     * @return
     */
    List<VoClientAmountDay> getClientAmountDayLast(Map<?, ?> params);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmClientAmountDayMapper.java
@@ -2,11 +2,14 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoRm.RmClientAmountDay;
import com.dy.pipIrrGlobal.voRm.VoClientAmountDay;
import com.dy.pipIrrGlobal.voRm.VoControllerAlarmState;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * @Author: liurunyu
@@ -71,4 +74,18 @@
     * @return update count
     */
    int updateByPrimaryKey(RmClientAmountDay record);
    /**
     * 根据指定条件获取记录总数
     * @param params
     * @return
     */
    Long getRecordCount(Map<?, ?> params);
    /**
     * 根据指定条件获取记录
     * @param params
     * @return
     */
    List<VoClientAmountDay> getClientAmountDayHistory(Map<?, ?> params);
}
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 {
    //用来转json
    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());
    }
}
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/OrgListenerSupport.java
New file
@@ -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 ;
                }
            }
        }
    }
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoClientAmountDay.java
New file
@@ -0,0 +1,62 @@
package com.dy.pipIrrGlobal.voRm;
import com.dy.common.po.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.sql.Date;
/**
 * @author :WuZeYu
 * @Date :2024/7/23  16:21
 * @LastEditTime :2024/7/23  16:21
 * @Description
 */
@Data
@Schema(title = "农户日用水量统计视图对象")
public class VoClientAmountDay implements BaseEntity {
    private static final long serialVersionUID = 202407231622001L;
    @Schema(description = "农户ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String clientId;
    @Schema(description = "日取水量", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private Double amount;
    @Schema(description = "日花费金额", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private Double money;
    @Schema(description = "统计日期(yyyy-mm-dd)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private java.sql.Date dt;
    @Schema(description = "统计日最后一次开阀日期时间(yyyy-mm-dd HH:MM:SS)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private java.util.Date openDtLast;
    @Schema(description = "统计日最后一次关阀日期时间(yyyy-mm-dd HH:MM:SS)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private java.util.Date closeDtLast;
    @Schema(description = "统计日最后一次开阀取水量", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private Double thisAmountLast;
    @Schema(description = "统计日最后一次开阀花费金额", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private Double thisMoneyLast;
    @Schema(description = "统计日最后一次开阀取水时长(分钟)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private Long thisTimeLast;
    @Schema(description = "统计日最后一次关阀上报控制器时钟", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private java.util.Date rtuDtLast;
    @Schema(description = "农户姓名", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String clientName;
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoControllerAlarmState.java
@@ -1,5 +1,6 @@
package com.dy.pipIrrGlobal.voRm;
import com.dy.common.po.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -15,7 +16,7 @@
 */
@Data
@Schema(title = "控制器报警与状态视图对象")
public class VoControllerAlarmState {
public class VoControllerAlarmState implements BaseEntity {
    private static final long serialVersionUID = 202407230842001L;
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
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,太长可能会导致无法及时检测到连接中断
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,太长可能会导致无法及时检测到连接中断
pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -159,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
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">
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateHistoryMapper.xml
@@ -353,7 +353,7 @@
<select id="getRecordCount" resultType="java.lang.Long">
    select count(*)
    from rm_alarm_state_history rash
    Left join pr_intake pint on intake_id = pint.id
    Left join pr_intake pint on rash.intake_id = pint.id
    <where>
       <if test="alarmState == 1">
                and (
@@ -434,7 +434,7 @@
        rash.alarm_valve as alarmValve,
        rash.power_type as powerType
        from rm_alarm_state_history rash
        Left join pr_intake pint on intake_id = pint.id
        Left join pr_intake pint on rash.intake_id = pint.id
        <where>
            <if test="alarmState == 1">
                and (
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmClientAmountDayLastMapper.xml
@@ -188,4 +188,53 @@
      rtu_dt_last = #{rtuDtLast,jdbcType=TIMESTAMP}
    where id = #{id,jdbcType=BIGINT}
  </update>
  <!--根据指定条件获取记录总数-->
  <select id="getRecordCount" resultType="java.lang.Long">
    select count(*)
    from rm_client_amount_day_last rcadl
    Left join se_client sc on sc.id = rcadl.client_id
    <where>
      <if test="clientName != null">
        and sc.name = #{clientName,jdbcType=VARCHAR}
      </if>
      <if test="startDt != null">
        and rash.dt &gt;= #{startDt,jdbcType=TIMESTAMP}
      </if>
      <if test="endDt != null">
        and rash.dt &lt;= #{endDt,jdbcType=TIMESTAMP}
      </if>
    </where>
    </select>
  <!--根据指定条件获取记录-->
  <select id="getClientAmountDayLast" resultType="com.dy.pipIrrGlobal.voRm.VoClientAmountDay">
    select
    CAST(rcadl.client_id AS char)AS clientId,
    rcadl.amount as amount,
    rcadl.money as money,
    rcadl.dt as dt,
    rcadl.open_dt_last as openDtLast,
    rcadl.close_dt_last as closeDtLast,
    rcadl.this_amount_last as thisAmountLast,
    rcadl.this_money_last as thisMoneyLast,
    rcadl.this_time_last as thisTimeLast,
    rcadl.rtu_dt_last as rtuDtLast,
    sc.name as clientName
    from rm_client_amount_day_last rcadl
    Left join se_client sc on sc.id = rcadl.client_id
    <where>
      <if test="clientName != null">
        and sc.name = #{clientName,jdbcType=VARCHAR}
      </if>
      <if test="startDt != null">
        and rash.dt &gt;= #{startDt,jdbcType=TIMESTAMP}
      </if>
      <if test="endDt != null">
        and rash.dt &lt;= #{endDt,jdbcType=TIMESTAMP}
      </if>
    </where>
    ORDER BY rcadl.dt DESC
    <if test="pageCurr != null and pageSize != null">
      LIMIT ${(pageCurr-1)*pageSize}, ${pageSize}
    </if>
  </select>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmClientAmountDayMapper.xml
@@ -178,4 +178,53 @@
      rtu_dt_last = #{rtuDtLast,jdbcType=TIMESTAMP}
    where id = #{id,jdbcType=BIGINT}
  </update>
  <!--根据指定条件获取记录总数-->
  <select id="getRecordCount" resultType="java.lang.Long">
    select count(*)
    from rm_client_amount_day rcad
           Left join se_client sc on sc.id = rcad.client_id
    <where>
      <if test="clientName != null">
        and sc.name = #{clientName,jdbcType=VARCHAR}
      </if>
      <if test="startDt != null">
        and rash.dt &gt;= #{startDt,jdbcType=TIMESTAMP}
      </if>
      <if test="endDt != null">
        and rash.dt &lt;= #{endDt,jdbcType=TIMESTAMP}
      </if>
    </where>
    </select>
  <!--根据指定条件获取记录-->
  <select id="getClientAmountDayHistory" resultType="com.dy.pipIrrGlobal.voRm.VoClientAmountDay">
    select
    CAST(rcad.client_id AS char)AS clientId,
    rcad.amount as amount,
    rcad.money as money,
    rcad.dt as dt,
    rcad.open_dt_last as openDtLast,
    rcad.close_dt_last as closeDtLast,
    rcad.this_amount_last as thisAmountLast,
    rcad.this_money_last as thisMoneyLast,
    rcad.this_time_last as thisTimeLast,
    rcad.rtu_dt_last as rtuDtLast,
    sc.name as clientName
    from rm_client_amount_day rcad
    Left join se_client sc on sc.id = rcad.client_id
    <where>
      <if test="clientName != null">
        and sc.name = #{clientName,jdbcType=VARCHAR}
      </if>
      <if test="startDt != null">
        and rash.dt &gt;= #{startDt,jdbcType=TIMESTAMP}
      </if>
      <if test="endDt != null">
        and rash.dt &lt;= #{endDt,jdbcType=TIMESTAMP}
      </if>
    </where>
    ORDER BY rcad.dt DESC
    <if test="pageCurr != null and pageSize != null">
      LIMIT ${(pageCurr-1)*pageSize}, ${pageSize}
    </if>
  </select>
</mapper>
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") ;
            }
            //没有上行数据的分钟数,达到这个分钟数,认为RTU断网了,取值范围是2_100
            //没有上行数据的分钟数,达到这个分钟数,认为RTU断网了,取值范围是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 ;
            //工作报太频繁,N次上报处理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());
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/ServerProperties.java
@@ -43,4 +43,7 @@
    //没有上行数据的分钟数,达到这个分钟数,认为RTU断网了,取值范围是2000_100000
    public static Long disconnectedByNoUpDataMinutes = 3000L ;
    //工作报太频繁,N次上报处理1次
    public static Integer workReportDealOneByTimes = 5 ;
}
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<>();
    //类ID,一定与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和name会有值
            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和name会有值
                try{
                    this.doDeal(sv, clientVo, controller, d.getRtuAddr(), dV1_0_1, (DataCd84Vo)cdObj) ;
                }catch (Exception e){
                    log.error("保存控制器阀开工作报时发生异常", e);
                }
            }
        }
    }
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml
@@ -18,7 +18,8 @@
        dbDataIdSuffix:数据库数据id生成器的id后缀,0是默认的后缀,一般web系统应用,数据中间件id后缀大于等于1 
        cacheUpDownDataWarnCount:上下行数据缓存队列中缓存数据个数的报警量,这个与现实项目所接水表数相关
        cacheUpDownDataMaxCount:上下行数据缓存队列中缓存数据个数的最大值,这个与现实项目所接水表数相关
        disconnectedByNoUpDataMinutes:没有上行数据的分钟数,达到这个分钟数,认为RTU断网了,取值范围是2_100
        disconnectedByNoUpDataMinutes:没有上行数据的分钟数,达到这个分钟数,认为RTU断网了,取值范围是2-100
        workReportDealOneByTimes: 工作报太频繁,N次上报处理1次,取值范围是1-100
         -->
        <base
            orgTag="ym"
@@ -34,6 +35,7 @@
            cacheUpDownDataWarnCount="100000"
            cacheUpDownDataMaxCount="110000"
            disconnectedByNoUpDataMinutes="3"
            workReportDealOneByTimes="5"
        />
        
        <!-- 
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()){
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/controllerAlarmState/ControllerAlarmStateCtrl.java
File was deleted
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/controllerAlarmState/ControllerAlarmStateSv.java
File was deleted
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/records/ClientAmountDayQueryVo.java
New file
@@ -0,0 +1,38 @@
package com.dy.pipIrrRemote.records;
import com.dy.common.webUtil.QueryConditionVo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
 * @author :WuZeYu
 * @Date :2024/7/23  15:55
 * @LastEditTime :2024/7/23  15:55
 * @Description
 */
@Data
@EqualsAndHashCode(callSuper = false)
@ToString(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(name = "农户日用水量统计查询条件")
public class ClientAmountDayQueryVo extends QueryConditionVo {
    @Schema(description = "农户姓名", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String clientName;
    @Schema(description = "统计开始日期", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date startDt;
    @Schema(description = "统计结束日期", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date endDt;
}
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/records/ControllerAlarmStateQueryVo.java
File was renamed from pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/controllerAlarmState/QueryVo.java
@@ -1,4 +1,4 @@
package com.dy.pipIrrRemote.controllerAlarmState;
package com.dy.pipIrrRemote.records;
import com.dy.common.webUtil.QueryConditionVo;
import com.fasterxml.jackson.annotation.JsonFormat;
@@ -21,7 +21,7 @@
@AllArgsConstructor
@Builder
@Schema(name = "控制器报警与状态查询条件")
public class QueryVo extends QueryConditionVo {
public class ControllerAlarmStateQueryVo extends QueryConditionVo {
    @Schema(description = "取水口名称", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String intakeName;
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/records/RecordsCtrl.java
New file
@@ -0,0 +1,153 @@
package com.dy.pipIrrRemote.records;
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.common.webUtil.ResultCodeMsg;
import com.dy.pipIrrGlobal.voRm.VoClientAmountDay;
import com.dy.pipIrrGlobal.voRm.VoControllerAlarmState;
import com.dy.pipIrrGlobal.voSe.VoActiveCard;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
 * @author :WuZeYu
 * @Date :2024/7/22  20:00
 * @LastEditTime :2024/7/22  20:00
 * @Description
 */
@Slf4j
@Tag(name = "检测控制查询", description = "检测控制查询")
@RestController
@RequestMapping(path = "remoteRecords")
public class RecordsCtrl {
    @Autowired
    private RecordsSv recordsSv;
    /**
     * 根据指定条件获取控制器报警与状态列表(历史)
     *
     * @param vo 查询条件
     * @return 符合条件的控制器报警与状态列表(历史)
     */
    @Operation(summary = "获得一页控制器报警与状态记录", description = "返回一页控制器报警与状态数据")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "返回一页控制器报警与状态数据(BaseResponse.content:QueryResultVo[{}])",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = VoActiveCard.class))}
            )
    })
    @GetMapping(path = "/getControllerAlarmStateHistory")
    @SsoAop()
    public BaseResponse<QueryResultVo<List<VoControllerAlarmState>>> getControllerAlarmStateHistory(@RequestBody ControllerAlarmStateQueryVo vo) {
        try {
            QueryResultVo<List<VoControllerAlarmState>> res = recordsSv.getControllerAlarmStateHistory(vo);
            return BaseResponseUtils.buildSuccess(res);
        } catch (Exception e) {
            log.error("获取控制器报警与状态记录异常", e);
            return BaseResponseUtils.buildException(e.getMessage());
        }
    }
    /**
     * 根据指定条件获取控制器报警与状态列表(最新)
     *
     * @param vo 查询条件
     * @return 符合条件的控制器报警与状态列表(最新)
     */
    @Operation(summary = "获得一页控制器报警与状态记录", description = "返回一页控制器报警与状态数据")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "返回一页控制器报警与状态数据(BaseResponse.content:QueryResultVo[{}])",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = VoActiveCard.class))}
            )
    })
    @GetMapping(path = "/getControllerAlarmStateLast")
    @SsoAop()
    public BaseResponse<QueryResultVo<List<VoControllerAlarmState>>> getControllerAlarmStateLast(@RequestBody ControllerAlarmStateQueryVo vo) {
        try {
            QueryResultVo<List<VoControllerAlarmState>> res = recordsSv.getControllerAlarmStateLast(vo);
            return BaseResponseUtils.buildSuccess(res);
        } catch (Exception e) {
            log.error("获取控制器记录异常", e);
            return BaseResponseUtils.buildException(e.getMessage());
        }
    }
    /**
     * 根据指定条件获取农户日用水量统计列表(历史)
     *
     * @param vo 查询条件
     * @return 符合条件的农户日用水量统计列表(历史)
     */
    @Operation(summary = "获得一页农户日用水量统计记录", description = "返回一页农户日用水量统计数据")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "返回一页控制器报警与状态数据(BaseResponse.content:QueryResultVo[{}])",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = VoActiveCard.class))}
            )
    })
    @GetMapping(path = "/getClientAmountDayHistory")
    @SsoAop()
    public BaseResponse<QueryResultVo<List<VoClientAmountDay>>> getClientAmountDayHistory(@RequestBody ClientAmountDayQueryVo vo) {
        try {
            QueryResultVo<List<VoClientAmountDay>> res = recordsSv.getClientAmountDayHistory(vo);
            return BaseResponseUtils.buildSuccess(res);
        } catch (Exception e) {
            log.error("获取农户日用水量统计记录异常", e);
            return BaseResponseUtils.buildException(e.getMessage());
        }
    }
    /**
     * 根据指定条件获取农户日用水量统计列表(最新)
     *
     * @param vo 查询条件
     * @return 符合条件的农户日用水量统计列表(最新)
     */
    @Operation(summary = "获得一页农户日用水量统计记录", description = "返回一页农户日用水量统计数据")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "返回一页控制器报警与状态数据(BaseResponse.content:QueryResultVo[{}])",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = VoActiveCard.class))}
            )
    })
    @GetMapping(path = "/getClientAmountDayLast")
    @SsoAop()
    public BaseResponse<QueryResultVo<List<VoClientAmountDay>>> getClientAmountDayLast(@RequestBody ClientAmountDayQueryVo vo) {
        try {
            QueryResultVo<List<VoClientAmountDay>> res = recordsSv.getClientAmountDayLast(vo);
            return BaseResponseUtils.buildSuccess(res);
        } catch (Exception e) {
            log.error("获取农户日用水量统计记录异常", e);
            return BaseResponseUtils.buildException(e.getMessage());
        }
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/records/RecordsSv.java
New file
@@ -0,0 +1,121 @@
package com.dy.pipIrrRemote.records;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.daoRm.RmAlarmStateHistoryMapper;
import com.dy.pipIrrGlobal.daoRm.RmAlarmStateLastMapper;
import com.dy.pipIrrGlobal.daoRm.RmClientAmountDayLastMapper;
import com.dy.pipIrrGlobal.daoRm.RmClientAmountDayMapper;
import com.dy.pipIrrGlobal.voRm.VoClientAmountDay;
import com.dy.pipIrrGlobal.voRm.VoControllerAlarmState;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.common.utils.PojoUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
 * @author :WuZeYu
 * @Date :2024/7/22  20:01
 * @LastEditTime :2024/7/22  20:01
 * @Description
 */
@Slf4j
@Service
public class RecordsSv {
    @Autowired
    private RmAlarmStateHistoryMapper rmAlarmStateHistoryMapper;
    @Autowired
    private RmAlarmStateLastMapper rmAlarmStateLastMapper;
    @Autowired
    private RmClientAmountDayLastMapper rmClientAmountDayLastMapper;
    @Autowired
    private RmClientAmountDayMapper rmClientAmountDayMapper;
    /**
     * 获得一页控制器报警与状态记录(历史)
     * @param vo
     * @return
     */
    public QueryResultVo<List<VoControllerAlarmState>> getControllerAlarmStateHistory(ControllerAlarmStateQueryVo vo) {
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo);
        Long itemTotal = rmAlarmStateHistoryMapper.getRecordCount(params);
        QueryResultVo<List<VoControllerAlarmState>> rsVo = new QueryResultVo<>();
        rsVo.pageSize = vo.pageSize;
        rsVo.pageCurr = vo.pageCurr;
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = rmAlarmStateHistoryMapper.getControllerAlarmStateHistory(params);
        return rsVo;
    }
    /**
     * 获得一页控制器报警与状态记录(最新)
     * @param vo
     * @return
     */
    public QueryResultVo<List<VoControllerAlarmState>> getControllerAlarmStateLast(ControllerAlarmStateQueryVo vo) {
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo);
        Long itemTotal = rmAlarmStateLastMapper.getRecordCount(params);
        QueryResultVo<List<VoControllerAlarmState>> rsVo = new QueryResultVo<>();
        rsVo.pageSize = vo.pageSize;
        rsVo.pageCurr = vo.pageCurr;
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = rmAlarmStateLastMapper.getControllerAlarmStateLast(params);
        return rsVo;
    }
    /**
     * 获得一页农户日用水量统计记录(历史)
     * @param vo
     * @return
     */
    public QueryResultVo<List<VoClientAmountDay>> getClientAmountDayHistory(ClientAmountDayQueryVo vo) {
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo);
        Long itemTotal = rmClientAmountDayMapper.getRecordCount(params);
        QueryResultVo<List<VoClientAmountDay>> rsVo = new QueryResultVo<>();
        rsVo.pageSize = vo.pageSize;
        rsVo.pageCurr = vo.pageCurr;
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = rmClientAmountDayMapper.getClientAmountDayHistory(params);
        return rsVo;
    }
    /**
     * 获得一页农户日用水量统计记录(最新)
     * @param vo
     * @return
     */
    public QueryResultVo<List<VoClientAmountDay>> getClientAmountDayLast(ClientAmountDayQueryVo vo) {
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo);
        Long itemTotal = rmClientAmountDayLastMapper.getRecordCount(params);
        QueryResultVo<List<VoClientAmountDay>> rsVo = new QueryResultVo<>();
        rsVo.pageSize = vo.pageSize;
        rsVo.pageCurr = vo.pageCurr;
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = rmClientAmountDayLastMapper.getClientAmountDayLast(params);
        return rsVo;
    }
}
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 在API中显示: Tag 注解, 给整个接口起了个名字与描述"
 * 注解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);
    }
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);
    }
}
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) {
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StClient.java
New file
@@ -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(){
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StIntake.java
New file
@@ -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(){
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StLoss.java
New file
@@ -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(){
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StLossSv.java
New file
@@ -0,0 +1,9 @@
package com.dy.pipIrrStatistics.listeners;
/**
 * @Author: liurunyu
 * @Date: 2024/7/24 11:24
 * @Description
 */
public class StLossSv {
}
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StatisticsJob.java
New file
@@ -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("未能从Spring容器中得到统计bean");
        }
    }
    /**
     * 统计
     */
    private void doStatistics(){
        stLoss.statistics(statisticsYyyy_mm, statisticsStartId, statisticsEndId) ;
        stIntake.statistics(statisticsYyyy_mm, statisticsStartId, statisticsEndId) ;
        stClient.statistics(statisticsYyyy_mm, statisticsStartId, statisticsEndId) ;
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StatisticsListener.java
New file
@@ -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方式,因为Servlet上下文Context创建后
 * 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 ) ;
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StatisticsMonthListener.java
File was deleted
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的web端口
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