From 6a5f0032e2903c64966a68dd3639b049c7a40b85 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期一, 28 四月 2025 09:21:48 +0800
Subject: [PATCH] 手册,海康接口调整
---
ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java | 42 ++++++++++++++++++++++++++++++++++++++++--
1 files changed, 40 insertions(+), 2 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 9d9f588..0be079c 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
@@ -23,6 +23,7 @@
import com.ycl.platform.mapper.YwPointMapper;
import com.ycl.platform.service.*;
import com.ycl.system.Result;
+import com.ycl.system.service.ISysConfigService;
import com.ycl.utils.DateUtils;
import com.ycl.utils.MongoUtil;
import com.ycl.utils.StringUtils;
@@ -1259,6 +1260,7 @@
return Result.ok().data(map).total(total);
}
+ private final ISysConfigService configService;
/**
* 瑙嗛锛氬綍鍍忓彲鐢ㄧ巼
*
@@ -1268,6 +1270,17 @@
@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);
//涓嬫媺妗嗗綍鍍忔儏鍐垫煡璇㈡潯浠�
@@ -1315,6 +1328,32 @@
}
return uniqueDeviceIdCount + "";
}).collect(Collectors.toList());
+
+ //璁$畻褰曞儚鍙敤鐜�
+ MongoDatabase databaes2 = mongoTemplate.getDb();
+ MongoCollection<Document> collection2 = databaes2.getCollection("uy_record_meta_d_sum");
+
+ double finalRecordingMinTime = recordingMinTime;
+
+ List<Document> documentList = new ArrayList<>(3);
+ 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::getVideoAvailable)
// .eq(params.getDataType().equals(1), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Province)
@@ -1338,12 +1377,11 @@
// 1锛氬畬鏁� 0锛氶棿姝� -1锛氬紓甯� |
if (!StringUtils.isEmpty(resultCount.get(0)) && !"0".equals(resultCount.get(0))) {
//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(resultCount.get(1)).divide(new BigDecimal(uniqueDeviceIdCount), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
}
resultCount.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
- log.error("resultCount:{}",resultCount.get(3));
map.put("count", resultCount);
map.put("list", resultList);
return Result.ok().data(map).total(total);
--
Gitblit v1.8.0