package com.ycl.factory;
|
|
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;
|
@Component
|
public class IndexCalculationFactory implements BeanFactoryAware {
|
private static BeanFactory beanFactory;
|
private static final Map<String, Class<? extends CalculationStrategy>> calculatorClasses = new HashMap<>();
|
|
static {
|
//车辆点位在线、视图库对接稳定性
|
calculatorClasses.put(CalculationStrategyConstants.Car_SiteOnline_ViewStability, CarSnapshopDataCalculation.class);
|
//车辆信息准确率
|
calculatorClasses.put(CalculationStrategyConstants.Car_InfoAccuracy, CarInFoAccuracyCalculation.class);
|
//车辆抓拍数据上传延迟
|
calculatorClasses.put(CalculationStrategyConstants.Car_SnapshotDelay, CarSnapshotDelayCalculation.class);
|
//车辆数据抓拍完整性
|
calculatorClasses.put(CalculationStrategyConstants.Car_DataIntegrity, CarDataIntegrityCalculation.class);
|
//车辆数据抓拍准确性、url、大图可用
|
calculatorClasses.put(CalculationStrategyConstants.Car_DataAccuracy_Url_PicUsability, CarDeviceSampleCalculation.class);
|
//车辆时钟准确性
|
calculatorClasses.put(CalculationStrategyConstants.Car_ClockAccuracy, CarClockAccuracyCalculation.class);
|
//车辆目录一致
|
calculatorClasses.put(CalculationStrategyConstants.Car_DirectConsistent, CarConsistentCalculation.class);
|
|
//人脸点位在线、视图库对接稳定
|
calculatorClasses.put(CalculationStrategyConstants.Face_SiteOnline_ViewStability, FaceSnapshotDataCalculation.class);
|
//人脸信息准确率
|
calculatorClasses.put(CalculationStrategyConstants.Face_InfoAccuracy, FaceInFoAccuracyCalculation.class);
|
//人脸抓拍数据延迟
|
calculatorClasses.put(CalculationStrategyConstants.Face_SnapshotDelay, FaceSnapshotDelayCalculation.class);
|
//人脸图片合格、大图可用
|
calculatorClasses.put(CalculationStrategyConstants.Face_DataAccuracy_PicUsability, FaceDeviceSampleCalculation.class);
|
//人脸时钟准确性
|
calculatorClasses.put(CalculationStrategyConstants.Face_ClockAccuracy, FaceClockAccuracyCalculation.class);
|
//人脸目录一致
|
calculatorClasses.put(CalculationStrategyConstants.Face_DirectConsistent, FaceConsistentCalculation.class);
|
|
//一机一档注册率、档案考核比
|
calculatorClasses.put(CalculationStrategyConstants.Video_MonitorRegis_ArchiveRate,MonitorRegistrationCalculation.class);
|
//一机一档合格率
|
calculatorClasses.put(CalculationStrategyConstants.Video_MonitorQualify, MonitorQualifyCalculation.class);
|
//视频点位在线率
|
calculatorClasses.put(CalculationStrategyConstants.Video_SiteOnline, VideoOnlineCalculation.class);
|
//视频录像可用率
|
calculatorClasses.put(CalculationStrategyConstants.Video_Usability, VideoUsabilityCalculation.class);
|
//平台在线率
|
calculatorClasses.put(CalculationStrategyConstants.Video_PlatformOnline,PlatformOnlineCalculation.class);
|
//Osd准确率和时间标注准确率
|
calculatorClasses.put(CalculationStrategyConstants.Video_OsdTime,VideoOsdCalculation.class);
|
}
|
|
public static CalculationStrategy getCalculator(String 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;
|
}
|
}
|