From e13b129c300d3eff2ba555d0c41bbccbaab1014a Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期二, 17 九月 2024 18:56:59 +0800 Subject: [PATCH] 新大屏数据对接 --- ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java | 274 ++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 201 insertions(+), 73 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 771bfc1..44c5f48 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,190 @@ * @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(); + //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()); + } + } + } } /** @@ -149,8 +256,7 @@ * @return 缁撴灉 */ @Override - public int insertTMonitor(TMonitor tMonitor) - { + public int insertTMonitor(TMonitor tMonitor) { return tMonitorMapper.insertTMonitor(tMonitor); } @@ -161,8 +267,7 @@ * @return 缁撴灉 */ @Override - public int updateTMonitor(TMonitor tMonitor) - { + public int updateTMonitor(TMonitor tMonitor) { return tMonitorMapper.updateTMonitor(tMonitor); } @@ -173,8 +278,7 @@ * @return 缁撴灉 */ @Override - public int deleteTMonitorByIds(Long[] ids) - { + public int deleteTMonitorByIds(Long[] ids) { return tMonitorMapper.deleteTMonitorByIds(ids); } @@ -185,22 +289,21 @@ * @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); +// String time = configService.selectConfigByKey("abnormal.equipment.continuous.attention.time"); +// monitor.setTime(time); return tMonitorMapper.recoveryException(monitor); } @@ -223,12 +326,37 @@ } @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 public List<MonitorRateVO> monitorRate(DashboardQuery dashboardQuery) { + //TODO:鏂板dept AreaCode瀛楁 return baseMapper.monitorRate(dashboardQuery); } -- Gitblit v1.8.0