diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/TriprAutoCalWorkingDaysPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/TriprAutoCalWorkingDaysPlugin.java index a1168a1..32033ee 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/TriprAutoCalWorkingDaysPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/TriprAutoCalWorkingDaysPlugin.java @@ -185,7 +185,7 @@ public class TriprAutoCalWorkingDaysPlugin extends AbstractBillPlugIn implements Date startdate = dynamicObject.getDate("startdate"); Date enddate = dynamicObject.getDate("enddate"); if(startdate!=null && enddate!=null){ - Set datesExcludingWeekends = getStartAndEnd(dateToLocalDate(startdate), dateToLocalDate(enddate)); + Set datesExcludingWeekends = getWorkingDays(dateToLocalDate(startdate), dateToLocalDate(enddate)); addDateSet.addAll(datesExcludingWeekends); } } @@ -228,6 +228,24 @@ public class TriprAutoCalWorkingDaysPlugin extends AbstractBillPlugIn implements return result; } + public static Set getWorkingDays(LocalDate startDate, LocalDate endDate) { + if (startDate.isAfter(endDate)) { + throw new IllegalArgumentException("开始日期不能晚于结束日期"); + } + + Set workingDays = new HashSet<>(); + LocalDate currentDate = startDate; + + while (!currentDate.isAfter(endDate)) { + if (!isWeekend(currentDate)) { + workingDays.add(currentDate); + } + currentDate = currentDate.plusDays(1); + } + + return workingDays; + } + private static boolean isWeekend(LocalDate date) { return date.getDayOfWeek() == DayOfWeek.SATURDAY || date.getDayOfWeek() == DayOfWeek.SUNDAY; }