### 基于Spring Boot的OA系统薪资管理模块实现
本文介绍了如何使用Spring Boot和MySQL开发一个简单的OA系统薪资管理模块,包括基础设置、考勤数据导入、绩效考核、工资单查询,并扩展到使用Spring Security进行安全认证和权限控制,以及使用Spring Scheduler进行定时任务管理。
#### 项目结构
1. **Spring Boot**: 主要框架,负责处理业务逻辑和REST API。
2. **MySQL**: 数据存储。
3. **Thymeleaf**: 前端模板渲染。
4. **Spring Data JPA**: 数据库操作。
5. **Spring Security**: 安全认证和权限控制。
6. **Spring Scheduler**: 定时任务管理。
### 数据库设计
#### 数据库表
```sql
CREATE TABLE employee (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
base_salary DECIMAL(10, 2),
allowance DECIMAL(10, 2),
subsidy DECIMAL(10, 2),
bonus DECIMAL(10, 2)
);
CREATE TABLE attendance (
id INT AUTO_INCREMENT PRIMARY KEY,
employee_id INT,
date DATE,
hours_worked DECIMAL(5, 2),
leave_hours DECIMAL(5, 2),
FOREIGN KEY (employee_id) REFERENCES employee(id)
);
CREATE TABLE performance (
id INT AUTO_INCREMENT PRIMARY KEY,
employee_id INT,
score DECIMAL(5, 2),
FOREIGN KEY (employee_id) REFERENCES employee(id)
);
CREATE TABLE payroll (
id INT AUTO_INCREMENT PRIMARY KEY,
employee_id INT,
month DATE,
total_salary DECIMAL(10, 2),
FOREIGN KEY (employee_id) REFERENCES employee(id)
);
```
### Spring Boot 代码实现
#### 1. 薪资基础设置
**Controller**
```java
@RestController
@RequestMapping("/api/salary")
public class SalaryController {
@Autowired
private EmployeeRepository employeeRepository;
@PostMapping("/set")
public ResponseEntity<Employee> setSalary(@RequestBody Employee employee) {
Employee savedEmployee = employeeRepository.save(employee);
return ResponseEntity.ok(savedEmployee);
}
}
```
**Repository**
```java
public interface EmployeeRepository extends JpaRepository<Employee, Integer> {}
```
**Entity**
```java
@Entity
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
private BigDecimal baseSalary;
private BigDecimal allowance;
p