package com.ruoyi.quality.service.impl;
|
|
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.quality.dto.QualityPassRateDto;
|
import com.ruoyi.quality.dto.QualityInspectStatDto;
|
import com.ruoyi.quality.dto.QualityMonthlyPassRateDto;
|
import com.ruoyi.quality.dto.QualityMonthlyDetailDto;
|
import com.ruoyi.quality.dto.QualityParameterStatDto;
|
import com.ruoyi.quality.dto.QualityMonthlyPassRateWrapperDto;
|
import com.ruoyi.quality.dto.QualityTopParameterDto;
|
import com.ruoyi.quality.mapper.QualityInspectMapper;
|
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.stream.Collectors;
|
|
|
@Service
|
public class QualityReportServiceImpl implements QualityReportService {
|
|
@Autowired
|
private QualityInspectMapper qualityInspectMapper;
|
|
@Override
|
public List<QualityInspectStatDto> getInspectStatistics() {
|
return qualityInspectMapper.getInspectStatistics();
|
}
|
|
@Override
|
public List<QualityPassRateDto> getPassRateStatistics() {
|
return qualityInspectMapper.getPassRateStatistics();
|
}
|
|
@Override
|
public List<QualityMonthlyPassRateWrapperDto> getMonthlyPassRateStatistics(String year) {
|
if (StringUtils.isEmpty(year)) {
|
return new ArrayList<>();
|
}
|
List<QualityMonthlyPassRateDto> flatData = qualityInspectMapper.getMonthlyPassRateStatistics(year);
|
|
// 按月份分组,并保持顺序
|
Map<String, List<QualityMonthlyPassRateDto>> groupedByMonth = flatData.stream()
|
.collect(Collectors.groupingBy(QualityMonthlyPassRateDto::getMonth, LinkedHashMap::new, Collectors.toList()));
|
|
List<QualityMonthlyPassRateWrapperDto> result = new ArrayList<>();
|
|
groupedByMonth.forEach((month, dtos) -> {
|
QualityMonthlyPassRateWrapperDto wrapper = new QualityMonthlyPassRateWrapperDto();
|
wrapper.setMonth(month);
|
|
for (QualityMonthlyPassRateDto dto : dtos) {
|
QualityPassRateDto passRateDto = new QualityPassRateDto();
|
BeanUtils.copyProperties(dto, passRateDto);
|
|
if (dto.getInspectType() == 0) {
|
wrapper.setRawMaterial(passRateDto);
|
} else if (dto.getInspectType() == 1) {
|
wrapper.setProcess(passRateDto);
|
} else if (dto.getInspectType() == 2) {
|
wrapper.setOutgoing(passRateDto);
|
}
|
}
|
result.add(wrapper);
|
});
|
|
return result;
|
}
|
|
@Override
|
public List<QualityPassRateDto> getYearlyPassRateStatistics(String year) {
|
if (StringUtils.isEmpty(year)) {
|
return new ArrayList<>();
|
}
|
return qualityInspectMapper.getYearlyPassRateStatistics(year);
|
}
|
|
@Override
|
public List<QualityMonthlyDetailDto> getMonthlyCompletionDetails(String year) {
|
if (StringUtils.isEmpty(year)) {
|
return new ArrayList<>();
|
}
|
return qualityInspectMapper.getMonthlyCompletionDetails(year);
|
}
|
|
@Override
|
public QualityTopParameterDto getTopParameters(Integer inspectType) {
|
if (inspectType == null) {
|
return new QualityTopParameterDto();
|
}
|
List<QualityParameterStatDto> list = qualityInspectMapper.getTopParameters(inspectType);
|
|
BigDecimal total = list.stream()
|
.map(QualityParameterStatDto::getCount)
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
QualityTopParameterDto result = new QualityTopParameterDto();
|
result.setTotalCount(total);
|
result.setList(list);
|
|
return result;
|
}
|
}
|