From 73548e5d89a79ef1850c03dea162dcf727e2c0b1 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 20 九月 2024 09:32:57 +0800
Subject: [PATCH] 去重
---
ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java | 275 ++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 201 insertions(+), 74 deletions(-)
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
index e03649d..ce7c654 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
@@ -11,27 +11,33 @@
import com.ycl.platform.domain.result.HK.FaceDeviceSamplingResult;
import com.ycl.platform.domain.result.HK.VehicleDeviceInspectionResult;
import com.ycl.platform.domain.result.HK.VehicleDeviceSamplingResult;
-import com.ycl.platform.domain.result.UY.VideoOnlineResult;
+import com.ycl.platform.domain.result.UY.MonitorQualifyResult;
+import com.ycl.platform.domain.result.UY.OsdCheckResult;
+import com.ycl.platform.domain.result.UY.RecordMetaDSumResult;
import com.ycl.platform.domain.vo.TMonitorVO;
+import com.ycl.platform.domain.vo.WorkOrderVO;
import com.ycl.platform.domain.vo.screen.MonitorRateVO;
import com.ycl.platform.domain.vo.screen.MonitorTotalVO;
import com.ycl.platform.mapper.TMonitorMapper;
+import com.ycl.platform.mapper.WorkOrderMapper;
import com.ycl.platform.service.ITMonitorService;
import com.ycl.system.Result;
import com.ycl.system.page.PageUtil;
import com.ycl.system.service.ISysConfigService;
+import com.ycl.utils.DateUtils;
import com.ycl.utils.StringUtils;
+import enumeration.general.AreaDeptEnum;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.time.LocalDate;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* 璁惧璧勪骇Service涓氬姟灞傚鐞�
@@ -40,14 +46,15 @@
* @date 2024-03-04
*/
@Service
-public class TMonitorServiceImpl extends ServiceImpl<TMonitorMapper, TMonitor> implements ITMonitorService
-{
+public class TMonitorServiceImpl extends ServiceImpl<TMonitorMapper, TMonitor> implements ITMonitorService {
@Autowired
private TMonitorMapper tMonitorMapper;
@Autowired
private ISysConfigService configService;
@Autowired
private MongoTemplate mongoTemplate;
+ @Autowired
+ private WorkOrderMapper workOrderMapper;
/**
* 鏌ヨ璁惧璧勪骇
@@ -56,90 +63,188 @@
* @return 璁惧璧勪骇
*/
@Override
- public TMonitor selectTMonitorById(Long id)
- {
+ public TMonitor selectTMonitorById(Long id) {
return tMonitorMapper.selectTMonitorById(id);
}
/**
* 鏌ヨ璁惧璧勪骇鍒楄〃
+ * 寮傚父鎭㈠鐩戞帶銆佽溅杈嗐�佷汉鑴搞�佽棰戦�氱敤鎺ュ彛
*
* @param tMonitor 璁惧璧勪骇
* @return 璁惧璧勪骇
*/
@Override
- @DataScope(deptAlias = "d",userAlias = "u")
+ @DataScope(deptAlias = "d", userAlias = "u")
public List<TMonitorVO> selectTMonitorList(TMonitorVO tMonitor) {
- List<TMonitorVO> monitors = tMonitorMapper.selectTMonitorList(tMonitor);
- // 寮傚父璁惧
+ // 寮傚父鎭㈠鐩戞帶
if (Objects.equals(tMonitor.getRecovery(), 1L)) {
String time = configService.selectConfigByKey("abnormal.equipment.continuous.attention.time");
if (StringUtils.isBlank(time)) {
throw new RuntimeException("璇烽厤缃紓甯歌澶囪繛缁叧娉ㄦ椂闂�");
}
- List<TMonitorVO> recoveryMonitors = tMonitorMapper.selectRecoveryMonitor(time);
- monitors.addAll(recoveryMonitors);
+ tMonitor.setTime(time);
}
+ List<TMonitorVO> monitors = tMonitorMapper.selectTMonitorList(tMonitor);
+ // 寮傚父鎭㈠鐩戞帶
+ if (Objects.equals(tMonitor.getRecovery(), 1L)) {
+ //宸ュ崟鍙�
+ List<String> orders = monitors.stream().map(TMonitorVO::getWorkOrderNo).collect(Collectors.toList());
+ if (CollectionUtils.isEmpty(orders)) {
+ return monitors;
+ }
+ List<WorkOrderVO> voList = workOrderMapper.getRecoveryInfo(orders);
+ for (TMonitorVO monitor : monitors) {
+ if (!CollectionUtils.isEmpty(voList)) {
+ for (WorkOrderVO workOrderVO : voList) {
+ if (monitor.getWorkOrderNo().equals(workOrderVO.getWorkOrderNo())) {
+ monitor.setUnitContact(workOrderVO.getUnitContact());
+ monitor.setUnitContactPhone(workOrderVO.getUnitContactPhone());
+ monitor.setYwPeopleName(workOrderVO.getYwPeopleName());
+ monitor.setErrorType(workOrderVO.getErrorType());
+ }
+ }
+ }
+ }
+ return monitors;
+ }
+ //璁惧缂栧彿
+ List<String> numbers = monitors.stream().map(TMonitorVO::getSerialNumber).collect(Collectors.toList());
+ Query query = new Query();
+ Date now = new Date();
+ query.addCriteria(Criteria.where("no").in(numbers)
+ .and("mongoCreateTime").gte(DateUtils.getDayStart(now)).lt(DateUtils.getDayEnd(now))
+ );
+ //涓�鏈轰竴妗d俊鎭�
+ List<MonitorQualifyResult> monitorQualifyResults = mongoTemplate.find(query, MonitorQualifyResult.class);
// 瑙嗛鐩戞帶璁惧
if (Objects.equals(tMonitor.getCameraFunType(), "1")) {
- monitors.forEach(monitor -> {
- Query query = new Query();
- query.addCriteria(Criteria.where("deviceId").is(monitor.getSerialNumber())
- // .and("mongoCreateTime").is(LocalDate.now())
- );
- VideoOnlineResult one = mongoTemplate.findOne(query, VideoOnlineResult.class);
- if (one != null) {
- monitor.setIfmDelay(one.getIfmDelay());
- monitor.setSipDelay(one.getSipDelay());
- monitor.setVideoDelay(one.getVideoDelay());
- monitor.setMongoCreateTime(one.getMongoCreateTime());
+ //OSD淇℃伅
+ List<OsdCheckResult> osdCheckResults = mongoTemplate.find(query, OsdCheckResult.class);
+ //褰曞儚鍙敤淇℃伅
+ List<RecordMetaDSumResult> videoResults = mongoTemplate.find(query, RecordMetaDSumResult.class);
+ for (TMonitorVO monitor : monitors) {
+ monitor.setMongoCreateTime(now);
+ //涓�鏈轰竴妗�
+ setOneFile(monitorQualifyResults, monitor);
+ //褰曞儚
+ if (!CollectionUtils.isEmpty(videoResults)) {
+ for (RecordMetaDSumResult videoResult : videoResults) {
+ if (monitor.getSerialNumber().equals(videoResult.getNo())) {
+ monitor.setVideoComplete(videoResult.getRecordStatus());
+ monitor.setVideoLoseTime(videoResult.getMissDuration());
+ }
+ }
}
- });
+ //OSD
+ if (!CollectionUtils.isEmpty(osdCheckResults)) {
+ for (OsdCheckResult osdCheckResult : osdCheckResults) {
+ if (monitor.getSerialNumber().equals(osdCheckResult.getNo())) {
+ monitor.setOSD(OsdCheckResult.checkOsd(osdCheckResult));
+ monitor.setOSDTime(OsdCheckResult.checkTime(osdCheckResult));
+ }
+ }
+ }
+ }
}
// 杞﹁締鐩戞帶璁惧
if (Objects.equals(tMonitor.getCameraFunType(), "2")) {
- monitors.forEach(monitor -> {
- Query query = new Query();
- query.addCriteria(Criteria.where("externalIndexCode").is(monitor.getSerialNumber())
- // .and("mongoCreateTime").is(LocalDate.now())
- );
- VehicleDeviceInspectionResult one = mongoTemplate.findOne(query, VehicleDeviceInspectionResult.class);
- VehicleDeviceSamplingResult two = mongoTemplate.findOne(query, VehicleDeviceSamplingResult.class);
- if (one != null) {
- monitor.setDataCount(one.getDataCount());
- monitor.setClockPercent(Objects.nonNull(one.getSnapClock()) ? one.getSnapClock().getClockPercent() : null);
- monitor.setMongoCreateTime(one.getMongoCreateTime());
+ //灞炴�т竴鑷寸巼銆佸ぇ鍥俱�乽rl
+ List<VehicleDeviceSamplingResult> sampleResults = mongoTemplate.find(query, VehicleDeviceSamplingResult.class);
+ //鎶撴媿閲忋�佹椂閽熴�佷笂浼�
+ List<VehicleDeviceInspectionResult> inspectResults = mongoTemplate.find(query, VehicleDeviceInspectionResult.class);
+ for (TMonitorVO monitor : monitors) {
+ monitor.setMongoCreateTime(now);
+ //涓�鏈轰竴妗�
+ setOneFile(monitorQualifyResults, monitor);
+ //灞炴�т竴鑷寸巼銆佸ぇ鍥俱�乽rl
+ if (!CollectionUtils.isEmpty(sampleResults)) {
+ for (VehicleDeviceSamplingResult sampleResult : sampleResults) {
+ if (monitor.getSerialNumber().equals(sampleResult.getNo())) {
+ if (sampleResult.getBigUseful() != null) {
+ monitor.setBigUsefulPercent(sampleResult.getBigUseful().getBigUsefulPercent());
+ monitor.setUrlPercent(VehicleDeviceSamplingResult.BigUsefulness.calUrl(sampleResult.getBigUseful()));
+ }
+ if (sampleResult.getVehDiff() != null) {
+ monitor.setImportantConPercent(sampleResult.getVehDiff().getImportantConPercent());
+ monitor.setMajorConPercent(sampleResult.getVehDiff().getMajorConPercent());
+ }
+ }
+ }
}
- if (two != null) {
- monitor.setBigUsefulPercent(Objects.nonNull(two.getBigUseful()) ? two.getBigUseful().getBigUsefulPercent() : null);
- monitor.setMajorConPercent(Objects.nonNull(two.getVehDiff()) ? two.getVehDiff().getMajorConPercent() : null);
- monitor.setImportantConPercent(Objects.nonNull(two.getVehDiff()) ? two.getVehDiff().getImportantConPercent() : null);
- monitor.setMongoCreateTime(two.getMongoCreateTime());
+ //鎶撴媿閲忋�佹椂閽熴�佷笂浼�
+ if (!CollectionUtils.isEmpty(inspectResults)) {
+ for (VehicleDeviceInspectionResult inspectResult : inspectResults) {
+ if (monitor.getSerialNumber().equals(inspectResult.getNo())) {
+ monitor.setSnapResult(inspectResult.getSnapResult());
+ monitor.setSnapCount(inspectResult.getDataCount());
+ if (inspectResult.getSnapClock() != null)
+ monitor.setClockPercent(inspectResult.getSnapClock().getClockPercent());
+ if (inspectResult.getSnapTimely() != null)
+ monitor.setUploadPercent(inspectResult.getSnapTimely().getTimelyPercent());
+ }
+ }
}
- });
+ }
}
// 浜鸿劯鐩戞帶璁惧
if (Objects.equals(tMonitor.getCameraFunType(), "3")) {
- monitors.forEach(monitor -> {
- Query query = new Query();
- query.addCriteria(Criteria.where("externalIndexCode").is(monitor.getSerialNumber())
- // .and("mongoCreateTime").is(LocalDate.now())
- );
- FaceDeviceInspectionResult one = mongoTemplate.findOne(query, FaceDeviceInspectionResult.class);
- FaceDeviceSamplingResult two = mongoTemplate.findOne(query, FaceDeviceSamplingResult.class);
- if (one != null) {
- monitor.setDataCount(one.getDataCount());
- monitor.setClockPercent(Objects.nonNull(one.getSnapClock()) ? one.getSnapClock().getClockPercent() : null);
- monitor.setMongoCreateTime(one.getMongoCreateTime());
+ //浜鸿劯鍚堟牸銆佸ぇ鍥俱�乽rl璁块棶寮傚父
+ List<FaceDeviceSamplingResult> sampleResults = mongoTemplate.find(query, FaceDeviceSamplingResult.class);
+ //鎶撴媿閲忋�佹椂閽熴�佷笂浼�
+ List<FaceDeviceInspectionResult> inspectResults = mongoTemplate.find(query, FaceDeviceInspectionResult.class);
+ for (TMonitorVO monitor : monitors) {
+ monitor.setMongoCreateTime(now);
+ //涓�鏈轰竴妗�
+ setOneFile(monitorQualifyResults, monitor);
+ //浜鸿劯鍚堟牸銆佸ぇ鍥俱�乽rl璁块棶寮傚父
+ if (!CollectionUtils.isEmpty(sampleResults)) {
+ for (FaceDeviceSamplingResult sampleResult : sampleResults) {
+ if (monitor.getSerialNumber().equals(sampleResult.getNo())) {
+ if (sampleResult.getBigUseful() != null) {
+ monitor.setBigUsefulPercent(sampleResult.getBigUseful().getBigUsefulPercent());
+ monitor.setUrlPercent(FaceDeviceSamplingResult.BigUsefulness.calUrl(sampleResult.getBigUseful()));
+ }
+ if (sampleResult.getFaceEligibility() != null)
+ monitor.setFacePercent(sampleResult.getFaceEligibility().getFaceEligPercent());
+ }
+ }
}
- if (two != null) {
- monitor.setBigUsefulPercent(Objects.nonNull(two.getBigUseful())? two.getBigUseful().getBigUsefulPercent() : null);
- monitor.setFaceEligPercent(Objects.nonNull(two.getFaceEligibility()) ? two.getFaceEligibility().getFaceEligPercent() : null);
- monitor.setMongoCreateTime(two.getMongoCreateTime());
+ //鎶撴媿閲忋�佹椂閽熴�佷笂浼犮�佸缓妯″け璐ョ巼
+ if (!CollectionUtils.isEmpty(inspectResults)) {
+ for (FaceDeviceInspectionResult inspectResult : inspectResults) {
+ if (monitor.getSerialNumber().equals(inspectResult.getNo())) {
+ monitor.setSnapResult(inspectResult.getSnapResult());
+ monitor.setSnapCount(inspectResult.getDataCount());
+ if (inspectResult.getSnapClock() != null)
+ monitor.setClockPercent(inspectResult.getSnapClock().getClockPercent());
+ if (inspectResult.getSnapTimely() != null)
+ monitor.setUploadPercent(inspectResult.getSnapTimely().getTimelyPercent());
+ if (inspectResult.getSnapValidity() != null)
+ monitor.setFailPercent(inspectResult.getSnapValidity().getFailPercent());
+ }
+ }
}
- });
+ }
}
return monitors;
+ }
+
+ /**
+ * 琛ュ厖涓�鏈轰竴妗d俊鎭�
+ *
+ * @param monitorQualifyResults
+ * @param monitor
+ */
+ private void setOneFile(List<MonitorQualifyResult> monitorQualifyResults, TMonitorVO monitor) {
+ if (!CollectionUtils.isEmpty(monitorQualifyResults)) {
+ for (MonitorQualifyResult oneFile : monitorQualifyResults) {
+ if (monitor.getSerialNumber().equals(oneFile.getNo())) {
+ monitor.setMonitorQualify(MonitorQualifyResult.correct(oneFile));
+ monitor.setNewMonitor(oneFile.getNewDevice());
+ }
+ }
+ }
}
/**
@@ -149,8 +254,7 @@
* @return 缁撴灉
*/
@Override
- public int insertTMonitor(TMonitor tMonitor)
- {
+ public int insertTMonitor(TMonitor tMonitor) {
return tMonitorMapper.insertTMonitor(tMonitor);
}
@@ -161,8 +265,7 @@
* @return 缁撴灉
*/
@Override
- public int updateTMonitor(TMonitor tMonitor)
- {
+ public int updateTMonitor(TMonitor tMonitor) {
return tMonitorMapper.updateTMonitor(tMonitor);
}
@@ -173,8 +276,7 @@
* @return 缁撴灉
*/
@Override
- public int deleteTMonitorByIds(Long[] ids)
- {
+ public int deleteTMonitorByIds(Long[] ids) {
return tMonitorMapper.deleteTMonitorByIds(ids);
}
@@ -185,21 +287,22 @@
* @return 缁撴灉
*/
@Override
- public int deleteTMonitorById(Long id)
- {
+ public int deleteTMonitorById(Long id) {
return tMonitorMapper.deleteTMonitorById(id);
}
@Override
- @DataScope(deptAlias = "d",userAlias = "u")
- public Map<String, String> getVideoCount(TMonitor tMonitor) {
+ @DataScope(deptAlias = "d", userAlias = "u")
+ public Map<String, String> getVideoCount(TMonitorVO tMonitor) {
return tMonitorMapper.getVideoCount(tMonitor);
}
@Override
- public Map<String, String> recoveryException() {
- String time = configService.selectConfigByKey("abnormal.equipment.continuous.attention.time");
- return tMonitorMapper.recoveryException(time);
+ @DataScope(deptAlias = "d", userAlias = "u")
+ public Map<String, String> recoveryException(TMonitorVO monitor) {
+// String time = configService.selectConfigByKey("abnormal.equipment.continuous.attention.time");
+// monitor.setTime(time);
+ return tMonitorMapper.recoveryException(monitor);
}
@Override
@@ -221,8 +324,32 @@
}
@Override
- public List<MonitorTotalVO> monitorTotal(DashboardQuery dashboardQuery) {
- return baseMapper.monitorTotal(dashboardQuery);
+ public Map<String, List<Map<String, Object>>> monitorTotal(DashboardQuery dashboardQuery) {
+ List<MonitorTotalVO> monitorTotalVOS = baseMapper.monitorTotal(dashboardQuery);
+ /** facilityData: {
+ * video:[
+ * {value: 4589,title: '璁惧鎬绘暟'},
+ * {value: 4294,title: '璁惧姝e父鏁�'},
+ * {value: 295,title: '璁惧寮傚父鏁�'}
+ * ]} */
+ Map<String, List<Map<String, Object>>> resultMap = new HashMap<>();
+ for (MonitorTotalVO vo : monitorTotalVOS) {
+ List<Map<String, Object>> list = new ArrayList();
+ Map<String, Object> total = new HashMap<>();
+ total.put("value", vo.getTotalNum());
+ total.put("title", "璁惧鎬绘暟");
+ Map<String, Object> normal = new HashMap<>();
+ normal.put("value", vo.getNormalNum());
+ normal.put("title", "姝e父鏁�");
+ Map<String, Object> error = new HashMap<>();
+ error.put("value", vo.getErrorNum());
+ error.put("title", "寮傚父鏁�");
+ list.add(total);
+ list.add(normal);
+ list.add(error);
+ resultMap.put(vo.getType(), list);
+ }
+ return resultMap;
}
@Override
--
Gitblit v1.8.0