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<TMonitorMapper, TMonitor> 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<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);
|
}
|
// 视频监控设备
|
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<String, String> getVideoCount(TMonitor tMonitor) {
|
return tMonitorMapper.getVideoCount(tMonitor);
|
}
|
|
@Override
|
public Map<String, String> recoveryException() {
|
String time = configService.selectConfigByKey("abnormal.equipment.continuous.attention.time");
|
return tMonitorMapper.recoveryException(time);
|
}
|
|
@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());
|
}
|
}
|