From fdcdd41fba7874c045766e3dea54d56d70df73ef Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期一, 12 五月 2025 10:06:50 +0800
Subject: [PATCH] (部级录像可用率,重点录像可用率,录像可用率)计算可用率
---
ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java | 94 +++++++++++++++++++++++++++++++++++++++-------
1 files changed, 79 insertions(+), 15 deletions(-)
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java
index 65543d8..f2297b8 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java
@@ -1261,6 +1261,21 @@
}
private final ISysConfigService configService;
+
+ public double getSySMinTime(){
+ //鑾峰彇绯荤粺鍙傛暟
+ String dictLabel = configService.selectConfigByKey("recording_min_time");
+ double recordingMinTime;
+ try {
+ recordingMinTime = Double.parseDouble(dictLabel) / 60; // 濡傛灉 dictLabel 鏄互灏忔椂涓哄崟浣嶏紝鍒欐棤闇�闄や互 60
+ } catch (Exception e) {
+ log.error("閰嶇疆鐨勫垹闄ゆ椂闂磋寖鍥存牸寮忎笉姝g‘: {}", dictLabel, e);
+ return 12.0; // 榛樿 12 灏忔椂锛堜互灏忔椂涓哄崟浣嶏級
+ }
+
+ return recordingMinTime;
+ }
+
/**
* 瑙嗛锛氬綍鍍忓彲鐢ㄧ巼
*
@@ -1268,18 +1283,10 @@
* @return
*/
@Override
-
public Result videoAvailabilityRate(DataCenterQuery params) {
- //鑾峰彇绯荤粺鍙傛暟
- String dictLabel = configService.selectConfigByKey("recording_min_time");
- double recordingMinTime;
- try {
- recordingMinTime = Double.parseDouble(dictLabel) / 60; // 濡傛灉 dictLabel 鏄互灏忔椂涓哄崟浣嶏紝鍒欐棤闇�闄や互 60
- } catch (Exception e) {
- log.error("閰嶇疆鐨勫垹闄ゆ椂闂磋寖鍥存牸寮忎笉姝g‘: {}", dictLabel, e);
- recordingMinTime = 12.0; // 榛樿 12 灏忔椂锛堜互灏忔椂涓哄崟浣嶏級
- }
+
+
List<String> likeFileds = Arrays.asList("deviceId", "deviceName");
Query query = MongoUtil.getQuery(params, "createTime", likeFileds, null);
@@ -1333,12 +1340,13 @@
MongoDatabase databaes2 = mongoTemplate.getDb();
MongoCollection<Document> collection2 = databaes2.getCollection("uy_record_meta_d_sum");
- double finalRecordingMinTime = recordingMinTime;
+ double finalRecordingMinTime = getSySMinTime();
- List<Document> documentList = new ArrayList<>(3);
+ List<Document> documentList = new ArrayList<>(2);
setTag(params, documentList);
Document recording = new Document("recordDuration",new Document("$gte", finalRecordingMinTime));
documentList.add(recording);
+
Document filter = new Document("$and", documentList);
// 鏋勫缓鑱氬悎绠¢亾
List<Document> pipeline = Arrays.asList(
@@ -1353,7 +1361,7 @@
uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
}
- log.error("鎵撳嵃锛歿}",uniqueDeviceIdCount);
+ log.error("褰曞儚鍙敤鐜囨墦鍗帮細{}",uniqueDeviceIdCount);
// List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
// .select(CheckIndexVideo::getVideoAvailable)
// .eq(params.getDataType().equals(1), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Province)
@@ -1378,6 +1386,7 @@
// 1锛氬畬鏁� 0锛氶棿姝� -1锛氬紓甯� |
if (!StringUtils.isEmpty(resultCount.get(0)) && !"0".equals(resultCount.get(0))) {
+ //resultCount.get(0)鏄�绘暟 uniqueDeviceIdCount鏄洿鍏风郴缁熷弬鏁版煡璇㈠埌mongodb涓ぇ浜庣瓑浜� recordDuration瀛楁鐨勬�绘暟
onlineRate = new BigDecimal(uniqueDeviceIdCount).divide(new BigDecimal(resultCount.get(0)), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
resultCount.add(this.remove0(onlineRate));
@@ -1438,6 +1447,35 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
+
+ //璁$畻閮ㄧ骇褰曞儚鍙敤鐜�
+ MongoDatabase database2 = mongoTemplate.getDb();
+ MongoCollection<Document> collection2 = database2.getCollection("uy_record_meta_d_sum");
+ double finalRecordingMinTime = getSySMinTime();
+
+ List<Document> documentList = new ArrayList<>(4);
+ documentList.add(new Document("deptTag", new Document("$eq", Boolean.TRUE)));
+ setTag(params, documentList);
+ Document recording = new Document("recordDuration",new Document("$gte", finalRecordingMinTime));
+ documentList.add(recording);
+ Document filter = new Document("$and", documentList);
+ // 鏋勫缓鑱氬悎绠¢亾
+ List<Document> pipeline = Arrays.asList(
+ new Document("$match", filter),
+ // $group 鍘婚噸
+ new Document("$group", new Document("_id", "$deviceId")),
+ new Document("$count", "uniqueDeviceIds")
+ );
+ AggregateIterable<Document> result = collection2.aggregate(pipeline);
+ Integer uniqueDeviceIdCount = 0;
+ for (Document doc : result) {
+ uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
+ break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
+ }
+ log.error("閮ㄧ骇褰曞儚鍙敤鐜噞}:",uniqueDeviceIdCount);
+
+
+
// List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
// .select(CheckIndexVideo::getMinistryVideoAvailable)
// .eq(params.getDataType().equals(1), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Province)
@@ -1458,7 +1496,7 @@
resultCount.add(0, totalCount + "");
BigDecimal onlineRate = BigDecimal.ZERO;
if (!StringUtils.isEmpty(resultCount.get(0)) && !"0".equals(resultCount.get(0))) {
- onlineRate = new BigDecimal(resultCount.get(1)).divide(new BigDecimal(resultCount.get(0)), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
+ onlineRate = new BigDecimal(uniqueDeviceIdCount).divide(new BigDecimal(resultCount.get(0)), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
resultCount.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
@@ -1517,6 +1555,32 @@
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
+ //璁$畻閲嶇偣鐐逛綅褰曞儚鍙敤鐜�
+ MongoDatabase database2 = mongoTemplate.getDb();
+ MongoCollection<Document> collection2 = database2.getCollection("uy_record_meta_d_sum");
+ double finalRecordingMinTime = getSySMinTime();
+
+ List<Document> documentList = new ArrayList<>(4);
+ documentList.add(new Document("importantTag", new Document("$eq", Boolean.TRUE)));
+ setTag(params, documentList);
+ Document recording = new Document("recordDuration",new Document("$gte", finalRecordingMinTime));
+ documentList.add(recording);
+ Document filter = new Document("$and", documentList);
+ // 鏋勫缓鑱氬悎绠¢亾
+ List<Document> pipeline = Arrays.asList(
+ new Document("$match", filter),
+ // $group 鍘婚噸
+ new Document("$group", new Document("_id", "$deviceId")),
+ new Document("$count", "uniqueDeviceIds")
+ );
+ AggregateIterable<Document> result = collection2.aggregate(pipeline);
+ Integer uniqueDeviceIdCount = 0;
+ for (Document doc : result) {
+ uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
+ break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
+ }
+ log.error("閲嶇偣鐐逛綅褰曞儚鍙敤鐜噞}:",uniqueDeviceIdCount);
+
// List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
// .select(CheckIndexVideo::getKeyVideoAvailable)
// .eq(params.getDataType().equals(1), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Province)
@@ -1537,7 +1601,7 @@
resultCount.add(0, totalCount + "");
BigDecimal onlineRate = BigDecimal.ZERO;
if (!StringUtils.isEmpty(resultCount.get(0)) && !"0".equals(resultCount.get(0))) {
- onlineRate = new BigDecimal(resultCount.get(1)).divide(new BigDecimal(resultCount.get(0)), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
+ onlineRate = new BigDecimal(uniqueDeviceIdCount).divide(new BigDecimal(resultCount.get(0)), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
resultCount.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
--
Gitblit v1.8.0