gongchunyi
2026-06-29 743b74dfa59b05cb4bafe8678d8a6223a283ad03
src/main/java/com/ruoyi/quality/service/impl/QualityReportServiceImpl.java
@@ -1,21 +1,16 @@
package com.ruoyi.quality.service.impl;
import com.ruoyi.basic.service.IProductModelService;
import com.ruoyi.basic.service.IProductService;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.production.service.ProductOrderService;
import com.ruoyi.quality.dto.*;
import com.ruoyi.quality.mapper.QualityInspectMapper;
import com.ruoyi.quality.pojo.QualityInspect;
import com.ruoyi.quality.service.QualityReportService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
@@ -32,7 +27,76 @@
    @Override
    public List<QualityPassRateDto> getPassRateStatistics() {
        return qualityInspectMapper.getPassRateStatistics();
        List<QualityInspect> rawList = qualityInspectMapper.getRawPassRateStatistics();
        Map<Integer, QualityPassRateDto> map = new HashMap<>();
        for (int i = 0; i <= 2; i++) {
            QualityPassRateDto dto = new QualityPassRateDto();
            dto.setModelType(i);
            dto.setTotalCount(BigDecimal.ZERO);
            dto.setCompletedCount(BigDecimal.ZERO);
            dto.setQualifiedCount(BigDecimal.ZERO);
            dto.setUnqualifiedCount(BigDecimal.ZERO);
            map.put(i, dto);
        }
        for (QualityInspect qi : rawList) {
            Integer type = qi.getInspectType();
            if (type == null || !map.containsKey(type) || qi.getQuantity() == null) continue;
            QualityPassRateDto dto = map.get(type);
            BigDecimal qty = qi.getQuantity();
            dto.setTotalCount(dto.getTotalCount().add(qty));
            if (qi.getInspectState() != null && qi.getInspectState() == 1) {
                dto.setCompletedCount(dto.getCompletedCount().add(qty));
                BigDecimal qualified;
                BigDecimal unqualified;
                String result = qi.getCheckResult();
                if (qi.getQualifiedQuantity() != null) {
                    qualified = qi.getQualifiedQuantity();
                } else if ("合格".equals(result)) {
                    qualified = qty;
                } else {
                    qualified = BigDecimal.ZERO;
                }
                if (qi.getUnqualifiedQuantity() != null) {
                    unqualified = qi.getUnqualifiedQuantity();
                } else if ("不合格".equals(result) || "部分合格".equals(result)) {
                    unqualified = qty;
                } else {
                    unqualified = BigDecimal.ZERO;
                }
                dto.setQualifiedCount(dto.getQualifiedCount().add(qualified));
                dto.setUnqualifiedCount(dto.getUnqualifiedCount().add(unqualified));
            }
        }
        List<QualityPassRateDto> resultList = new ArrayList<>();
        for (int i = 0; i <= 2; i++) {
            QualityPassRateDto dto = map.get(i);
            if (dto.getTotalCount().compareTo(BigDecimal.ZERO) == 0) {
                dto.setCompletionRate(BigDecimal.ZERO);
            } else {
                dto.setCompletionRate(dto.getCompletedCount().divide(dto.getTotalCount(), 4, java.math.RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, java.math.RoundingMode.HALF_UP));
            }
            if (dto.getCompletedCount().compareTo(BigDecimal.ZERO) == 0) {
                dto.setPassRate(BigDecimal.ZERO);
            } else {
                dto.setPassRate(dto.getQualifiedCount().divide(dto.getCompletedCount(), 4, java.math.RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, java.math.RoundingMode.HALF_UP));
            }
            resultList.add(dto);
        }
        return resultList;
    }
    @Override