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> calculatorClasses = new HashMap<>(); static { //车辆点位在线 calculatorClasses.put(CalculationStrategyConstants.Car_SiteOnline, CarOnlineCalculation.class); //车辆视图库对接稳定性 calculatorClasses.put(CalculationStrategyConstants.Car_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_PicUsability, CarDeviceSampleCalculation.class); //车辆url calculatorClasses.put(CalculationStrategyConstants.Car_Url, CarUrlCalculation.class); //车辆时钟准确性 calculatorClasses.put(CalculationStrategyConstants.Car_ClockAccuracy, CarClockAccuracyCalculation.class); //车辆目录一致 calculatorClasses.put(CalculationStrategyConstants.Car_DirectConsistent, CarConsistentCalculation.class); //人脸点位在线 calculatorClasses.put(CalculationStrategyConstants.Face_SiteOnline, FaceOnlineCalculation.class); //人脸视图库对接稳定 calculatorClasses.put(CalculationStrategyConstants.Face_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 clazz = calculatorClasses.get(indexName); if (clazz != null) { return beanFactory.getBean(clazz); } return null; } @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { IndexCalculationFactory.beanFactory = beanFactory; } }