From c8ca3c42906b89c5de910ad3ff9f164e6b846a4c Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期五, 09 八月 2024 15:41:21 +0800
Subject: [PATCH] 一机一档合格率
---
ycl-server/src/main/java/com/ycl/calculate/CarDataIntegrityCalculation.java | 2
ycl-server/src/main/java/com/ycl/calculate/MonitorQualifyCalculation.java | 138 +++++++++++++++++++++++
ycl-server/src/main/java/com/ycl/calculate/CarDeviceSampleCalculation.java | 2
ycl-server/src/main/java/com/ycl/calculate/FaceInFoAccuracyCalculation.java | 2
ycl-server/src/main/java/com/ycl/calculate/FaceDeviceSampleCalculation.java | 2
ycl-server/src/main/java/com/ycl/calculate/CarClockAccuracyCalculation.java | 2
ycl-server/src/main/java/com/ycl/calculate/PlatformOnlineCalculation.java | 58 +++++++++
ycl-server/src/main/java/com/ycl/calculate/VideoUsabilityCalculation.java | 2
ycl-common/src/main/java/constant/ApiConstants.java | 2
ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java | 6
ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java | 4
ycl-server/src/main/java/com/ycl/calculate/CarSnapshotDelayCalculation.java | 2
ycl-common/src/main/java/constant/CalculationStrategyConstants.java | 8 +
ycl-server/src/main/java/com/ycl/calculate/CarInFoAccuracyCalculation.java | 2
ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDelayCalculation.java | 2
ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java | 4
ycl-server/src/main/java/com/ycl/task/VideoTask.java | 45 +++----
ycl-server/src/main/java/com/ycl/task/MonitorTask.java | 32 +++-
ycl-server/src/main/java/com/ycl/calculate/FaceClockAccuracyCalculation.java | 2
ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java | 14 +
ycl-server/src/main/java/com/ycl/calculate/VideoOnlineCalculation.java | 2
21 files changed, 275 insertions(+), 58 deletions(-)
diff --git a/ycl-common/src/main/java/constant/ApiConstants.java b/ycl-common/src/main/java/constant/ApiConstants.java
index abaa992..be1ac7b 100644
--- a/ycl-common/src/main/java/constant/ApiConstants.java
+++ b/ycl-common/src/main/java/constant/ApiConstants.java
@@ -60,4 +60,6 @@
//鑷础琛屾斂缂栫爜
public final static String AreaNo = "5103";
+ //鐪佸巺鍓嶇紑
+ public final static String Province = "Province_";
}
diff --git a/ycl-common/src/main/java/constant/CalculationStrategyConstants.java b/ycl-common/src/main/java/constant/CalculationStrategyConstants.java
index ab8f49a..a726877 100644
--- a/ycl-common/src/main/java/constant/CalculationStrategyConstants.java
+++ b/ycl-common/src/main/java/constant/CalculationStrategyConstants.java
@@ -53,6 +53,10 @@
/**
+ * 涓�鏈轰竴妗e悎鏍肩巼
+ */
+ public static final String Video_MonitorQualify = "videoMonitorQualify";
+ /**
* 瑙嗛鐐逛綅鍦ㄧ嚎鐜�
*/
public static final String Video_SiteOnline = "videoSiteOnline";
@@ -60,4 +64,8 @@
* 瑙嗛褰曞儚鍙敤鐜�
*/
public static final String Video_Usability = "videoUsability";
+ /**
+ * 骞冲彴鍦ㄧ嚎鐜�
+ */
+ public static final String Video_PlatformOnline = "videoPlatformOnline";
}
diff --git a/ycl-server/src/main/java/com/ycl/calculate/CarClockAccuracyCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/CarClockAccuracyCalculation.java
index df47586..09d8173 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/CarClockAccuracyCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/CarClockAccuracyCalculation.java
@@ -73,7 +73,7 @@
// 澶勭悊鐪佸巺鏁版嵁
if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) {
- String provinceKey = "Province_" + deptId;
+ String provinceKey = ApiConstants.Province + deptId;
updateAreaStats(areaStatsMap, provinceKey, result);
}
}
diff --git a/ycl-server/src/main/java/com/ycl/calculate/CarDataIntegrityCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/CarDataIntegrityCalculation.java
index 375aca0..8863fb4 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/CarDataIntegrityCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/CarDataIntegrityCalculation.java
@@ -68,7 +68,7 @@
// 澶勭悊鐪佸巺鏁版嵁
if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) {
- String provinceKey = "Province_" + deptId;
+ String provinceKey = ApiConstants.Province + deptId;
updateAreaStats(areaStatsMap, provinceKey, result, importantIds);
}
}
diff --git a/ycl-server/src/main/java/com/ycl/calculate/CarDeviceSampleCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/CarDeviceSampleCalculation.java
index 3db70da..f8d9300 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/CarDeviceSampleCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/CarDeviceSampleCalculation.java
@@ -74,7 +74,7 @@
// 澶勭悊鐪佸巺鏁版嵁
if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) {
- String provinceKey = "Province_" + deptId;
+ String provinceKey = ApiConstants.Province + deptId;
updateAreaStats(areaStatsMap, provinceKey, result, importantIds);
}
}
diff --git a/ycl-server/src/main/java/com/ycl/calculate/CarInFoAccuracyCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/CarInFoAccuracyCalculation.java
index e567bac..7acdf17 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/CarInFoAccuracyCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/CarInFoAccuracyCalculation.java
@@ -70,7 +70,7 @@
// 澶勭悊鐪佸巺鏁版嵁
if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) {
- String provinceKey = "Province_" + deptId;
+ String provinceKey = ApiConstants.Province + deptId;
updateAreaStats(areaStatsMap, provinceKey, result);
}
}
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 f26b39c..0e98ab3 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java
@@ -73,7 +73,7 @@
// 澶勭悊鐪佸巺鏁版嵁
if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) {
- String provinceKey = "Province_" + deptId;
+ String provinceKey = ApiConstants.Province + deptId;
updateAreaStats(areaStatsMap, provinceKey, result);
}
}
@@ -137,7 +137,7 @@
BigDecimal siteOnline = siteOnline(siteOnlineParam);
checkIndexCar.setSiteOnline(siteOnline);
//瑙嗗浘搴撳鎺ョǔ瀹氭��
- BigDecimal avgCount = key.startsWith("Province_") ? cityCountAvg : countyCountAvg;
+ BigDecimal avgCount = key.startsWith(ApiConstants.Province) ? cityCountAvg : countyCountAvg;
Map<String, Object> viewConnectParam = new HashMap<>();
viewConnectParam.put("totalDataSum", stats.totalDataSum);
viewConnectParam.put("avgCount", avgCount);
diff --git a/ycl-server/src/main/java/com/ycl/calculate/CarSnapshotDelayCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/CarSnapshotDelayCalculation.java
index 23dfe19..7c70908 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/CarSnapshotDelayCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/CarSnapshotDelayCalculation.java
@@ -75,7 +75,7 @@
// 澶勭悊鐪佸巺鏁版嵁
if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) {
- String provinceKey = "Province_" + deptId;
+ String provinceKey = ApiConstants.Province + deptId;
updateAreaStats(areaStatsMap, provinceKey, result);
}
}
diff --git a/ycl-server/src/main/java/com/ycl/calculate/FaceClockAccuracyCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/FaceClockAccuracyCalculation.java
index 2da526d..a2c1afc 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/FaceClockAccuracyCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/FaceClockAccuracyCalculation.java
@@ -68,7 +68,7 @@
// 澶勭悊鐪佸巺鏁版嵁
if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) {
- String provinceKey = "Province_" + deptId;
+ String provinceKey = ApiConstants.Province + deptId;
updateAreaStats(areaStatsMap, provinceKey, result);
}
}
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 c7e8bce..ba700d3 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/FaceDeviceSampleCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/FaceDeviceSampleCalculation.java
@@ -66,7 +66,7 @@
// 澶勭悊鐪佸巺鏁版嵁
if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) {
- String provinceKey = "Province_" + deptId;
+ String provinceKey = ApiConstants.Province + deptId;
updateAreaStats(areaStatsMap, provinceKey, result);
}
}
diff --git a/ycl-server/src/main/java/com/ycl/calculate/FaceInFoAccuracyCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/FaceInFoAccuracyCalculation.java
index ce028fc..1514d8b 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/FaceInFoAccuracyCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/FaceInFoAccuracyCalculation.java
@@ -67,7 +67,7 @@
// 澶勭悊鐪佸巺鏁版嵁
if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) {
- String provinceKey = "Province_" + deptId;
+ String provinceKey = ApiConstants.Province + deptId;
updateAreaStats(areaStatsMap, provinceKey, result);
}
}
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 633223a..4e4818e 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java
@@ -74,7 +74,7 @@
// 澶勭悊鐪佸巺鏁版嵁
if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) {
- String provinceKey = "Province_" + deptId;
+ String provinceKey = ApiConstants.Province + deptId;
updateAreaStats(areaStatsMap, provinceKey, result);
}
}
@@ -132,7 +132,7 @@
BigDecimal siteOnline = siteOnline(siteOnlineParam);
checkIndexFace.setSiteOnline(siteOnline);
//瑙嗗浘搴撳鎺ョǔ瀹氭��
- BigDecimal avgCount = key.startsWith("Province_") ? cityCountAvg : countyCountAvg;
+ BigDecimal avgCount = key.startsWith(ApiConstants.Province) ? cityCountAvg : countyCountAvg;
Map<String, Object> viewConnectParam = new HashMap<>();
viewConnectParam.put("totalDataSum", stats.totalDataSum);
viewConnectParam.put("avgCount", avgCount);
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 41d4ce9..62929dd 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDelayCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDelayCalculation.java
@@ -71,7 +71,7 @@
// 澶勭悊鐪佸巺鏁版嵁
if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) {
- String provinceKey = "Province_" + deptId;
+ String provinceKey = ApiConstants.Province + deptId;
updateAreaStats(areaStatsMap, provinceKey, result);
}
}
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 1b36b5b..f9cb60e 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java
@@ -4,6 +4,7 @@
import com.ycl.platform.base.CheckIndex;
import com.ycl.platform.domain.entity.YwPoint;
import com.ycl.platform.mapper.YwPointMapper;
+import constant.ApiConstants;
import constant.CheckConstants;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -25,6 +26,13 @@
public class IndexCalculationServe {
@Autowired
private YwPointMapper pointMapper;
+
+ //涓�鏈轰竴妗e悎鏍肩巼
+ public BigDecimal monitorQualify(Map<String, Object> param) {
+ BigDecimal totalMonitors = new BigDecimal((Integer) param.get("totalMonitors"));
+ BigDecimal qualifyMonitor = new BigDecimal((Integer) param.get("qualifyMonitor"));
+ return qualifyMonitor.divide(totalMonitors, 4, RoundingMode.HALF_UP);
+ }
//鐐逛綅鍦ㄧ嚎鐜�
public BigDecimal siteOnline(Map<String, Object> param) {
@@ -136,7 +144,7 @@
// 妫�鏌ユ槸鍚﹀凡瀛樺湪浠婃棩鏁版嵁
Optional<T> existingIndex = checkIndexList.stream()
.filter(index -> key.equals(index.getDeptId().toString()) &&
- (key.startsWith("Province_") ? CheckConstants.Examine_Tag_Province.equals(index.getExamineTag())
+ (key.startsWith(ApiConstants.Province) ? CheckConstants.Examine_Tag_Province.equals(index.getExamineTag())
: CheckConstants.Examine_Tag_County.equals(index.getExamineTag())))
.findFirst();
@@ -145,8 +153,8 @@
} else {
try {
checkIndex = clazz.getDeclaredConstructor().newInstance();
- checkIndex.setDeptId(key.startsWith("Province_") ? Long.parseLong(key.split("_")[1]) : Long.parseLong(key));
- checkIndex.setExamineTag(key.startsWith("Province_") ? CheckConstants.Examine_Tag_Province : CheckConstants.Examine_Tag_County);
+ checkIndex.setDeptId(key.startsWith(ApiConstants.Province ) ? Long.parseLong(key.split("_")[1]) : Long.parseLong(key));
+ checkIndex.setExamineTag(key.startsWith(ApiConstants.Province ) ? CheckConstants.Examine_Tag_Province : CheckConstants.Examine_Tag_County);
checkIndex.setCreateTime(new Date());
} catch (Exception e) {
checkIndex = null;
diff --git a/ycl-server/src/main/java/com/ycl/calculate/MonitorQualifyCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/MonitorQualifyCalculation.java
new file mode 100644
index 0000000..484ae15
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/calculate/MonitorQualifyCalculation.java
@@ -0,0 +1,138 @@
+package com.ycl.calculate;
+
+import com.ycl.platform.domain.entity.CheckIndexVideo;
+import com.ycl.platform.domain.result.UY.MonitorQualifyResult;
+import com.ycl.platform.domain.result.UY.QueryVqdResult;
+import com.ycl.platform.domain.vo.TMonitorVO;
+import com.ycl.platform.mapper.CheckIndexVideoMapper;
+import com.ycl.platform.mapper.TMonitorMapper;
+import com.ycl.platform.service.ICheckIndexVideoService;
+import constant.ApiConstants;
+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.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * 璁$畻涓�鏈轰竴妗e悎鏍肩巼
+ * 鑾峰彇鍒嗙渷鍘呫�佸尯鍩熺殑map<k,v> k涓篸eptId鎴栬�匬rovince_deptId
+ * 寰幆map璁$畻鏁版嵁涓婁紶鍙婃椂鎬�
+ * 鏇存柊鎴栨柊澧�
+ */
+@Component
+public class MonitorQualifyCalculation extends IndexCalculationServe implements CalculationStrategy<MonitorQualifyResult> {
+ @Autowired
+ private CheckIndexVideoMapper checkIndexVideoMapper;
+ @Autowired
+ private TMonitorMapper monitorMapper;
+ @Autowired
+ private ICheckIndexVideoService checkIndexVideoService;
+
+ //鍖哄煙瑙嗛鍦ㄧ嚎鐜囩殑鍐呴儴绫�
+ private static class AreaStats {
+ //鎬绘。妗堟暟
+ int totalMonitors = 0;
+ //鍚堟牸妗f鏁�
+ int qualifyMonitor = 0;
+ }
+
+ @Override
+ public void calculate(List<MonitorQualifyResult> list) {
+ if (CollectionUtils.isEmpty(list)) {
+ return;
+ }
+
+ //鑾峰緱鍥芥爣鐮佷负key鐨勮澶噈ap
+ Map<String, TMonitorVO> monitorMap = monitorMapper.selectListByIds(list.stream().map(result -> result.getSerialNumber().getValue()).collect(Collectors.toList()))
+ .stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
+ //鑾峰彇鐪佸巺鍥芥爣鐮侀泦鍚�
+ List<String> provinceIds = getProvince();
+
+ Map<String, AreaStats> areaStatsMap = new HashMap<>();
+ for (MonitorQualifyResult result : list) {
+ TMonitorVO monitor = monitorMap.get(result.getSerialNumber().getValue());
+ if (monitor == null) continue;
+
+ String deptId = monitor.getDeptId().toString();
+ updateAreaStats(areaStatsMap, deptId, result);
+
+ // 澶勭悊鐪佸巺鏁版嵁
+ if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) {
+ String provinceKey = ApiConstants.Province + deptId;
+ updateAreaStats(areaStatsMap, provinceKey, result);
+ }
+ }
+
+ // 鏌ヨ鏄惁index琛ㄥ凡缁忓瓨鍦ㄤ粖鏃ユ暟鎹�
+ List<CheckIndexVideo> checkIndexVideoList = checkIndexVideoMapper.selectToday(DateUtils.getDate());
+ List<CheckIndexVideo> checkIndexVideos = new ArrayList<>();
+ areaStatsMap.forEach((deptId, stats) -> {
+ if (stats.totalMonitors > 0) {
+ CheckIndexVideo CheckIndexVideo = createOrUpdateCheckIndexVideo(deptId, stats, checkIndexVideoList);
+ if (CheckIndexVideo != null) {
+ checkIndexVideos.add(CheckIndexVideo);
+ }
+ }
+ });
+
+ checkIndexVideoService.saveOrUpdateBatch(checkIndexVideos);
+ }
+
+ /**
+ * 绱鎬绘。妗堟暟鍜屽悎鏍兼。妗堟暟
+ */
+ private void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, MonitorQualifyResult result) {
+ //杩斿洖瀵硅薄鐨勫紩鐢紝濡傛灉涓嶅瓨鍦ㄤ細鏀惧叆鏂扮殑key,value
+ AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats());
+ stats.totalMonitors++;
+ if (result != null && correct(result)){
+ stats.qualifyMonitor++;
+ }
+ }
+ //鍏ㄥ杩攖ure
+ private boolean correct(MonitorQualifyResult result) {
+ return checkError(result.getName()) &&
+ checkError(result.getCivilCode()) &&
+ checkError(result.getIp()) &&
+ checkError(result.getSerialNumber()) &&
+ checkError(result.getMacdz()) &&
+ checkError(result.getLatitude()) &&
+ checkError(result.getLongitude()) &&
+ checkError(result.getSbzt()) &&
+ checkError(result.getSxjcjqy()) &&
+ checkError(result.getSxjgnlx()) &&
+ checkError(result.getJkdwlx()) &&
+ checkError(result.getIntegrated_device())
+ ;
+ }
+
+ //妫�鏌ユ寚鏍囷紝姝e父杩斿洖true
+ private boolean checkError(MonitorQualifyResult.QualifyResult result) {
+ return result.getError() != null && !result.getError();
+ }
+
+ /**
+ * 涓�鏈轰竴妗e悎鏍肩巼
+ */
+ private CheckIndexVideo createOrUpdateCheckIndexVideo(String key, AreaStats stats, List<CheckIndexVideo> checkIndexVideoList) {
+ CheckIndexVideo checkIndexVideo = getCheckIndex(key, checkIndexVideoList, CheckIndexVideo.class);
+ if (checkIndexVideo == null) {
+ return null;
+ }
+ //璋冪敤涓�鏈轰竴妗e悎鏍肩巼璁$畻鏂规硶
+ Map<String, Object> param = new HashMap<>();
+ param.put("totalMonitors", stats.totalMonitors);
+ param.put("qualifyMonitor", stats.qualifyMonitor);
+ BigDecimal index = monitorQualify(param);
+ checkIndexVideo.setMonitorQualification(index);
+ return checkIndexVideo;
+ }
+}
diff --git a/ycl-server/src/main/java/com/ycl/calculate/PlatformOnlineCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/PlatformOnlineCalculation.java
index 2ae0bfb..6514277 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/PlatformOnlineCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/PlatformOnlineCalculation.java
@@ -1,13 +1,67 @@
package com.ycl.calculate;
+import com.ycl.platform.domain.entity.CheckIndexVideo;
import com.ycl.platform.domain.result.UY.QueryVqdResult;
+import com.ycl.platform.domain.vo.PlatformOnlineVO;
+import com.ycl.platform.mapper.CheckIndexVideoMapper;
+import com.ycl.platform.service.ICheckIndexVideoService;
+import com.ycl.system.mapper.SysDeptMapper;
+import constant.ApiConstants;
+import constant.CheckConstants;
+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.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
-public class PlatformOnlineCalculation extends IndexCalculationServe implements CalculationStrategy<QueryVqdResult> {
+/**
+ * 骞冲彴鍦ㄧ嚎鐜囪绠�
+ * 绂荤嚎鏃堕暱姣忚秴杩�30鍒嗛挓鎵g櫨鍒嗕箣鍗�
+ * 涓嶅尯鍒嗗尯鍩�
+ */
+@Component
+public class PlatformOnlineCalculation extends IndexCalculationServe implements CalculationStrategy<PlatformOnlineVO> {
+ @Autowired
+ private SysDeptMapper deptMapper;
+ @Autowired
+ private CheckIndexVideoMapper videoMapper;
+ @Autowired
+ private ICheckIndexVideoService checkIndexVideoService;
@Override
- public void calculate(List<QueryVqdResult> list) {
+ public void calculate(List<PlatformOnlineVO> list) {
+ if (!CollectionUtils.isEmpty(list)) {
+ //鎬荤绾挎椂闀�
+ int time = list.stream().map(PlatformOnlineVO::getTodayOutlineSed).reduce(0, Integer::sum);
+ //绂荤嚎鏃堕暱杞崲浣嶅垎閽熺劧鍚庡彇妯�
+ int num = (time / 60) % 30;
+ double score = Math.max(1 - num * 0.1, 0);
+ //鏄惁宸茬粡瀛樺湪褰撴棩鏁版嵁
+ List<CheckIndexVideo> checkIndexVideos = videoMapper.selectToday(DateUtils.getDate());
+ //鎵�鏈夊尯鍩熼儴闂�
+ List<Long> deptIds = deptMapper.selectByParentId(207L);
+ List<String> keys = new ArrayList<>();
+ //鍑嗗鍖哄垎鐪佸巺銆佸尯鍩熺殑deptId list
+ for (Long deptId : deptIds) {
+ keys.add(deptId + "");
+ keys.add(ApiConstants.Province + deptId);
+ }
+ List<CheckIndexVideo> videos = new ArrayList<>();
+ keys.forEach(key -> {
+ //濡傛灉涓嶅瓨鍦ㄥ氨鏂板濡傛灉瀛樺湪鍒欏鐢�
+ CheckIndexVideo checkIndex = getCheckIndex(key, checkIndexVideos, CheckIndexVideo.class);
+ if (checkIndex != null) {
+ checkIndex.setPlatformOnline(new BigDecimal(score));
+ videos.add(checkIndex);
+ }
+ });
+ checkIndexVideoService.saveOrUpdateBatch(videos);
+ }
}
}
diff --git a/ycl-server/src/main/java/com/ycl/calculate/VideoOnlineCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/VideoOnlineCalculation.java
index 64a724b..6258a85 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/VideoOnlineCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/VideoOnlineCalculation.java
@@ -74,7 +74,7 @@
// 澶勭悊鐪佸巺鏁版嵁
if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) {
- String provinceKey = "Province_" + deptId;
+ String provinceKey = ApiConstants.Province + deptId;
updateAreaStats(areaStatsMap, provinceKey, result, important);
}
}
diff --git a/ycl-server/src/main/java/com/ycl/calculate/VideoUsabilityCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/VideoUsabilityCalculation.java
index 1e30c0e..1b267fc 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/VideoUsabilityCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/VideoUsabilityCalculation.java
@@ -72,7 +72,7 @@
// 澶勭悊鐪佸巺鏁版嵁
if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) {
- String provinceKey = "Province_" + deptId;
+ String provinceKey = ApiConstants.Province + deptId;
updateAreaStats(areaStatsMap, provinceKey, result, important);
}
}
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 e28b42e..196a70d 100644
--- a/ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java
+++ b/ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java
@@ -1,6 +1,7 @@
package com.ycl.factory;
import com.ycl.calculate.*;
+import com.ycl.platform.domain.result.UY.VideoQualityResult;
import constant.CalculationStrategyConstants;
import java.util.HashMap;
@@ -36,11 +37,14 @@
calculators.put(CalculationStrategyConstants.Face_ClockAccuracy, new FaceClockAccuracyCalculation());
//TODO锛氫汉鑴哥洰褰曚竴鑷�
+ //涓�鏈轰竴妗e悎鏍肩巼
+ calculators.put(CalculationStrategyConstants.Video_MonitorQualify, new MonitorQualifyCalculation());
//瑙嗛鐐逛綅鍦ㄧ嚎鐜�
calculators.put(CalculationStrategyConstants.Video_SiteOnline, new VideoOnlineCalculation());
//瑙嗛褰曞儚鍙敤鐜�
calculators.put(CalculationStrategyConstants.Video_Usability, new VideoUsabilityCalculation());
-
+ //骞冲彴鍦ㄧ嚎鐜�
+ calculators.put(CalculationStrategyConstants.Video_PlatformOnline,new PlatformOnlineCalculation());
}
public static CalculationStrategy getCalculator(String indexName) {
diff --git a/ycl-server/src/main/java/com/ycl/task/MonitorTask.java b/ycl-server/src/main/java/com/ycl/task/MonitorTask.java
index bce6e07..25d072f 100644
--- a/ycl-server/src/main/java/com/ycl/task/MonitorTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/MonitorTask.java
@@ -54,7 +54,7 @@
Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
List<OneMachineFileResult> oneMachineFileResults = mongoTemplate.find(query, OneMachineFileResult.class);
//鏁版嵁搴搈onitor琛ㄦ暟鎹�
- List<String> serialNumberInBase = monitorService.selectTMonitorList(null).stream().map(TMonitorVO::getSerialNumber).collect(Collectors.toList());
+ Map<String, TMonitorVO> monitorVOMap = monitorService.selectTMonitorList(null).stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
//鍑嗗鎻掑叆璁惧琛ㄧ殑鏁版嵁
List<TMonitor> monitorList = new ArrayList<>();
//鍑嗗鎻掑叆鐐逛綅琛ㄧ殑鏁版嵁
@@ -68,24 +68,27 @@
sysDictData.setDictType("platform_important_site");
List<SysDictData> DictDataList = dictDataService.selectDictDataList(sysDictData);
List<String> importantSite = DictDataList.stream().map(SysDictData::getDictValue).collect(Collectors.toList());
+
+ //TODO:鍏ㄥ勾鐣欏瓨杩樻槸鍗曟鐣欏瓨
for (OneMachineFileResult result : oneMachineFileResults) {
- TMonitor monitor = getMonitor(result);
+ TMonitor monitor = getMonitor(result,monitorVOMap);
YwPoint point = getPoint(result, pointMap, importantSite);
monitorList.add(monitor);
+ ywPointList.add(point);
//姣斿绛涢�夊嚭鏂扮殑鏁版嵁
- if (!CollectionUtils.isEmpty(serialNumberInBase) && !serialNumberInBase.contains(result.getSBBM())) {
+ if (!CollectionUtils.isEmpty(monitorVOMap) && !monitorVOMap.containsKey(result.getSBBM())) {
newMonitorList.add(monitor);
}
}
//鎻掑叆鏁版嵁搴�
if (!CollectionUtils.isEmpty(monitorList)) {
- monitorService.deleteTMonitorById(null);
- monitorService.saveBatch(monitorList);
+ monitorService.saveOrUpdateBatch(monitorList);
+ }
+ if(!CollectionUtils.isEmpty(ywPointList)){
+ ywPointService.saveOrUpdateBatch(ywPointList);
}
//鏂扮殑鏁版嵁鏀惧叆Redis涓瓑寰呰�冩牳鎸囨爣浠诲姟浣跨敤
redisTemplate.opsForValue().set(RedisConstant.New_Monitor_Set, JSONArray.toJSONString(newMonitorList));
-
-
}
private YwPoint getPoint(OneMachineFileResult result, Map<String, YwPoint> pointMap, List<String> importantSite) {
@@ -108,15 +111,22 @@
//瑙f瀽deptId
//鍖哄煙琛屾斂缂栫爜
String areaCode = result.getSBBM().substring(0, 6);
- Integer deptId = AreaDeptEnum.fromCode(areaCode).getDeptId();
- if (deptId != null) {
- ywPoint.setDeptId(Long.valueOf(deptId + ""));
+ AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(areaCode);
+ //濡傛灉瑙f瀽涓嶅嚭鍖哄煙deptId涓�-1
+ Integer deptId = -1;
+ if(areaDeptEnum!=null){
+ deptId = areaDeptEnum.getDeptId();
}
+ ywPoint.setDeptId(Long.valueOf(deptId + ""));
+
return ywPoint;
}
- private TMonitor getMonitor(OneMachineFileResult result) {
+ private TMonitor getMonitor(OneMachineFileResult result, Map<String, TMonitorVO> monitorVOMap) {
TMonitor monitor = new TMonitor();
+ if (monitorVOMap.containsKey(result.getSBBM())) {
+ monitor.setId(monitorVOMap.get(result.getSBBM()).getId());
+ }
monitor.setSerialNumber(result.getSBBM());
monitor.setName(result.getSBMC());
monitor.setSiteType(Long.valueOf(result.getJKDWLX()));
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 827d57a..fe804d8 100644
--- a/ycl-server/src/main/java/com/ycl/task/VideoTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/VideoTask.java
@@ -6,6 +6,7 @@
import com.ycl.platform.domain.entity.CheckIndexVideo;
import com.ycl.platform.domain.param.UY.RecordMetaDSumParam;
import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult;
+import com.ycl.platform.domain.result.UY.MonitorQualifyResult;
import com.ycl.platform.domain.result.UY.QueryVqdResult;
import com.ycl.platform.domain.vo.PlatformOnlineVO;
import com.ycl.platform.mapper.CheckIndexVideoMapper;
@@ -41,14 +42,11 @@
private MongoTemplate mongoTemplate;
@Autowired
private PlatformOnlineMapper platformOnlineMapper;
- @Autowired
- private CheckIndexVideoMapper videoMapper;
- @Autowired
- private SysDeptMapper deptMapper;
+
public void siteOnlineTask() {
Date yesterday = DateUtils.addDays(new Date(), -1);
- //璁$畻鐐逛綅鍦ㄧ嚎鐜囧拰閲嶇偣鐐逛綅鍦ㄧ嚎鐜�
+ //TODO锛氳绠楃偣浣嶅湪绾跨巼鍜岄噸鐐圭偣浣嶅湪绾跨巼
Query query = new Query();
query.addCriteria(Criteria
.where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday)));
@@ -71,31 +69,26 @@
}
public void oneMonitorFileTask() {
- //璁$畻涓�鏈轰竴妗f敞鍐岀巼銆佷竴鏈轰竴妗e悎鏍肩巼銆佹。妗堣�冩牳姣�
+ //璁$畻涓�鏈轰竴妗f敞鍐岀巼銆佹。妗堣�冩牳姣�
+
}
+ public void oneMonitorQualifyTask(){
+ //璁$畻涓�鏈轰竴妗e悎鏍肩巼
+ Date yesterday = DateUtils.addDays(new Date(), -1);
+ Query query = new Query();
+ query.addCriteria(Criteria
+ .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday)));
+ List<MonitorQualifyResult> results = mongoTemplate.find(query, MonitorQualifyResult.class);
+ CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Video_MonitorQualify);
+ calculator.calculate(results);
+ }
public void platformOnlineTask() {
//璁$畻骞冲彴鍦ㄧ嚎鐜�
- //鎷垮埌浠婃棩绂荤嚎鏃堕暱鏁版嵁
List<PlatformOnlineVO> list = platformOnlineMapper.sumYesterday(DateUtils.getMouthStart(new Date()), DateUtils.getMouthEnd(new Date()));
-
-// int num = (time / 60) % 30;
-// double score = Math.max(1 - num * 0.1, 0);
-// List<CheckIndexVideo> checkIndexVideos = videoMapper.selectToday(DateUtils.getDate());
-// List<Long> deptIds = deptMapper.selectByParentId(207L);
-// Map<String, CheckIndexVideo> map = new HashMap<>();
-// for (Long deptId : deptIds) {
-// CheckIndexVideo video = new CheckIndexVideo();
-// video.setExamineTag(CheckConstants.Examine_Tag_County);
-// map.put(deptId + "", video);
-// CheckIndexVideo provinceVideo = new CheckIndexVideo();
-// provinceVideo.setExamineTag(CheckConstants.Examine_Tag_Province);
-// map.put("Province_" + deptId, new CheckIndexVideo());
-// }
-// map.forEach((deptId, video) -> {
-//
-// });
-
-
+ CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Video_PlatformOnline);
+ calculator.calculate(list);
}
+
+
}
--
Gitblit v1.8.0