package com.yuanchu.limslaboratory.service.impl; import cn.hutool.json.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.yuanchu.limslaboratory.mapper.InspectionMaterialMapper; import com.yuanchu.limslaboratory.mapper.QualificationRateStatisticsMapper; import com.yuanchu.limslaboratory.pojo.Dto.MapHandlerDto; import com.yuanchu.limslaboratory.pojo.Dto.SelectQualificationRateDto; import com.yuanchu.limslaboratory.pojo.Dto.SeriesDto; import com.yuanchu.limslaboratory.pojo.InspectionMaterial; import com.yuanchu.limslaboratory.service.QualificationRateStatisticsService; import com.yuanchu.limslaboratory.utils.ArrayListUtil; import com.yuanchu.limslaboratory.utils.JackSonUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; /** * @Author 张宾 * @Date 2023/8/21 */ @Service @Slf4j public class QualificationRateStatisticsServiceImpl implements QualificationRateStatisticsService { @Resource private InspectionMaterialMapper inspectionMaterialMapper; @Resource private QualificationRateStatisticsMapper qualificationRateStatisticsMapper; @Override public List getSupplierList() { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().select(InspectionMaterial::getSupplier) .eq(InspectionMaterial::getState, 1).groupBy(InspectionMaterial::getSupplier); return inspectionMaterialMapper.selectList(queryWrapper); } @Override public Map getTestSampleStatistics(SelectQualificationRateDto dto) { System.out.println(dto); return null; } @Override public Map getSupplierNoPassStatistics(SelectQualificationRateDto dto) { Map allMap = new HashMap<>(16); List> mapList = qualificationRateStatisticsMapper.selectSupplierByCondition(dto); mapList.forEach(System.out::println); System.out.println("================================="); //去重取出供应商 List> supplierDistinct = ArrayListUtil.oneObjectsDistinctByProperty(MapHandlerDto::comparingBySupplier, mapList); List supplierList = new ArrayList(); supplierDistinct.forEach(l -> { supplierList.add(String.valueOf(l.get("supplier"))); }); allMap.put("xAxis", supplierList); ListseriesDtoList=new ArrayList(2); SeriesDto seriesDto2=new SeriesDto("不合格数量"); SeriesDto seriesDto=new SeriesDto("合格数量"); // 取出对应合格数量不合格数量 Listpass=new ArrayList<>(); ListnoPass=new ArrayList<>(); AtomicLong integerPass=new AtomicLong(0L); AtomicLong integerNoPass=new AtomicLong(0L); supplierList.forEach(s -> { mapList.stream() .filter(l -> Objects.equals(l.get("supplier"), s)) .forEach(l -> { if(Objects.equals(l.get("inspectionStatus"),1)){ integerPass.incrementAndGet(); }else { integerNoPass.incrementAndGet(); } }); pass.add(integerPass.get()); noPass.add(integerNoPass.get()); integerNoPass.set(0L); integerPass.set(0L); }); seriesDto.setData(pass); seriesDto2.setData(noPass); seriesDtoList.add(seriesDto); seriesDtoList.add(seriesDto2); System.out.println("数量=======>"); System.out.println(seriesDtoList); return null; } @Override public Map getNoPassProjectStatistics(SelectQualificationRateDto dto) { return null; } }