工作日历数据创建完成
This commit is contained in:
parent
cf38fe099d
commit
c9de65308f
@ -5,6 +5,9 @@ import javax.annotation.Resource;
|
|||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.time.DayOfWeek;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import cn.iocoder.yudao.module.home.controller.admin.calendar.vo.*;
|
import cn.iocoder.yudao.module.home.controller.admin.calendar.vo.*;
|
||||||
import cn.iocoder.yudao.module.home.dal.dataobject.calendar.CalendarDO;
|
import cn.iocoder.yudao.module.home.dal.dataobject.calendar.CalendarDO;
|
||||||
@ -28,12 +31,79 @@ public class CalendarServiceImpl implements CalendarService {
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private CalendarMapper calendarMapper;
|
private CalendarMapper calendarMapper;
|
||||||
|
// 假期日期,改用 LocalDate 存储
|
||||||
|
private static final Set<LocalDate> HOLIDAYS;
|
||||||
|
static {
|
||||||
|
Set<LocalDate> 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
|
@Override
|
||||||
public Long createCalendar(CalendarSaveReqVO createReqVO) {
|
public Long createCalendar(CalendarSaveReqVO createReqVO) {
|
||||||
// 插入
|
// 插入
|
||||||
CalendarDO calendar = BeanUtils.toBean(createReqVO, CalendarDO.class);
|
CalendarDO calendar = BeanUtils.toBean(createReqVO, CalendarDO.class);
|
||||||
calendarMapper.insert(calendar);
|
//暂时通过这里实现创建
|
||||||
|
createCalendarDate();
|
||||||
|
// calendarMapper.insert(calendar);
|
||||||
// 返回
|
// 返回
|
||||||
return calendar.getId();
|
return calendar.getId();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user