From c9de65308fd43a5fe7f422bd275975cf4d799850 Mon Sep 17 00:00:00 2001 From: XaoLi717 <144221124+XaoLi717@users.noreply.github.com> Date: Wed, 4 Dec 2024 16:10:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=97=A5=E5=8E=86=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=88=9B=E5=BB=BA=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/calendar/CalendarServiceImpl.java | 72 ++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/calendar/CalendarServiceImpl.java b/yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/calendar/CalendarServiceImpl.java index d4c21df..96c0506 100644 --- a/yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/calendar/CalendarServiceImpl.java +++ b/yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/calendar/CalendarServiceImpl.java @@ -5,6 +5,9 @@ import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; +import java.time.DayOfWeek; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.*; import cn.iocoder.yudao.module.home.controller.admin.calendar.vo.*; import cn.iocoder.yudao.module.home.dal.dataobject.calendar.CalendarDO; @@ -28,12 +31,79 @@ public class CalendarServiceImpl implements CalendarService { @Resource private CalendarMapper calendarMapper; + // 假期日期,改用 LocalDate 存储 + private static final Set HOLIDAYS; + static { + Set holidays = new HashSet<>(); + holidays.add(LocalDate.of(2024, 1, 1)); // 元旦 + holidays.add(LocalDate.of(2024, 5, 1)); // 劳动节 + holidays.add(LocalDate.of(2024, 5, 2)); + holidays.add(LocalDate.of(2024, 5, 3)); + holidays.add(LocalDate.of(2024, 5, 4)); + holidays.add(LocalDate.of(2024, 5, 5)); + holidays.add(LocalDate.of(2024, 10, 1)); // 国庆节 + holidays.add(LocalDate.of(2024, 10, 2)); + holidays.add(LocalDate.of(2024, 10, 3)); + holidays.add(LocalDate.of(2024, 10, 4)); + holidays.add(LocalDate.of(2024, 10, 5)); + holidays.add(LocalDate.of(2024, 10, 6)); + holidays.add(LocalDate.of(2024, 10, 7)); + + // 将 Set 转为不可变集合 + HOLIDAYS = Collections.unmodifiableSet(holidays); + } + private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + //创建一年数据 + public void createCalendarDate() { + int year = LocalDate.now().getYear(); + CreateDate(year); + } + + // 获取一年中的每一天并处理每个月最大天数 + public void CreateDate(int year) { + for (int month = 1; month <= 12; month++) { + // 获取当前月的最大天数 + int maxDaysInMonth = LocalDate.of(year, month, 1).lengthOfMonth(); + + for (int day = 1; day <= maxDaysInMonth; day++) { + saveDayStatus(year, month, day); + } + } + } + + // 保存数据并判断每一天是否周末是否放假 + private void saveDayStatus(int year, int month, int day) { + + LocalDate currentDay = LocalDate.of(year, month, day); + + int isWorkday = isHoliday(currentDay) || isWeekend(currentDay) ? 0 : 1; // 0 表示放假,1 表示上班 + + CalendarSaveReqVO calendarSaveReqVO = new CalendarSaveReqVO(); + calendarSaveReqVO.setDate(currentDay.format(formatter)).setIsWorkday(isWorkday); + // 插入 + CalendarDO calendar = BeanUtils.toBean(calendarSaveReqVO, CalendarDO.class); + calendarMapper.insert(calendar); + } + + // 判断是否是放假 + public static boolean isHoliday(LocalDate date) { + return HOLIDAYS.contains(date); + } + + // 判断是否是周末(周六或周日) + public static boolean isWeekend(LocalDate date) { + DayOfWeek dayOfWeek = date.getDayOfWeek(); + return dayOfWeek == DayOfWeek.SATURDAY || dayOfWeek == DayOfWeek.SUNDAY; + } @Override public Long createCalendar(CalendarSaveReqVO createReqVO) { // 插入 CalendarDO calendar = BeanUtils.toBean(createReqVO, CalendarDO.class); - calendarMapper.insert(calendar); + //暂时通过这里实现创建 + createCalendarDate(); +// calendarMapper.insert(calendar); // 返回 return calendar.getId(); }