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.VideoOnlineResult; import com.ycl.platform.domain.vo.TMonitorVO; 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.service.ITMonitorService; import com.ycl.system.Result; import com.ycl.system.page.PageUtil; import com.ycl.system.service.ISysConfigService; 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 java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; /** * 设备资产Service业务层处理 * * @author ruoyi * @date 2024-03-04 */ @Service public class TMonitorServiceImpl extends ServiceImpl implements ITMonitorService { @Autowired private TMonitorMapper tMonitorMapper; @Autowired private ISysConfigService configService; @Autowired private MongoTemplate mongoTemplate; /** * 查询设备资产 * * @param id 设备资产主键 * @return 设备资产 */ @Override public TMonitor selectTMonitorById(Long id) { return tMonitorMapper.selectTMonitorById(id); } /** * 查询设备资产列表 * * @param tMonitor 设备资产 * @return 设备资产 */ @Override @DataScope(deptAlias = "d",userAlias = "u") public List selectTMonitorList(TMonitorVO tMonitor) { List 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 recoveryMonitors = tMonitorMapper.selectRecoveryMonitor(time); monitors.addAll(recoveryMonitors); } // 视频监控设备 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()); } }); } // 车辆监控设备 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()); } 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 (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()); } 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()); } }); } return monitors; } /** * 新增设备资产 * * @param tMonitor 设备资产 * @return 结果 */ @Override public int insertTMonitor(TMonitor tMonitor) { return tMonitorMapper.insertTMonitor(tMonitor); } /** * 修改设备资产 * * @param tMonitor 设备资产 * @return 结果 */ @Override public int updateTMonitor(TMonitor tMonitor) { return tMonitorMapper.updateTMonitor(tMonitor); } /** * 批量删除设备资产 * * @param ids 需要删除的设备资产主键 * @return 结果 */ @Override public int deleteTMonitorByIds(Long[] ids) { return tMonitorMapper.deleteTMonitorByIds(ids); } /** * 删除设备资产信息 * * @param id 设备资产主键 * @return 结果 */ @Override public int deleteTMonitorById(Long id) { return tMonitorMapper.deleteTMonitorById(id); } @Override @DataScope(deptAlias = "d",userAlias = "u") public Map getVideoCount(TMonitor tMonitor) { return tMonitorMapper.getVideoCount(tMonitor); } @Override public Map recoveryException() { String time = configService.selectConfigByKey("abnormal.equipment.continuous.attention.time"); return tMonitorMapper.recoveryException(time); } @Override public Map home(HomeQuery monitorQuery) { Map dataMap = new HashMap<>(); Map monthMap1 = new HashMap<>(); Map monthMap2 = new HashMap<>(); List> home = baseMapper.home(monitorQuery); if (ObjectUtils.isNotEmpty(home)) { for (Map 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 monitorTotal(DashboardQuery dashboardQuery) { return baseMapper.monitorTotal(dashboardQuery); } @Override public List monitorRate(DashboardQuery dashboardQuery) { return baseMapper.monitorRate(dashboardQuery); } @Override public Result assetManagement(DataCenterQuery query) { IPage page = PageUtil.getPage(query, TMonitorVO.class); baseMapper.assetManagement(page, query); return Result.ok().data(page.getRecords()).total(page.getTotal()); } }