| | |
| | | import java.time.LocalDate; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @AllArgsConstructor |
| | | @Service |
| | |
| | | |
| | | @Override |
| | | public List<StaffLeaveDto> staffLeaveReasonAnalytics() { |
| | | List<StaffLeaveDto> result = staffLeaveMapper.staffLeaveReasonAnalytics(); |
| | | result.forEach(dto -> { |
| | | List<StaffLeaveDto> dbResult = staffLeaveMapper.staffLeaveReasonAnalytics(); |
| | | |
| | | // 创建一个Map用于存储所有枚举原因的数量,默认值为0 |
| | | Map<String, Integer> reasonCountMap = new HashMap<>(); |
| | | for (StaffLeaveReason reasonEnum : StaffLeaveReason.values()) { |
| | | reasonCountMap.put(reasonEnum.getCode(), 0); |
| | | } |
| | | |
| | | // 将数据库查询结果合并到Map中 |
| | | for (StaffLeaveDto dto : dbResult) { |
| | | String reasonCode = dto.getReason(); |
| | | StaffLeaveReason reasonEnum = StaffLeaveReason.getByCode(reasonCode); |
| | | if (reasonEnum != null) { |
| | | dto.setReasonText(reasonEnum.getInfo()); |
| | | } else { |
| | | dto.setReasonText("未知原因"); |
| | | if (reasonCountMap.containsKey(reasonCode)) { |
| | | reasonCountMap.put(reasonCode, dto.getCount()); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // 将Map转换为List<StaffLeaveDto> |
| | | List<StaffLeaveDto> result = new ArrayList<>(); |
| | | for (StaffLeaveReason reasonEnum : StaffLeaveReason.values()) { |
| | | StaffLeaveDto dto = new StaffLeaveDto(); |
| | | dto.setReason(reasonEnum.getCode()); |
| | | dto.setCount(reasonCountMap.get(reasonEnum.getCode())); |
| | | dto.setReasonText(reasonEnum.getInfo()); |
| | | result.add(dto); |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | |