From f2e092ab2336060347d41d2bc748a5875f8ba5c6 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 03 十二月 2024 17:35:45 +0800
Subject: [PATCH] 开发更新
---
server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java | 49 +++++++++++++++++++++++++++++++++++++------------
server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java | 2 ++
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java | 2 +-
3 files changed, 40 insertions(+), 13 deletions(-)
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java b/server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java
index be6c0ff..e6be864 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java
+++ b/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 ;
}
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java b/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
index 51d30ab..63a30b8 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
+++ b/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();
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java
index 002e6bd..90cf756 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java
+++ b/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() ;
--
Gitblit v1.9.3