huminmin
6 天以前 7d6be866a896e03fb311ba0d491a9382809c7111
src/main/java/com/ruoyi/staff/service/impl/AnalyticsServiceImpl.java
@@ -16,7 +16,9 @@
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
@@ -29,16 +31,32 @@
    @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;
    }