fuliqi
2024-09-30 b5df1cee65f3e9dcf554efcd3f1642a8c79d1e76
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckIndexFace.java
@@ -5,8 +5,16 @@
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;
@@ -16,204 +24,128 @@
 * @author ruoyi
 * @date 2024-04-29
 */
@Data
@TableName("t_check_index_face")
public class CheckIndexFace extends CheckIndex
{
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;
    @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 List<String> getQuarter() {
        return quarter;
        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 void setQuarter(List<String> quarter) {
        this.quarter = quarter;
    }
        int count = checkIndexFaces.size();
    public BigDecimal getViewConnectStability() {
        return viewConnectStability;
    }
    public void setViewConnectStability(BigDecimal viewConnectStability) {
        this.viewConnectStability = viewConnectStability;
    }
    public BigDecimal getSiteOnline() {
        return siteOnline;
    }
    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 Short getExamineTag() {
        return super.getExamineTag();
    }
    @Override
    public void setExamineTag(Short 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;
    }
}