From c0a6471efcf392e54aeefe318a27d5da78220fd7 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期一, 19 八月 2024 16:32:51 +0800 Subject: [PATCH] 人脸指标计算测试+修改 --- ycl-common/src/main/java/constant/ApiConstants.java | 4 + ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java | 1 ycl-server/src/main/java/com/ycl/task/FaceTask.java | 35 +++++++++-- ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDelayCalculation.java | 2 ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java | 54 ++++++++++++++---- ycl-server/src/main/java/com/ycl/calculate/FaceConsistentCalculation.java | 4 ycl-server/src/main/java/com/ycl/task/CarTask.java | 2 ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/FaceDeviceSamplingResult.java | 3 ycl-server/src/main/java/com/ycl/calculate/FaceDeviceSampleCalculation.java | 14 +++- ycl-server/src/main/resources/mapper/zgyw/CheckIndexFaceMapper.xml | 2 10 files changed, 90 insertions(+), 31 deletions(-) diff --git a/ycl-common/src/main/java/constant/ApiConstants.java b/ycl-common/src/main/java/constant/ApiConstants.java index 420f200..9037425 100644 --- a/ycl-common/src/main/java/constant/ApiConstants.java +++ b/ycl-common/src/main/java/constant/ApiConstants.java @@ -75,6 +75,8 @@ /** 鑰冩牳鎸囨爣 鏉′欢鍙傛暟 */ //杞﹁締鑰冩牳锛岀偣浣嶅湪绾跨巼锛屽尯鍘夸笉灏戜簬40璺� public final static Integer Check_Car_SiteOnline = 40; + public final static Integer Check_Face_SiteOnline = 40; //杞﹁締鍦ㄧ嚎鐜� Redis 姣忔湀鏁版嵁涓柇娆℃暟 Hash key - public final static String Check_Car_ViewConnect = "ViewConnectNoData"; + public final static String Check_Car_ViewConnect = "CarViewConnectNoData"; + public final static String Check_Face_ViewConnect = "FaceViewConnectNoData"; } diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/FaceDeviceSamplingResult.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/FaceDeviceSamplingResult.java index 655f5a4..1281e23 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/FaceDeviceSamplingResult.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/FaceDeviceSamplingResult.java @@ -60,7 +60,8 @@ /** * 浜鸿劯鍚堟牸鎬х浉鍏虫暟鎹� */ - private FaceEligibility faceElig; + //TODO:鍙傛暟鍚嶄慨鏀圭湅鎺ュ彛鏄惁鏈夊弬鏁� + private FaceEligibility faceEligibility; // 鍐呭祵瀵硅薄瀹氫箟 diff --git a/ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java index e447cec..33469c9 100644 --- a/ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java +++ b/ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java @@ -111,7 +111,6 @@ /** * 绱鎬荤偣浣嶆暟銆佺绾挎暟銆佹�绘姄鎷嶉噺 */ - //TODO:鏃犳暟鎹鐞� private void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, SnapshotDataMonitorResult result) { //杩斿洖瀵硅薄鐨勫紩鐢紝濡傛灉涓嶅瓨鍦ㄤ細鏀惧叆鏂扮殑key,value AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats()); diff --git a/ycl-server/src/main/java/com/ycl/calculate/FaceConsistentCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/FaceConsistentCalculation.java index 318c549..88e4b7e 100644 --- a/ycl-server/src/main/java/com/ycl/calculate/FaceConsistentCalculation.java +++ b/ycl-server/src/main/java/com/ycl/calculate/FaceConsistentCalculation.java @@ -27,7 +27,7 @@ import java.util.stream.Collectors; /** - * 璁$畻杞﹁締鐩綍涓�鑷寸巼 + * 璁$畻浜鸿劯鐩綍涓�鑷寸巼 * 鑾峰彇鍒嗙渷鍘呫�佸尯鍩熺殑map<k,v> k涓篸eptId鎴栬�匬rovince_deptId * 鏇存柊鎴栨柊澧� */ @@ -62,7 +62,7 @@ } //鑾峰彇鐪佸巺鍥芥爣鐮侀泦鍚� 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); diff --git a/ycl-server/src/main/java/com/ycl/calculate/FaceDeviceSampleCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/FaceDeviceSampleCalculation.java index 4acd0cd..d598f12 100644 --- a/ycl-server/src/main/java/com/ycl/calculate/FaceDeviceSampleCalculation.java +++ b/ycl-server/src/main/java/com/ycl/calculate/FaceDeviceSampleCalculation.java @@ -93,15 +93,19 @@ //杩斿洖瀵硅薄鐨勫紩鐢紝濡傛灉涓嶅瓨鍦ㄤ細鏀惧叆鏂扮殑key,value AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats()); FaceDeviceSamplingResult.BigUsefulness bigUseful = result.getBigUseful(); - FaceDeviceSamplingResult.FaceEligibility faceElig = result.getFaceElig(); + FaceDeviceSamplingResult.FaceEligibility faceElig = result.getFaceEligibility(); stats.totalSites++; //90%鍙婁互涓婃暟鎹悎鏍煎垯姝や汉鑴歌澶囪瑙嗕负鍥剧墖鍚堟牸 - if (faceElig.getFaceEligPercent() >= 0.9) { - stats.picQualifySites++; + if (faceElig != null) { + if (faceElig.getFaceEligPercent() >= 0.9) { + stats.picQualifySites++; + } } //澶у浘鍙敤鐜囧ぇ浜�90%瑙嗕负鍚堟牸 - if (bigUseful.getBigUsefulPercent() >= 0.9) { - stats.picUsabilitySites++; + if (bigUseful != null) { + if (bigUseful.getBigUsefulPercent() >= 0.9) { + stats.picUsabilitySites++; + } } } diff --git a/ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java index 321c50d..c1500fc 100644 --- a/ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java +++ b/ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java @@ -16,6 +16,7 @@ import constant.CheckSnapCountConstants; import lombok.extern.slf4j.Slf4j; 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; @@ -23,6 +24,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; +import java.time.temporal.TemporalAdjusters; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -46,6 +48,8 @@ private SysConfigMapper sysConfigMapper; @Autowired private TMonitorMapper monitorMapper; + @Autowired + private RedisTemplate redisTemplate; //鍖哄煙浜鸿劯鐐逛綅鍦ㄧ嚎鎸囨爣鐨勫唴閮ㄧ被 private static class AreaStats { @@ -67,7 +71,15 @@ List<String> provinceIds = getProvince(); Map<String, AreaStats> areaStatsMap = new HashMap<>(); - + // 鑾峰彇褰撳墠鏃ユ湡 + LocalDate today = LocalDate.now(); + // 鑾峰彇鏈湀鐨勭涓�澶� + LocalDate firstDayOfMonth = today.with(TemporalAdjusters.firstDayOfMonth()); + // 鍒ゆ柇浠婂ぉ鏄惁鏄湰鏈堢殑绗竴澶� + if (today.equals(firstDayOfMonth)) { + // 濡傛灉鏄紝鍒欐竻闄edis涓褰曚腑鏂鏁扮殑鏁版嵁 + redisTemplate.delete(ApiConstants.Check_Face_ViewConnect); + } for (SnapshotDataMonitorResult result : list) { TMonitorVO monitor = monitorMap.get(result.getExternalIndexCode()); if (monitor == null) continue; @@ -129,18 +141,36 @@ return null; } //璋冪敤鐐逛綅鍦ㄧ嚎璁$畻鏂规硶 - Map<String, Object> siteOnlineParam = new HashMap<>(); - siteOnlineParam.put("totalSites", stats.totalSites); - siteOnlineParam.put("onlineSites", stats.onlineSites); - BigDecimal siteOnline = siteOnline(siteOnlineParam); - checkIndexFace.setSiteOnline(siteOnline); + if (stats.totalSites >= ApiConstants.Check_Face_SiteOnline) { + Map<String, Object> siteOnlineParam = new HashMap<>(); + siteOnlineParam.put("totalSites", stats.totalSites); + siteOnlineParam.put("onlineSites", stats.onlineSites); + BigDecimal siteOnline = siteOnline(siteOnlineParam); + checkIndexFace.setSiteOnline(siteOnline); + } else { + checkIndexFace.setSiteOnline(BigDecimal.ZERO); + } //瑙嗗浘搴撳鎺ョǔ瀹氭�� - BigDecimal avgCount = key.startsWith(ApiConstants.Province) ? cityCountAvg : countyCountAvg; - Map<String, Object> viewConnectParam = new HashMap<>(); - viewConnectParam.put("totalDataSum", stats.totalDataSum); - viewConnectParam.put("avgCount", avgCount); - BigDecimal viewConnectStability = viewConnectStability(viewConnectParam); - checkIndexFace.setViewConnectStability(viewConnectStability); + //Redis璁板綍璇ュ尯鍘垮綋鏈堟棤鏁版嵁涓婁紶娆℃暟 + Integer noDateCount = (Integer) redisTemplate.opsForHash().get(ApiConstants.Check_Face_ViewConnect, key); + // 濡傛灉鍊间负null锛屽垯鍒濆鍖栦负0 + if (noDateCount == null) { + noDateCount = 0; + } + Double deductScore = 0.1 * noDateCount; + if (stats.totalDataSum != 0) { + BigDecimal avgCount = key.startsWith(ApiConstants.Province) ? cityCountAvg : countyCountAvg; + Map<String, Object> viewConnectParam = new HashMap<>(); + viewConnectParam.put("totalDataSum", stats.totalDataSum); + viewConnectParam.put("avgCount", avgCount); + BigDecimal viewConnectStability = viewConnectStability(viewConnectParam); + viewConnectStability = viewConnectStability.subtract(new BigDecimal(deductScore)).max(BigDecimal.ZERO).min(BigDecimal.ONE); + checkIndexFace.setViewConnectStability(viewConnectStability); + } else { + noDateCount++; + } + // 灏嗘柊鐨勫�兼斁鍥濰ash涓� + redisTemplate.opsForHash().put(ApiConstants.Check_Face_ViewConnect, key, noDateCount); return checkIndexFace; } } diff --git a/ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDelayCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDelayCalculation.java index e109c2e..f40268e 100644 --- a/ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDelayCalculation.java +++ b/ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDelayCalculation.java @@ -120,7 +120,7 @@ param.put("delayCount2", stats.delayCount2); param.put("delayCount3", stats.delayCount3); BigDecimal index = snapshopDelay(param); - checkIndexFace.setSiteOnline(index); + checkIndexFace.setFaceUploadTimeliness(index); return checkIndexFace; } } 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 8e5fbaa..26b1c93 100644 --- a/ycl-server/src/main/java/com/ycl/task/CarTask.java +++ b/ycl-server/src/main/java/com/ycl/task/CarTask.java @@ -34,7 +34,7 @@ @Autowired private TMonitorMapper monitorMapper; public void siteOnlineTask() { - log.info("寮�濮嬭绠楃偣浣嶅湪绾跨巼鍜岃鍥惧簱瀵规帴绋冲畾鎬�"); + log.info("寮�濮嬭绠楄溅杈嗙偣浣嶅湪绾跨巼鍜岃鍥惧簱瀵规帴绋冲畾鎬�"); Date yesterday = DateUtils.addDays(new Date(), -1); //TODO:鏃堕棿鍐欐浜� Date date = DateUtils.getDay(2024,7,13); 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 3d7cfc3..cf4ba45 100644 --- a/ycl-server/src/main/java/com/ycl/task/FaceTask.java +++ b/ycl-server/src/main/java/com/ycl/task/FaceTask.java @@ -7,6 +7,7 @@ import com.ycl.platform.domain.vo.TMonitorVO; import com.ycl.platform.mapper.TMonitorMapper; import com.ycl.utils.DateUtils; +import com.ycl.utils.StringUtils; import constant.ApiConstants; import constant.CalculationStrategyConstants; import constant.CheckConstants; @@ -34,63 +35,85 @@ private TMonitorMapper monitorMapper; public void siteOnlineTask() { + 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(yesterday)).lt(DateUtils.getDayEnd(yesterday)) + .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date)) .and("dataType").is(ApiConstants.HK_DataType_FACE)); List<SnapshotDataMonitorResult> results = mongoTemplate.find(query, SnapshotDataMonitorResult.class); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Face_SiteOnline_ViewStability); calculator.calculate(results); + log.info("缁撴潫璁$畻浜鸿劯鐐逛綅鍦ㄧ嚎鐜囧拰瑙嗗浘搴撳鎺ョǔ瀹氭��"); } public void deviceSampleTask() { + 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(yesterday)).lt(DateUtils.getDayEnd(yesterday))); + .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date))); List<FaceDeviceSamplingResult> results = mongoTemplate.find(query, FaceDeviceSamplingResult.class); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Face_DataAccuracy_PicUsability); calculator.calculate(results); + log.info("缁撴潫璁$畻浜鸿劯鍥剧墖鍚堟牸鐜囥�佸ぇ鍥惧彲鐢ㄦ��"); } public void infoAccuracyTask(){ + log.info("寮�濮嬭绠椾汉鑴稿崱鍙d俊鎭噰闆嗗噯纭巼"); 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(yesterday)).lt(DateUtils.getDayEnd(yesterday))); + .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date))); List<MonitoringDetailResult> results = mongoTemplate.find(query, MonitoringDetailResult.class); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Face_InfoAccuracy); calculator.calculate(results); + log.info("缁撴潫璁$畻浜鸿劯鍗″彛淇℃伅閲囬泦鍑嗙‘鐜�"); } public void snapShopDelay(){ + 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(yesterday)).lt(DateUtils.getDayEnd(yesterday)) + .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date)) .and("dataType").is(ApiConstants.HK_DataType_FACE)); List<SnapshotDelayMonitorResult> results = mongoTemplate.find(query, SnapshotDelayMonitorResult.class); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Face_SnapshotDelay); calculator.calculate(results); + log.info("缁撴潫璁$畻浜鸿劯鎶撴媿鏁版嵁涓婁紶鍙婃椂鎬�"); } 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(yesterday)).lt(DateUtils.getDayEnd(yesterday))); + .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date))); List<FaceDeviceInspectionResult> results = mongoTemplate.find(query, FaceDeviceInspectionResult.class); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Face_ClockAccuracy); calculator.calculate(results); + log.info("缁撴潫璁$畻浜鸿劯璁惧鏃堕挓鍑嗙‘鎬�"); } public void directConsistentTask() { + log.info("寮�濮嬭绠椾汉鑴哥洰褰曚竴鑷寸巼"); //浜鸿劯鐩綍涓�鑷寸巼 List<TMonitorVO> tMonitorVOS = monitorMapper.selectMonitorVOList(); - List<TMonitorVO> list = tMonitorVOS.stream().filter(tMonitorVO -> tMonitorVO.getCameraFunType().contains(CheckConstants.Rule_Category_Face + "")).collect(Collectors.toList()); + List<TMonitorVO> list = tMonitorVOS.stream().filter(tMonitorVO ->!StringUtils.isEmpty(tMonitorVO.getCameraFunType()) && tMonitorVO.getCameraFunType().contains(CheckConstants.Rule_Category_Face + "")).collect(Collectors.toList()); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Face_DirectConsistent); calculator.calculate(list); + log.info("缁撴潫璁$畻浜鸿劯鐩綍涓�鑷寸巼"); } } diff --git a/ycl-server/src/main/resources/mapper/zgyw/CheckIndexFaceMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/CheckIndexFaceMapper.xml index 1fb3bc2..d38a48a 100644 --- a/ycl-server/src/main/resources/mapper/zgyw/CheckIndexFaceMapper.xml +++ b/ycl-server/src/main/resources/mapper/zgyw/CheckIndexFaceMapper.xml @@ -112,7 +112,7 @@ </delete> <select id="selectToday" resultType="com.ycl.platform.domain.entity.CheckIndexFace"> - select * from t_check_index_car where DATE(create_time) = #{today} + select * from t_check_index_face where DATE(create_time) = #{today} </select> <select id="dashboard" resultType="com.ycl.platform.domain.entity.CheckIndexFace"> -- Gitblit v1.8.0