From a776ca9959e0c4696db0ab96cb59efcfe4061201 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期六, 14 九月 2024 17:33:48 +0800 Subject: [PATCH] 运行监控展示数据重构 --- ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java | 228 +++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 166 insertions(+), 62 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 03aae29..d803fa2 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,15 +11,20 @@ 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 org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -27,9 +32,11 @@ 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.time.LocalDate; import java.util.*; +import java.util.stream.Collectors; /** * 璁惧璧勪骇Service涓氬姟灞傚鐞� @@ -38,15 +45,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; /** * 鏌ヨ璁惧璧勪骇 * @@ -54,19 +61,19 @@ * @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) { // 寮傚父鎭㈠鐩戞帶 if (Objects.equals(tMonitor.getRecovery(), 1L)) { @@ -77,66 +84,167 @@ 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(); + //TODO:鏈湴娴嬭瘯 + // Date now = new Date() + Date now = DateUtils.getDay(2024, 7, 13); + 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()); + } + } + } } /** @@ -146,8 +254,7 @@ * @return 缁撴灉 */ @Override - public int insertTMonitor(TMonitor tMonitor) - { + public int insertTMonitor(TMonitor tMonitor) { return tMonitorMapper.insertTMonitor(tMonitor); } @@ -158,8 +265,7 @@ * @return 缁撴灉 */ @Override - public int updateTMonitor(TMonitor tMonitor) - { + public int updateTMonitor(TMonitor tMonitor) { return tMonitorMapper.updateTMonitor(tMonitor); } @@ -170,8 +276,7 @@ * @return 缁撴灉 */ @Override - public int deleteTMonitorByIds(Long[] ids) - { + public int deleteTMonitorByIds(Long[] ids) { return tMonitorMapper.deleteTMonitorByIds(ids); } @@ -182,19 +287,18 @@ * @return 缁撴灉 */ @Override - public int deleteTMonitorById(Long id) - { + public int deleteTMonitorById(Long id) { return tMonitorMapper.deleteTMonitorById(id); } @Override - @DataScope(deptAlias = "d",userAlias = "u") + @DataScope(deptAlias = "d", userAlias = "u") public Map<String, String> getVideoCount(TMonitorVO tMonitor) { return tMonitorMapper.getVideoCount(tMonitor); } @Override - @DataScope(deptAlias = "d",userAlias = "u") + @DataScope(deptAlias = "d", userAlias = "u") public Map<String, String> recoveryException(TMonitorVO monitor) { // String time = configService.selectConfigByKey("abnormal.equipment.continuous.attention.time"); // monitor.setTime(time); -- Gitblit v1.8.0