package com.ycl.platform.domain.entity; import annotation.Excel; import com.alibaba.excel.annotation.ExcelIgnore; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.ycl.platform.base.CheckIndex; import com.ycl.platform.domain.vo.CheckIndexCarVO; import com.ycl.platform.domain.vo.CheckIndexVideoVO; 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; /** * 视频指标概率数据对象 t_check_index_video * * @author ruoyi * @date 2024-04-29 */ @TableName("t_check_index_video") @Data public class CheckIndexVideo extends CheckIndex { private static final long serialVersionUID = 1L; /** * 平台在线率 */ @TableField("platform_online") private BigDecimal platformOnline; /** * 一机一档合格率 */ @TableField("monitor_qualification") private BigDecimal monitorQualification; /** * 档案考核比 */ @TableField("monitor_registration") private BigDecimal monitorRegistration; /** * 档案考核比 */ @TableField("archives_rate") private BigDecimal archivesRate; /** * 点位在线率 */ @TableField("site_online") private BigDecimal siteOnline; /** * 录象可用率 */ @TableField("video_available") private BigDecimal videoAvailable; /** * 部级点位在线率 */ @TableField("ministry_site_online") private BigDecimal ministrySiteOnline; /** * 部级巡检录像可用率 */ @TableField("ministry_video_available") private BigDecimal ministryVideoAvailable; /** * 重点点位在线率 */ @TableField("key_site_online") private BigDecimal keySiteOnline; /** * 重点点位录象可用率 */ @TableField("key_video_available") private BigDecimal keyVideoAvailable; /** * 重点点位标注正确率 */ @TableField("key_annotation_accuracy") private BigDecimal keyAnnotationAccuracy; /** * 重点点位按时正确率 */ @TableField("key_timing_accuracy") private BigDecimal keyTimingAccuracy; /** * 重点指挥图像在线率 */ @TableField("key_command_image_online") private BigDecimal keyCommandImageOnline; /** * 视频图像资源安全管理 */ @TableField("image_resource_security") private BigDecimal imageResourceSecurity; @ExcelIgnore @TableField(exist = false) private List quarter; //转换成字符串用于excel导出 public static CheckIndexVideoVO getExcelVo(@NonNull CheckIndexVideo checkIndexVideo) { CheckIndexVideoVO checkIndexVideoVO = new CheckIndexVideoVO(); checkIndexVideoVO.setScore(checkIndexVideo.getScore().setScale(2,RoundingMode.HALF_UP)); checkIndexVideoVO.setDeptName(checkIndexVideo.getDeptName()); //避免合计行报错(合计数据 缺少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) + "%"); return checkIndexVideoVO; } /** * 用于导出计算平均值 */ public static CheckIndexVideo calculateAverage(List 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.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP)); 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; } }