springboot详细代码实现新增人员统计:分别统计重点人员、劳务人员、管理人员考勤人数(数据展示不可编辑) 新增实际到场人员:支持重点人员、劳务人员、管理人员的实际到场人员更正(输入框,≥0、正整数或0) 是否发布:开启发布后,人员总数统计展示在【建设总览】“人员统计”;默认发布人员统计的考勤人员;人员统计和实际到场人员只支持发布其中一个,(例如:人员统计原本为发布状态,后又开启实际到场人员则需关闭人员统计)
时间: 2024-03-29 13:39:58 浏览: 38
下面是一个详细的SpringBoot代码实现新增人员统计的示例,包括分别统计重点人员、劳务人员、管理人员考勤人数,新增实际到场人员并支持更正,支持发布人员统计和实际到场人员其中一个。
首先,定义实体类`Personnel`表示人员信息:
```java
@Entity
public class Personnel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String type; // 人员类型:重点人员、劳务人员、管理人员
// 其他字段和方法省略
}
```
定义实体类`Attendance`表示考勤信息:
```java
@Entity
public class Attendance {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
private Personnel personnel;
private int attendNumber; // 实际到场人数
// 其他字段和方法省略
}
```
定义实体类`Config`表示配置信息:
```java
@Entity
public class Config {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private boolean isAttendancePublished; // 是否发布实际到场人数统计
// 其他字段和方法省略
}
```
定义`PersonnelRepository`和`AttendanceRepository`接口,继承`JpaRepository`,用来操作数据库:
```java
public interface PersonnelRepository extends JpaRepository<Personnel, Long> {
// 查询重点人员数量
long countByType(String type);
}
public interface AttendanceRepository extends JpaRepository<Attendance, Long> {
// 查询实际到场人数
@Query("select sum(a.attendNumber) from Attendance a where a.personnel.type = ?1")
Integer sumAttendNumber(String type);
}
```
定义`ConfigService`服务类,用来处理配置信息:
```java
@Service
public class ConfigService {
@Autowired
private ConfigRepository configRepository;
public boolean isAttendancePublished() {
Config config = configRepository.findById(1L).orElse(null);
if (config == null) {
return false;
}
return config.isAttendancePublished();
}
public void setAttendancePublished(boolean isAttendancePublished) {
Config config = configRepository.findById(1L).orElse(null);
if (config == null) {
config = new Config();
config.setId(1L);
}
config.setAttendancePublished(isAttendancePublished);
configRepository.save(config);
}
}
```
定义`PersonnelController`控制器类,处理人员信息相关的请求:
```java
@RestController
@RequestMapping("/personnel")
public class PersonnelController {
@Autowired
private PersonnelRepository personnelRepository;
@Autowired
private AttendanceRepository attendanceRepository;
@Autowired
private ConfigService configService;
// 获取重点人员数量
@GetMapping("/countImportant")
public long countImportant() {
return personnelRepository.countByType("重点人员");
}
// 获取劳务人员数量
@GetMapping("/countService")
public long countService() {
return personnelRepository.countByType("劳务人员");
}
// 获取管理人员数量
@GetMapping("/countManager")
public long countManager() {
return personnelRepository.countByType("管理人员");
}
// 获取实际到场人数
@GetMapping("/sumAttendNumber")
public Integer sumAttendNumber() {
if (configService.isAttendancePublished()) {
return attendanceRepository.sumAttendNumber("重点人员")
+ attendanceRepository.sumAttendNumber("劳务人员")
+ attendanceRepository.sumAttendNumber("管理人员");
} else {
return null;
}
}
// 更新实际到场人数
@PostMapping("/updateAttendNumber")
public boolean updateAttendNumber(Long personnelId, int attendNumber) {
if (attendNumber < 0) {
return false;
}
Personnel personnel = personnelRepository.findById(personnelId).orElse(null);
if (personnel == null) {
return false;
}
Attendance attendance = attendanceRepository.findByPersonnel(personnel);
if (attendance == null) {
attendance = new Attendance();
attendance.setPersonnel(personnel);
}
attendance.setAttendNumber(attendNumber);
attendanceRepository.save(attendance);
return true;
}
// 切换发布状态
@PostMapping("/togglePublish")
public boolean togglePublish(boolean isAttendancePublished) {
if (isAttendancePublished) {
configService.setAttendancePublished(true);
} else {
configService.setAttendancePublished(false);
}
return true;
}
}
```
最后,定义`Application`类启动应用程序:
```java
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
```
以上就是一个详细的SpringBoot代码实现新增人员统计的示例,其中包括分别统计重点人员、劳务人员、管理人员考勤人数,新增实际到场人员并支持更正,支持发布人员统计和实际到场人员其中一个。具体实现方式可能因需求不同而有所差异,希望能够帮助到你。
阅读全文