maven
2026-03-02 d6c07c838abeabdd23c4fdcfc69e08a9aaa9725f
src/main/java/com/ruoyi/lavorissue/service/impl/LavorIssueServiceImpl.java
@@ -93,6 +93,102 @@
        return records;
    }
    @Override
    public Map<String, Object> progressTotal(LaborIssue req) {
        StartAndEndDateDto startAndEndDateDto = getStartAndEndDateDto(req.getSeason(), req.getIssueDate());
        req.setStartDate(startAndEndDateDto.getStartDate());
        req.setEndDate(startAndEndDateDto.getEndDate());
        List<LaborIssue> laborIssueIPage = lavorIssueMapper.list(req);
        Map<String, Object> map = new HashMap<>();
        map.put("total", 0); // 发放总数量
        // 领取数量
        map.put("adopted", 0);
        // 未领取数量
        map.put("notAdopted", 0);
        // 领取完成率
        map.put("adoptedPercent", 0);
        if(!CollectionUtils.isEmpty(laborIssueIPage)){
            long sum = laborIssueIPage.stream().mapToLong(LaborIssue::getNum).sum();
            map.put("total", sum);
            long sum1 = laborIssueIPage
                    .stream()
                    .filter(laborIssue -> laborIssue.getAdoptedDate() != null)
                    .mapToLong(LaborIssue::getNum)
                    .sum();
            map.put("adopted", sum1);
            map.put("notAdopted", sum - sum1);
            map.put("adoptedPercent", sum1 * 100.0 / sum);
        }
        return map;
    }
    @Override
    public Map<String, Object> progressPercent(LaborIssue req) {
        StartAndEndDateDto startAndEndDateDto = getStartAndEndDateDto(req.getSeason(), req.getIssueDate());
        req.setStartDate(startAndEndDateDto.getStartDate());
        req.setEndDate(startAndEndDateDto.getEndDate());
        List<LaborIssue> laborIssueIPage = lavorIssueMapper.list(req);
        Map<String, Object> map = new HashMap<>();
        // 领取数量
        map.put("adopted", 0);
        // 未领取数量
        map.put("notAdopted", 0);
        if(!CollectionUtils.isEmpty(laborIssueIPage)){
            long sum = laborIssueIPage.stream().mapToLong(LaborIssue::getNum).sum();
            long sum1 = laborIssueIPage
                    .stream()
                    .filter(laborIssue -> laborIssue.getAdoptedDate() != null)
                    .mapToLong(LaborIssue::getNum)
                    .sum();
            map.put("adopted", sum1);
            map.put("notAdopted", sum - sum1);
        }
        return map;
    }
    @Override
    public Map<String, Object> progressDistribution(LaborIssue req) {
        StartAndEndDateDto startAndEndDateDto = getStartAndEndDateDto(req.getSeason(), req.getIssueDate());
        req.setStartDate(startAndEndDateDto.getStartDate());
        req.setEndDate(startAndEndDateDto.getEndDate());
        List<LaborIssue> laborIssueIPage = lavorIssueMapper.list(req);
        Map<String, Object> map = new HashMap<>();
        if(!CollectionUtils.isEmpty(laborIssueIPage)){
            // 根据发放日期,领用日期计算及时已领取,及时未领取,超时已领取,超时未领取数据
            // 及时已领取
            List<List<Long>> list = new ArrayList<>();
            List<Long> sumList = new ArrayList<>();
            long sum = laborIssueIPage.stream()
                    .filter(laborIssue -> laborIssue.getAdoptedDate() != null && laborIssue.getAdoptedDate().getTime() <= laborIssue.getIssueDate().getTime())
                    .mapToLong(LaborIssue::getNum)
                    .sum();
            // 及时未领取
            long sum1 = laborIssueIPage.stream()
                    .filter(laborIssue -> laborIssue.getAdoptedDate() == null && laborIssue.getIssueDate().getTime() <= new Date().getTime())
                    .mapToLong(LaborIssue::getNum)
                    .sum();
            sumList.add(sum);
            sumList.add(sum1);
            list.add(sumList);
            List<Long> sumList1 = new ArrayList<>();
            // 超时已领取
            long sum2 = laborIssueIPage.stream()
                    .filter(laborIssue -> laborIssue.getAdoptedDate() != null && laborIssue.getAdoptedDate().getTime() > laborIssue.getIssueDate().getTime())
                    .mapToLong(LaborIssue::getNum)
                    .sum();
            // 超时未领取
            long sum3 = laborIssueIPage.stream()
                    .filter(laborIssue -> laborIssue.getAdoptedDate() == null && laborIssue.getIssueDate().getTime() > new Date().getTime())
                    .mapToLong(LaborIssue::getNum)
                    .sum();
            sumList1.add(sum2);
            sumList1.add(sum3);
            list.add(sumList1);
            map.put("series", list);
        }
        return map;
    }
    public StartAndEndDateDto getStartAndEndDateDto(Integer season,Date payDate){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        StartAndEndDateDto startAndEndDateDto = new StartAndEndDateDto();