package com.ruoyi.common; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.domain.*; import com.ruoyi.mapper.TaskMapper; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; public class DataStatisticsUtils { public static int calculateStandards(List<ReviewStandard> standards) { return standards.size(); } public static int calculateStandardsPass(List<ReviewStandard> standards, Map<Long, ReviewDetailsResult> resultMap) { int standardsPass = 0; for(ReviewStandard standard : standards) { List<ReviewDetails> details = getDetailsByStandard(standard); boolean isPass = true; for(ReviewDetails reviewDetails : details) { Integer passed = detailsIsPass(reviewDetails, resultMap); if(passed == null) { isPass = false; } if(Objects.equals(passed, ReviewStandard.NO_PASSED)) { isPass = false; } } if(isPass) { standardsPass = standardsPass + 1; } } return standardsPass; } public static int calculateStandardsNoPass(List<ReviewStandard> standards, Map<Long, ReviewDetailsResult> resultMap) { int standardsNoPass = 0; for(ReviewStandard standard : standards) { List<ReviewDetails> details = getDetailsByStandard(standard); boolean isPass = false; for(ReviewDetails reviewDetails : details) { Integer passed = detailsIsPass(reviewDetails, resultMap); if(passed == null) { isPass = false; } if(Objects.equals(passed, ReviewStandard.NO_PASSED)) { isPass = true; } } if(isPass) { standardsNoPass = standardsNoPass + 1; } } return standardsNoPass; } public static int calculateDetails(List<ReviewStandard> standards) { //审查细则(条) int detailsNum = 0; for(ReviewStandard standard : standards) { List<ReviewDetails> details = getDetailsByStandard(standard); detailsNum = detailsNum + details.size(); } return detailsNum; } public static int calculateDetailsPass(List<ReviewStandard> standards, Map<Long, ReviewDetailsResult> resultMap) { int detailsPass = 0; for(ReviewStandard standard : standards) { List<ReviewDetails> details = getDetailsByStandard(standard); for(ReviewDetails reviewDetails : details) { if (detailsIsPass(reviewDetails, resultMap) == null) { continue; } if(Objects.equals(detailsIsPass(reviewDetails, resultMap), ReviewStandard.PASSED)) { detailsPass = detailsPass + 1; } } } return detailsPass; } public static int calculateDetailsNoPass(List<ReviewStandard> standards, Map<Long, ReviewDetailsResult> resultMap) { int detailsNoPass = 0; for(ReviewStandard standard : standards) { List<ReviewDetails> details = getDetailsByStandard(standard); for(ReviewDetails reviewDetails : details) { if(Objects.equals(detailsIsPass(reviewDetails, resultMap), ReviewStandard.NO_PASSED)) { detailsNoPass = detailsNoPass + 1; } } } return detailsNoPass; } public static List<ReviewDetails> getDetailsByStandard(ReviewStandard standard) { List<ReviewDetails> details = new ArrayList(); List<ReviewKeyPoint> keyPointList = standard.getKeyPointList(); for(ReviewKeyPoint keyPoint : keyPointList) { details.addAll(keyPoint.getReviewDetailsList()); } return details; } public static Integer detailsIsPass(ReviewDetails reviewDetails, Map<Long, ReviewDetailsResult> resultMap) { ReviewDetailsResult result = resultMap.get(reviewDetails.getId()); if(result == null) { return null; } return result.getPassed(); } }