| | |
| | | package com.ycl.platform.domain.entity; |
| | | |
| | | import annotation.Excel; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | 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.system.entity.BaseEntity; |
| | | import org.apache.commons.lang.builder.ToStringBuilder; |
| | | import org.apache.commons.lang.builder.ToStringStyle; |
| | | 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 |
| | | */ |
| | | public class CheckIndexFace extends CheckIndex |
| | | { |
| | | @Data |
| | | @TableName("t_check_index_face") |
| | | public class CheckIndexFace extends CheckIndex { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** 视图库对接稳定性 */ |
| | | @Excel(name = "视图库对接稳定性") |
| | | /** |
| | | * 视图库对接稳定性 |
| | | */ |
| | | @TableField("view_connect_stability") |
| | | private BigDecimal viewConnectStability; |
| | | |
| | | /** 点位在线率 */ |
| | | @Excel(name = "点位在线率") |
| | | /** |
| | | * 点位在线率 |
| | | */ |
| | | @TableField("site_online") |
| | | private BigDecimal siteOnline; |
| | | |
| | | /** 设备目录一致率 */ |
| | | @Excel(name = " 设备目录一致率") |
| | | /** |
| | | * 设备目录一致率 |
| | | */ |
| | | @TableField("device_directory_consistent") |
| | | private BigDecimal deviceDirectoryConsistent; |
| | | |
| | | /** 人脸卡口信息采集准确率 */ |
| | | @Excel(name = "人脸卡口信息采集准确率",width = 25) |
| | | /** |
| | | * 人脸卡口信息采集准确率 |
| | | */ |
| | | @TableField("face_information_collection_accuracy") |
| | | private BigDecimal faceInformationCollectionAccuracy; |
| | | |
| | | /** 设备抓拍图片合格性 */ |
| | | @Excel(name = "设备抓拍图片合格性") |
| | | /** |
| | | * 设备抓拍图片合格性 |
| | | */ |
| | | @TableField("face_picture_qualification") |
| | | private BigDecimal facePictureQualification; |
| | | |
| | | /** 设备抓拍图片时钟准确性 */ |
| | | @Excel(name = "设备抓拍图片时钟准确性",width = 25) |
| | | /** |
| | | * 设备抓拍图片时钟准确性 |
| | | */ |
| | | @TableField("face_timing_accuracy") |
| | | private BigDecimal faceTimingAccuracy; |
| | | |
| | | /** 抓拍人脸数据上传及时性 */ |
| | | @Excel(name = "抓拍人脸数据上传及时性",width = 25) |
| | | /** |
| | | * 抓拍人脸数据上传及时性 |
| | | */ |
| | | @TableField("face_upload_timeliness") |
| | | private BigDecimal faceUploadTimeliness; |
| | | |
| | | /** 人脸卡口设备抓拍数据大图可用性 */ |
| | | @Excel(name = "人脸卡口设备抓拍数据大图可用性",width = 25) |
| | | /** |
| | | * 人脸卡口设备抓拍数据大图可用性 |
| | | */ |
| | | @TableField("face_picture_availability") |
| | | private BigDecimal facePictureAvailability; |
| | | |
| | | public BigDecimal getViewConnectStability() { |
| | | return viewConnectStability; |
| | | } |
| | | @ExcelIgnore |
| | | @TableField(exist = false) |
| | | private List<String> quarter; |
| | | //转换成字符串用于excel导出 |
| | | public static CheckIndexFaceVO getExcelVo(@NonNull CheckIndexFace checkIndexFace) { |
| | | CheckIndexFaceVO checkIndexFaceVo = new CheckIndexFaceVO(); |
| | | checkIndexFaceVo.setNum(checkIndexFace.getNum()); |
| | | checkIndexFaceVo.setScore(checkIndexFace.getScore().setScale(2,RoundingMode.HALF_UP)); |
| | | 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) + "%"); |
| | | |
| | | public void setViewConnectStability(BigDecimal viewConnectStability) { |
| | | this.viewConnectStability = viewConnectStability; |
| | | return checkIndexFaceVo; |
| | | } |
| | | /** 用于导出计算平均值 */ |
| | | public static CheckIndexFace calculateAverage(List<CheckIndexFace> checkIndexFaces) { |
| | | Integer numSum = 0; |
| | | 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; |
| | | |
| | | public BigDecimal getSiteOnline() { |
| | | return siteOnline; |
| | | } |
| | | int count = checkIndexFaces.size(); |
| | | |
| | | public void setSiteOnline(BigDecimal siteOnline) { |
| | | this.siteOnline = siteOnline; |
| | | } |
| | | |
| | | public BigDecimal getDeviceDirectoryConsistent() { |
| | | return deviceDirectoryConsistent; |
| | | } |
| | | |
| | | public void setDeviceDirectoryConsistent(BigDecimal deviceDirectoryConsistent) { |
| | | this.deviceDirectoryConsistent = deviceDirectoryConsistent; |
| | | } |
| | | |
| | | public BigDecimal getFaceInformationCollectionAccuracy() { |
| | | return faceInformationCollectionAccuracy; |
| | | } |
| | | |
| | | public void setFaceInformationCollectionAccuracy(BigDecimal faceInformationCollectionAccuracy) { |
| | | this.faceInformationCollectionAccuracy = faceInformationCollectionAccuracy; |
| | | } |
| | | |
| | | public BigDecimal getFacePictureQualification() { |
| | | return facePictureQualification; |
| | | } |
| | | |
| | | public void setFacePictureQualification(BigDecimal facePictureQualification) { |
| | | this.facePictureQualification = facePictureQualification; |
| | | } |
| | | |
| | | public BigDecimal getFaceTimingAccuracy() { |
| | | return faceTimingAccuracy; |
| | | } |
| | | |
| | | public void setFaceTimingAccuracy(BigDecimal faceTimingAccuracy) { |
| | | this.faceTimingAccuracy = faceTimingAccuracy; |
| | | } |
| | | |
| | | public BigDecimal getFaceUploadTimeliness() { |
| | | return faceUploadTimeliness; |
| | | } |
| | | |
| | | public void setFaceUploadTimeliness(BigDecimal faceUploadTimeliness) { |
| | | this.faceUploadTimeliness = faceUploadTimeliness; |
| | | } |
| | | |
| | | public BigDecimal getFacePictureAvailability() { |
| | | return facePictureAvailability; |
| | | } |
| | | |
| | | public void setFacePictureAvailability(BigDecimal facePictureAvailability) { |
| | | this.facePictureAvailability = facePictureAvailability; |
| | | } |
| | | |
| | | @Override |
| | | public Long getId() { |
| | | return super.getId(); |
| | | } |
| | | |
| | | @Override |
| | | public void setId(Long id) { |
| | | super.setId(id); |
| | | } |
| | | |
| | | @Override |
| | | public String getDate() { |
| | | return super.getDate(); |
| | | } |
| | | |
| | | @Override |
| | | public void setDate(String date) { |
| | | super.setDate(date); |
| | | } |
| | | |
| | | @Override |
| | | public Date getCreateTime() { |
| | | return super.getCreateTime(); |
| | | } |
| | | |
| | | @Override |
| | | public void setCreateTime(Date createTime) { |
| | | super.setCreateTime(createTime); |
| | | } |
| | | |
| | | @Override |
| | | public Long getDeptId() { |
| | | return super.getDeptId(); |
| | | } |
| | | |
| | | @Override |
| | | public void setDeptId(Long deptId) { |
| | | super.setDeptId(deptId); |
| | | } |
| | | |
| | | @Override |
| | | public String getDeptName() { |
| | | return super.getDeptName(); |
| | | } |
| | | |
| | | @Override |
| | | public void setDeptName(String deptName) { |
| | | super.setDeptName(deptName); |
| | | } |
| | | |
| | | @Override |
| | | public Long getExamineTag() { |
| | | return super.getExamineTag(); |
| | | } |
| | | |
| | | @Override |
| | | public void setExamineTag(Long examineTag) { |
| | | super.setExamineTag(examineTag); |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return "CheckIndexFace{" + |
| | | "id=" + id + |
| | | ", date='" + date + '\'' + |
| | | ", createTime=" + createTime + |
| | | ", deptId=" + deptId + |
| | | ", deptName='" + deptName + '\'' + |
| | | ", examineTag=" + examineTag + |
| | | ", viewConnectStability=" + viewConnectStability + |
| | | ", siteOnline=" + siteOnline + |
| | | ", deviceDirectoryConsistent=" + deviceDirectoryConsistent + |
| | | ", faceInformationCollectionAccuracy=" + faceInformationCollectionAccuracy + |
| | | ", facePictureQualification=" + facePictureQualification + |
| | | ", faceTimingAccuracy=" + faceTimingAccuracy + |
| | | ", faceUploadTimeliness=" + faceUploadTimeliness + |
| | | ", facePictureAvailability=" + facePictureAvailability + |
| | | '}'; |
| | | for (CheckIndexFace indexFace : checkIndexFaces) { |
| | | numSum = numSum + (indexFace.getNum() == null? 0:indexFace.getNum()); |
| | | 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.setNum(numSum/count); |
| | | result.setScore(scoreSum.divide(BigDecimal.valueOf(count), 2, RoundingMode.HALF_UP)); |
| | | 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; |
| | | } |
| | | } |