fuliqi
2024-09-05 46b29175dfdafafd014212be0e340544b8761493
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckIndexVideo.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;
@@ -100,7 +102,7 @@
    private BigDecimal keyTimingAccuracy;
    /**
     *  重点指挥图像在线率
     * 重点指挥图像在线率
     */
    @TableField("key_command_image_online")
    private BigDecimal keyCommandImageOnline;
@@ -115,27 +117,98 @@
    @ExcelIgnore
    @TableField(exist = false)
    private List<String> quarter;
    //转换成字符串用于excel导出
    public static CheckIndexVideoVO getExcelVo(@NonNull CheckIndexVideo checkIndexVideo) {
        CheckIndexVideoVO checkIndexVideoVO = new CheckIndexVideoVO();
        checkIndexVideoVO.setScore(checkIndexVideo.getScore());
        checkIndexVideoVO.setDeptName(checkIndexVideo.getDeptName());
        checkIndexVideoVO.setCreateTime(checkIndexVideo.getCreateTime());
        //避免合计行报错(合计数据 缺少createTimeStr字段 直接将createTimeStr设置为"合计")
        if (StringUtils.isEmpty(checkIndexVideo.getCreateTimeStr())) {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            checkIndexVideoVO.setCreateTimeStr(format.format(checkIndexVideo.getCreateTime()));
        }else {
            checkIndexVideoVO.setCreateTimeStr(checkIndexVideo.getCreateTimeStr());
        }
        checkIndexVideoVO.setExamineTagStr(CheckConstants.Examine_Tag_Province.equals(checkIndexVideo.getExamineTag()) ? "省厅考核" : "区县考核");
        checkIndexVideoVO.setSiteOnlineText(checkIndexVideo.getSiteOnline().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)+"%");
        checkIndexVideoVO.setImageResourceSecurityText(checkIndexVideo.getImageResourceSecurity().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)+"%");
        checkIndexVideoVO.setArchivesRateText(checkIndexVideo.getArchivesRate().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)+"%");
        checkIndexVideoVO.setKeyAnnotationAccuracyText(checkIndexVideo.getKeyAnnotationAccuracy().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)+"%");
        checkIndexVideoVO.setKeyCommandImageOnlineText(checkIndexVideo.getKeyCommandImageOnline().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)+"%");
        checkIndexVideoVO.setKeyVideoAvailableText(checkIndexVideo.getKeyVideoAvailable().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)+"%");
        checkIndexVideoVO.setKeySiteOnlineText(checkIndexVideo.getKeySiteOnline().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)+"%");
        checkIndexVideoVO.setKeyTimingAccuracyText(checkIndexVideo.getKeyTimingAccuracy().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)+"%");
        checkIndexVideoVO.setMinistryVideoAvailableText(checkIndexVideo.getMinistryVideoAvailable().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)+"%");
        checkIndexVideoVO.setVideoAvailableText(checkIndexVideo.getVideoAvailable().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)+"%");
        checkIndexVideoVO.setMinistrySiteOnlineText(checkIndexVideo.getMinistrySiteOnline().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)+"%");
        checkIndexVideoVO.setPlatformOnlineText(checkIndexVideo.getPlatformOnline().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)+"%");
        checkIndexVideoVO.setMonitorQualificationText(checkIndexVideo.getMonitorQualification().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)+"%");
        checkIndexVideoVO.setMonitorRegistrationText(checkIndexVideo.getMonitorRegistration().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)+"%");
        checkIndexVideoVO.setSiteOnlineText(checkIndexVideo.getSiteOnline().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        checkIndexVideoVO.setImageResourceSecurityText(checkIndexVideo.getImageResourceSecurity().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        checkIndexVideoVO.setArchivesRateText(checkIndexVideo.getArchivesRate().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        checkIndexVideoVO.setKeyAnnotationAccuracyText(checkIndexVideo.getKeyAnnotationAccuracy().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        checkIndexVideoVO.setKeyCommandImageOnlineText(checkIndexVideo.getKeyCommandImageOnline().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        checkIndexVideoVO.setKeyVideoAvailableText(checkIndexVideo.getKeyVideoAvailable().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        checkIndexVideoVO.setKeySiteOnlineText(checkIndexVideo.getKeySiteOnline().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        checkIndexVideoVO.setKeyTimingAccuracyText(checkIndexVideo.getKeyTimingAccuracy().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        checkIndexVideoVO.setMinistryVideoAvailableText(checkIndexVideo.getMinistryVideoAvailable().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        checkIndexVideoVO.setVideoAvailableText(checkIndexVideo.getVideoAvailable().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        checkIndexVideoVO.setMinistrySiteOnlineText(checkIndexVideo.getMinistrySiteOnline().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        checkIndexVideoVO.setPlatformOnlineText(checkIndexVideo.getPlatformOnline().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        checkIndexVideoVO.setMonitorQualificationText(checkIndexVideo.getMonitorQualification().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        checkIndexVideoVO.setMonitorRegistrationText(checkIndexVideo.getMonitorRegistration().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        return checkIndexVideoVO;
    }
    /**
     * 用于导出计算平均值
     */
    public static CheckIndexVideo calculateAverage(List<CheckIndexVideo> videos) {
        BigDecimal scoreSum = BigDecimal.ZERO;
        BigDecimal totalPlatformOnline = BigDecimal.ZERO;
        BigDecimal totalMonitorQualification = BigDecimal.ZERO;
        BigDecimal totalMonitorRegistration = BigDecimal.ZERO;
        BigDecimal totalArchivesRate = BigDecimal.ZERO;
        BigDecimal totalSiteOnline = BigDecimal.ZERO;
        BigDecimal totalVideoAvailable = BigDecimal.ZERO;
        BigDecimal totalMinistrySiteOnline = BigDecimal.ZERO;
        BigDecimal totalMinistryVideoAvailable = BigDecimal.ZERO;
        BigDecimal totalKeySiteOnline = BigDecimal.ZERO;
        BigDecimal totalKeyVideoAvailable = BigDecimal.ZERO;
        BigDecimal totalKeyAnnotationAccuracy = BigDecimal.ZERO;
        BigDecimal totalKeyTimingAccuracy = BigDecimal.ZERO;
        BigDecimal totalKeyCommandImageOnline = BigDecimal.ZERO;
        BigDecimal totalImageResourceSecurity = BigDecimal.ZERO;
        int count = videos.size();
        for (CheckIndexVideo video : videos) {
            scoreSum = scoreSum.add(video.getScore() == null ? BigDecimal.ZERO : video.getScore());
            totalPlatformOnline = totalPlatformOnline.add(video.getPlatformOnline());
            totalMonitorQualification = totalMonitorQualification.add(video.getMonitorQualification());
            totalMonitorRegistration = totalMonitorRegistration.add(video.getMonitorRegistration());
            totalArchivesRate = totalArchivesRate.add(video.getArchivesRate());
            totalSiteOnline = totalSiteOnline.add(video.getSiteOnline());
            totalVideoAvailable = totalVideoAvailable.add(video.getVideoAvailable());
            totalMinistrySiteOnline = totalMinistrySiteOnline.add(video.getMinistrySiteOnline());
            totalMinistryVideoAvailable = totalMinistryVideoAvailable.add(video.getMinistryVideoAvailable());
            totalKeySiteOnline = totalKeySiteOnline.add(video.getKeySiteOnline());
            totalKeyVideoAvailable = totalKeyVideoAvailable.add(video.getKeyVideoAvailable());
            totalKeyAnnotationAccuracy = totalKeyAnnotationAccuracy.add(video.getKeyAnnotationAccuracy());
            totalKeyTimingAccuracy = totalKeyTimingAccuracy.add(video.getKeyTimingAccuracy());
            totalKeyCommandImageOnline = totalKeyCommandImageOnline.add(video.getKeyCommandImageOnline());
            totalImageResourceSecurity = totalImageResourceSecurity.add(video.getImageResourceSecurity());
        }
        // 创建一个新的CheckIndexVideo对象并设置平均值
        CheckIndexVideo averageVideo = new CheckIndexVideo();
        averageVideo.setCreateTimeStr("合计");
        averageVideo.setDeptName(videos.get(0).getDeptName());
        averageVideo.setExamineTag(videos.get(0).getExamineTag());
        averageVideo.setScore(scoreSum);
        averageVideo.setPlatformOnline(totalPlatformOnline.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP));
        averageVideo.setMonitorQualification(totalMonitorQualification.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP));
        averageVideo.setMonitorRegistration(totalMonitorRegistration.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP));
        averageVideo.setArchivesRate(totalArchivesRate.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP));
        averageVideo.setSiteOnline(totalSiteOnline.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP));
        averageVideo.setVideoAvailable(totalVideoAvailable.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP));
        averageVideo.setMinistrySiteOnline(totalMinistrySiteOnline.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP));
        averageVideo.setMinistryVideoAvailable(totalMinistryVideoAvailable.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP));
        averageVideo.setKeySiteOnline(totalKeySiteOnline.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP));
        averageVideo.setKeyVideoAvailable(totalKeyVideoAvailable.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP));
        averageVideo.setKeyAnnotationAccuracy(totalKeyAnnotationAccuracy.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP));
        averageVideo.setKeyTimingAccuracy(totalKeyTimingAccuracy.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP));
        averageVideo.setKeyCommandImageOnline(totalKeyCommandImageOnline.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP));
        averageVideo.setImageResourceSecurity(totalImageResourceSecurity.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP));
        return averageVideo;
    }
}