From 2f3bbf0372e5c1f8b6b1426db2c14b3595cb0968 Mon Sep 17 00:00:00 2001 From: zxl <763096477@qq.com> Date: 星期三, 30 四月 2025 17:10:52 +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