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(); }