From 71f61d13531b3e2a0099ba5afe3f268c99c5bacf Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期四, 29 五月 2025 18:13:33 +0800
Subject: [PATCH] 修改大屏录像可用率指标,点位在线指标,数据中心录像可用率,
---
ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java | 2
ycl-server/src/main/java/com/ycl/platform/service/impl/CheckIndexVideoServiceImpl.java | 28 +++++
ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java | 2
ycl-server/src/main/java/com/ycl/task/UYTask.java | 12 +
ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java | 219 ++++++++++++++++++++++++++++++++++---------
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml | 12 ++
ycl-server/src/main/java/com/ycl/platform/service/DataCenterService.java | 7 +
7 files changed, 229 insertions(+), 53 deletions(-)
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 42b764a..a6a4bbc 100644
--- a/ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java
+++ b/ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java
@@ -50,7 +50,7 @@
//浜鸿劯鐩綍涓�鑷�
calculatorClasses.put(CalculationStrategyConstants.Face_DirectConsistent, FaceConsistentCalculation.class);
- //涓�鏈轰竴妗f敞鍐岀巼銆佹。妗堣�冩牳姣�
+ //娉ㄥ唽鐜囥�佹。妗堣�冩牳姣�
calculatorClasses.put(CalculationStrategyConstants.Video_MonitorRegis_ArchiveRate,MonitorRegistrationCalculation.class);
//涓�鏈轰竴妗e悎鏍肩巼
calculatorClasses.put(CalculationStrategyConstants.Video_MonitorQualify, MonitorQualifyCalculation.class);
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
index 0bde409..1a13b60 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
@@ -137,6 +137,8 @@
void deleteAll();
+ Long getAllVideo();
+ List<String> getIdListVideo();
/**
* 鎵归噺淇敼璁惧鍘傚晢绫诲瀷
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/DataCenterService.java b/ycl-server/src/main/java/com/ycl/platform/service/DataCenterService.java
index a01b82d..9bb6299 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/DataCenterService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/DataCenterService.java
@@ -12,6 +12,7 @@
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
+import java.math.BigDecimal;
import java.util.List;
/**
@@ -30,6 +31,9 @@
void pointOnlineCarExport(HttpServletResponse response, DataCenterQuery query) throws IOException;
Result updateDynamicValue(UpdateDynamicValueForm form);
+
+ //zxl
+ BigDecimal videoPointOnlineRateCount(DataCenterQuery params);
/**
* 瑙嗛锛氱偣浣嶅湪绾跨巼
@@ -72,6 +76,9 @@
*/
Result videoAssessmentFileRatio(DataCenterQuery query);
+ //zxl
+ BigDecimal videoAvailabilityRateCount(DataCenterQuery params);
+
/**
* 瑙嗛锛氬綍鍍忓彲鐢ㄧ巼
*
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckIndexVideoServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckIndexVideoServiceImpl.java
index 10b5e63..5baab03 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckIndexVideoServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckIndexVideoServiceImpl.java
@@ -3,12 +3,16 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.platform.domain.entity.CheckIndexVideo;
import com.ycl.platform.domain.query.DashboardQuery;
+import com.ycl.platform.domain.query.DataCenterQuery;
import com.ycl.platform.mapper.CheckIndexVideoMapper;
+import com.ycl.platform.service.DataCenterService;
import com.ycl.platform.service.ICheckIndexVideoService;
+import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import utils.DateUtils;
+import java.util.Date;
import java.util.List;
/**
@@ -18,6 +22,7 @@
* @date 2024-04-29
*/
@Service
+@RequiredArgsConstructor
public class CheckIndexVideoServiceImpl extends ServiceImpl<CheckIndexVideoMapper, CheckIndexVideo> implements ICheckIndexVideoService
{
@Autowired
@@ -96,8 +101,31 @@
return checkIndexVideoMapper.deleteCheckIndexVideoById(id);
}
+ public final DataCenterService dataCenterService;
@Override
public CheckIndexVideo dashboard(DashboardQuery dashboardQuery) {
+ //淇敼 褰曞儚鍙敤鐜� 鍜� 鐐逛綅鍦ㄧ嚎鐜囧湪浠婂ぉ
+ if(dashboardQuery.getDeptId() == null){
+ DataCenterQuery dataCenterQuery = new DataCenterQuery();
+ dataCenterQuery.setDate(new Date());
+ dataCenterQuery.setTime();
+ //鍖哄幙 2 鐪佸巺 1 鍏畨閮�3
+ if(dashboardQuery.getDataScope() == 2){
+ dataCenterQuery.setDataType(0);
+ }else if(dashboardQuery.getDataScope() == 1){
+ dataCenterQuery.setDataType(1);
+ }else if(dashboardQuery.getDataScope() == 3){
+ dataCenterQuery.setDataType(2);
+ }
+ //鍏ㄩ儴0 鐪佸巺1 鍏畨閮�2
+
+ CheckIndexVideo checkIndexVideo = checkIndexVideoMapper.dashboard(dashboardQuery);
+ checkIndexVideo.setSiteOnline(dataCenterService.videoPointOnlineRateCount(dataCenterQuery));
+
+ checkIndexVideo.setVideoAvailable(dataCenterService.videoAvailabilityRateCount(dataCenterQuery));
+ return checkIndexVideo;
+
+ }
return checkIndexVideoMapper.dashboard(dashboardQuery);
}
}
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 1397a1e..aff9843 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
@@ -20,6 +20,7 @@
import com.ycl.platform.domain.vo.DynamicColumnVO;
import com.ycl.platform.mapper.DynamicColumnMapper;
import com.ycl.platform.mapper.ImageResourceSecurityDetailMapper;
+import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.mapper.YwPointMapper;
import com.ycl.platform.service.*;
import com.ycl.system.Result;
@@ -66,7 +67,6 @@
private final MongoTemplate mongoTemplate;
private final ImageResourceSecurityDetailMapper securityDetailMapper;
private final YwPointMapper pointMapper;
- private final ICheckIndexVideoService checkIndexVideoService;
private final ICheckIndexCarService checkIndexCarService;
private final ICheckIndexFaceService checkIndexFaceService;
private final DynamicColumnMapper dynamicColumnMapper;
@@ -630,6 +630,50 @@
+ }
+
+ //zxl
+ @Override
+ public BigDecimal videoPointOnlineRateCount(DataCenterQuery params){
+ //鍗$墖缁熻
+ int totalCount = 0;
+ int onlineCount = 0;
+ int offlineCount = 0;
+ int unknownCount = 0;
+ //鏋勫缓鏉′欢
+ List<Criteria> criteriaList = new ArrayList<>();
+ // 娣诲姞鍥哄畾鏉′欢
+ criteriaList.add(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Video + ".*"));
+ criteriaList.add(Criteria.where("mongoCreateTime").gte(params.getStartTime()).lte(params.getEndTime()));
+ // 鏍规嵁dataType鍔ㄦ�佹坊鍔犳潯浠�
+ if (params.getDataType() == 1) {
+ criteriaList.add(Criteria.where("provinceTag").is(Boolean.TRUE));
+ } else if (params.getDataType() == 2) {
+ criteriaList.add(Criteria.where("deptTag").is(Boolean.TRUE));
+ }
+ // 鏋勫缓match鎿嶄綔
+ MatchOperation match = Aggregation.match(
+ new Criteria().andOperator(criteriaList.toArray(new Criteria[0]))
+ );
+ GroupOperation group = Aggregation.group()
+ .sum(ConditionalOperators.when(Criteria.where("online").is(ApiConstants.UY_OnlineSite_Online)).then(1).otherwise(0)).as("onlineCount")
+ .sum(ConditionalOperators.when(Criteria.where("online").is(ApiConstants.UY_OnlineSite_Offline)).then(1).otherwise(0)).as("offlineCount")
+ .sum(ConditionalOperators.when(Criteria.where("online").is(ApiConstants.UY_OnlineSite_Unknown)).then(1).otherwise(0)).as("unknownCount");
+ // 灏嗗尮閰嶉樁娈靛拰鍒嗙粍闃舵缁勫悎璧锋潵
+ Aggregation aggregation = Aggregation.newAggregation(match, group);
+ // 鎵ц鑱氬悎鏌ヨ
+ AggregationResults<Map> results = mongoTemplate.aggregate(aggregation, "t_monitor_online", Map.class); // 鏇挎崲涓轰綘鐨勯泦鍚堝悕绉�
+ for (Map<String, Object> result : results.getMappedResults()) {
+ offlineCount = (Integer) result.getOrDefault("offlineCount", 0L);
+ unknownCount = (Integer) result.getOrDefault("unknownCount", 0L);
+ onlineCount = (Integer) result.getOrDefault("onlineCount", 0L);
+ totalCount = offlineCount + unknownCount + onlineCount;
+ }
+ BigDecimal onlineRate = BigDecimal.ZERO;
+ if (totalCount!=0) {
+ onlineRate = new BigDecimal(onlineCount).divide(new BigDecimal(totalCount), 3,RoundingMode.DOWN).multiply(new BigDecimal("100"));
+ }
+ return onlineRate;
}
/**
@@ -1370,45 +1414,23 @@
return recordingMinTime;
}
+ private final TMonitorMapper tMonitorMapper;
- /**
- * 瑙嗛锛氬綍鍍忓彲鐢ㄧ巼
- *
- * @param params
- * @return
- */
+ //zxl
@Override
- public Result videoAvailabilityRate(DataCenterQuery params) {
-
- List<String> likeFileds = Arrays.asList("deviceId", "deviceName");
- Query query = MongoUtil.getQuery(params, "createTime", likeFileds, null);
- //涓嬫媺妗嗗綍鍍忔儏鍐垫煡璇㈡潯浠�
- if (params.getOption() != null) {
- query.addCriteria(Criteria.where("recordStatus").is(params.getOption()));
- }
- long total = mongoTemplate.count(query, RecordMetaDSumResult.class);
- MongoUtil.setPage(query, params, "createTime");
- List<RecordMetaDSumResult> resultList = mongoTemplate.find(query, RecordMetaDSumResult.class);
- //鏌ヨ鍔ㄦ�佸垪鏁版嵁
- //鏌ヨ鍔ㄦ�佸垪鏁版嵁鏇村叿id鏌ヨ
-// List<DynamicColumnVO> dynamicColumnNames = dynamicColumnMapper.getDynamicColumnByTableName("uy_record_meta_d_sum");
- //缈昏瘧琛屾斂鍖哄煙
- resultList.forEach(item -> {
- String areaCode = item.getArealayername().substring(0, 6);
- AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(areaCode);
- if (areaDeptEnum != null) item.setArealayername(areaDeptEnum.getName());
-
- List<DynamicColumnVO> list = dynamicColumnMapper.getDynamicColumnByTable(TableNameConstants.COLUMN_NAME_VIDEO,item.getId());
- item.setDynamicColumnList(list);
-
- });
+ public BigDecimal videoAvailabilityRateCount(DataCenterQuery params){
+ System.out.println("------------------------------------------------------------------------------------");
+ System.out.println(params);
// 缁熻鏁伴噺
+ List<String> noString = tMonitorMapper.getIdListVideo();
MongoDatabase database = mongoTemplate.getDb();
MongoCollection<Document> collection = database.getCollection("uy_record_meta_d_sum");
List<Integer> status = Arrays.asList(1, 0, -1);
List<String> resultCount = status.stream().map(item -> {
List<Document> dList = new ArrayList<>(2);
+
dList.add(new Document("recordStatus", new Document("$eq", item)));
+ dList.add(new Document("no", new Document("$in", noString)));
setTag(params, dList);
Document filter = new Document("$and", dList);
// 鏋勫缓鑱氬悎绠¢亾
@@ -1435,8 +1457,9 @@
double finalRecordingMinTime = getSySMinTime();
List<Document> documentList = new ArrayList<>(2);
+ documentList.add(new Document("no", new Document("$in", noString)));
setTag(params, documentList);
- Document recording = new Document("recordDuration",new Document("$gte", finalRecordingMinTime));
+ Document recording = new Document("missDuration",new Document("$lte", finalRecordingMinTime));
documentList.add(recording);
Document filter = new Document("$and", documentList);
@@ -1448,25 +1471,13 @@
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)
-// .eq(params.getDataType().equals(2), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Dept)
-// .between(CheckIndexVideo::getCreateTime, DateUtils.getDayStart(params.getStartTime()), DateUtils.getDayEnd(params.getEndTime()))
-// .list();
-// BigDecimal onlineRate = BigDecimal.ZERO;
-// if (CollectionUtils.isNotEmpty(videoList)) {
-// BigDecimal sum = videoList.stream().map(CheckIndexVideo::getVideoAvailable).reduce(BigDecimal.ZERO, BigDecimal::add);
-// BigDecimal count = BigDecimal.valueOf(videoList.size());
-// onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
-// }
- //鍔犱竴涓�绘暟
int totalCount = 0;
for (String s : resultCount) {
totalCount += Integer.parseInt(s);
@@ -1474,8 +1485,120 @@
resultCount.add(0, totalCount + "");
BigDecimal onlineRate = BigDecimal.ZERO;
+// 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"));
+ }
+ System.out.println(resultCount);
+ System.out.println(onlineRate);
+ return onlineRate;
+ }
+
+
+ /**
+ * 瑙嗛锛氬綍鍍忓彲鐢ㄧ巼
+ *
+ * @param params
+ * @return
+ */
+ @Override
+ public Result videoAvailabilityRate(DataCenterQuery params) {
+ List<String> noString = tMonitorMapper.getIdListVideo();
+
+ List<String> likeFileds = Arrays.asList("deviceId", "deviceName");
+ Query query = MongoUtil.getQuery(params, "createTime", likeFileds, null);
+ if (CollectionUtils.isNotEmpty(noString)) { // 闃叉绌洪泦鍚堝紓甯�
+ query.addCriteria(Criteria.where("no").in(noString));
+ }
+ //涓嬫媺妗嗗綍鍍忔儏鍐垫煡璇㈡潯浠�
+ if (params.getOption() != null) {
+ query.addCriteria(Criteria.where("recordStatus").is(params.getOption()));
+ }
+ long total = mongoTemplate.count(query, RecordMetaDSumResult.class);
+ MongoUtil.setPage(query, params, "createTime");
+
+ List<RecordMetaDSumResult> resultList = mongoTemplate.find(query, RecordMetaDSumResult.class);
+ //鏌ヨ鍔ㄦ�佸垪鏁版嵁
+ //鏌ヨ鍔ㄦ�佸垪鏁版嵁鏇村叿id鏌ヨ
+// List<DynamicColumnVO> dynamicColumnNames = dynamicColumnMapper.getDynamicColumnByTableName("uy_record_meta_d_sum");
+ //缈昏瘧琛屾斂鍖哄煙
+ resultList.forEach(item -> {
+ String areaCode = item.getArealayername().substring(0, 6);
+ AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(areaCode);
+ if (areaDeptEnum != null) item.setArealayername(areaDeptEnum.getName());
+
+ List<DynamicColumnVO> list = dynamicColumnMapper.getDynamicColumnByTable(TableNameConstants.COLUMN_NAME_VIDEO,item.getId());
+ item.setDynamicColumnList(list);
+
+ });
+ // 缁熻鏁伴噺
+
+ MongoDatabase database = mongoTemplate.getDb();
+ MongoCollection<Document> collection = database.getCollection("uy_record_meta_d_sum");
+ List<Integer> status = Arrays.asList(1, 0, -1);
+ List<String> resultCount = status.stream().map(item -> {
+ List<Document> dList = new ArrayList<>(2);
+
+ dList.add(new Document("recordStatus", new Document("$eq", item)));
+ dList.add(new Document("no", new Document("$in", noString)));
+ setTag(params, dList);
+ Document filter = new Document("$and", dList);
+ // 鏋勫缓鑱氬悎绠¢亾
+ List<Document> pipeline = Arrays.asList(
+ new Document("$match", filter),
+ // $group 鍘婚噸
+ new Document("$group", new Document("_id", "$deviceId")),
+ new Document("$count", "uniqueDeviceIds")
+ );
+ // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
+ AggregateIterable<Document> result = collection.aggregate(pipeline);
+ Integer uniqueDeviceIdCount = 0;
+ for (Document doc : result) {
+ uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
+ break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
+ }
+ return uniqueDeviceIdCount + "";
+ }).collect(Collectors.toList());
+
+ //璁$畻褰曞儚鍙敤鐜�
+ MongoDatabase databaes2 = mongoTemplate.getDb();
+ MongoCollection<Document> collection2 = databaes2.getCollection("uy_record_meta_d_sum");
+
+ double finalRecordingMinTime = getSySMinTime();
+
+ List<Document> documentList = new ArrayList<>(2);
+ documentList.add(new Document("no", new Document("$in", noString)));
+ setTag(params, documentList);
+ Document recording = new Document("missDuration",new Document("$lte", 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);
+ int totalCount = 0;
+ for (String s : resultCount) {
+ totalCount += Integer.parseInt(s);
+ }
+ resultCount.add(0, totalCount + "");
+
+ BigDecimal onlineRate = BigDecimal.ZERO;
// 1锛氬畬鏁� 0锛氶棿姝� -1锛氬紓甯� |
if (!StringUtils.isEmpty(resultCount.get(0)) && !"0".equals(resultCount.get(0))) {
//resultCount.get(0)鏄�绘暟 uniqueDeviceIdCount鏄洿鍏风郴缁熷弬鏁版煡璇㈠埌mongodb涓ぇ浜庣瓑浜� recordDuration瀛楁鐨勬�绘暟
@@ -1548,7 +1671,7 @@
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));
+ Document recording = new Document("missDuration",new Document("$lte", finalRecordingMinTime));
documentList.add(recording);
Document filter = new Document("$and", documentList);
// 鏋勫缓鑱氬悎绠¢亾
@@ -1655,7 +1778,7 @@
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));
+ Document recording = new Document("missDuration",new Document("$lte", finalRecordingMinTime));
documentList.add(recording);
Document filter = new Document("$and", documentList);
// 鏋勫缓鑱氬悎绠¢亾
diff --git a/ycl-server/src/main/java/com/ycl/task/UYTask.java b/ycl-server/src/main/java/com/ycl/task/UYTask.java
index 1e2e4d6..e031afe 100644
--- a/ycl-server/src/main/java/com/ycl/task/UYTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -3,7 +3,6 @@
import com.alibaba.fastjson2.JSONObject;
import com.mongodb.client.result.DeleteResult;
import com.ycl.feign.UYClient;
-import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.entity.WorkOrder;
import com.ycl.platform.domain.param.UY.ImageDetectionParam;
import com.ycl.platform.domain.param.UY.MonitorQualifyParam;
@@ -28,9 +27,6 @@
import com.ycl.utils.DateUtils;
import constant.ApiConstants;
import constant.CheckConstants;
-import constant.RedisConstant;
-import enumeration.ErrorType;
-import enumeration.general.WorkOrderStatusEnum;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -46,6 +42,7 @@
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.*;
+import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -422,6 +419,7 @@
param.setStatTime(yesterday);
JSONObject jsonObject = uyClient.recordMetaDSumList(param);
double minTime = getSySMinTime();
+ AtomicReference<Integer> count = new AtomicReference<>(0);
if (jsonObject != null) {
if (ApiConstants.UYSuccessCodeStr.equals(jsonObject.getString("code"))) {
List<RecordMetaDSumResult> records = jsonObject.getList("data", RecordMetaDSumResult.class);
@@ -434,9 +432,13 @@
if (Objects.nonNull(item.getDeviceId())) {
item.setNo(item.getDeviceId());
}
+
//鍒ゆ柇 骞朵慨鏀瑰綍鍍忕己灏戠姸鎬�
if (item.getRecordStatus() != -1){
+
+ count.getAndSet(count.get() + 1);
if (item.getMissDuration() > minTime){
+ log.error("鏀瑰彉鏁版嵁status{}锛�",item.getRecordStatus());
item.setRecordStatus(0);
}else if (item.getMissDuration() < minTime){
item.setRecordStatus(1);
@@ -445,7 +447,9 @@
});
//鎵撴爣绛�
pointService.setDeviceTagByGB(records,CheckConstants.Rule_Category_Video);
+ log.error("鍙戠敓鐘舵�佹敼鍙樻暟閲�:{}",count);
//瀛樻斁鍦╩ongo涓�
+ log.error("鏂板mongodb鏁版嵁澶у皬锛歿}",records.size());
mongoTemplate.insertAll(records);
// // 宸ュ崟鐢熸垚
// uyErrorTypeCheckService.recordMetaDSumCheck(records);
diff --git a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
index 244d095..946e9e9 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -417,6 +417,18 @@
${params.dataScope}
</where>
</select>
+ <select id="getAllVideo" resultType="java.lang.Long">
+ SELECT
+ IFNULL(SUM(IF((m.camera_fun_type like '%1%'), 1, 0)), 0) AS video
+ FROM t_monitor m
+ left join t_yw_point p on m.serial_number = p.serial_number
+ </select>
+
+ <select id="getIdListVideo" resultType="java.lang.String">
+ select m.serial_number
+ FROM t_monitor m where m.camera_fun_type like '%1%'
+ </select>
+
<select id="assetManagementCount" resultType="java.util.Map">
SELECT count(*) AS total,
IFNULL(SUM(IF((m.camera_fun_type like '%1%'), 1, 0)), 0) AS video,
--
Gitblit v1.8.0