fuliqi
2024-09-05 46b29175dfdafafd014212be0e340544b8761493
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckIndexFace.java
@@ -10,9 +10,11 @@
import constant.CheckConstants;
import lombok.Data;
import org.springframework.lang.NonNull;
import utils.StringUtils;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@@ -81,8 +83,15 @@
    //转换成字符串用于excel导出
    public static CheckIndexFaceVO getExcelVo(@NonNull CheckIndexFace checkIndexFace) {
        CheckIndexFaceVO checkIndexFaceVo = new CheckIndexFaceVO();
        checkIndexFaceVo.setScore(checkIndexFace.getScore());
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        //避免合计行报错(合计数据 缺少createTimeStr字段 直接将createTimeStr设置为"合计")
        if (StringUtils.isEmpty(checkIndexFace.getCreateTimeStr())) {
            checkIndexFaceVo.setCreateTimeStr(format.format(checkIndexFace.getCreateTime()));
        }else {
            checkIndexFaceVo.setCreateTimeStr(checkIndexFace.getCreateTimeStr());
        }
        checkIndexFaceVo.setDeptName(checkIndexFace.getDeptName());
        checkIndexFaceVo.setCreateTime(checkIndexFace.getCreateTime());
        checkIndexFaceVo.setExamineTagStr(CheckConstants.Examine_Tag_Province.equals(checkIndexFace.getExamineTag()) ? "省厅考核" : "区县考核");
        checkIndexFaceVo.setSiteOnlineText(checkIndexFace.getSiteOnline().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        checkIndexFaceVo.setFaceInformationCollectionAccuracyText(checkIndexFace.getFaceInformationCollectionAccuracy().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
@@ -95,4 +104,44 @@
        return checkIndexFaceVo;
    }
    /** 用于导出计算平均值 */
    public static CheckIndexFace calculateAverage(List<CheckIndexFace> checkIndexFaces) {
        BigDecimal scoreSum = BigDecimal.ZERO;
        BigDecimal totalViewConnectStability = BigDecimal.ZERO;
        BigDecimal totalSiteOnline = BigDecimal.ZERO;
        BigDecimal totalDeviceDirectoryConsistent = BigDecimal.ZERO;
        BigDecimal totalFaceInformationCollectionAccuracy = BigDecimal.ZERO;
        BigDecimal totalFacePictureQualification = BigDecimal.ZERO;
        BigDecimal totalFaceTimingAccuracy = BigDecimal.ZERO;
        BigDecimal totalFaceUploadTimeliness = BigDecimal.ZERO;
        BigDecimal totalFacePictureAvailability = BigDecimal.ZERO;
        int count = checkIndexFaces.size();
        for (CheckIndexFace indexFace : checkIndexFaces) {
            scoreSum = scoreSum.add(indexFace.getScore() == null ? BigDecimal.ZERO : indexFace.getScore());
            totalViewConnectStability = totalViewConnectStability.add(indexFace.getViewConnectStability());
            totalSiteOnline = totalSiteOnline.add(indexFace.getSiteOnline());
            totalDeviceDirectoryConsistent = totalDeviceDirectoryConsistent.add(indexFace.getDeviceDirectoryConsistent());
            totalFaceInformationCollectionAccuracy = totalFaceInformationCollectionAccuracy.add(indexFace.getFaceInformationCollectionAccuracy());
            totalFacePictureQualification = totalFacePictureQualification.add(indexFace.getFacePictureQualification());
            totalFaceTimingAccuracy = totalFaceTimingAccuracy.add(indexFace.getFaceTimingAccuracy());
            totalFaceUploadTimeliness = totalFaceUploadTimeliness.add(indexFace.getFaceUploadTimeliness());
            totalFacePictureAvailability = totalFacePictureAvailability.add(indexFace.getFacePictureAvailability());
        }
        CheckIndexFace result = new CheckIndexFace();
        result.setCreateTimeStr("合计");
        result.setDeptName(checkIndexFaces.get(0).getDeptName());
        result.setExamineTag(checkIndexFaces.get(0).getExamineTag());
        result.setScore(scoreSum);
        result.setViewConnectStability(totalViewConnectStability.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP));
        result.setSiteOnline(totalSiteOnline.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP));
        result.setDeviceDirectoryConsistent(totalDeviceDirectoryConsistent.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP));
        result.setFaceInformationCollectionAccuracy(totalFaceInformationCollectionAccuracy.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP));
        result.setFacePictureQualification(totalFacePictureQualification.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP));
        result.setFaceTimingAccuracy(totalFaceTimingAccuracy.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP));
        result.setFaceUploadTimeliness(totalFaceUploadTimeliness.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP));
        result.setFacePictureAvailability(totalFacePictureAvailability.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP));
        return result;
    }
}