From b14531e3b850fe6d2fa916ba7b88b3e2bd2ff30a Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期三, 11 九月 2024 16:47:48 +0800 Subject: [PATCH] OSD加标签 --- ycl-server/src/main/java/com/ycl/calculate/VideoOsdCalculation.java | 106 ++++++++++------------------------------------------- 1 files changed, 20 insertions(+), 86 deletions(-) diff --git a/ycl-server/src/main/java/com/ycl/calculate/VideoOsdCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/VideoOsdCalculation.java index 54ddecb..c4c6c0e 100644 --- a/ycl-server/src/main/java/com/ycl/calculate/VideoOsdCalculation.java +++ b/ycl-server/src/main/java/com/ycl/calculate/VideoOsdCalculation.java @@ -1,29 +1,20 @@ package com.ycl.calculate; import com.ycl.platform.domain.entity.CheckIndexVideo; -import com.ycl.platform.domain.result.UY.PyOsdResult; -import com.ycl.platform.domain.result.UY.VideoOnlineResult; -import com.ycl.platform.domain.vo.TMonitorVO; +import com.ycl.platform.domain.result.UY.OsdCheckResult; import com.ycl.platform.mapper.CheckIndexVideoMapper; -import com.ycl.platform.mapper.TMonitorMapper; import com.ycl.platform.service.ICheckIndexVideoService; import constant.ApiConstants; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.util.CollectionUtils; import utils.DateUtils; import java.math.BigDecimal; -import java.time.Duration; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; 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; /** * 璁$畻瑙嗛璁惧Osd鏍囨敞淇℃伅銆佹椂闂村噯纭俊鎭� @@ -32,54 +23,25 @@ */ @Component @Slf4j -public class VideoOsdCalculation extends IndexCalculationServe implements CalculationStrategy<PyOsdResult> { +public class VideoOsdCalculation extends IndexCalculationServe<OsdCheckResult, VideoOsdCalculation.AreaStats> implements CalculationStrategy<OsdCheckResult> { @Autowired private CheckIndexVideoMapper checkIndexVideoMapper; - @Autowired - private TMonitorMapper monitorMapper; @Autowired private ICheckIndexVideoService checkIndexVideoService; //鍖哄煙瑙嗛鍦ㄧ嚎鐜囩殑鍐呴儴绫� - private static class AreaStats { + protected static class AreaStats { int totalSites = 0; - int osdAccuracySites = 0; - int timeAccuracySites = 0; - int importantTotalSites = 0; int importantOsdAccuracySites = 0; int importantTimeAccuracySites = 0; } @Override - public void calculate(List<PyOsdResult> list) { - if (CollectionUtils.isEmpty(list)) { - log.info("鏁版嵁涓虹┖"); - return; - } - - //鑾峰緱鍥芥爣鐮佷负key鐨勮澶噈ap - Map<String, TMonitorVO> monitorMap = monitorMapper.selectListByIds(list.stream().map(PyOsdResult::getDeviceNo).collect(Collectors.toList())) - .stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity())); - //鑾峰彇鐪佸巺鍥芥爣鐮侀泦鍚� - List<String> provinceIds = getProvince(); - //閲嶇偣鐐逛綅闆嗗悎 - List<String> important = getImportant(); - - Map<String, AreaStats> areaStatsMap = new HashMap<>(); - for (PyOsdResult result : list) { - TMonitorVO monitor = monitorMap.get(result.getDeviceNo()); - if (monitor == null) continue; - - String deptId = monitor.getDeptId().toString(); - updateAreaStats(areaStatsMap, deptId, result, important); - - // 澶勭悊鐪佸巺鏁版嵁 - if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) { - String provinceKey = ApiConstants.Province + deptId; - updateAreaStats(areaStatsMap, provinceKey, result, important); - } - } + public void calculate(List<OsdCheckResult> list) { + //鑾峰彇鍒嗗尯鍩熺殑鎸囨爣鏁伴噺 + Map<String, VideoOsdCalculation.AreaStats> areaStatsMap = getAreaStatsMap(list); + if (areaStatsMap == null) return; // 鏌ヨ鏄惁index琛ㄥ凡缁忓瓨鍦ㄤ粖鏃ユ暟鎹� List<CheckIndexVideo> checkIndexVideoList = checkIndexVideoMapper.selectToday(DateUtils.getDate()); @@ -99,20 +61,14 @@ /** * 绱osd鍚堟牸鏁般�佹椂闂村亸宸悎鏍兼暟 */ - private void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, PyOsdResult result, List<String> important) { + @Override + public void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, OsdCheckResult result) { //杩斿洖瀵硅薄鐨勫紩鐢紝濡傛灉涓嶅瓨鍦ㄤ細鏀惧叆鏂扮殑key,value AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats()); stats.totalSites++; - //鏍¢獙osd - if (checkOsd(result)) { - stats.osdAccuracySites++; - } - //鏍¢獙鏃堕棿鍋忓樊 - if (checkTime(result)) { - stats.timeAccuracySites++; - } + //閲嶇偣鐐逛綅 - if (important.contains(result.getDeviceNo())) { + if (result.getImportantTag()) { stats.importantTotalSites++; if (checkOsd(result)) { stats.importantOsdAccuracySites++; @@ -123,27 +79,16 @@ } } - private Boolean checkOsd(PyOsdResult result) { - return ApiConstants.PY_OSD_Correct.equals(result.getOsd1Province()) && - ApiConstants.PY_OSD_Correct.equals(result.getOsd1City()) && - ApiConstants.PY_OSD_Correct.equals(result.getOsd1Part()) && - ApiConstants.PY_OSD_Correct.equals(result.getOsd1LB()) && - ApiConstants.PY_OSD_Correct.equals(result.getOsd1OSD()) && - ApiConstants.PY_OSD_Correct.equals(result.getOsd1TimeFormat()) && - ApiConstants.PY_OSD_Correct.equals(result.getOsd1OsdSet()); + private Boolean checkOsd(OsdCheckResult result) { + return ApiConstants.OSD_Correct.equals(result.getOsdTimeCorrect()) && + ApiConstants.OSD_Correct.equals(result.getOsdNameCorrect()) && + ApiConstants.OSD_Correct.equals(result.getOsdProvinceCorrect()) && + ApiConstants.OSD_Correct.equals(result.getOsdCityCorrect()) && + ApiConstants.OSD_Correct.equals(result.getOsdPartCorrect()); } - private Boolean checkTime(PyOsdResult result) { - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - // 瑙f瀽鏃堕棿瀛楃涓� - LocalDateTime checkTime = LocalDateTime.parse(result.getCheckTime(), formatter); - LocalDateTime osdTime = LocalDateTime.parse(result.getSetTime(), formatter); - // 璁$畻鏃堕棿宸紙Duration锛� - Duration duration = Duration.between(checkTime, osdTime); - // 灏嗘椂闂村樊杞崲涓虹 - long secondsBetween = duration.getSeconds(); - // 鍒ゆ柇鏃堕棿宸槸鍚﹀湪60绉掍互鍐� - return secondsBetween <= 60; + private Boolean checkTime(OsdCheckResult result) { + return ApiConstants.OSD_Correct.equals(result.getOsdTimeCorrect()); } /** @@ -154,12 +99,7 @@ if (checkIndexVideo == null) { return null; } - //璋冪敤osd鏍囨敞璁$畻鏂规硶 - Map<String, Object> param = new HashMap<>(); - param.put("totalSites", stats.totalSites); - param.put("osdAccuracySites", stats.osdAccuracySites); - BigDecimal osdAccuracy = osdAccuracy(param); - checkIndexVideo.setAnnotationAccuracy(osdAccuracy); + //璋冪敤osd鏍囨敞璁$畻鏂规硶 璁$畻閲嶇偣osd鏍囨敞 Map<String, Object> importantParam = new HashMap<>(); importantParam.put("totalSites", stats.importantTotalSites); @@ -167,12 +107,6 @@ BigDecimal imOsdAccuracy = osdAccuracy(importantParam); checkIndexVideo.setKeyAnnotationAccuracy(imOsdAccuracy); - //璋冪敤osd鏃堕棿鍑嗙‘鐜� - Map<String, Object> timeParam = new HashMap<>(); - timeParam.put("totalSites", stats.totalSites); - timeParam.put("timeAccuracySites", stats.timeAccuracySites); - BigDecimal osdTimeAccuracy = osdTimeAccuracy(timeParam); - checkIndexVideo.setTimingAccuracy(osdTimeAccuracy); //璋冪敤osd鏃堕棿鍑嗙‘鐜�,璁$畻閲嶇偣 Map<String, Object> importantTimeParam = new HashMap<>(); importantTimeParam.put("totalSites", stats.importantTotalSites); -- Gitblit v1.8.0