From f6fcea400ef3e1ae23607c1cb4da776a70fc4240 Mon Sep 17 00:00:00 2001 From: Fixiaobai <fixiaobai@163.com> Date: 星期三, 30 八月 2023 15:11:51 +0800 Subject: [PATCH] 合格率统计修改 --- inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/QualificationRateStatisticsServiceImpl.java | 154 ++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 134 insertions(+), 20 deletions(-) diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/QualificationRateStatisticsServiceImpl.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/QualificationRateStatisticsServiceImpl.java index dea8314..a6b3e78 100644 --- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/QualificationRateStatisticsServiceImpl.java +++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/QualificationRateStatisticsServiceImpl.java @@ -5,8 +5,10 @@ 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.SelectProjectByCodeAndNameDto; import com.yuanchu.limslaboratory.pojo.Dto.SelectQualificationRateDto; import com.yuanchu.limslaboratory.pojo.Dto.SeriesDto; +import com.yuanchu.limslaboratory.pojo.ImInfo; import com.yuanchu.limslaboratory.pojo.InspectionMaterial; import com.yuanchu.limslaboratory.service.QualificationRateStatisticsService; import com.yuanchu.limslaboratory.utils.ArrayListUtil; @@ -15,6 +17,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.text.NumberFormat; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; @@ -30,6 +33,8 @@ @Resource private InspectionMaterialMapper inspectionMaterialMapper; + private static final List<String> TYPE_LIST =Arrays.asList("鍘熸潗鏂�","鎴愬搧","濮旀墭鍝�"); + private static final List<Integer> TYPE_INT_LIST =Arrays.asList(0,1,2); @Resource private QualificationRateStatisticsMapper qualificationRateStatisticsMapper; @@ -43,38 +48,81 @@ @Override public Map<String, Object> getTestSampleStatistics(SelectQualificationRateDto dto) { - System.out.println(dto); - return null; + Map<String, Object> mapResult = new HashMap<>(16); + List<Map<String, Object>> mapList = qualificationRateStatisticsMapper.selectTestSamp(dto); + if(mapList.size()<=0){ + mapResult.put("noData",false); + return mapResult; + } + mapResult.put("xAxis",TYPE_LIST); + List<Map<String, Object>>list=new ArrayList<>(); + Map<String, Object>mapPass=new HashMap<>(3); + mapPass.put("name","鍚堟牸"); + mapPass.put("type","bar"); + Map<String, Object>mapNoPass=new HashMap<>(3); + mapNoPass.put("name","涓嶅悎鏍�"); + mapNoPass.put("type","bar"); + List<Integer>passInteger=new ArrayList<>(); + List<Integer>noPasInteger=new ArrayList<>(); + AtomicInteger integerPass = new AtomicInteger(0); + AtomicInteger integerNoPass = new AtomicInteger(0); + for (int i = 0; i < TYPE_INT_LIST.size(); i++) { + int finalI = i; + mapList.stream().filter(m->Objects.equals(String.valueOf(m.get("type")),String.valueOf(TYPE_INT_LIST.get(finalI)))) + .forEach(m->{ + if(Objects.equals(m.get("inspectionStatus"),0)){ + integerNoPass.incrementAndGet(); + } + if(Objects.equals(m.get("inspectionStatus"),1)){ + integerPass.incrementAndGet(); + } + }); + passInteger.add(integerPass.get()); + noPasInteger.add(integerNoPass.get()); + integerPass.set(0); + integerNoPass.set(0); + } + mapPass.put("data",passInteger); + mapNoPass.put("data",noPasInteger); + list.add(mapPass); + list.add(mapNoPass); + mapResult.put("series",list); + mapResult.put("noData",true); + return mapResult; } @Override public Map<String, Object> getSupplierNoPassStatistics(SelectQualificationRateDto dto) { Map<String, Object> allMap = new HashMap<>(16); List<Map<String, Object>> mapList = qualificationRateStatisticsMapper.selectSupplierByCondition(dto); - mapList.forEach(System.out::println); - System.out.println("================================="); + if(mapList.size()<=0){ + allMap.put("noData",false); + return allMap; + } //鍘婚噸鍙栧嚭渚涘簲鍟� List<Map<String, Object>> supplierDistinct = ArrayListUtil.oneObjectsDistinctByProperty(MapHandlerDto::comparingBySupplier, mapList); List<String> supplierList = new ArrayList<String>(); supplierDistinct.forEach(l -> { supplierList.add(String.valueOf(l.get("supplier"))); }); + //x杞� allMap.put("xAxis", supplierList); - List<SeriesDto>seriesDtoList=new ArrayList<SeriesDto>(2); - SeriesDto seriesDto2=new SeriesDto("涓嶅悎鏍兼暟閲�"); - SeriesDto seriesDto=new SeriesDto("鍚堟牸鏁伴噺"); + List<SeriesDto> seriesDtoList = new ArrayList<SeriesDto>(2); + //title + SeriesDto seriesDto = new SeriesDto("鍚堟牸鏁伴噺"); + SeriesDto seriesDto2 = new SeriesDto("涓嶅悎鏍兼暟閲�"); // 鍙栧嚭瀵瑰簲鍚堟牸鏁伴噺涓嶅悎鏍兼暟閲� - List<Long>pass=new ArrayList<>(); - List<Long>noPass=new ArrayList<>(); - AtomicLong integerPass=new AtomicLong(0L); - AtomicLong integerNoPass=new AtomicLong(0L); + List<Long> pass = new ArrayList<>(); + List<Long> noPass = 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)){ + if (Objects.equals(l.get("inspectionStatus"), 1)) { integerPass.incrementAndGet(); - }else { + } else if(Objects.equals(l.get("inspectionStatus"), 0)) { integerNoPass.incrementAndGet(); } }); @@ -83,19 +131,85 @@ integerNoPass.set(0L); integerPass.set(0L); }); - seriesDto.setData(pass); - seriesDto2.setData(noPass); + List<Double> percentPass = new ArrayList<>(); + List<Double> percentNoPass = new ArrayList<>(); + for (int i = 0; i < pass.size(); i++) { + long total = (pass.get(i) + noPass.get(i)); + double passNO = 0.00; + if (pass.get(i) != 0L) { + passNO = Double.parseDouble(getPercent(pass.get(i), total).replace("%", "")); + } + double noPassNO = 0.00; + if (noPass.get(i) != 0L) { + noPassNO = Double.parseDouble(getPercent(noPass.get(i), total).replace("%", "")); + } + percentPass.add(passNO); + percentNoPass.add(noPassNO); + } + seriesDto.setData(percentPass); + seriesDto2.setData(percentNoPass); seriesDtoList.add(seriesDto); seriesDtoList.add(seriesDto2); - System.out.println("鏁伴噺=======>"); - System.out.println(seriesDtoList); - return null; + allMap.put("series", seriesDtoList); + allMap.put("noData",true); + return allMap; } @Override public Map<String, Object> getNoPassProjectStatistics(SelectQualificationRateDto dto) { - return null; + Map<String, Object> allMap = new HashMap<>(16); + List<ImInfo> imInfos = qualificationRateStatisticsMapper.selectProjectionsByCondition(dto); + if(imInfos.size()<=0){ + allMap.put("noData",false); + return allMap; + } + List<String>NameList = new ArrayList<>(); + List<SelectProjectByCodeAndNameDto>projectByCodeAndNameDtos=new ArrayList<>(); + imInfos.forEach(l->{ + NameList.add(l.getImCode()+"-"+l.getImName()); + projectByCodeAndNameDtos.add(new SelectProjectByCodeAndNameDto(l.getImCode(),l.getImName())); + }); + List<ImInfo> imInfosAll = qualificationRateStatisticsMapper.selectProjection(projectByCodeAndNameDtos,dto); + int total = imInfosAll.size(); + List<Integer>noPas=new ArrayList<>(); + AtomicInteger i=new AtomicInteger(0); + NameList.forEach(n->{ + imInfos.stream() + .filter(im-> Objects.equals(n,im.getImCode()+"-"+im.getImName())) + .forEach(im->{ + i.set(im.getIprInfos().size()); + }); + noPas.add(i.get()); + i.set(0); + }); + List<Map<String, Object>>doubleList=new ArrayList<>(); + for (int j = 0; j < noPas.size(); j++) { + Map<String, Object>map=new HashMap<>(); + map.put("name",NameList.get(j)); + map.put("value",Double.parseDouble(getPercent(noPas.get(j),total).replace("%",""))); + doubleList.add(map); + } + allMap.put("legend",NameList); + allMap.put("series",doubleList); + allMap.put("noData",true); + return allMap; } + @Override + public List<Map<String, Object>> getSampleOptions() { + List<Map<String, Object>> sampleOptions = qualificationRateStatisticsMapper.getSampleOptions(); + //鍘婚噸鏍峰搧 + List<Map<String, Object>> sampleOptionsDistinct = ArrayListUtil.oneObjectsDistinctByProperty(MapHandlerDto::comparingByCode, sampleOptions); + sampleOptionsDistinct.forEach(System.out::println); + return sampleOptionsDistinct; + } -} + public static String getPercent(long x, long y) { + double d1 = x * 1.0; + double d2 = y * 1.0; + NumberFormat percentInstance = NumberFormat.getPercentInstance(); + // 璁剧疆淇濈暀鍑犱綅灏忔暟锛岃繖閲岃缃殑鏄繚鐣欎袱浣嶅皬鏁� + percentInstance.setMinimumFractionDigits(2); + return percentInstance.format(d1 / d2); + } +} \ No newline at end of file -- Gitblit v1.9.3