jiangping
2024-12-03 f2e092ab2336060347d41d2bc748a5875f8ba5c6
开发更新
已修改3个文件
53 ■■■■ 文件已修改
server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java
@@ -45,10 +45,11 @@
     */
    public static DateCompare dayCompare(Date fromDate,Date toDate,Date freeStart,Date freeEnd){
        //开始时间往后延伸,除去有效时期
        fromDate = DateUtil.addDaysToDate(fromDate,getIntersectingDays(fromDate,toDate,freeStart,freeEnd));
        if(toDate.getTime()<= fromDate.getTime()){
        fromDate = DateUtil.addDaysToDate(fromDate,getIntersectingDays(fromDate,DateUtil.addDaysToDate(toDate,1),freeStart,DateUtil.addDaysToDate(freeEnd,1)));
        if(toDate.getTime()<  fromDate.getTime()){
            return DateCompare.builder().day(0).month(0).year(0).yearFloat(new BigDecimal(0)).monthFloat(new BigDecimal(0)).build();
        }
        toDate = DateUtil.addDaysToDate(toDate,1);//包含截止日期
        Calendar  from  =  Calendar.getInstance();
        from.setTime(fromDate);
        Calendar  to  =  Calendar.getInstance();
@@ -62,31 +63,45 @@
        int year = toYear  -  fromYear;
        int month = toYear *  12  + toMonth  -  (fromYear  *  12  +  fromMonth);
        int day = (int) ((to.getTimeInMillis()  -  from.getTimeInMillis())  /  (24  *  3600  *  1000));
        int day = DateUtil.daysBetweenDates( toDate,fromDate);
        BigDecimal yearFloat = new BigDecimal(year) ;
        BigDecimal monthFloat = new BigDecimal(month) ;
        int yearDays = day - DateUtil.daysBetweenDates(DateUtil.addYearToDate(fromDate,year),fromDate) ;
        int yearDays = day - (DateUtil.daysBetweenDates(DateUtil.addYearToDate(fromDate,year),fromDate)+1);
        if(yearDays!=0){
            if(yearDays <0){
                year = year-1;
                yearFloat = new BigDecimal(year) ;
                yearDays =DateUtil.daysBetweenDates(toDate,DateUtil.addYearToDate(fromDate,year));
            }
            yearFloat = yearFloat.add(new BigDecimal(1.0*yearDays).divide(new BigDecimal(365.0), 15,RoundingMode.HALF_UP));
        }
        int monthDays = day - DateUtil.daysBetweenDates(DateUtil.addMonthToDate(fromDate,month),fromDate) ;
        int monthDays = day - (DateUtil.daysBetweenDates(DateUtil.addMonthToDate(fromDate,month),fromDate)+1) ;
        if(monthDays!=0){
            if(monthDays <0){
                month = month-1;
                monthFloat = new BigDecimal(month) ;
                monthDays =DateUtil.daysBetweenDates(toDate,DateUtil.addMonthToDate(fromDate,month));
            }
            monthFloat = monthFloat.add(new BigDecimal(1.0*monthDays*12).divide(new BigDecimal(365.0), 15,RoundingMode.HALF_UP));
        }
        return DateCompare.builder().day(day).month(month).year(year).yearFloat(yearFloat).monthFloat(monthFloat).yearDays(yearDays).monthDays(monthDays).build();
    }
    public static void main(String[] args) {
        DateCompare dateCompare =   DateCompare.dayCompare(DateUtil.getDateFromString("2024-12-01 00:00:00"),DateUtil.getDateByString("2024-12-31 00:00:00")
                ,DateUtil.getDateFromString("2024-12-01 00:00:00"),DateUtil.getDateFromString("2024-12-02 00:00:00"));
        DateCompare dateCompare =   DateCompare.monthYearCompare(DateUtil.getDateFromString("2024-12-02 00:00:00"),DateUtil.getDateByString("2025-01-02 00:00:00") );
        System.out.println(dateCompare.day);
        System.out.println(dateCompare.monthDays);
        System.out.println(dateCompare.month);
        System.out.println(dateCompare.monthFloat);
        System.out.println("=========year=============");
        System.out.println(dateCompare.yearDays);
        System.out.println(dateCompare.year);
        System.out.println(dateCompare.yearFloat);
        System.out.println(dateCompare.yearFloat.multiply(new BigDecimal(365.0)));
        System.out.println(new BigDecimal(29.0).divide(new BigDecimal(365.0),12,  RoundingMode.HALF_UP).multiply(new BigDecimal(365.0)));
    }
    public static DateCompare monthYearCompare(Date fromDate,Date toDate ){
        //开始时间往后延伸,除去有效时期
        toDate =DateUtil.addDaysToDate(toDate, 1);
        Calendar  from  =  Calendar.getInstance();
        from.setTime(fromDate);
        Calendar  to  =  Calendar.getInstance();
@@ -104,12 +119,22 @@
        BigDecimal yearFloat = new BigDecimal(year) ;
        BigDecimal monthFloat = new BigDecimal(month) ;
        int yearDays = day - DateUtil.daysBetweenDates(DateUtil.addYearToDate(fromDate,year),fromDate) ;
        int yearDays = day - (DateUtil.daysBetweenDates(DateUtil.addYearToDate(fromDate,year),fromDate)+1);
        if(yearDays!=0){
            if(yearDays <0){
                year = year-1;
                yearFloat = new BigDecimal(year) ;
                yearDays =DateUtil.daysBetweenDates(toDate,DateUtil.addYearToDate(fromDate,year));
            }
            yearFloat = yearFloat.add(new BigDecimal(1.0*yearDays).divide(new BigDecimal(365.0), 15,RoundingMode.HALF_UP));
        }
        int monthDays = day - DateUtil.daysBetweenDates(DateUtil.addMonthToDate(fromDate,month),fromDate) ;
        int monthDays = day - (DateUtil.daysBetweenDates(DateUtil.addMonthToDate(fromDate,month),fromDate)+1) ;
        if(monthDays!=0){
            if(monthDays <0){
                month = month-1;
                monthFloat = new BigDecimal(month) ;
                monthDays =DateUtil.daysBetweenDates(toDate,DateUtil.addMonthToDate(fromDate,month));
            }
            monthFloat = monthFloat.add(new BigDecimal(1.0*monthDays*12).divide(new BigDecimal(365.0), 15,RoundingMode.HALF_UP));
        }
        return DateCompare.builder().day(day).month(month).year(year).yearFloat(yearFloat).monthFloat(monthFloat).yearDays(yearDays).monthDays(monthDays).build();
@@ -119,7 +144,7 @@
        Date earlierStart = DateUtil.daysBetweenDates(start1,start2)>0? start1 : start2;
        Date laterEnd =  DateUtil.daysBetweenDates(end2,end1)>0 ? end1 : end2;
        int days =DateUtil.daysBetweenDates(laterEnd,earlierStart );
        int days =DateUtil.daysBetweenDates(laterEnd,earlierStart);
        return days>0?days:0 ;
    }
server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -2851,6 +2851,7 @@
//            System.out.println(DateUtil.afterMinutesDate(-5));
          System.out.println(DateUtil.getPlusTime2( new Date() ));
          System.out.println(DateUtil.getPlusTime2(addMonthToDate(new Date(),3)));
//            Date startTime = DateUtil.StringToDate("2024-05-01 08:00:00" ,"yyyy-MM-dd HH:mm:ss");
@@ -3065,6 +3066,7 @@
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.MONTH, num);//
        return calendar.getTime();
    }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java
@@ -797,7 +797,7 @@
    }
    private BigDecimal getTotalFeeByStartEnd(YwContract model, YwContractDetail d, YwContractBill bill,Date freeStart,Date freeEnd) {
        BigDecimal totalFee = new BigDecimal(0);
        DateCompare dateCompare =   DateCompare.dayCompare(bill.getStartDate(),DateUtil.addDaysToDate(bill.getEndDate(),1),freeStart,DateUtil.addDaysToDate(freeEnd,1));
        DateCompare dateCompare =   DateCompare.dayCompare(bill.getStartDate(),bill.getEndDate(),freeStart, freeEnd);
        if(Constants.equalsInteger(d.getCircleType(),Constants.ZERO)){
            //0=元每平米天
            int days = dateCompare.getDay() ;