龚焕茏
2024-08-20 7eea73131d6905b301d0aba348ae62116d8b2240
feat:运行监控展示
3个文件已修改
133 ■■■■ 已修改文件
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/TMonitorVO.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java 79 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/TMonitorVO.java
@@ -5,6 +5,7 @@
import com.ycl.system.entity.BaseEntity;
import lombok.Data;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
@@ -220,6 +221,47 @@
    private Long deptId;
    private String deptName;
    private Integer provinceTag;
    private String area;
    private String error;
    private String unitName;
    private LocalDate mongoCreateTime;
    /**
     * 当日接收到的当日抓拍量
     */
    private Integer dataCount;
    /**
     * 时钟准确率
     */
    private Float clockPercent;
    /**
     * 大图可用率
     */
    private Float bigUsefulPercent;
    /**
     * 主要属性一致率
     */
    private Float majorConPercent;
    /**
     * 重要属性一致率
     */
    private Float importantConPercent;
    /**
     * 人脸合格率
     */
    private Float faceEligPercent;
    /**
     * 关键帧时延
     */
    private Integer ifmDelay;
    /**
     * 信令时延
     */
    private Integer sipDelay;
    /**
     * 视频流时延
     */
    private Integer videoDelay;
    /**
     * 动态列
ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
@@ -2,14 +2,16 @@
import annotation.DataScope;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
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;
@@ -19,9 +21,11 @@
import com.ycl.system.page.PageUtil;
import com.ycl.system.service.ISysConfigService;
import com.ycl.utils.StringUtils;
import com.ycl.utils.redis.RedisCache;
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;
@@ -43,7 +47,7 @@
    @Autowired
    private ISysConfigService configService;
    @Autowired
    private RedisCache redisCache;
    private MongoTemplate mongoTemplate;
    /**
     * 查询设备资产
@@ -65,10 +69,10 @@
     */
    @Override
    @DataScope(deptAlias = "d",userAlias = "u")
    public List<TMonitorVO> selectTMonitorList(TMonitorVO tMonitor)
    {
    public List<TMonitorVO> selectTMonitorList(TMonitorVO tMonitor) {
        List<TMonitorVO> monitors = tMonitorMapper.selectTMonitorList(tMonitor);
        if (Objects.equals(tMonitor.getRecovery(), 1)) {
        // 异常设备
        if (Objects.equals(tMonitor.getRecovery(), 1L)) {
            String time = configService.selectConfigByKey("abnormal.equipment.continuous.attention.time");
            if (StringUtils.isBlank(time)) {
                throw new RuntimeException("请配置异常设备连续关注时间");
@@ -76,6 +80,65 @@
            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;
    }
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -89,12 +89,12 @@
    <select id="selectTMonitorList" resultType="com.ycl.platform.domain.vo.TMonitorVO">
        select m.id, m.serial_number, name, site_type, mac_addr, ip, camera_fun_type, longitude, latitude,
        camera_capture_area, on_state, civil_code, integrated_device, camera_brand, address, net_working,
        public_security, installed_time, management_unit, mu_contact_info, storage_days
        , monitor_azimuth, scene_photo_addr, model, site_vulgo, camera_type, camera_light_type, encoded_format,
        camera_dept, hybm, lxbm,d.dept_id, d.dept_name from t_monitor m
        left join t_yw_point p on m.serial_number = p.serial_number
        left join sys_dept d on p.dept_id = d.dept_id
        camera_capture_area, on_state, civil_code, d.dept_id, d.dept_name, d.area, p.province_tag,
        IF(COUNT(w.id) OVER() > 0, '是', '否') AS error, u.unit_name from t_monitor m
        left join t_yw_point p on m.serial_number = p.serial_number and p.deleted = 0
        left join sys_dept d on p.dept_id = d.dept_id and d.del_flag = 0
        left join t_work_order w on m.serial_number = w.serial_number and w.deleted = 0
        left join t_yw_unit u on p.unit_id = u.id and u.deleted = 0
        <where>
            <if test="serialNumber != null  and serialNumber != ''">and m.serial_number = #{serialNumber}</if>
            <if test="name != null  and name != ''">and name like concat('%', #{name}, '%')</if>