Compare commits

...

5 Commits

Author SHA1 Message Date
XaoLi717
100022251e 更改常规假期,可以获取到当前年数
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
yudao-ui-admin CI / build (14.x) (push) Has been cancelled
yudao-ui-admin CI / build (16.x) (push) Has been cancelled
2024-12-04 16:34:45 +08:00
XaoLi717
dc7f3e1190 定时任务导入home,注释优化 2024-12-04 16:23:24 +08:00
XaoLi717
c9de65308f 工作日历数据创建完成 2024-12-04 16:10:01 +08:00
XaoLi717
cf38fe099d 工作日历实现类备份 2024-12-04 16:00:49 +08:00
XaoLi717
eed9376271 更改一次获取全部数据 2024-12-04 11:18:17 +08:00
5 changed files with 291 additions and 3 deletions

View File

@ -24,6 +24,11 @@
<version>${revision}</version>
</dependency>
<!-- Job 定时任务相关 -->
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-job</artifactId>
</dependency>
<!-- 业务组件 -->
<dependency>

View File

@ -75,6 +75,7 @@ public class CalendarController {
@Operation(summary = "获得工作日历数据分页")
@PreAuthorize("@ss.hasPermission('home:calendar:query')")
public CommonResult<PageResult<CalendarRespVO>> getCalendarPage(@Valid CalendarPageReqVO pageReqVO) {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
PageResult<CalendarDO> pageResult = calendarService.getCalendarPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, CalendarRespVO.class));
}

View File

@ -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,80 @@ public class CalendarServiceImpl implements CalendarService {
@Resource
private CalendarMapper calendarMapper;
private static final int YEAR = LocalDate.now().getYear();
// 假期日期改用 LocalDate 存储
private static final Set<LocalDate> HOLIDAYS;
static {
Set<LocalDate> holidays = new HashSet<>();
holidays.add(LocalDate.of(YEAR, 1, 1)); // 元旦
holidays.add(LocalDate.of(YEAR, 5, 1)); // 劳动节
holidays.add(LocalDate.of(YEAR, 5, 2));
holidays.add(LocalDate.of(YEAR, 5, 3));
holidays.add(LocalDate.of(YEAR, 5, 4));
holidays.add(LocalDate.of(YEAR, 5, 5));
holidays.add(LocalDate.of(YEAR, 10, 1)); // 国庆节
holidays.add(LocalDate.of(YEAR, 10, 2));
holidays.add(LocalDate.of(YEAR, 10, 3));
holidays.add(LocalDate.of(YEAR, 10, 4));
holidays.add(LocalDate.of(YEAR, 10, 5));
holidays.add(LocalDate.of(YEAR, 10, 6));
holidays.add(LocalDate.of(YEAR, 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();
}

View File

@ -0,0 +1,211 @@
package cn.iocoder.yudao.module.home.service.calendar;
import org.springframework.stereotype.Service;
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;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.home.dal.mysql.calendar.CalendarMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.home.enums.ErrorCodeConstants.*;
/**
* 工作日历数据 Service 实现类
*
* @author 君风
*/
@Service
@Validated
public class CalendarServiceImpl implements CalendarService {
@Resource
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()-1;
CreateDate(year);
}
// 获取一年中的每一天并处理每个月最大天数
public void CreateDate(int year) {
for (int month = 1; month <= 1; 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);
createCalendarDate();
// calendarMapper.insert(calendar);
// 返回
return calendar.getId();
}
@Override
public void updateCalendar(CalendarSaveReqVO updateReqVO) {
// 校验存在
validateCalendarExists(updateReqVO.getId());
// 更新
CalendarDO updateObj = BeanUtils.toBean(updateReqVO, CalendarDO.class);
calendarMapper.updateById(updateObj);
}
@Override
public void deleteCalendar(Long id) {
// 校验存在
validateCalendarExists(id);
// 删除
calendarMapper.deleteById(id);
}
private void validateCalendarExists(Long id) {
if (calendarMapper.selectById(id) == null) {
throw exception(CALENDAR_NOT_EXISTS);
}
}
@Override
public CalendarDO getCalendar(Long id) {
return calendarMapper.selectById(id);
}
@Override
public PageResult<CalendarDO> getCalendarPage(CalendarPageReqVO pageReqVO) {
return calendarMapper.selectPage(pageReqVO);
}
}
-----------------------------------------------------
// 假期日期,改用 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()-1;
CreateDate(year);
}
// 获取一年中的每一天并处理每个月最大天数
public void CreateDate(int year) {
for (int month = 1; month <= 1; 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;
}

View File

@ -7,7 +7,7 @@ spring:
autoconfigure:
exclude:
- com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源
- org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration # 默认 local 环境,不开启 Quartz 的自动配置
- org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration # 默认 local 环境,不开启 Quartz 的自动配置 想要开启注释或者删除这一行即可
- de.codecentric.boot.admin.server.config.AdminServerAutoConfiguration # 禁用 Spring Boot Admin 的 Server 的自动配置
- de.codecentric.boot.admin.server.ui.config.AdminServerUiAutoConfiguration # 禁用 Spring Boot Admin 的 Server UI 的自动配置
- de.codecentric.boot.admin.client.config.SpringBootAdminClientAutoConfiguration # 禁用 Spring Boot Admin 的 Client 的自动配置