fuliqi
2024-08-16 425e3bdee94d374ca423e59fdfc69bfbc9e26a67
指标计算bug处理
13个文件已修改
219 ■■■■■ 已修改文件
ycl-pojo/src/main/java/com/ycl/platform/base/CheckIndex.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckIndexCar.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckIndexFace.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckIndexVideo.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/MonitorTask.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/VideoTask.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/utils/DateUtils.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/CheckIndexCarMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/CheckIndexFaceMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/CheckIndexVideoMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/base/CheckIndex.java
@@ -1,29 +1,36 @@
package com.ycl.platform.base;
import annotation.Excel;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import java.util.List;
public abstract class CheckIndex {
    @TableField("id")
    public Long id;
    //查询条件,月份
    @TableField(exist = false)
    public String date;
    //查询条件,日期
    @TableField(exist = false)
    public String day;
    @Excel(name = "日期",dateFormat = "yyyy-MM-dd")
    @TableField("create_time")
    public Date createTime;
    @TableField("dept_id")
    public Long deptId;
    @Excel(name = "区县")
    @TableField(exist = false)
    public String deptName;
    /** 考核标签(省厅/市局) */
    @Excel(name = "考核标签", dictType = "platform_examine_tag")
    @TableField("examine_tag")
    public Short examineTag;
    @TableField(exist = false)
    public List<Integer> deptIds;
    public Long getId() {
        return id;
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckIndexCar.java
@@ -2,6 +2,8 @@
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 java.math.BigDecimal;
@@ -10,57 +12,67 @@
/**
 * 车辆指标概率数据对象 t_check_index_car
 *
 *
 * @author ruoyi
 * @date 2024-04-29
 */
@TableName("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)
    @TableField("vehicle_url_availability")
    private BigDecimal vehicleUrlAvailability;
    /** 车辆卡口设备抓拍数据大图可用性 */
    @Excel(name = "车辆卡口设备抓拍数据大图可用性",width = 25)
    @TableField("vehicle_picture_availability")
    private BigDecimal vehiclePictureAvailability;
    @ExcelIgnore
    @TableField(exist = false)
    private List<String> quarter;
    public List<String> getQuarter() {
@@ -130,88 +142,88 @@
    public void setExamineTag(Short examineTag) {
        super.setExamineTag(examineTag);
    }
    public void setViewConnectStability(BigDecimal viewConnectStability)
    public void setViewConnectStability(BigDecimal viewConnectStability)
    {
        this.viewConnectStability = viewConnectStability;
    }
    public BigDecimal getViewConnectStability()
    public BigDecimal getViewConnectStability()
    {
        return viewConnectStability;
    }
    public void setSiteOnline(BigDecimal siteOnline)
    public void setSiteOnline(BigDecimal siteOnline)
    {
        this.siteOnline = siteOnline;
    }
    public BigDecimal getSiteOnline()
    public BigDecimal getSiteOnline()
    {
        return siteOnline;
    }
    public void setDeviceDirectoryConsistent(BigDecimal deviceDirectoryConsistent)
    public void setDeviceDirectoryConsistent(BigDecimal deviceDirectoryConsistent)
    {
        this.deviceDirectoryConsistent = deviceDirectoryConsistent;
    }
    public BigDecimal getDeviceDirectoryConsistent()
    public BigDecimal getDeviceDirectoryConsistent()
    {
        return deviceDirectoryConsistent;
    }
    public void setVehicleInformationCollectionAccuracy(BigDecimal vehicleInformationCollectionAccuracy)
    public void setVehicleInformationCollectionAccuracy(BigDecimal vehicleInformationCollectionAccuracy)
    {
        this.vehicleInformationCollectionAccuracy = vehicleInformationCollectionAccuracy;
    }
    public BigDecimal getVehicleInformationCollectionAccuracy()
    public BigDecimal getVehicleInformationCollectionAccuracy()
    {
        return vehicleInformationCollectionAccuracy;
    }
    public void setVehicleCaptureIntegrity(BigDecimal vehicleCaptureIntegrity)
    public void setVehicleCaptureIntegrity(BigDecimal vehicleCaptureIntegrity)
    {
        this.vehicleCaptureIntegrity = vehicleCaptureIntegrity;
    }
    public BigDecimal getVehicleCaptureIntegrity()
    public BigDecimal getVehicleCaptureIntegrity()
    {
        return vehicleCaptureIntegrity;
    }
    public void setVehicleCaptureAccuracy(BigDecimal vehicleCaptureAccuracy)
    public void setVehicleCaptureAccuracy(BigDecimal vehicleCaptureAccuracy)
    {
        this.vehicleCaptureAccuracy = vehicleCaptureAccuracy;
    }
    public BigDecimal getVehicleCaptureAccuracy()
    public BigDecimal getVehicleCaptureAccuracy()
    {
        return vehicleCaptureAccuracy;
    }
    public void setVehicleTimingAccuracy(BigDecimal vehicleTimingAccuracy)
    public void setVehicleTimingAccuracy(BigDecimal vehicleTimingAccuracy)
    {
        this.vehicleTimingAccuracy = vehicleTimingAccuracy;
    }
    public BigDecimal getVehicleTimingAccuracy()
    public BigDecimal getVehicleTimingAccuracy()
    {
        return vehicleTimingAccuracy;
    }
    public void setVehicleUploadTimeliness(BigDecimal vehicleUploadTimeliness)
    public void setVehicleUploadTimeliness(BigDecimal vehicleUploadTimeliness)
    {
        this.vehicleUploadTimeliness = vehicleUploadTimeliness;
    }
    public BigDecimal getVehicleUploadTimeliness()
    public BigDecimal getVehicleUploadTimeliness()
    {
        return vehicleUploadTimeliness;
    }
    public void setVehicleUrlAvailability(BigDecimal vehicleUrlAvailability)
    public void setVehicleUrlAvailability(BigDecimal vehicleUrlAvailability)
    {
        this.vehicleUrlAvailability = vehicleUrlAvailability;
    }
    public BigDecimal getVehicleUrlAvailability()
    public BigDecimal getVehicleUrlAvailability()
    {
        return vehicleUrlAvailability;
    }
    public void setVehiclePictureAvailability(BigDecimal vehiclePictureAvailability)
    public void setVehiclePictureAvailability(BigDecimal vehiclePictureAvailability)
    {
        this.vehiclePictureAvailability = vehiclePictureAvailability;
    }
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckIndexFace.java
@@ -2,6 +2,8 @@
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 java.math.BigDecimal;
@@ -10,47 +12,57 @@
/**
 * 人脸指标概率数据对象 t_check_index_face
 *
 *
 * @author ruoyi
 * @date 2024-04-29
 */
@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;
    @ExcelIgnore
    @TableField(exist = false)
    private List<String> quarter;
    public List<String> getQuarter() {
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckIndexVideo.java
@@ -2,6 +2,8 @@
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 java.math.BigDecimal;
@@ -10,98 +12,121 @@
/**
 * 视频指标概率数据对象 t_check_index_video
 *
 *
 * @author ruoyi
 * @date 2024-04-29
 */
@TableName("t_check_index_video")
public class CheckIndexVideo extends CheckIndex
{
    private static final long serialVersionUID = 1L;
    /** 平台在线率 */
    @Excel(name = "平台在线率")
    @TableField("platform_online")
    private BigDecimal platformOnline;
    /** 一机一档合格率 */
    @Excel(name = "一机一档合格率")
    @TableField("monitor_qualification")
    private BigDecimal monitorQualification;
    /** 档案考核比 */
    @Excel(name = "一机一档注册率")
    @TableField("monitor_registration")
    private BigDecimal monitorRegistration;
    /** 档案考核比 */
    @Excel(name = "档案考核比")
    @TableField("archives_rate")
    private BigDecimal archivesRate;
    /** 点位在线率 */
    @Excel(name = "点位在线率")
    @TableField("site_online")
    private BigDecimal siteOnline;
    /** 录象可用率 */
    @Excel(name = "录象可用率")
    @TableField("video_available")
    private BigDecimal videoAvailable;
    /** 标注正确率 */
    @Excel(name = "标注正确率")
    @TableField("annotation_accuracy")
    private BigDecimal annotationAccuracy;
    /** 校时准确率 */
    @Excel(name = "校时准确率")
    @TableField("timing_accuracy")
    private BigDecimal timingAccuracy;
    /** 重点点位在线率 */
    @Excel(name = "重点点位在线率")
    @TableField("key_site_online")
    private BigDecimal keySiteOnline;
    /** 重点点位录象可用率 */
    @Excel(name = "重点点位录象可用率",width = 25)
    @TableField("key_video_available")
    private BigDecimal keyVideoAvailable;
    /** 重点点位标注正确率 */
    @Excel(name = "重点点位标注正确率",width = 25)
    @TableField("key_annotation_accuracy")
    private BigDecimal keyAnnotationAccuracy;
    /** 重点点位按时正确率 */
    @Excel(name = "重点点位按时正确率",width = 25)
    @TableField("key_timing_accuracy")
    private BigDecimal keyTimingAccuracy;
    /** 重点指挥图像公安部巡检结果 */
    @Excel(name = "重点指挥图像公安部巡检结果",width = 25)
    @TableField("key_command_image_inspection")
    private BigDecimal keyCommandImageInspection;
    /** 重点指挥图像目录树 */
    @Excel(name = "重点指挥图像目录树",width = 25)
    @TableField("key_command_image_directory_tree")
    private BigDecimal keyCommandImageDirectoryTree;
    /** 在线检查平台部署及运行率 */
    @Excel(name = "在线检查平台部署及运行率",width = 25)
    @TableField("online_inspection_platform")
    private BigDecimal onlineInspectionPlatform;
    /** 视频传输网资产准确率 */
    @Excel(name = "视频传输网资产准确率",width = 25)
    @TableField("video_transmission_assets_accuracy")
    private BigDecimal videoTransmissionAssetsAccuracy;
    /** 视频传输网资产弱口令得分比率 */
    @Excel(name = "视频传输网资产弱口令得分比率",width = 25)
    @TableField("video_transmission_assets_weak_password_score")
    private BigDecimal videoTransmissionAssetsWeakPasswordScore;
    /** 视频传输网危险资产得分比重 */
    @Excel(name = "视频传输网危险资产得分比重",width = 25)
    @TableField("video_transmission_dangerous_assetsScore")
    private BigDecimal videoTransmissionDangerousAssetsScore;
    /** 视频传输网边界完整性检测扣分项 */
    @Excel(name = "视频传输网边界完整性检测扣分项",width = 25)
    @TableField("video_transmission_boundary_integrity_detection")
    private BigDecimal videoTransmissionBoundaryIntegrityDetection;
    /** 视频传输网边界完整性检测扣分项 */
    @Excel(name = "重点指挥图像在线率",width = 25)
    @TableField("key_command_image_online")
    private BigDecimal keyCommandImageOnline;
    /** 月运行率 */
    @Excel(name = "月运行率")
    @TableField("operating_rate")
    private BigDecimal operatingRate;
    @ExcelIgnore
    @TableField(exist = false)
    private List<String> quarter;
    public List<String> getQuarter() {
ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java
@@ -194,17 +194,9 @@
        return CollectionUtils.isEmpty(commandImages) ? new ArrayList<>() : commandImages.stream().map(YwPoint::getSerialNumber).collect(Collectors.toList());
    }
    //返回monitor
    //TODO:时间写死了
    public List<String> getMonitorFromMongo() {
        // 获取Calendar实例,默认使用当前时区和语言环境
        Calendar calendar = Calendar.getInstance();
        // 清除Calendar中的所有字段值,以避免它们对当前日期时间有影响
        calendar.clear();
        // 设置年份、月份(注意:月份是从0开始的,所以8月是7)、日期
        calendar.set(Calendar.YEAR, 2024);
        calendar.set(Calendar.MONTH, Calendar.AUGUST);
        calendar.set(Calendar.DAY_OF_MONTH, 13);
        // Calendar.getTime()方法返回一个表示此Calendar时间值的Date对象
        Date date = calendar.getTime();
        Date date = DateUtils.getDay(2024,7,13);
        Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date)));
//        Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
        List<MonitorQualifyResult> oneMachineFileResults = mongoTemplate.find(query, MonitorQualifyResult.class);
ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java
@@ -3,57 +3,71 @@
import com.ycl.calculate.*;
import com.ycl.platform.domain.result.UY.VideoQualityResult;
import constant.CalculationStrategyConstants;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
public class IndexCalculationFactory {
    private static final Map<String, CalculationStrategy> calculators = new HashMap<>();
@Component
public class IndexCalculationFactory implements BeanFactoryAware {
    private static BeanFactory beanFactory;
    private static final Map<String, Class<? extends CalculationStrategy>> calculatorClasses = new HashMap<>();
    static {
        //车辆点位在线、视图库对接稳定性
        calculators.put(CalculationStrategyConstants.Car_SiteOnline_ViewStability, new CarSnapshopDataCalculation());
        calculatorClasses.put(CalculationStrategyConstants.Car_SiteOnline_ViewStability, CarSnapshopDataCalculation.class);
        //车辆信息准确率
        calculators.put(CalculationStrategyConstants.Car_InfoAccuracy, new CarInFoAccuracyCalculation());
        calculatorClasses.put(CalculationStrategyConstants.Car_InfoAccuracy, CarInFoAccuracyCalculation.class);
        //车辆抓拍数据上传延迟
        calculators.put(CalculationStrategyConstants.Car_SnapshotDelay, new CarSnapshotDelayCalculation());
        calculatorClasses.put(CalculationStrategyConstants.Car_SnapshotDelay, CarSnapshotDelayCalculation.class);
        //车辆数据抓拍完整性
        calculators.put(CalculationStrategyConstants.Car_DataIntegrity, new CarDataIntegrityCalculation());
        calculatorClasses.put(CalculationStrategyConstants.Car_DataIntegrity, CarDataIntegrityCalculation.class);
        //车辆数据抓拍准确性、url、大图可用
        calculators.put(CalculationStrategyConstants.Car_DataAccuracy_Url_PicUsability, new CarDeviceSampleCalculation());
        calculatorClasses.put(CalculationStrategyConstants.Car_DataAccuracy_Url_PicUsability, CarDeviceSampleCalculation.class);
        //车辆时钟准确性
        calculators.put(CalculationStrategyConstants.Car_ClockAccuracy, new CarClockAccuracyCalculation());
        calculatorClasses.put(CalculationStrategyConstants.Car_ClockAccuracy, CarClockAccuracyCalculation.class);
        //车辆目录一致
        calculators.put(CalculationStrategyConstants.Car_DirectConsistent, new CarConsistentCalculation());
        calculatorClasses.put(CalculationStrategyConstants.Car_DirectConsistent, CarConsistentCalculation.class);
        //人脸点位在线、视图库对接稳定
        calculators.put(CalculationStrategyConstants.Face_SiteOnline_ViewStability, new FaceSnapshotDataCalculation());
        calculatorClasses.put(CalculationStrategyConstants.Face_SiteOnline_ViewStability, FaceSnapshotDataCalculation.class);
        //人脸信息准确率
        calculators.put(CalculationStrategyConstants.Face_InfoAccuracy, new FaceInFoAccuracyCalculation());
        calculatorClasses.put(CalculationStrategyConstants.Face_InfoAccuracy, FaceInFoAccuracyCalculation.class);
        //人脸抓拍数据延迟
        calculators.put(CalculationStrategyConstants.Face_SnapshotDelay, new FaceSnapshotDelayCalculation());
        calculatorClasses.put(CalculationStrategyConstants.Face_SnapshotDelay, FaceSnapshotDelayCalculation.class);
        //人脸图片合格、大图可用
        calculators.put(CalculationStrategyConstants.Face_DataAccuracy_PicUsability, new FaceDeviceSampleCalculation());
        calculatorClasses.put(CalculationStrategyConstants.Face_DataAccuracy_PicUsability, FaceDeviceSampleCalculation.class);
        //人脸时钟准确性
        calculators.put(CalculationStrategyConstants.Face_ClockAccuracy, new FaceClockAccuracyCalculation());
        calculatorClasses.put(CalculationStrategyConstants.Face_ClockAccuracy, FaceClockAccuracyCalculation.class);
        //人脸目录一致
        calculators.put(CalculationStrategyConstants.Face_DirectConsistent, new FaceConsistentCalculation());
        calculatorClasses.put(CalculationStrategyConstants.Face_DirectConsistent, FaceConsistentCalculation.class);
        //一机一档注册率、档案考核比
        calculators.put(CalculationStrategyConstants.Video_MonitorRegis_ArchiveRate,new MonitorRegistrationCalculation());
        calculatorClasses.put(CalculationStrategyConstants.Video_MonitorRegis_ArchiveRate,MonitorRegistrationCalculation.class);
        //一机一档合格率
        calculators.put(CalculationStrategyConstants.Video_MonitorQualify, new MonitorQualifyCalculation());
        calculatorClasses.put(CalculationStrategyConstants.Video_MonitorQualify, MonitorQualifyCalculation.class);
        //视频点位在线率
        calculators.put(CalculationStrategyConstants.Video_SiteOnline, new VideoOnlineCalculation());
        calculatorClasses.put(CalculationStrategyConstants.Video_SiteOnline, VideoOnlineCalculation.class);
        //视频录像可用率
        calculators.put(CalculationStrategyConstants.Video_Usability, new VideoUsabilityCalculation());
        calculatorClasses.put(CalculationStrategyConstants.Video_Usability, VideoUsabilityCalculation.class);
        //平台在线率
        calculators.put(CalculationStrategyConstants.Video_PlatformOnline,new PlatformOnlineCalculation());
        calculatorClasses.put(CalculationStrategyConstants.Video_PlatformOnline,PlatformOnlineCalculation.class);
        //Osd准确率和时间标注准确率
        calculators.put(CalculationStrategyConstants.Video_OsdTime,new VideoOsdCalculation());
        calculatorClasses.put(CalculationStrategyConstants.Video_OsdTime,VideoOsdCalculation.class);
    }
    public static CalculationStrategy getCalculator(String indexName) {
        return calculators.get(indexName);
        Class<? extends CalculationStrategy> clazz = calculatorClasses.get(indexName);
        if (clazz != null) {
            return beanFactory.getBean(clazz);
        }
        return null;
    }
    @Override
    public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
        IndexCalculationFactory.beanFactory = beanFactory;
    }
}
ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
@@ -9,6 +9,7 @@
import com.ycl.platform.domain.vo.TMonitorVO;
import com.ycl.platform.domain.vo.screen.MonitorRateVO;
import com.ycl.platform.domain.vo.screen.MonitorTotalVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -20,6 +21,7 @@
 * @author ruoyi
 * @date 2024-03-04
 */
@Mapper
public interface TMonitorMapper extends BaseMapper<TMonitor>
{
    /**
ycl-server/src/main/java/com/ycl/task/MonitorTask.java
@@ -58,16 +58,7 @@
    //同步mongodb一机一档到数据库
    @Transactional(rollbackFor = Exception.class)
    public void synchronize() {
        // 获取Calendar实例,默认使用当前时区和语言环境
        Calendar calendar = Calendar.getInstance();
        // 清除Calendar中的所有字段值,以避免它们对当前日期时间有影响
        calendar.clear();
        // 设置年份、月份(注意:月份是从0开始的,所以8月是7)、日期
        calendar.set(Calendar.YEAR, 2024);
        calendar.set(Calendar.MONTH, Calendar.AUGUST);
        calendar.set(Calendar.DAY_OF_MONTH, 13);
        // Calendar.getTime()方法返回一个表示此Calendar时间值的Date对象
        Date date = calendar.getTime();
        Date date = DateUtils.getDay(2024,7,13);
        Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date)));
//        Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
        List<MonitorQualifyResult> oneMachineFileResults = mongoTemplate.find(query, MonitorQualifyResult.class);
ycl-server/src/main/java/com/ycl/task/VideoTask.java
@@ -79,13 +79,14 @@
        CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Video_Usability);
        calculator.calculate(tMonitorVOS);
    }
    //TODO:时间写死了
    public void oneMonitorQualifyTask(){
        //计算一机一档合格率
        Date yesterday = DateUtils.addDays(new Date(), -1);
//        Date yesterday = DateUtils.addDays(new Date(), -1);
        Date date = DateUtils.getDay(2024,7,13);
        Query query = new Query();
        query.addCriteria(Criteria
                .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday)));
                .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date)));
        List<MonitorQualifyResult> results = mongoTemplate.find(query, MonitorQualifyResult.class);
        CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Video_MonitorQualify);
        calculator.calculate(results);
ycl-server/src/main/java/com/ycl/utils/DateUtils.java
@@ -278,4 +278,17 @@
    }
    public static Date getDay(int year,int month,int day) {
        // 获取Calendar实例,默认使用当前时区和语言环境
        Calendar calendar = Calendar.getInstance();
        // 清除Calendar中的所有字段值,以避免它们对当前日期时间有影响
        calendar.clear();
        // 设置年份、月份(注意:月份是从0开始的,所以8月是7)、日期
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH, month);
        calendar.set(Calendar.DAY_OF_MONTH, day);
        // Calendar.getTime()方法返回一个表示此Calendar时间值的Date对象
        Date date = calendar.getTime();
        return date;
    }
}
ycl-server/src/main/resources/mapper/zgyw/CheckIndexCarMapper.xml
@@ -121,7 +121,7 @@
        </foreach>
    </delete>
    <select id="selectToday">
    <select id="selectToday" resultType="com.ycl.platform.domain.entity.CheckIndexCar">
        select * from t_check_index_car where DATE(create_time) = #{today}
    </select>
ycl-server/src/main/resources/mapper/zgyw/CheckIndexFaceMapper.xml
@@ -111,7 +111,7 @@
        </foreach>
    </delete>
    <select id="selectToday">
    <select id="selectToday" resultType="com.ycl.platform.domain.entity.CheckIndexFace">
        select * from t_check_index_car where DATE(create_time) = #{today}
    </select>
ycl-server/src/main/resources/mapper/zgyw/CheckIndexVideoMapper.xml
@@ -172,7 +172,7 @@
        </foreach>
    </delete>
    <select id="selectToday">
    <select id="selectToday" resultType="com.ycl.platform.domain.entity.CheckIndexVideo">
        select * from t_check_index_video where DATE(create_time) = #{today}
    </select>