zxl
12 小时以前 3b0516a2959e25576e4f3fda697a3b025d06c8c9
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckIndexCar.java
@@ -1,13 +1,18 @@
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 constant.CheckConstants;
import lombok.Data;
import org.springframework.lang.NonNull;
import utils.StringUtils;
import java.math.BigDecimal;
import java.util.Date;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.List;
/**
@@ -16,58 +21,68 @@
 * @author ruoyi
 * @date 2024-04-29
 */
@TableName("check_index_car")
public class CheckIndexCar extends CheckIndex
{
@Data
@TableName("t_check_index_car")
public class CheckIndexCar 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 = "联网卡口设备目录一致率",width = 25)
    /**
     * 联网卡口设备目录一致率
     */
    @TableField("device_directory_consistent")
    private BigDecimal deviceDirectoryConsistent;
    /** 车辆卡口信息采集准确率 */
    @Excel(name = "车辆卡口信息采集准确率",width = 25)
    /**
     * 车辆卡口信息采集准确率
     */
    @TableField("vehicle_information_collection_accuracy")
    private BigDecimal vehicleInformationCollectionAccuracy;
    /** 车辆卡口设备抓拍数据完整性 */
    @Excel(name = "车辆卡口设备抓拍数据完整性",width = 25)
    /**
     * 车辆卡口设备抓拍数据完整性
     */
    @TableField("vehicle_capture_integrity")
    private BigDecimal vehicleCaptureIntegrity;
    /** 车辆卡口设备抓拍数据准确性 */
    @Excel(name = "车辆卡口设备抓拍数据准确性",width = 25)
    /**
     * 车辆卡口设备抓拍数据准确性
     */
    @TableField("vehicle_capture_accuracy")
    private BigDecimal vehicleCaptureAccuracy;
    /** 车辆卡口设备时钟准确性 */
    @Excel(name = "车辆卡口设备时钟准确性",width = 25)
    /**
     * 车辆卡口设备时钟准确性
     */
    @TableField("vehicle_timing_accuracy")
    private BigDecimal vehicleTimingAccuracy;
    /** 车辆卡口设备抓拍数据上传及时性 */
    @Excel(name = "车辆卡口设备抓拍数据上传及时性",width = 25)
    /**
     * 车辆卡口设备抓拍数据上传及时性
     */
    @TableField("vehicle_upload_timeliness")
    private BigDecimal vehicleUploadTimeliness;
    /** 车辆卡口设备url可用性 */
    @Excel(name = "车辆卡口设备url可用性",width = 25)
    /**
     * 车辆卡口设备url可用性
     */
    @TableField("vehicle_url_availability")
    private BigDecimal vehicleUrlAvailability;
    /** 车辆卡口设备抓拍数据大图可用性 */
    @Excel(name = "车辆卡口设备抓拍数据大图可用性",width = 25)
    /**
     * 车辆卡口设备抓拍数据大图可用性
     */
    @TableField("vehicle_picture_availability")
    private BigDecimal vehiclePictureAvailability;
@@ -75,184 +90,79 @@
    @TableField(exist = false)
    private List<String> quarter;
    public List<String> getQuarter() {
        return quarter;
    //转换成字符串用于excel导出
    public static CheckIndexCarVO getExcelVo(@NonNull CheckIndexCar checkIndexCar) {
        CheckIndexCarVO checkIndexCarVo = new CheckIndexCarVO();
        checkIndexCarVo.setNum(checkIndexCar.getNum());
        checkIndexCarVo.setScore(checkIndexCar.getScore().setScale(2,RoundingMode.HALF_UP));
        checkIndexCarVo.setDeptName(checkIndexCar.getDeptName());
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        //避免合计行报错(合计数据 缺少createTimeStr字段 直接将createTimeStr设置为"合计")
        if (StringUtils.isEmpty(checkIndexCar.getCreateTimeStr())) {
            checkIndexCarVo.setCreateTimeStr(format.format(checkIndexCar.getCreateTime()));
        }else {
            checkIndexCarVo.setCreateTimeStr(checkIndexCar.getCreateTimeStr());
        }
        checkIndexCarVo.setExamineTagStr(CheckConstants.Examine_Tag_Province.equals(checkIndexCar.getExamineTag()) ? "省厅考核" : CheckConstants.Examine_Tag_County.equals(checkIndexCar.getExamineTag()) ? "区县考核" : "公安部考核");
        checkIndexCarVo.setSiteOnlineText(checkIndexCar.getSiteOnline().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        checkIndexCarVo.setVehicleCaptureAccuracyText(checkIndexCar.getVehicleCaptureAccuracy().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        checkIndexCarVo.setDeviceDirectoryConsistentText(checkIndexCar.getDeviceDirectoryConsistent().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        checkIndexCarVo.setVehicleCaptureIntegrityText(checkIndexCar.getVehicleCaptureIntegrity().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        checkIndexCarVo.setVehicleTimingAccuracyText(checkIndexCar.getSiteOnline().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        checkIndexCarVo.setVehicleUploadTimelinessText(checkIndexCar.getSiteOnline().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        checkIndexCarVo.setViewConnectStabilityText(checkIndexCar.getSiteOnline().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        checkIndexCarVo.setVehicleUrlAvailabilityText(checkIndexCar.getSiteOnline().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        checkIndexCarVo.setVehiclePictureAvailabilityText(checkIndexCar.getSiteOnline().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        checkIndexCarVo.setVehicleInformationCollectionAccuracyText(checkIndexCar.getVehicleInformationCollectionAccuracy().multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP) + "%");
        return checkIndexCarVo;
    }
    public void setQuarter(List<String> quarter) {
        this.quarter = quarter;
    }
    @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);
    }
    public void setViewConnectStability(BigDecimal viewConnectStability)
    {
        this.viewConnectStability = viewConnectStability;
    }
    public BigDecimal getViewConnectStability()
    {
        return viewConnectStability;
    }
    public void setSiteOnline(BigDecimal siteOnline)
    {
        this.siteOnline = siteOnline;
    }
    public BigDecimal getSiteOnline()
    {
        return siteOnline;
    }
    public void setDeviceDirectoryConsistent(BigDecimal deviceDirectoryConsistent)
    {
        this.deviceDirectoryConsistent = deviceDirectoryConsistent;
    }
    public BigDecimal getDeviceDirectoryConsistent()
    {
        return deviceDirectoryConsistent;
    }
    public void setVehicleInformationCollectionAccuracy(BigDecimal vehicleInformationCollectionAccuracy)
    {
        this.vehicleInformationCollectionAccuracy = vehicleInformationCollectionAccuracy;
    }
    public BigDecimal getVehicleInformationCollectionAccuracy()
    {
        return vehicleInformationCollectionAccuracy;
    }
    public void setVehicleCaptureIntegrity(BigDecimal vehicleCaptureIntegrity)
    {
        this.vehicleCaptureIntegrity = vehicleCaptureIntegrity;
    }
    public BigDecimal getVehicleCaptureIntegrity()
    {
        return vehicleCaptureIntegrity;
    }
    public void setVehicleCaptureAccuracy(BigDecimal vehicleCaptureAccuracy)
    {
        this.vehicleCaptureAccuracy = vehicleCaptureAccuracy;
    }
    public BigDecimal getVehicleCaptureAccuracy()
    {
        return vehicleCaptureAccuracy;
    }
    public void setVehicleTimingAccuracy(BigDecimal vehicleTimingAccuracy)
    {
        this.vehicleTimingAccuracy = vehicleTimingAccuracy;
    }
    public BigDecimal getVehicleTimingAccuracy()
    {
        return vehicleTimingAccuracy;
    }
    public void setVehicleUploadTimeliness(BigDecimal vehicleUploadTimeliness)
    {
        this.vehicleUploadTimeliness = vehicleUploadTimeliness;
    }
    public BigDecimal getVehicleUploadTimeliness()
    {
        return vehicleUploadTimeliness;
    }
    public void setVehicleUrlAvailability(BigDecimal vehicleUrlAvailability)
    {
        this.vehicleUrlAvailability = vehicleUrlAvailability;
    }
    public BigDecimal getVehicleUrlAvailability()
    {
        return vehicleUrlAvailability;
    }
    public void setVehiclePictureAvailability(BigDecimal vehiclePictureAvailability)
    {
        this.vehiclePictureAvailability = vehiclePictureAvailability;
    }
    public BigDecimal getVehiclePictureAvailability()
    {
        return vehiclePictureAvailability;
    }
    @Override
    public String toString() {
        return "CheckIndexCar{" +
                "id=" + id +
                ", date='" + date + '\'' +
                ", createTime=" + createTime +
                ", deptId=" + deptId +
                ", deptName='" + deptName + '\'' +
                ", examineTag=" + examineTag +
                ", viewConnectStability=" + viewConnectStability +
                ", siteOnline=" + siteOnline +
                ", deviceDirectoryConsistent=" + deviceDirectoryConsistent +
                ", vehicleInformationCollectionAccuracy=" + vehicleInformationCollectionAccuracy +
                ", vehicleCaptureIntegrity=" + vehicleCaptureIntegrity +
                ", vehicleCaptureAccuracy=" + vehicleCaptureAccuracy +
                ", vehicleTimingAccuracy=" + vehicleTimingAccuracy +
                ", vehicleUploadTimeliness=" + vehicleUploadTimeliness +
                ", vehicleUrlAvailability=" + vehicleUrlAvailability +
                ", vehiclePictureAvailability=" + vehiclePictureAvailability +
                '}';
    /**
     * 导出时用于计算平均值
     */
    public static CheckIndexCar calculateAverage(List<CheckIndexCar> checkIndexCars) {
        Integer numSum = 0;
        BigDecimal scoreSum = BigDecimal.ZERO;
        BigDecimal viewConnectStabilitySum = BigDecimal.ZERO;
        BigDecimal siteOnlineSum = BigDecimal.ZERO;
        BigDecimal deviceDirectoryConsistentSum = BigDecimal.ZERO;
        BigDecimal vehicleInformationCollectionAccuracySum = BigDecimal.ZERO;
        BigDecimal vehicleCaptureIntegritySum = BigDecimal.ZERO;
        BigDecimal vehicleCaptureAccuracySum = BigDecimal.ZERO;
        BigDecimal vehicleTimingAccuracySum = BigDecimal.ZERO;
        BigDecimal vehicleUploadTimelinessSum = BigDecimal.ZERO;
        BigDecimal vehicleUrlAvailabilitySum = BigDecimal.ZERO;
        BigDecimal vehiclePictureAvailabilitySum = BigDecimal.ZERO;
        for (CheckIndexCar car : checkIndexCars) {
            numSum = numSum + (car.getNum() == null? 0:car.getNum());
            scoreSum = scoreSum.add(car.getScore() == null ? BigDecimal.ZERO : car.getScore());
            viewConnectStabilitySum = viewConnectStabilitySum.add(car.getViewConnectStability());
            siteOnlineSum = siteOnlineSum.add(car.getSiteOnline());
            deviceDirectoryConsistentSum = deviceDirectoryConsistentSum.add(car.getDeviceDirectoryConsistent());
            vehicleInformationCollectionAccuracySum = vehicleInformationCollectionAccuracySum.add(car.getVehicleInformationCollectionAccuracy());
            vehicleCaptureIntegritySum = vehicleCaptureIntegritySum.add(car.getVehicleCaptureIntegrity());
            vehicleCaptureAccuracySum = vehicleCaptureAccuracySum.add(car.getVehicleCaptureAccuracy());
            vehicleTimingAccuracySum = vehicleTimingAccuracySum.add(car.getVehicleTimingAccuracy());
            vehicleUploadTimelinessSum = vehicleUploadTimelinessSum.add(car.getVehicleUploadTimeliness());
            vehicleUrlAvailabilitySum = vehicleUrlAvailabilitySum.add(car.getVehicleUrlAvailability());
            vehiclePictureAvailabilitySum = vehiclePictureAvailabilitySum.add(car.getVehiclePictureAvailability());
        }
        CheckIndexCar checkIndexCar = new CheckIndexCar();
        checkIndexCar.setCreateTimeStr("合计");
        checkIndexCar.setDeptName(checkIndexCars.get(0).getDeptName());
        checkIndexCar.setExamineTag(checkIndexCars.get(0).getExamineTag());
        checkIndexCar.setScore(scoreSum.divide(new BigDecimal(checkIndexCars.size()), 2, RoundingMode.HALF_UP));
        checkIndexCar.setNum(numSum/checkIndexCars.size());
        checkIndexCar.setViewConnectStability(viewConnectStabilitySum.divide(new BigDecimal(checkIndexCars.size()), 2, RoundingMode.HALF_UP));
        checkIndexCar.setSiteOnline(siteOnlineSum.divide(new BigDecimal(checkIndexCars.size()), 2, RoundingMode.HALF_UP));
        checkIndexCar.setDeviceDirectoryConsistent(deviceDirectoryConsistentSum.divide(new BigDecimal(checkIndexCars.size()), 2, RoundingMode.HALF_UP));
        checkIndexCar.setVehicleInformationCollectionAccuracy(vehicleInformationCollectionAccuracySum.divide(new BigDecimal(checkIndexCars.size()), 2, RoundingMode.HALF_UP));
        checkIndexCar.setVehicleCaptureIntegrity(vehicleCaptureIntegritySum.divide(new BigDecimal(checkIndexCars.size()), 2, RoundingMode.HALF_UP));
        checkIndexCar.setVehicleCaptureAccuracy(vehicleCaptureAccuracySum.divide(new BigDecimal(checkIndexCars.size()), 2, RoundingMode.HALF_UP));
        checkIndexCar.setVehicleTimingAccuracy(vehicleTimingAccuracySum.divide(new BigDecimal(checkIndexCars.size()), 2, RoundingMode.HALF_UP));
        checkIndexCar.setVehicleUploadTimeliness(vehicleUploadTimelinessSum.divide(new BigDecimal(checkIndexCars.size()), 2, RoundingMode.HALF_UP));
        checkIndexCar.setVehicleUrlAvailability(vehicleUrlAvailabilitySum.divide(new BigDecimal(checkIndexCars.size()), 2, RoundingMode.HALF_UP));
        checkIndexCar.setVehiclePictureAvailability(vehiclePictureAvailabilitySum.divide(new BigDecimal(checkIndexCars.size()), 2, RoundingMode.HALF_UP));
        return checkIndexCar;
    }
}