公司请假系统休假维护中维护的当月周期为上月16日到当月15日系统自动略过周六日写一个工具类完成前端用thymeleaf后端用spring boot+JPA
首先,我们需要定义一个实体类来表示请假记录:
@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 省略
}
接下来,我们需要编写一个工具类来计算请假天数:
@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 类来处理日期,而不是 Date 类。LocalDate 类是 Java 8 引入的日期时间 API 中的一部分,它提供了一些方便的方法来处理日期。另外,我们在这里也使用了 Spring 的依赖注入功能,将这个工具类声明为一个组件。
最后,我们需要编写一个控制器来处理前端的请求:
@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 方法用于处理提交的表单数据,并将请假记录保存到数据库中。
最后,我们需要编写一个 Thymeleaf 模板来渲染前端页面:
<!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>
在模板中,我们使用了 Thymeleaf 的表达式来绑定表单字段和模型属性。th:field 属性用于将表单字段绑定到模型属性,th:action 属性用于指定表单提交的地址。
这样,我们就完成了一个简单的请假系统。当用户提交请假申请时,系统会自动计算请假天数,并将请假记录保存到数据库中。在实际应用中,我们还可以添加更多功能,例如管理员审核、请假统计等
原文地址: https://www.cveoy.top/t/topic/cRa7 著作权归作者所有。请勿转载和采集!