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<String> quarter;
|
|
//转换成字符串用于excel导出
|
public static CheckIndexVideoVO getExcelVo(@NonNull CheckIndexVideo checkIndexVideo) {
|
CheckIndexVideoVO checkIndexVideoVO = new CheckIndexVideoVO();
|
checkIndexVideoVO.setNum(checkIndexVideo.getNum());
|
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()) ? "省厅考核" : CheckConstants.Examine_Tag_County.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<CheckIndexVideo> videos) {
|
Integer numSum = 0;
|
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) {
|
numSum = numSum + (video.getNum() == null ? 0 : video.getNum());
|
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.setNum(numSum / count);
|
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;
|
}
|
}
|