Java Spring Boot 请假系统开发:计算请假天数并排除周末
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 注解来注入 LeaveRepository 和 LeaveCalculator 对象,并定义了两个方法: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 等。
- 在实际开发中,建议对代码进行单元测试,以确保代码的正确性。
原文地址: https://www.cveoy.top/t/topic/nApA 著作权归作者所有。请勿转载和采集!