From d2cc01f393336a31ce382488cc1fd2b1d7d9be50 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期二, 17 九月 2024 16:26:33 +0800 Subject: [PATCH] 工单详情页优化 --- ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java | 282 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 265 insertions(+), 17 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 b4af1c9..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 @@ -1,13 +1,42 @@ package com.ycl.platform.service.impl; +import annotation.DataScope; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.platform.domain.entity.TMonitor; +import com.ycl.platform.domain.query.DashboardQuery; +import com.ycl.platform.domain.query.DataCenterQuery; +import com.ycl.platform.domain.query.HomeQuery; +import com.ycl.platform.domain.result.HK.FaceDeviceInspectionResult; +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.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; +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.List; +import java.time.LocalDate; +import java.util.*; +import java.util.stream.Collectors; /** * 璁惧璧勪骇Service涓氬姟灞傚鐞� @@ -16,11 +45,15 @@ * @date 2024-03-04 */ @Service -public class TMonitorServiceImpl 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; /** * 鏌ヨ璁惧璧勪骇 * @@ -28,21 +61,190 @@ * @return 璁惧璧勪骇 */ @Override - public TMonitor selectTMonitorById(Long id) - { + public TMonitor selectTMonitorById(Long id) { return tMonitorMapper.selectTMonitorById(id); } /** * 鏌ヨ璁惧璧勪骇鍒楄〃 + * 寮傚父鎭㈠鐩戞帶銆佽溅杈嗐�佷汉鑴搞�佽棰戦�氱敤鎺ュ彛 * * @param tMonitor 璁惧璧勪骇 * @return 璁惧璧勪骇 */ @Override - public List<TMonitorVO> selectTMonitorList(TMonitor tMonitor) - { - return tMonitorMapper.selectTMonitorList(tMonitor); + @DataScope(deptAlias = "d", userAlias = "u") + public List<TMonitorVO> selectTMonitorList(TMonitorVO tMonitor) { + // 寮傚父鎭㈠鐩戞帶 + if (Objects.equals(tMonitor.getRecovery(), 1L)) { + String time = configService.selectConfigByKey("abnormal.equipment.continuous.attention.time"); + if (StringUtils.isBlank(time)) { + throw new RuntimeException("璇烽厤缃紓甯歌澶囪繛缁叧娉ㄦ椂闂�"); + } + 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")) { + //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")) { + //灞炴�т竴鑷寸巼銆佸ぇ鍥俱�乽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 (!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")) { + //浜鸿劯鍚堟牸銆佸ぇ鍥俱�乽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 (!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()); + } + } + } } /** @@ -52,8 +254,7 @@ * @return 缁撴灉 */ @Override - public int insertTMonitor(TMonitor tMonitor) - { + public int insertTMonitor(TMonitor tMonitor) { return tMonitorMapper.insertTMonitor(tMonitor); } @@ -64,8 +265,7 @@ * @return 缁撴灉 */ @Override - public int updateTMonitor(TMonitor tMonitor) - { + public int updateTMonitor(TMonitor tMonitor) { return tMonitorMapper.updateTMonitor(tMonitor); } @@ -76,8 +276,7 @@ * @return 缁撴灉 */ @Override - public int deleteTMonitorByIds(Long[] ids) - { + public int deleteTMonitorByIds(Long[] ids) { return tMonitorMapper.deleteTMonitorByIds(ids); } @@ -88,8 +287,57 @@ * @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(TMonitorVO tMonitor) { + return tMonitorMapper.getVideoCount(tMonitor); + } + + @Override + @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 + public Map<String, Object> home(HomeQuery monitorQuery) { + Map<String, Object> dataMap = new HashMap<>(); + Map<String, Object> monthMap1 = new HashMap<>(); + Map<String, Object> monthMap2 = new HashMap<>(); + List<Map<String, Object>> home = baseMapper.home(monitorQuery); + if (ObjectUtils.isNotEmpty(home)) { + for (Map<String, Object> map : home) { + monthMap1.put(map.get("months").toString(), map.get("num1")); + monthMap2.put(map.get("months").toString(), map.get("num2")); + } + dataMap.put("name", home.get(0).get("name")); + dataMap.put("state", monthMap1); + dataMap.put("state2", monthMap2); + } + return dataMap; + } + + @Override + public List<MonitorTotalVO> monitorTotal(DashboardQuery dashboardQuery) { + return baseMapper.monitorTotal(dashboardQuery); + } + + @Override + public List<MonitorRateVO> monitorRate(DashboardQuery dashboardQuery) { + return baseMapper.monitorRate(dashboardQuery); + } + + + @Override + public Result assetManagement(DataCenterQuery query) { + IPage<TMonitorVO> page = PageUtil.getPage(query, TMonitorVO.class); + baseMapper.assetManagement(page, query); + return Result.ok().data(page.getRecords()).total(page.getTotal()); + } } -- Gitblit v1.8.0