From 29d3c47cc6c903c09b386649fabaebc81cbeca27 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期四, 05 六月 2025 10:43:39 +0800
Subject: [PATCH] 报错日志添加
---
ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java | 153 ++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 122 insertions(+), 31 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 f2297b8..4db2f09 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;
@@ -77,14 +77,35 @@
private static DecimalFormat DF = new DecimalFormat("#.####");
+
+
+ public Map<String,List<DynamicColumnVO>> getDynamicByConditions(DataCenterQuery params,List<DynamicColumnVO> list){
+ //鑾峰緱鍒板搴攊d锛屼笖鍖呭惈浼犲叆瀛楃涓� 鍔ㄦ�佸垪闆嗗悎
+ List<DynamicColumnVO> likeFieldDynamicColumnVOList = list.stream()
+ .filter(dynamicColumnVO ->
+ dynamicColumnVO.getLabelId().equals(params.getDyId()) &&
+ dynamicColumnVO.getColumnValue().contains(params.getDyValue())
+ ).collect(Collectors.toList());
+ //鑾峰緱婊¤冻鏉′欢鐨刬d闆嗗悎
+ List<String> ids = likeFieldDynamicColumnVOList.stream().map(DynamicColumnVO::getRefStringId).toList();
+ Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = list.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId));
+ Set<String> removeSet = new HashSet<>(ids);
+ //绉婚櫎鎺変笉绗﹀悎鏉′欢鐨刱ey
+ groupByRefStringIdMap.keySet().retainAll(removeSet);
+
+ return groupByRefStringIdMap;
+ }
+
@Override
public void recordingAvailabilityExport(HttpServletResponse response,DataCenterQuery params) throws IOException {
+
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()));
}
+ MongoUtil.setNoPage(query, params, TIME_FIELD);
List<RecordMetaDSumResult> resultList = mongoTemplate.find(query, RecordMetaDSumResult.class);
//缈昏瘧琛屾斂鍖哄煙
resultList.forEach(item -> {
@@ -92,8 +113,19 @@
AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(areaCode);
if (areaDeptEnum != null) item.setArealayername(areaDeptEnum.getName());
});
+ //鑾峰緱鍔ㄦ�佸垪鏁版嵁
List<DynamicColumnVO> dynamicColumnVOList = dynamicColumnMapper.getDynamicColumnByTableName(TableNameConstants.COLUMN_NAME_VIDEO);
- Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId));
+
+ //鍒ゆ柇鏄惁鏈夋煡璇㈡潯浠�
+ boolean conditions = false;
+ Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = new HashMap<>();
+ if (params.getDyId() != null && StringUtils.isNotEmpty(params.getDyValue())){
+ conditions = true;
+ //鑾峰緱鍔ㄦ�佸垪闆嗗悎涓寘鍚簡鐨勫瓧绗︿覆鍊肩殑闆嗗悎 鍖哄垎澶у皬鍐�
+ groupByRefStringIdMap = getDynamicByConditions(params,dynamicColumnVOList);
+ }else{
+ groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId));
+ }
//鍥哄畾琛ㄥご
LinkedHashSet<String> headers = new LinkedHashSet<>();
headers.add(RecordingAvailabilityHeaders.arealayername);
@@ -115,21 +147,28 @@
headersList.addAll(dynamicsHeaders);
headers.addAll(headersList);
}
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
- SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
+// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+ //鏌ヨ鍒版湁鍔ㄦ�佸垪鏌ヨ鏉′欢
+ //鑾峰緱瀵瑰簲鍔ㄦ�佸垪涓璻ef鐨勫璞d 涓� 鏌ヨ缁撴灉id杩囨护
+ if (conditions){
+ Map<String, List<DynamicColumnVO>> finalGroupByRefStringIdMap = groupByRefStringIdMap;
+ resultList = resultList.stream()
+ .filter(obj -> finalGroupByRefStringIdMap.containsKey(obj.getId()))
+ .collect(Collectors.toList());
+ }
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<List<Object>> data = new ArrayList<>();
for (RecordMetaDSumResult result : resultList){
List<Object> row = new ArrayList<>();
row.add(result.getArealayername());
row.add(result.getArealayerno());
- row.add(dateFormat2.format(result.getCreateTime()));
+ row.add(dateFormat.format(result.getCreateTime()));
row.add(result.getDeviceId());
row.add(result.getMissDuration());
row.add(result.getPlatId());
row.add(result.getRecordDuration());
row.add(result.getRecordStatusText());
- row.add(dateFormat2.format(result.getCreateTime()));
+ row.add(dateFormat.format(result.getCreateTime()));
//娣诲姞鍔ㄦ�佸垪鏁版嵁
for (String header : headersList){
boolean flag = false;
@@ -201,8 +240,23 @@
item.setOffLineTimeStr(offLineTime);
}
});
+
+
+
List<DynamicColumnVO> dynamicColumnVOList = dynamicColumnMapper.getDynamicColumnByTableName(TableNameConstants.COLUMN_NAME_FACE_POINT);
- Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId));
+
+
+ //鍒ゆ柇鏄惁鏈夋煡璇㈡潯浠�
+ boolean conditions = false;
+ Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = new HashMap<>();
+ if (params.getDyId() != null && StringUtils.isNotEmpty(params.getDyValue())){
+ conditions = true;
+ //鑾峰緱鍔ㄦ�佸垪闆嗗悎涓寘鍚簡鐨勫瓧绗︿覆鍊肩殑闆嗗悎 鍖哄垎澶у皬鍐�
+ groupByRefStringIdMap = getDynamicByConditions(params,dynamicColumnVOList);
+ }else{
+ groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId));
+ }
+
//鍥哄畾琛ㄥご
LinkedHashSet<String> headers = new LinkedHashSet<>();
headers.add(PointOnlineHeaders.no);
@@ -223,6 +277,13 @@
//浣跨敤閾捐〃淇濊瘉鍚庣画琛ュ厖鏁版嵁鏃惰幏鍙栨暟鎹『搴忎竴鑷�
headersList.addAll(dynamicsHeaders);
headers.addAll(headersList);
+ }
+
+ if (conditions){
+ Map<String, List<DynamicColumnVO>> finalGroupByRefStringIdMap = groupByRefStringIdMap;
+ resultList = resultList.stream()
+ .filter(obj -> finalGroupByRefStringIdMap.containsKey(obj.getNo()))
+ .collect(Collectors.toList());
}
List<List<Object>> data = new ArrayList<>();
@@ -313,7 +374,16 @@
}
});
List<DynamicColumnVO> dynamicColumnVOList = dynamicColumnMapper.getDynamicColumnByTableName(TableNameConstants.COLUMN_NAME_VIDEO_POINT);
- Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId));
+ //鍒ゆ柇鏄惁鏈夋煡璇㈡潯浠�
+ boolean conditions = false;
+ Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = new HashMap<>();
+ if (params.getDyId() != null && StringUtils.isNotEmpty(params.getDyValue())){
+ conditions = true;
+ //鑾峰緱鍔ㄦ�佸垪闆嗗悎涓寘鍚簡鐨勫瓧绗︿覆鍊肩殑闆嗗悎 鍖哄垎澶у皬鍐�
+ groupByRefStringIdMap = getDynamicByConditions(params,dynamicColumnVOList);
+ }else{
+ groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId));
+ }
//鍥哄畾琛ㄥご
LinkedHashSet<String> headers = new LinkedHashSet<>();
headers.add(PointOnlineHeaders.no);
@@ -334,6 +404,14 @@
//浣跨敤閾捐〃淇濊瘉鍚庣画琛ュ厖鏁版嵁鏃惰幏鍙栨暟鎹『搴忎竴鑷�
headersList.addAll(dynamicsHeaders);
headers.addAll(headersList);
+ }
+
+
+ if (conditions){
+ Map<String, List<DynamicColumnVO>> finalGroupByRefStringIdMap = groupByRefStringIdMap;
+ resultList = resultList.stream()
+ .filter(obj -> finalGroupByRefStringIdMap.containsKey(obj.getNo()))
+ .collect(Collectors.toList());
}
List<List<Object>> data = new ArrayList<>();
@@ -428,7 +506,16 @@
}
});
List<DynamicColumnVO> dynamicColumnVOList = dynamicColumnMapper.getDynamicColumnByTableName(TableNameConstants.COLUMN_NAME_CAR_POINT);
- Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId));
+ //鍒ゆ柇鏄惁鏈夋煡璇㈡潯浠�
+ boolean conditions = false;
+ Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = new HashMap<>();
+ if (params.getDyId() != null && StringUtils.isNotEmpty(params.getDyValue())){
+ conditions = true;
+ //鑾峰緱鍔ㄦ�佸垪闆嗗悎涓寘鍚簡鐨勫瓧绗︿覆鍊肩殑闆嗗悎 鍖哄垎澶у皬鍐�
+ groupByRefStringIdMap = getDynamicByConditions(params,dynamicColumnVOList);
+ }else{
+ groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId));
+ }
//鍥哄畾琛ㄥご
LinkedHashSet<String> headers = new LinkedHashSet<>();
headers.add(PointOnlineHeaders.no);
@@ -449,6 +536,14 @@
//浣跨敤閾捐〃淇濊瘉鍚庣画琛ュ厖鏁版嵁鏃惰幏鍙栨暟鎹『搴忎竴鑷�
headersList.addAll(dynamicsHeaders);
headers.addAll(headersList);
+ }
+
+
+ if (conditions){
+ Map<String, List<DynamicColumnVO>> finalGroupByRefStringIdMap = groupByRefStringIdMap;
+ resultList = resultList.stream()
+ .filter(obj -> finalGroupByRefStringIdMap.containsKey(obj.getNo()))
+ .collect(Collectors.toList());
}
List<List<Object>> data = new ArrayList<>();
@@ -536,6 +631,8 @@
}
+
+
/**
* 瑙嗛锛氱偣浣嶅湪绾跨巼
@@ -1275,6 +1372,7 @@
return recordingMinTime;
}
+ private final TMonitorMapper tMonitorMapper;
/**
* 瑙嗛锛氬綍鍍忓彲鐢ㄧ巼
@@ -1284,18 +1382,20 @@
*/
@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鏌ヨ
@@ -1311,12 +1411,15 @@
});
// 缁熻鏁伴噺
+
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);
// 鏋勫缓鑱氬悎绠¢亾
@@ -1343,8 +1446,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);
@@ -1356,25 +1460,14 @@
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);
@@ -1382,8 +1475,6 @@
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瀛楁鐨勬�绘暟
@@ -1456,7 +1547,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);
// 鏋勫缓鑱氬悎绠¢亾
@@ -1563,7 +1654,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);
// 鏋勫缓鑱氬悎绠¢亾
--
Gitblit v1.8.0