From 1f465c6f045cfbbbeb386ce05ce99412996bfe1f Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Thu, 8 Aug 2024 17:03:20 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E8=8A=82=E5=81=87?= =?UTF-8?q?=E6=97=A5=E4=B8=8E=E5=91=A8=E6=9C=AB=E8=A1=A5=E7=8F=AD=E6=83=85?= =?UTF-8?q?=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/utils/WorkDaysUtils.java | 41 ++++++++++++++++--- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/WorkDaysUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/WorkDaysUtils.java index 110225c8c..6aa60593c 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/WorkDaysUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/WorkDaysUtils.java @@ -150,27 +150,58 @@ public class WorkDaysUtils { daysArray[i] = (dayOfWeek == Calendar.SATURDAY || dayOfWeek == Calendar.SUNDAY) ? 1 : 0; calendar.add(Calendar.DAY_OF_MONTH, 1); } - //todo 更新节假日 - return updateDaysArray(daysArray, new ArrayList<>()); + + // 将工作日设置为休息日(假设用于标记节假日) + markWorkdaysAsRestdays(daysArray, new ArrayList<>()); + // 将休息日设置为工作日(假设用于标记补班的工作日) + markRestdaysAsWorkdays(daysArray, new ArrayList<>()); + return daysArray; } /** - * 根据节假日下标更新 daysArray,将对应下标的值改为1 + * 将工作日设置为休息日(假设用于标记节假日) * * @param daysArray 原始的天数数组 * @param holidays 节假日日期列表 * @return 更新后的天数数组 */ - private static Integer[] updateDaysArray(Integer[] daysArray, List holidays) { + private static Integer[] markWorkdaysAsRestdays(Integer[] daysArray, List holidays) { + return updateDaysArray(daysArray, holidays, true); + } + + /** + * 将休息日设置为工作日(假设用于标记补班的工作日) + * + * @param daysArray 原始的天数数组 + * @param holidays 休息日日期列表 + * @return 更新后的天数数组 + */ + private static Integer[] markRestdaysAsWorkdays(Integer[] daysArray, List holidays) { + return updateDaysArray(daysArray, holidays, false); + } + + /** + * 根据节假日下标更新 daysArray,将对应下标的值改为指定值 + * + * @param daysArray 原始的天数数组 + * @param holidays 节假日日期列表 + * @param isHoliday 是否为节假日,如果为 true 则表示节假日;如果为 false 则表示工作日 + * @return 更新后的天数数组 + */ + private static Integer[] updateDaysArray(Integer[] daysArray, List holidays, Boolean isHoliday) { if (holidays == null || holidays.isEmpty()) { return daysArray; } + + // 节假日用 1,工作日用 0 + int valueToSet = isHoliday ? 1 : 0; + // 遍历节假日下标数组,将对应的 daysArray 元素设置为1 for (Date holiday : holidays) { int index = getDayOfYearIndex(holiday); // 确保下标在有效范围内 if (index >= 0 && index < daysArray.length) { - daysArray[index] = 1; + daysArray[index] = valueToSet; } } return daysArray;