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.CheckIndexFaceVO;
|
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_face
|
*
|
* @author ruoyi
|
* @date 2024-04-29
|
*/
|
@Data
|
@TableName("t_check_index_face")
|
public class CheckIndexFace extends CheckIndex {
|
private static final long serialVersionUID = 1L;
|
|
/**
|
* 视图库对接稳定性
|
*/
|
@TableField("view_connect_stability")
|
private BigDecimal viewConnectStability;
|
|
/**
|
* 点位在线率
|
*/
|
@TableField("site_online")
|
private BigDecimal siteOnline;
|
|
/**
|
* 设备目录一致率
|
*/
|
@TableField("device_directory_consistent")
|
private BigDecimal deviceDirectoryConsistent;
|
|
/**
|
* 人脸卡口信息采集准确率
|
*/
|
@TableField("face_information_collection_accuracy")
|
private BigDecimal faceInformationCollectionAccuracy;
|
|
/**
|
* 设备抓拍图片合格性
|
*/
|
@TableField("face_picture_qualification")
|
private BigDecimal facePictureQualification;
|
|
/**
|
* 设备抓拍图片时钟准确性
|
*/
|
@TableField("face_timing_accuracy")
|
private BigDecimal faceTimingAccuracy;
|
|
/**
|
* 抓拍人脸数据上传及时性
|
*/
|
@TableField("face_upload_timeliness")
|
private BigDecimal faceUploadTimeliness;
|
|
/**
|
* 人脸卡口设备抓拍数据大图可用性
|
*/
|
@TableField("face_picture_availability")
|
private BigDecimal facePictureAvailability;
|
|
@ExcelIgnore
|
@TableField(exist = false)
|
private List<String> quarter;
|
//转换成字符串用于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.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) + "%");
|
checkIndexFaceVo.setFacePictureAvailabilityText(checkIndexFace.getFacePictureAvailability().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
|
checkIndexFaceVo.setDeviceDirectoryConsistentTextText(checkIndexFace.getDeviceDirectoryConsistent().multiply(new BigDecimal(100)) .setScale(2, RoundingMode.HALF_UP)+ "%");
|
checkIndexFaceVo.setFaceTimingAccuracyText(checkIndexFace.getFaceTimingAccuracy().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
|
checkIndexFaceVo.setFacePictureQualificationText(checkIndexFace.getFacePictureQualification().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
|
checkIndexFaceVo.setViewConnectStabilityText(checkIndexFace.getViewConnectStability().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
|
checkIndexFaceVo.setFaceUploadTimelinessText(checkIndexFace.getFaceUploadTimeliness().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
|
|
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;
|
}
|
}
|