zxl
6 小时以前 3b0516a2959e25576e4f3fda697a3b025d06c8c9
ycl-server/src/main/java/com/ycl/task/CarTask.java
@@ -1,11 +1,17 @@
package com.ycl.task;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ycl.calculate.CalculationStrategy;
import com.ycl.factory.IndexCalculationFactory;
import com.ycl.platform.domain.entity.YwPoint;
import com.ycl.platform.domain.form.VideoExportForm;
import com.ycl.platform.domain.result.HK.*;
import com.ycl.platform.domain.result.SYS.TMonitorResult;
import com.ycl.platform.domain.result.UY.MonitorQualifyResult;
import com.ycl.platform.domain.vo.TMonitorVO;
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.mapper.YwPointMapper;
import com.ycl.utils.DateUtils;
import com.ycl.utils.StringUtils;
import constant.ApiConstants;
@@ -20,6 +26,7 @@
import java.util.Date;
import java.util.List;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
@@ -33,46 +40,67 @@
    private MongoTemplate mongoTemplate;
    @Autowired
    private TMonitorMapper monitorMapper;
    @Autowired
    private YwPointMapper pointMapper;
    public void siteOnlineTask() {
        log.info("开始计算车辆点位在线率和视图库对接稳定性");
        log.info("开始计算点位在线率");
        Date yesterday = DateUtils.addDays(new Date(), -1);
        //TODO:时间写死了
        Date date = DateUtils.getDay(2024,7,13);
        //计算点位在线率和视图库对接稳定性
        //计算点位在线率
        Query query = new Query();
        query.addCriteria(Criteria
                .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date))
                .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday))
                .and("dataType").is(ApiConstants.HK_DataType_CAR));
        List<SnapshotDataMonitorResult> results = mongoTemplate.find(query, SnapshotDataMonitorResult.class);
        CalculationStrategy<SnapshotDataMonitorResult> calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Car_SiteOnline_ViewStability);
        CalculationStrategy<SnapshotDataMonitorResult> calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Car_SiteOnline);
        calculator.calculate(results);
        log.info("结束计算点位在线率和视图库对接稳定性");
        log.info("结束计算点位在线率");
    }
    public void viewConnectTask() {
        log.info("开始计算视图库对接稳定性");
        Date yesterday = DateUtils.addDays(new Date(), -1);
        //计算视图库对接稳定性
        Query query = new Query();
        query.addCriteria(Criteria
                .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday))
                .and("dataType").is(ApiConstants.HK_DataType_CAR));
        List<SnapshotDataMonitorResult> results = mongoTemplate.find(query, SnapshotDataMonitorResult.class);
        CalculationStrategy<SnapshotDataMonitorResult> calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Car_ViewStability);
        calculator.calculate(results);
        log.info("结束计算视图库对接稳定性");
    }
    public void deviceSampleTask() {
        log.info("开始计算车辆卡口设备数据识别准确性、url可用性、大图可用性");
        Date yesterday = DateUtils.addDays(new Date(), -1);
        //TODO:时间写死了
        Date date = DateUtils.getDay(2024,7,13);
        //计算车辆卡口设备数据识别准确性、url可用性、大图可用性
        Query query = new Query();
        query.addCriteria(Criteria
                .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date)));
                .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday)));
        List<VehicleDeviceSamplingResult> results = mongoTemplate.find(query, VehicleDeviceSamplingResult.class);
        CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Car_DataAccuracy_Url_PicUsability);
        CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Car_DataAccuracy_PicUsability);
        calculator.calculate(results);
        log.info("结束计算车辆卡口设备数据识别准确性、url可用性、大图可用性");
    }
    public void carUrlTask() {
        log.info("开始计算车辆url可用性");
        Date yesterday = DateUtils.addDays(new Date(), -1);
        //计算车辆卡口设备数据识别准确性、url可用性、大图可用性
        Query query = new Query();
        query.addCriteria(Criteria
                .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday)));
        List<PicAccessResult> results = mongoTemplate.find(query, PicAccessResult.class);
        CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Car_Url);
        calculator.calculate(results);
        log.info("结束计算url可用性");
    }
    public void infoAccuracyTask() {
        log.info("开始计算车辆卡口信息采集准确率");
        Date yesterday = DateUtils.addDays(new Date(), -1);
        //TODO:时间写死了
        Date date = DateUtils.getDay(2024,7,13);
        //计算车辆卡口信息采集准确率
        Query query = new Query();
        query.addCriteria(Criteria
                .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date)));
                .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday)));
        List<CrossDetailResult> results = mongoTemplate.find(query, CrossDetailResult.class);
        CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Car_InfoAccuracy);
        calculator.calculate(results);
@@ -82,12 +110,10 @@
    public void snapShopDelayTask() {
        log.info("开始计算车辆抓拍数据上传及时性");
        Date yesterday = DateUtils.addDays(new Date(), -1);
        //TODO:时间写死了
        Date date = DateUtils.getDay(2024,7,13);
        //计算车辆抓拍数据上传及时性
        Query query = new Query();
        query.addCriteria(Criteria
                .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date))
                .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday))
                .and("dataType").is(ApiConstants.HK_DataType_CAR));
        List<SnapshotDelayMonitorResult> results = mongoTemplate.find(query, SnapshotDelayMonitorResult.class);
        CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Car_SnapshotDelay);
@@ -98,12 +124,10 @@
    public void snapShopDataIntegrity() {
        log.info("开始计算车辆数据抓拍完整性");
        Date yesterday = DateUtils.addDays(new Date(), -1);
        //TODO:时间写死了
        Date date = DateUtils.getDay(2024,7,13);
        //计算车辆数据抓拍完整性
        Query query = new Query();
        query.addCriteria(Criteria
                .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date)));
                .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday)));
        List<DataIntegrityMonitoringResult> results = mongoTemplate.find(query, DataIntegrityMonitoringResult.class);
        CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Car_DataIntegrity);
        calculator.calculate(results);
@@ -113,12 +137,10 @@
    public void clockAccuracyTask() {
        log.info("开始计算车辆卡口设备时钟准确性");
        Date yesterday = DateUtils.addDays(new Date(), -1);
        //TODO:时间写死了
        Date date = DateUtils.getDay(2024,7,13);
        //计算车辆卡口设备时钟准确性
        Query query = new Query();
        query.addCriteria(Criteria
                .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date)));
                .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday)));
        List<VehicleDeviceInspectionResult> results = mongoTemplate.find(query, VehicleDeviceInspectionResult.class);
        CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Car_ClockAccuracy);
        calculator.calculate(results);
@@ -128,10 +150,16 @@
    public void directConsistentTask() {
        log.info("开始计算车辆目录一致率");
        //车辆目录一致率
        List<TMonitorVO> tMonitorVOS = monitorMapper.selectMonitorVOList();
        List<TMonitorVO> list = tMonitorVOS.stream().filter(tMonitorVO -> !StringUtils.isEmpty(tMonitorVO.getCameraFunType()) && tMonitorVO.getCameraFunType().contains(CheckConstants.Rule_Category_Car + "")).collect(Collectors.toList());
        Date yesterday = DateUtils.addDays(new Date(), -1);
        Query query = new Query();
        query.addCriteria(Criteria
                .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday)));
        // 1/2/3 视频/车辆/人脸
        Pattern pattern = Pattern.compile(".*2.*");
        query.addCriteria(Criteria.where("sxjgnlx.value").regex(pattern));
        List<MonitorQualifyResult> results = mongoTemplate.find(query, MonitorQualifyResult.class);
        CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Car_DirectConsistent);
        calculator.calculate(list);
        calculator.calculate(results);
        log.info("结束计算车辆目录一致率");
    }