| | |
| | | package com.ycl.factory; |
| | | |
| | | import com.ycl.calculate.CalculationStrategy; |
| | | import com.ycl.calculate.CarSiteOnlineCalculation; |
| | | import com.ycl.calculate.FaceSiteOnlineCalculation; |
| | | 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 CarSiteOnlineCalculation()); |
| | | calculators.put(CalculationStrategyConstants.Face_SiteOnline_ViewStability, new FaceSiteOnlineCalculation()); |
| | | //车辆点位在线 |
| | | 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) { |
| | | 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; |
| | | } |
| | | } |