1、完善quarz的任务工厂类;
2、完善DateTime类;
3、application-global.yml中增加统计任务启动时刻;
4、通信中间件加入对阀开工作报处理间隔控制;
5、统计子模块中自动统计逻辑继续实现。
10个文件已修改
7个文件已删除
5个文件已添加
1162 ■■■■■ 已修改文件
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/resources/application-global.yml 9 ●●●●● 补丁 | 查看 | 原始文档 | 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 6 ●●●●● 补丁 | 查看 | 原始文档 | 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/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/resources/application-global.yml
@@ -149,10 +149,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-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.disconnectedByNoUpDataMinutes > 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,12 +18,13 @@
        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"
            isLowPower="false"
            onlyDealRtus="532328059995"
            onlyDealRtus=""
            onlyOneProtocol="false"
            downComandMaxResendTimes="1"
            commandSendInterval="2"
@@ -34,6 +35,7 @@
            cacheUpDownDataWarnCount="100000"
            cacheUpDownDataMaxCount="110000"
            disconnectedByNoUpDataMinutes="3"
            workReportDealOneByTimes="5"
        />
        
        <!-- 
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/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