Java Spring Boot 请假系统开发:计算请假天数并排除周末

本文将带你使用 Java Spring Boot 开发一个简单的请假系统,该系统可以自动计算请假天数,并排除周末。我们将使用 JPA 进行持久化操作,使用 Thymeleaf 渲染前端页面。

1. 定义实体类

首先,我们需要定义一个实体类 LeaveRecord 来表示请假记录:

@Entity
@Table(name = 'leave_record')
public class LeaveRecord {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = 'user_id')
    private Long userId;

    @Column(name = 'start_date')
    private LocalDate startDate;

    @Column(name = 'end_date')
    private LocalDate endDate;

    @Column(name = 'leave_days')
    private Integer leaveDays;

    // getter/setter 省略
}

2. 编写计算请假天数的工具类

接下来,我们需要编写一个工具类 LeaveCalculator 来计算请假天数:

@Component
public class LeaveCalculator {
    private static final int WORK_DAYS_PER_WEEK = 5;

    public int calculateLeaveDays(LocalDate startDate, LocalDate endDate) {
        int leaveDays = 0;

        LocalDate currentDate = startDate;
        while (currentDate.isBefore(endDate) || currentDate.isEqual(endDate)) {
            if (isWorkDay(currentDate)) {
                leaveDays++;
            }
            currentDate = currentDate.plusDays(1);
        }

        return leaveDays;
    }

    private boolean isWorkDay(LocalDate date) {
        DayOfWeek dayOfWeek = date.getDayOfWeek();
        return dayOfWeek != DayOfWeek.SATURDAY && dayOfWeek != DayOfWeek.SUNDAY;
    }
}

在该工具类中,我们使用 LocalDate 类来处理日期,并定义了 isWorkDay 方法来判断日期是否为工作日。

3. 编写控制器

最后,我们需要编写一个控制器 LeaveController 来处理前端的请求:

@Controller
public class LeaveController {
    @Autowired
    private LeaveRepository leaveRepository;

    @Autowired
    private LeaveCalculator leaveCalculator;

    @GetMapping('/leave')
    public String leaveForm(Model model) {
        model.addAttribute('leaveRecord', new LeaveRecord());
        return 'leave';
    }

    @PostMapping('/leave')
    public String leaveSubmit(@ModelAttribute LeaveRecord leaveRecord) {
        leaveRecord.setLeaveDays(leaveCalculator.calculateLeaveDays(
                leaveRecord.getStartDate(),
                leaveRecord.getEndDate()));
        leaveRepository.save(leaveRecord);
        return 'result';
    }
}

在该控制器中,我们使用了 @Autowired 注解来注入 LeaveRepositoryLeaveCalculator 对象,并定义了两个方法:leaveForm 用于显示请假表单,leaveSubmit 用于处理提交的表单数据并将请假记录保存到数据库中。

4. 编写 Thymeleaf 模板

最后,我们需要编写一个 Thymeleaf 模板 leave.html 来渲染前端页面:

<!DOCTYPE html>
<html xmlns:th='http://www.thymeleaf.org'>
<head>
    <meta charset='UTF-8'>
    <title>请假系统</title>
</head>
<body>
    <h1>请假申请</h1>
    <form action='#' th:action='@{/leave}' th:object='$leaveRecord' method='post'>
        <div>
            <label for='userId'>用户ID:</label>
            <input type='text' id='userId' name='userId' th:field='*{userId}'>
        </div>
        <div>
            <label for='startDate'>开始日期:</label>
            <input type='date' id='startDate' name='startDate' th:field='*{startDate}'>
        </div>
        <div>
            <label for='endDate'>结束日期:</label>
            <input type='date' id='endDate' name='endDate' th:field='*{endDate}'>
        </div>
        <button type='submit'>提交</button>
    </form>
</body>
</html>

总结

通过以上步骤,我们就完成了一个简单的请假系统。当用户提交请假申请时,系统会自动计算请假天数并排除周末,并将请假记录保存到数据库中。在实际应用中,我们还可以添加更多功能,例如管理员审核、请假统计等。

注意:

  • 本文仅提供一个简单的示例,实际应用中可能需要根据具体需求进行调整。
  • 请确保你的项目中引入了必要的依赖,例如 JPA、Thymeleaf 等。
  • 在实际开发中,建议对代码进行单元测试,以确保代码的正确性。
Java Spring Boot 请假系统开发:计算请假天数并排除周末

原文地址: https://www.cveoy.top/t/topic/nApA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录