From b3764b100a9e8783e2c061473ada3f5316d84f55 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期四, 15 八月 2024 17:25:08 +0800 Subject: [PATCH] 车辆、人脸目录一致率 --- ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java | 6 ycl-server/src/main/java/com/ycl/task/FaceTask.java | 15 ++ document/海康api.docx | 0 ycl-common/src/main/java/constant/CalculationStrategyConstants.java | 10 + ycl-server/src/main/java/com/ycl/calculate/CarConsistentCalculation.java | 132 ++++++++++++++++++++++ ycl-server/src/main/java/com/ycl/platform/mapper/PlatformOnlineMapper.java | 2 ycl-server/src/main/java/com/ycl/calculate/FaceConsistentCalculation.java | 131 +++++++++++++++++++++ ycl-server/src/main/java/com/ycl/calculate/MonitorRegistrationCalculation.java | 10 + ycl-server/src/main/java/com/ycl/task/CarTask.java | 17 ++ ycl-server/src/main/java/com/ycl/task/VideoTask.java | 2 ycl-server/src/main/resources/mapper/zgyw/PlatformOnlineMapper.xml | 2 ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java | 12 ++ 12 files changed, 322 insertions(+), 17 deletions(-) diff --git "a/document/\346\265\267\345\272\267api.docx" "b/document/\346\265\267\345\272\267api.docx" index c7f8091..90d6642 100644 --- "a/document/\346\265\267\345\272\267api.docx" +++ "b/document/\346\265\267\345\272\267api.docx" Binary files differ diff --git a/ycl-common/src/main/java/constant/CalculationStrategyConstants.java b/ycl-common/src/main/java/constant/CalculationStrategyConstants.java index 0a43e29..86f1149 100644 --- a/ycl-common/src/main/java/constant/CalculationStrategyConstants.java +++ b/ycl-common/src/main/java/constant/CalculationStrategyConstants.java @@ -28,7 +28,10 @@ * 杞﹁締鏃堕挓鍑嗙‘鎬� */ public static final String Car_ClockAccuracy = "carClockAccuracy"; - + /** + * 杞﹁締鐩綍涓�鑷寸巼 + */ + public static final String Car_DirectConsistent = "carDirectConsistent"; /** * 浜鸿劯鏁版嵁涓婁紶鍙婃椂鎬� @@ -50,7 +53,10 @@ * 浜鸿劯鏃堕挓鍑嗙‘鎬� */ public static final String Face_ClockAccuracy = "faceClockAccuracy"; - + /** + * 浜鸿劯鐩綍涓�鑷寸巼 + */ + public static final String Face_DirectConsistent = "faceDirectConsistent"; /** * 涓�鏈轰竴妗f敞鍐岀巼銆佹。妗堣�冩牳姣� diff --git a/ycl-server/src/main/java/com/ycl/calculate/CarConsistentCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/CarConsistentCalculation.java new file mode 100644 index 0000000..3b216a4 --- /dev/null +++ b/ycl-server/src/main/java/com/ycl/calculate/CarConsistentCalculation.java @@ -0,0 +1,132 @@ +package com.ycl.calculate; + +import com.alibaba.fastjson2.JSONArray; +import com.ycl.platform.domain.entity.CheckIndexCar; +import com.ycl.platform.domain.entity.TMonitor; +import com.ycl.platform.domain.result.HK.DataIntegrityMonitoringResult; +import com.ycl.platform.domain.vo.TMonitorVO; +import com.ycl.platform.mapper.CheckIndexCarMapper; +import com.ycl.platform.mapper.TMonitorMapper; +import com.ycl.platform.service.ICheckIndexCarService; +import constant.ApiConstants; +import constant.CheckConstants; +import constant.RedisConstant; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; +import utils.DateUtils; +import utils.StringUtils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 璁$畻杞﹁締鐩綍涓�鑷寸巼 + * 鑾峰彇鍒嗙渷鍘呫�佸尯鍩熺殑map<k,v> k涓篸eptId鎴栬�匬rovince_deptId + * 鏇存柊鎴栨柊澧� + */ +@Component +public class CarConsistentCalculation extends IndexCalculationServe implements CalculationStrategy<TMonitorVO> { + @Autowired + private CheckIndexCarMapper checkIndexCarMapper; + @Autowired + private TMonitorMapper monitorMapper; + @Autowired + private ICheckIndexCarService checkIndexCarService; + @Autowired + private RedisTemplate redisTemplate; + + //鍖哄煙杞﹁締淇℃伅閲囬泦鍑嗙‘鐜囩殑鍐呴儴绫� + private static class AreaStats { + int totalSites = 0; + int newSites = 0; + } + + @Override + public void calculate(List<TMonitorVO> list) { + if (CollectionUtils.isEmpty(list)) { + return; + } + //杩斿洖浠ュ浗鏍囩爜涓簁ey鐨勮澶噈ap + Map<String, TMonitorVO> monitorMap = new HashMap<>(); + if(!CollectionUtils.isEmpty(list)){ + monitorMap = list.stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity())); + } + //鑾峰彇鐪佸巺鍥芥爣鐮侀泦鍚� + List<String> provinceIds = getProvince(); + //鏈敞鍐岃溅杈嗚澶� + Map<String,TMonitor> newMonitorMap = new HashMap<>(); + //Mongo涓�鏈轰竴妗e悓姝ysql鏃舵斁鍏edis 绛涢�夊嚭杞﹁締妗f + String json = (String) redisTemplate.opsForValue().get(RedisConstant.New_Monitor_Set); + if (!StringUtils.isEmpty(json)) { + List<TMonitor> newMonitors = JSONArray.parseArray(json, TMonitor.class); + if(!CollectionUtils.isEmpty(newMonitors)){ + newMonitorMap = newMonitors.stream().filter(tMonitor -> tMonitor.getCameraFunType().contains(CheckConstants.Rule_Category_Car+"")).collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity())); + } + } + Map<String, AreaStats> areaStatsMap = new HashMap<>(); + for (TMonitorVO result : list) { + TMonitorVO monitor = monitorMap.get(result.getSerialNumber()); + if (monitor == null) continue; + String deptId = monitor.getDeptId().toString(); + updateAreaStats(areaStatsMap, deptId, result,newMonitorMap); + + // 澶勭悊鐪佸巺鏁版嵁 + if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) { + String provinceKey = ApiConstants.Province + deptId; + updateAreaStats(areaStatsMap, provinceKey, result,newMonitorMap); + } + } + + // 鏌ヨ鏄惁index琛ㄥ凡缁忓瓨鍦ㄤ粖鏃ユ暟鎹� + List<CheckIndexCar> checkIndexCarList = checkIndexCarMapper.selectToday(DateUtils.getDate()); + List<CheckIndexCar> checkIndexCars = new ArrayList<>(); + areaStatsMap.forEach((deptId, stats) -> { + if (stats.totalSites > 0) { + CheckIndexCar checkIndexCar = createOrUpdateCheckIndexCar(deptId, stats, checkIndexCarList); + if (checkIndexCar != null) { + checkIndexCars.add(checkIndexCar); + } + } + }); + + checkIndexCarService.saveOrUpdateBatch(checkIndexCars); + } + + /** + * 绱杞﹁締鐩綍涓�鑷寸巼 + */ + private void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, TMonitorVO result,Map<String,TMonitor> newMonitorMap) { + //杩斿洖瀵硅薄鐨勫紩鐢紝濡傛灉涓嶅瓨鍦ㄤ細鏀惧叆鏂扮殑key,value + AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats()); + stats.totalSites++; + if(newMonitorMap.containsKey(result.getSerialNumber())){ + stats.newSites++; + } + } + + /** + * 杞﹁締淇℃伅閲囬泦姝g‘鐜� + */ + private CheckIndexCar createOrUpdateCheckIndexCar(String key, AreaStats stats, List<CheckIndexCar> checkIndexCarList) { + CheckIndexCar checkIndexCar = getCheckIndex(key, checkIndexCarList, CheckIndexCar.class); + if (checkIndexCar == null) { + return null; + } + //璋冪敤鐩綍涓�鑷寸巼璁$畻鏂规硶 + Map<String, Object> param = new HashMap<>(); + param.put("totalSites", stats.totalSites); + param.put("newSites", stats.newSites); + BigDecimal directoryConstant = directoryConstant(param); + checkIndexCar.setDeviceDirectoryConsistent(directoryConstant); + return checkIndexCar; + } + + +} diff --git a/ycl-server/src/main/java/com/ycl/calculate/FaceConsistentCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/FaceConsistentCalculation.java new file mode 100644 index 0000000..a483526 --- /dev/null +++ b/ycl-server/src/main/java/com/ycl/calculate/FaceConsistentCalculation.java @@ -0,0 +1,131 @@ +package com.ycl.calculate; + +import com.alibaba.fastjson2.JSONArray; +import com.ycl.platform.domain.entity.CheckIndexFace; +import com.ycl.platform.domain.entity.TMonitor; +import com.ycl.platform.domain.vo.TMonitorVO; +import com.ycl.platform.mapper.CheckIndexFaceMapper; +import com.ycl.platform.mapper.TMonitorMapper; +import com.ycl.platform.service.ICheckIndexFaceService; +import constant.ApiConstants; +import constant.CheckConstants; +import constant.RedisConstant; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; +import utils.DateUtils; +import utils.StringUtils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 璁$畻杞﹁締鐩綍涓�鑷寸巼 + * 鑾峰彇鍒嗙渷鍘呫�佸尯鍩熺殑map<k,v> k涓篸eptId鎴栬�匬rovince_deptId + * 鏇存柊鎴栨柊澧� + */ +@Component +public class FaceConsistentCalculation extends IndexCalculationServe implements CalculationStrategy<TMonitorVO> { + @Autowired + private CheckIndexFaceMapper checkIndexFaceMapper; + @Autowired + private TMonitorMapper monitorMapper; + @Autowired + private ICheckIndexFaceService checkIndexFaceService; + @Autowired + private RedisTemplate redisTemplate; + + //鍖哄煙杞﹁締淇℃伅閲囬泦鍑嗙‘鐜囩殑鍐呴儴绫� + private static class AreaStats { + int totalSites = 0; + int newSites = 0; + } + + @Override + public void calculate(List<TMonitorVO> list) { + if (CollectionUtils.isEmpty(list)) { + return; + } + //杩斿洖浠ュ浗鏍囩爜涓簁ey鐨勮澶噈ap + Map<String, TMonitorVO> monitorMap = new HashMap<>(); + if(!CollectionUtils.isEmpty(list)){ + monitorMap = list.stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity())); + } + //鑾峰彇鐪佸巺鍥芥爣鐮侀泦鍚� + List<String> provinceIds = getProvince(); + //鏈敞鍐岃溅杈嗚澶� + Map<String,TMonitor> newMonitorMap = new HashMap<>(); + //Mongo涓�鏈轰竴妗e悓姝ysql鏃舵斁鍏edis 绛涢�夊嚭杞﹁締妗f + String json = (String) redisTemplate.opsForValue().get(RedisConstant.New_Monitor_Set); + if (!StringUtils.isEmpty(json)) { + List<TMonitor> newMonitors = JSONArray.parseArray(json, TMonitor.class); + if(!CollectionUtils.isEmpty(newMonitors)){ + newMonitorMap = newMonitors.stream().filter(tMonitor -> tMonitor.getCameraFunType().contains(CheckConstants.Rule_Category_Face+"")).collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity())); + } + } + Map<String, AreaStats> areaStatsMap = new HashMap<>(); + for (TMonitorVO result : list) { + TMonitorVO monitor = monitorMap.get(result.getSerialNumber()); + if (monitor == null) continue; + String deptId = monitor.getDeptId().toString(); + updateAreaStats(areaStatsMap, deptId, result,newMonitorMap); + + // 澶勭悊鐪佸巺鏁版嵁 + if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) { + String provinceKey = ApiConstants.Province + deptId; + updateAreaStats(areaStatsMap, provinceKey, result,newMonitorMap); + } + } + + // 鏌ヨ鏄惁index琛ㄥ凡缁忓瓨鍦ㄤ粖鏃ユ暟鎹� + List<CheckIndexFace> checkIndexFaceList = checkIndexFaceMapper.selectToday(DateUtils.getDate()); + List<CheckIndexFace> checkIndexFaces = new ArrayList<>(); + areaStatsMap.forEach((deptId, stats) -> { + if (stats.totalSites > 0) { + CheckIndexFace checkIndexFace = createOrUpdateCheckIndexFace(deptId, stats, checkIndexFaceList); + if (checkIndexFace != null) { + checkIndexFaces.add(checkIndexFace); + } + } + }); + + checkIndexFaceService.saveOrUpdateBatch(checkIndexFaces); + } + + /** + * 绱浜鸿劯鐩綍涓�鑷寸巼 + */ + private void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, TMonitorVO result,Map<String,TMonitor> newMonitorMap) { + //杩斿洖瀵硅薄鐨勫紩鐢紝濡傛灉涓嶅瓨鍦ㄤ細鏀惧叆鏂扮殑key,value + AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats()); + stats.totalSites++; + if(newMonitorMap.containsKey(result.getSerialNumber())){ + stats.newSites++; + } + } + + /** + * 浜鸿劯淇℃伅閲囬泦姝g‘鐜� + */ + private CheckIndexFace createOrUpdateCheckIndexFace(String key, AreaStats stats, List<CheckIndexFace> checkIndexFaceList) { + CheckIndexFace checkIndexFace = getCheckIndex(key, checkIndexFaceList, CheckIndexFace.class); + if (checkIndexFace == null) { + return null; + } + //璋冪敤鐩綍涓�鑷寸巼璁$畻鏂规硶 + Map<String, Object> param = new HashMap<>(); + param.put("totalSites", stats.totalSites); + param.put("newSites", stats.newSites); + BigDecimal directoryConstant = directoryConstant(param); + checkIndexFace.setDeviceDirectoryConsistent(directoryConstant); + return checkIndexFace; + } + + +} diff --git a/ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java b/ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java index d2600fa..a13d14e 100644 --- a/ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java +++ b/ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java @@ -67,6 +67,18 @@ return onlineSites.divide(totalSites, 4, RoundingMode.HALF_UP); } + //鐩綍涓�鑷寸巼锛屾瘡瓒呰繃鐧惧垎涔�1鎵�10% + public BigDecimal directoryConstant(Map<String, Object> param) { + BigDecimal totalSites = new BigDecimal((Integer) param.get("totalSites")); + BigDecimal newSites = new BigDecimal((Integer) param.get("newSites")); + // 璁$畻newSites鍗爐otalSites鐨勭櫨鍒嗘瘮鍊嶆暟 + BigDecimal percentage = newSites.divide(totalSites, 2, RoundingMode.DOWN).multiply(BigDecimal.valueOf(100)); + BigDecimal result = BigDecimal.ONE; + if(BigDecimal.ONE.compareTo(percentage) <= 0 ){ + result = result.subtract(percentage.multiply(new BigDecimal("0.1"))); + } + return result.max(BigDecimal.ZERO); + } //瑙嗗浘搴撳鎺ョǔ瀹氭�� public BigDecimal viewConnectStability(Map<String, Object> param) { BigDecimal totalDataSum = new BigDecimal((Integer) param.get("totalDataSum")); diff --git a/ycl-server/src/main/java/com/ycl/calculate/MonitorRegistrationCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/MonitorRegistrationCalculation.java index a6f4dcb..d654649 100644 --- a/ycl-server/src/main/java/com/ycl/calculate/MonitorRegistrationCalculation.java +++ b/ycl-server/src/main/java/com/ycl/calculate/MonitorRegistrationCalculation.java @@ -33,8 +33,6 @@ @Autowired private CheckIndexVideoMapper checkIndexVideoMapper; @Autowired - private TMonitorMapper monitorMapper; - @Autowired private ICheckIndexVideoService checkIndexVideoService; @Autowired private RedisTemplate redisTemplate; @@ -61,6 +59,8 @@ if(!CollectionUtils.isEmpty(list)){ monitorMap = list.stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity())); } + //鑾峰彇鐪佸巺鍥芥爣鐮侀泦鍚� + List<String> provinceIds = getProvince(); //鏈敞鍐岃澶� Map<String,TMonitor> newMonitorMap = new HashMap<>(); //Mongo涓�鏈轰竴妗e悓姝ysql鏃舵斁鍏edis @@ -81,7 +81,11 @@ String deptId = monitor.getDeptId().toString(); updateAreaStats(areaStatsMap, deptId, result,newMonitorMap,todayMonitor); - + // 澶勭悊鐪佸巺鏁版嵁 + if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) { + String provinceKey = ApiConstants.Province + deptId; + updateAreaStats(areaStatsMap, provinceKey, result,newMonitorMap,todayMonitor); + } } // 鏌ヨ鏄惁index琛ㄥ凡缁忓瓨鍦ㄤ粖鏃ユ暟鎹� diff --git a/ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java b/ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java index b8f2e79..7c5c7ea 100644 --- a/ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java +++ b/ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java @@ -23,7 +23,8 @@ calculators.put(CalculationStrategyConstants.Car_DataAccuracy_Url_PicUsability, new CarDeviceSampleCalculation()); //杞﹁締鏃堕挓鍑嗙‘鎬� calculators.put(CalculationStrategyConstants.Car_ClockAccuracy, new CarClockAccuracyCalculation()); - //TODO锛氳溅杈嗙洰褰曚竴鑷� + //杞﹁締鐩綍涓�鑷� + calculators.put(CalculationStrategyConstants.Car_DirectConsistent, new CarConsistentCalculation()); //浜鸿劯鐐逛綅鍦ㄧ嚎銆佽鍥惧簱瀵规帴绋冲畾 calculators.put(CalculationStrategyConstants.Face_SiteOnline_ViewStability, new FaceSnapshotDataCalculation()); @@ -35,7 +36,8 @@ calculators.put(CalculationStrategyConstants.Face_DataAccuracy_PicUsability, new FaceDeviceSampleCalculation()); //浜鸿劯鏃堕挓鍑嗙‘鎬� calculators.put(CalculationStrategyConstants.Face_ClockAccuracy, new FaceClockAccuracyCalculation()); - //TODO锛氫汉鑴哥洰褰曚竴鑷� + //浜鸿劯鐩綍涓�鑷� + calculators.put(CalculationStrategyConstants.Face_DirectConsistent, new FaceConsistentCalculation()); //涓�鏈轰竴妗f敞鍐岀巼銆佹。妗堣�冩牳姣� calculators.put(CalculationStrategyConstants.Video_MonitorRegis_ArchiveRate,new MonitorRegistrationCalculation()) diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/PlatformOnlineMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/PlatformOnlineMapper.java index 1a2a23c..1436cc5 100644 --- a/ycl-server/src/main/java/com/ycl/platform/mapper/PlatformOnlineMapper.java +++ b/ycl-server/src/main/java/com/ycl/platform/mapper/PlatformOnlineMapper.java @@ -34,6 +34,6 @@ IPage getPage(IPage page, @Param("query") DataCenterQuery query); //鏄ㄦ棩鏁版嵁 - List<PlatformOnlineVO> sumYesterday(@Param("startDate")String startDate, @Param("endDate")String endDate); + List<PlatformOnlineVO> yesterdayData(@Param("startDate")String startDate, @Param("endDate")String endDate); } diff --git a/ycl-server/src/main/java/com/ycl/task/CarTask.java b/ycl-server/src/main/java/com/ycl/task/CarTask.java index 66e5257..fd36a2a 100644 --- a/ycl-server/src/main/java/com/ycl/task/CarTask.java +++ b/ycl-server/src/main/java/com/ycl/task/CarTask.java @@ -4,9 +4,12 @@ import com.ycl.calculate.CalculationStrategy; import com.ycl.factory.IndexCalculationFactory; import com.ycl.platform.domain.result.HK.*; +import com.ycl.platform.domain.vo.TMonitorVO; +import com.ycl.platform.mapper.TMonitorMapper; import com.ycl.utils.DateUtils; import constant.ApiConstants; import constant.CalculationStrategyConstants; +import constant.CheckConstants; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; @@ -16,6 +19,7 @@ import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * 杞﹁締璁$畻鑰冩牳鎸囨爣浠诲姟 @@ -26,7 +30,8 @@ public class CarTask { @Autowired private MongoTemplate mongoTemplate; - + @Autowired + private TMonitorMapper monitorMapper; public void siteOnlineTask() { Date yesterday = DateUtils.addDays(new Date(), -1); //璁$畻鐐逛綅鍦ㄧ嚎鐜囧拰瑙嗗浘搴撳鎺ョǔ瀹氭�� @@ -95,8 +100,12 @@ calculator.calculate(results); } - public void test() { - Date yesterday = DateUtils.addDays(new Date(), -1); - //TODO锛氫竴鏈轰竴妗� 鑱旂綉鍗″彛璁惧鐩綍涓�鑷寸巼 + public void directConsistentTask() { + //杞﹁締鐩綍涓�鑷寸巼 + List<TMonitorVO> tMonitorVOS = monitorMapper.selectMonitorVOList(); + List<TMonitorVO> list = tMonitorVOS.stream().filter(tMonitorVO -> tMonitorVO.getCameraFunType().contains(CheckConstants.Rule_Category_Car + "")).collect(Collectors.toList()); + CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Car_DirectConsistent); + calculator.calculate(list); } + } diff --git a/ycl-server/src/main/java/com/ycl/task/FaceTask.java b/ycl-server/src/main/java/com/ycl/task/FaceTask.java index 125770d..3d7cfc3 100644 --- a/ycl-server/src/main/java/com/ycl/task/FaceTask.java +++ b/ycl-server/src/main/java/com/ycl/task/FaceTask.java @@ -4,9 +4,12 @@ import com.ycl.calculate.CalculationStrategy; import com.ycl.factory.IndexCalculationFactory; import com.ycl.platform.domain.result.HK.*; +import com.ycl.platform.domain.vo.TMonitorVO; +import com.ycl.platform.mapper.TMonitorMapper; import com.ycl.utils.DateUtils; import constant.ApiConstants; import constant.CalculationStrategyConstants; +import constant.CheckConstants; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; @@ -16,6 +19,7 @@ import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * 浜鸿劯璁$畻鑰冩牳鎸囨爣浠诲姟 @@ -26,6 +30,8 @@ public class FaceTask { @Autowired private MongoTemplate mongoTemplate; + @Autowired + private TMonitorMapper monitorMapper; public void siteOnlineTask() { Date yesterday = DateUtils.addDays(new Date(), -1); @@ -80,8 +86,11 @@ calculator.calculate(results); } - public void test() { - Date yesterday = DateUtils.addDays(new Date(), -1); - //TODO锛氫竴鏈轰竴妗� 鑱旂綉鍗″彛璁惧鐩綍涓�鑷寸巼 + public void directConsistentTask() { + //浜鸿劯鐩綍涓�鑷寸巼 + List<TMonitorVO> tMonitorVOS = monitorMapper.selectMonitorVOList(); + List<TMonitorVO> list = tMonitorVOS.stream().filter(tMonitorVO -> tMonitorVO.getCameraFunType().contains(CheckConstants.Rule_Category_Face + "")).collect(Collectors.toList()); + CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Face_DirectConsistent); + calculator.calculate(list); } } diff --git a/ycl-server/src/main/java/com/ycl/task/VideoTask.java b/ycl-server/src/main/java/com/ycl/task/VideoTask.java index c89f06c..38e698b 100644 --- a/ycl-server/src/main/java/com/ycl/task/VideoTask.java +++ b/ycl-server/src/main/java/com/ycl/task/VideoTask.java @@ -91,7 +91,7 @@ } public void platformOnlineTask() { //璁$畻骞冲彴鍦ㄧ嚎鐜� - List<PlatformOnlineVO> list = platformOnlineMapper.sumYesterday(DateUtils.getMouthStart(new Date()), DateUtils.getMouthEnd(new Date())); + List<PlatformOnlineVO> list = platformOnlineMapper.yesterdayData(DateUtils.getMouthStart(new Date()), DateUtils.getMouthEnd(new Date())); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Video_PlatformOnline); calculator.calculate(list); } diff --git a/ycl-server/src/main/resources/mapper/zgyw/PlatformOnlineMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/PlatformOnlineMapper.xml index d52330e..ef4cec1 100644 --- a/ycl-server/src/main/resources/mapper/zgyw/PlatformOnlineMapper.xml +++ b/ycl-server/src/main/resources/mapper/zgyw/PlatformOnlineMapper.xml @@ -47,7 +47,7 @@ </select> - <select id="sumYesterday" resultMap="BaseResultMap"> + <select id="yesterdayData" resultMap="BaseResultMap"> select * from t_platform_online where create_date between #{startDate} and #{endDate} </select> -- Gitblit v1.8.0