fuliqi
2024-08-19 9a4549c0c2dbe44c9568fe56fb4df8d6fbb44d4f
Merge remote-tracking branch 'origin/master'
10个文件已修改
4个文件已添加
564 ■■■■ 已修改文件
ycl-common/src/main/java/enumeration/ErrorType.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/MonitorQualifyResult.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/PlatformVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/PlatformMapper.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/IYwThresholdService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/UYErrorTypeCheckService.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/PlatformServiceImpl.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/HKTask.java 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/UYTask.java 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/utils/ip/PingUtil.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/PlatformMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/enumeration/ErrorType.java
New file
@@ -0,0 +1,36 @@
package enumeration;
import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.Getter;
/**
 * @author:xp
 * @date:2024/8/19 11:39
 */
@Getter
public enum ErrorType {
    PLATFORM_OFFLINE("PLATFORM_OFFLINE", "平台离线"),
    DEVICE_OFFLINE("DEVICE_OFFLINE", "设备离线"),
    VIDEO_LOSS("VIDEO_LOSS", "录像缺失"),
    VIDEO_NONE("VIDEO_NONE", "无录像"),
    POINT_INFO_ERROR("POINT_INFO_ERROR", "点位信息错误"),
    SIGNAL_LOSS("SIGNAL_LOSS", "信号缺失"),
    SCREEN_COLOR_DEVIATION("SCREEN_COLOR_DEVIATION", "画面偏色"),
    SNOW_STORM("SNOW_STORM", "雪花干扰"),
    STRIPE_INTERFERENCE("STRIPE_INTERFERENCE", "条纹干扰"),
    SCREEN_OCCLUSION("SCREEN_OCCLUSION", "画面遮挡"),
    ABNORMAL_CLARITY("ABNORMAL_CLARITY", "清晰度异常"),
    ABNORMAL_BRIGHTNESS("ABNORMAL_BRIGHTNESS", "亮度异常"),
    UNKNOWN("UNKNOWN", "未知"),
    ;
    private String value;
    private String desc;
    ErrorType(String value, String desc) {
        this.value = value;
        this.desc = desc;
    }
}
ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/MonitorQualifyResult.java
@@ -59,6 +59,7 @@
     * 租户id
     */
    private QualifyResult tenantId;
    @Data
    public static class QualifyResult {
        /**
@@ -70,6 +71,9 @@
         * 展示值
         * */
        private String showValue;
        /**
         * 数据原始值,如国标码等
         */
        private String value;
    }
}
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/PlatformVO.java
@@ -22,6 +22,8 @@
    /** 平台IP */
    private String platformIP;
    private Integer parentId;
    /** 平台联系人 */
    private String platformContact;
@@ -43,6 +45,9 @@
    /** 修改时间 */
    private Date updateTime;
    /** 子级数量 */
    private Integer childNum;
    public static PlatformVO getVoByEntity(@NonNull Platform entity, PlatformVO vo) {
        if(vo == null) {
            vo = new PlatformVO();
ycl-server/src/main/java/com/ycl/platform/mapper/PlatformMapper.java
@@ -9,6 +9,8 @@
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * 平台运行监控 Mapper 接口
 *
@@ -28,6 +30,6 @@
    /**
    *  分页
    */
    IPage getPage(IPage page, @Param("query") PlatformQuery query);
    List<PlatformVO> getPage(@Param("query") PlatformQuery query);
}
ycl-server/src/main/java/com/ycl/platform/service/IYwThresholdService.java
@@ -78,4 +78,9 @@
     * 判断视频阈值条件
     */
    public void videoCheck(List list);
    /**
     * 阈值无法判断的,校验故障类型生成工单。优云
     */
    public void errorTypeCheckUY(List list);
}
ycl-server/src/main/java/com/ycl/platform/service/UYErrorTypeCheckService.java
New file
@@ -0,0 +1,39 @@
package com.ycl.platform.service;
import com.ycl.platform.domain.result.UY.*;
import java.util.List;
/**
 * 优云故障检测
 *
 * @author:xp
 * @date:2024/8/19 13:41
 */
public interface UYErrorTypeCheckService {
    /**
     * 图像检测
     */
    void imageDetectionCheck(List<ImageDetectionResult> dataList);
    /**
     * 一机一档合格率、一机一档注册率
     */
    void monitorQualifyCheck(List<MonitorQualifyResult> dataList);
    /**
     * 点位在线率
     */
    void videoOnlineCheck(List<VideoOnlineResult> dataList);
    /**
     * 录像可用
     */
    void recordMetaDSumCheck(List<RecordMetaDSumResult> dataList);
//    /**
//     * 视频标注
//     */
//    void osdMonitorCheck(List<OsdMonitorResult> dataList);
}
ycl-server/src/main/java/com/ycl/platform/service/impl/PlatformServiceImpl.java
@@ -1,6 +1,7 @@
package com.ycl.platform.service.impl;
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.ycl.platform.domain.entity.Platform;
import com.ycl.platform.domain.form.PlatformForm;
@@ -18,6 +19,7 @@
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@@ -107,9 +109,18 @@
     */
    @Override
    public Result page(PlatformQuery query) {
        IPage<PlatformVO> page = PageUtil.getPage(query, PlatformVO.class);
        baseMapper.getPage(page, query);
        return Result.ok().data(page.getRecords()).total(page.getTotal());
        List<PlatformVO> list = baseMapper.getPage(query);
        List<PlatformVO> parentList = list.stream().filter(item -> item.getParentId() == 0).collect(Collectors.toList());
        List<PlatformVO> resultList = new ArrayList<>(4);
        for (PlatformVO parent : parentList) {
            List<PlatformVO> childList = list.stream().filter(item -> item.getParentId().equals(parent.getId())).collect(Collectors.toList());
            parent.setChildNum(childList.size());
            resultList.add(parent);
            resultList.addAll(childList);
        }
        // 前端不用展示分页
        return Result.ok().data(resultList).total(0);
    }
    /**
ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java
New file
@@ -0,0 +1,138 @@
package com.ycl.platform.service.impl;
import com.ycl.platform.domain.entity.WorkOrder;
import com.ycl.platform.domain.result.UY.*;
import com.ycl.platform.service.UYErrorTypeCheckService;
import com.ycl.platform.service.WorkOrderService;
import com.ycl.utils.uuid.IdUtils;
import enumeration.ErrorType;
import enumeration.general.WorkOrderStatusEnum;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @author:xp
 * @date:2024/8/19 13:46
 */
@Service
@RequiredArgsConstructor
public class UYErrorTypeCheckServiceImpl implements UYErrorTypeCheckService {
    private final WorkOrderService workOrderService;
    /**
     * 图像检测生成工单
     *
     * @param dataList
     */
    @Override
    public void imageDetectionCheck(List<ImageDetectionResult> dataList) {
        List<WorkOrder> workOrderList = dataList.stream().map(item -> {
            WorkOrder workOrder = new WorkOrder();
            // 信号缺失
            if (0 == item.getSigna1()) {
                this.genWorkOrder(workOrder, ErrorType.SIGNAL_LOSS, item.getDeviceId());
            }
            // 画面偏色
            if (0 == item.getColor()) {
                this.genWorkOrder(workOrder, ErrorType.SCREEN_COLOR_DEVIATION, item.getDeviceId());
            }
            // 雪花干扰
            if (0 == item.getSnow()) {
                this.genWorkOrder(workOrder, ErrorType.SNOW_STORM, item.getDeviceId());
            }
            // 条纹干扰
            if (0 == item.getStripe()) {
                this.genWorkOrder(workOrder, ErrorType.STRIPE_INTERFERENCE, item.getDeviceId());
            }
            // 画面遮挡
            if (0 == item.getShade()) {
                this.genWorkOrder(workOrder, ErrorType.SCREEN_OCCLUSION, item.getDeviceId());
            }
            // 清晰度异常
            if (0 == item.getBlur()) {
                this.genWorkOrder(workOrder, ErrorType.ABNORMAL_CLARITY, item.getDeviceId());
            }
            // 亮度异常
            if (0 == item.getLight()) {
                this.genWorkOrder(workOrder, ErrorType.ABNORMAL_BRIGHTNESS, item.getDeviceId());
            }
            return workOrder;
        }).collect(Collectors.toList());
        workOrderService.innerAddWorkOrder(workOrderList);
    }
    /**
     * 点位信息异常
     *
     * @param dataList
     */
    @Override
    public void monitorQualifyCheck(List<MonitorQualifyResult> dataList) {
        List<WorkOrder> workOrderList = dataList.stream().map(item -> {
            WorkOrder workOrder = new WorkOrder();
            if (item.getSerialNumber().getError()
                    || item.getCivilCode().getError()
                    || item.getIntegrated_device().getError()
                    || item.getIp().getError()
                    || item.getJkdwlx().getError()
                    || item.getLatitude().getError()
                    || item.getLongitude().getError()
                    || item.getMacdz().getError()
                    || item.getSbzt().getError()
                    || item.getName().getError()
                    || item.getSxjcjqy().getError()
                    || item.getSxjgnlx().getError()) {
                this.genWorkOrder(workOrder, ErrorType.POINT_INFO_ERROR, item.getSerialNumber().getValue());
            }
            return workOrder;
        }).collect(Collectors.toList());
        workOrderService.innerAddWorkOrder(workOrderList);
    }
    @Override
    public void videoOnlineCheck(List<VideoOnlineResult> dataList) {
        List<WorkOrder> workOrderList = dataList.stream().map(item -> {
            WorkOrder workOrder = new WorkOrder();
            if (-1 == item.getStatus()) {
                this.genWorkOrder(workOrder, ErrorType.DEVICE_OFFLINE, item.getDeviceId());
            } else if (0 == item.getStatus()) {
                this.genWorkOrder(workOrder, ErrorType.UNKNOWN, item.getDeviceId());
            }
            return workOrder;
        }).collect(Collectors.toList());
        workOrderService.innerAddWorkOrder(workOrderList);
    }
    @Override
    public void recordMetaDSumCheck(List<RecordMetaDSumResult> dataList) {
        List<WorkOrder> workOrderList = dataList.stream().map(item -> {
            WorkOrder workOrder = new WorkOrder();
            if (0 == item.getRecordStatus()) {
                this.genWorkOrder(workOrder, ErrorType.VIDEO_LOSS, item.getDeviceId());
            } else if (-1 == item.getRecordStatus()) {
                this.genWorkOrder(workOrder, ErrorType.VIDEO_NONE, item.getDeviceId());
            }
            return workOrder;
        }).collect(Collectors.toList());
        workOrderService.innerAddWorkOrder(workOrderList);
    }
    /**
     * 工单信息
     *
     * @param workOrder
     * @param errorType 故障类型
     * @param serialNumber 国标码
     */
    private void genWorkOrder(WorkOrder workOrder, ErrorType errorType, String serialNumber) {
        workOrder.setWorkOrderNo(IdUtils.timeAddRandomNO(5));
        workOrder.setErrorType(errorType.getValue());
        workOrder.setStatus(WorkOrderStatusEnum.DISTRIBUTED);
        workOrder.setSerialNumber(serialNumber);
    }
}
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -93,6 +93,7 @@
        Map<String, WorkOrder> mapping = inDatabaseWorkOrderList.stream().collect((Collectors.toMap(WorkOrder::getSerialNumber, workOrder -> workOrder)));
        List<WorkOrder> waitAddList = new ArrayList<>(48);
        Integer updateNum = 0;
        // TODO 查询是否报备过,更新故障类型
        for (WorkOrder workOrder : workOrderList) {
            WorkOrder databaseWorkOrder = mapping.get(workOrder.getSerialNumber());
            if (Objects.nonNull(databaseWorkOrder)) {
@@ -112,6 +113,8 @@
                    // 同时新增一个运维处理信息,表明此工单被调整 TODO
                }
            } else {
                workOrder.setCreateTime(new Date());
                workOrder.setUpdateTime(new Date());
                waitAddList.add(workOrder);
            }
        }
ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java
@@ -9,6 +9,7 @@
import com.ycl.platform.mapper.YwThresholdMapper;
import com.ycl.platform.service.IYwThresholdService;
import com.ycl.platform.service.WorkOrderService;
import com.ycl.utils.ip.PingUtil;
import constant.YwThreadConstants;
import enumeration.CompareType;
import enumeration.general.BusinessTypeEnum;
@@ -16,6 +17,7 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import utils.DateUtils;
import java.util.*;
@@ -117,6 +119,32 @@
    }
    @Override
    public void errorTypeCheckUY(List list) {
        // 平台离线故障检测
        if (CollectionUtils.isEmpty(list)) {
            Boolean ping = PingUtil.ping("", 5);
            if (! ping) {
            }
        }
        // 设备离线故障检测
        // 信号缺失故障检测
        // 画面偏色故障检测
        // 雪花干扰故障检测
        // 条纹干扰故障检测
        // 画面遮挡故障检测
        // 清晰度异常检测
        // 亮度异常故障检测
    }
    /**
     * 判断人脸阈值是否满足下发条件
     *
ycl-server/src/main/java/com/ycl/task/HKTask.java
@@ -43,42 +43,46 @@
    //车辆设备全检指标监测结果
    public void vehicleDeviceInspectionTask() {
        log.info("开始执行车辆设备全检指标监测结果数据同步");
        VehicleDeviceInspectionParam param = new VehicleDeviceInspectionParam();
        param.setPageNo(ApiConstants.PageNo);
        param.setPageSize(ApiConstants.HKPageSize);
        param.setDate(DateUtils.getDate());
        param.setDataType(ApiConstants.HK_DataType_CAR);
        List<VehicleDeviceInspectionResult> list = HkApiUtil.sendAPI("/api/dqd/service/rs/v2/data/vehFullAmount/query", param, VehicleDeviceInspectionResult.class);
        if (!CollectionUtils.isEmpty(list)) {
            //如果存在之前的数据先删除
            Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
            DeleteResult result = mongoTemplate.remove(query, VehicleDeviceInspectionResult.class);
            //存放在mongo中
            mongoTemplate.insertAll(list);
            //同步的数据进行工单阈值处理
            ywThresholdService.carCheck(list);
        }
//        VehicleDeviceInspectionParam param = new VehicleDeviceInspectionParam();
//        param.setPageNo(ApiConstants.PageNo);
//        param.setPageSize(ApiConstants.HKPageSize);
//        param.setDate(DateUtils.getDate());
//        param.setDataType(ApiConstants.HK_DataType_CAR);
//        List<VehicleDeviceInspectionResult> list = HkApiUtil.sendAPI("/api/dqd/service/rs/v2/data/vehFullAmount/query", param, VehicleDeviceInspectionResult.class);
//        if (!CollectionUtils.isEmpty(list)) {
//            //如果存在之前的数据先删除
//            Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
//            DeleteResult result = mongoTemplate.remove(query, VehicleDeviceInspectionResult.class);
//            //存放在mongo中
//            mongoTemplate.insertAll(list);
//            //同步的数据进行工单阈值处理
//            ywThresholdService.carCheck(list);
//        }
        Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date())));
        ywThresholdService.carCheck(mongoTemplate.find(query, VehicleDeviceInspectionResult.class));
        log.info("结束车辆设备全检指标监测结果数据同步");
    }
    //人脸设备全检指标监测结果
    public void faceDeviceInspectionTask() {
        log.info("开始执行人脸设备全检指标监测结果数据同步");
        FaceDeviceInspectionParam param = new FaceDeviceInspectionParam();
        param.setPageNo(ApiConstants.PageNo);
        param.setPageSize(ApiConstants.HKPageSize);
        param.setDate(DateUtils.getDate());
        List<FaceDeviceInspectionResult> list = HkApiUtil.sendAPI("/api/dqd/service/rs/v2/data/faceFullAmount/query", param, FaceDeviceInspectionResult.class);
        if (!CollectionUtils.isEmpty(list)) {
            //如果存在之前的数据先删除
            Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
            DeleteResult result = mongoTemplate.remove(query, FaceDeviceInspectionResult.class);
            //存放在mongo中
            mongoTemplate.insertAll(list);
            //同步的数据进行工单阈值处理
            //TODO:可能有重复工单
            ywThresholdService.faceCheck(list);
        }
//        FaceDeviceInspectionParam param = new FaceDeviceInspectionParam();
//        param.setPageNo(ApiConstants.PageNo);
//        param.setPageSize(ApiConstants.HKPageSize);
//        param.setDate(DateUtils.getDate());
//        List<FaceDeviceInspectionResult> list = HkApiUtil.sendAPI("/api/dqd/service/rs/v2/data/faceFullAmount/query", param, FaceDeviceInspectionResult.class);
//        if (!CollectionUtils.isEmpty(list)) {
//            //如果存在之前的数据先删除
//            Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
//            DeleteResult result = mongoTemplate.remove(query, FaceDeviceInspectionResult.class);
//            //存放在mongo中
//            mongoTemplate.insertAll(list);
//            //同步的数据进行工单阈值处理
//            //TODO:可能有重复工单
//            ywThresholdService.faceCheck(list);
//        }
        Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date())));
        ywThresholdService.faceCheck(mongoTemplate.find(query, FaceDeviceInspectionResult.class));
        log.info("结束人脸设备全检指标监测结果数据同步");
    }
ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -4,12 +4,14 @@
import com.mongodb.client.result.DeleteResult;
import com.ycl.feign.UYClient;
import com.ycl.platform.domain.param.UY.*;
import com.ycl.platform.domain.result.HK.FaceDeviceInspectionResult;
import com.ycl.platform.domain.result.UY.OneMachineFileResult;
import com.ycl.platform.domain.result.UY.OsdMonitorResult;
import com.ycl.platform.domain.result.UY.RecordMetaDSumResult;
import com.ycl.platform.domain.result.UY.*;
import com.ycl.platform.service.ITMonitorService;
import com.ycl.platform.service.IYwThresholdService;
import com.ycl.platform.service.UYErrorTypeCheckService;
import com.ycl.utils.DateUtils;
import constant.ApiConstants;
import lombok.extern.slf4j.Slf4j;
@@ -43,6 +45,9 @@
    private IYwThresholdService ywThresholdService;
    @Autowired
    private ITMonitorService monitorService;
    @Autowired
    private UYErrorTypeCheckService uyErrorTypeCheckService;
    @Value("${youYun.tenantId}")
    private String tenantId;
    @Value("${youYun.apikey}")
@@ -57,37 +62,41 @@
    // 图像检测
    public void imageDetection() {
        log.info("开始执行图像检测数据同步");
        ImageDetectionParam param = new ImageDetectionParam();
        param.setPageNum(ApiConstants.PageNo);
        param.setPageSize(ApiConstants.PageSize);
        param.setArealayerno(ApiConstants.AreaNo);
        JSONObject jsonObject = uyClient.imageDetection(param);
        if (jsonObject != null) {
            log.info("数据格式" + jsonObject);
            Integer statusCode = jsonObject.getInteger("statusCode");
            if (ApiConstants.UYSuccessCode.equals(statusCode)) {
                JSONObject data = jsonObject.getJSONObject("data");
                if (data != null) {
                    List<ImageDetectionResult> records = data.getList("records", ImageDetectionResult.class);
                    if (!CollectionUtils.isEmpty(records)) {
                        //如果今天存在之前的数据先删除
                        Query query = new Query(Criteria
                                .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
                        DeleteResult result = mongoTemplate.remove(query, QueryVqdResult.class);
                        //存放在mongo中
                        mongoTemplate.insertAll(records);
                    } else {
                        log.error("图像监测数据为空{}", data);
                    }
                } else {
                    log.error("图像监测数据为空{}", jsonObject);
                }
            } else {
                log.error("图像监测请求失败{}", jsonObject);
            }
        } else {
            log.error("图像监测数据为空");
        }
//        ImageDetectionParam param = new ImageDetectionParam();
//        param.setPageNum(ApiConstants.PageNo);
//        param.setPageSize(ApiConstants.PageSize);
//        param.setArealayerno(ApiConstants.AreaNo);
//        JSONObject jsonObject = uyClient.imageDetection(param);
//        if (jsonObject != null) {
//            log.info("数据格式" + jsonObject);
//            Integer statusCode = jsonObject.getInteger("statusCode");
//            if (ApiConstants.UYSuccessCode.equals(statusCode)) {
//                JSONObject data = jsonObject.getJSONObject("data");
//                if (data != null) {
//                    List<ImageDetectionResult> records = data.getList("records", ImageDetectionResult.class);
//                    if (!CollectionUtils.isEmpty(records)) {
//                        //如果今天存在之前的数据先删除
//                        Query query = new Query(Criteria
//                                .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
//                        DeleteResult result = mongoTemplate.remove(query, ImageDetectionResult.class);
//                        //存放在mongo中
//                        mongoTemplate.insertAll(records);
//                        // 工单生成
//                        uyErrorTypeCheckService.imageDetectionCheck(records);
//                    } else {
//                        log.error("图像监测数据为空{}", data);
//                    }
//                } else {
//                    log.error("图像监测数据为空{}", jsonObject);
//                }
//            } else {
//                log.error("图像监测请求失败{}", jsonObject);
//            }
//        } else {
//            log.error("图像监测数据为空");
//        }
        Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date())));
        uyErrorTypeCheckService.imageDetectionCheck(mongoTemplate.find(query, ImageDetectionResult.class));
        log.info("结束执行图像监测数据同步");
    }
@@ -97,33 +106,37 @@
        // 一机一档注册率
        // 档案考核比
        log.info("开始执行一机一档合格率数据同步");
        MonitorQualifyParam param = new MonitorQualifyParam();
        param.setPageNum(ApiConstants.PageNo);
        param.setPageSize(ApiConstants.PageSize);
        JSONObject jsonObject = uyClient.monitorQualify(param);
        if (jsonObject != null) {
            String code = jsonObject.getString("code");
            if (ApiConstants.UYSuccessCodeStr.equals(code)) {
                JSONObject data = jsonObject.getJSONObject("data");
                if (data != null) {
                    List<MonitorQualifyResult> records = data.getList("records", MonitorQualifyResult.class);
                    if (!CollectionUtils.isEmpty(records)) {
                        //如果今天存在之前的数据先删除
                        Query query = new Query(Criteria
                                .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
                        DeleteResult result = mongoTemplate.remove(query, MonitorQualifyResult.class);
                        //存放在mongo中
                        mongoTemplate.insertAll(records);
                    } else {
                        log.error("一机一档合格率数据为空{}", data);
                    }
                }
            } else {
                log.error("一机一档合格率数据为空{}", jsonObject);
            }
        } else {
            log.error("一机一档合格率数据为空");
        }
//        MonitorQualifyParam param = new MonitorQualifyParam();
//        param.setPageNum(ApiConstants.PageNo);
//        param.setPageSize(ApiConstants.PageSize);
//        JSONObject jsonObject = uyClient.monitorQualify(param);
//        if (jsonObject != null) {
//            String code = jsonObject.getString("code");
//            if (ApiConstants.UYSuccessCodeStr.equals(code)) {
//                JSONObject data = jsonObject.getJSONObject("data");
//                if (data != null) {
//                    List<MonitorQualifyResult> records = data.getList("records", MonitorQualifyResult.class);
//                    if (!CollectionUtils.isEmpty(records)) {
//                        //如果今天存在之前的数据先删除
//                        Query query = new Query(Criteria
//                                .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
//                        DeleteResult result = mongoTemplate.remove(query, MonitorQualifyResult.class);
//                        //存放在mongo中
//                        mongoTemplate.insertAll(records);
//                        // 工单生成
//                        uyErrorTypeCheckService.monitorQualifyCheck(records);
//                    } else {
//                        log.error("一机一档合格率数据为空{}", data);
//                    }
//                }
//            } else {
//                log.error("一机一档合格率数据为空{}", jsonObject);
//            }
//        } else {
//            log.error("一机一档合格率数据为空");
//        }
        Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date())));
        uyErrorTypeCheckService.monitorQualifyCheck(mongoTemplate.find(query, MonitorQualifyResult.class));
        log.info("结束一机一档合格率数据同步");
    }
@@ -151,6 +164,8 @@
                        DeleteResult result = mongoTemplate.remove(query, VideoOnlineResult.class);
                        //存放在mongo中
                        mongoTemplate.insertAll(records);
                        // 工单生成
                        uyErrorTypeCheckService.videoOnlineCheck(records);
                    } else {
                        log.error("点位在线结果数据为空{}", data);
                    }
@@ -163,6 +178,8 @@
        } else {
            log.error("点位在线结果数据为空");
        }
        Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date())));
        uyErrorTypeCheckService.videoOnlineCheck(mongoTemplate.find(query, VideoOnlineResult.class));
        log.info("结束执行点位在线数据同步");
    }
@@ -170,30 +187,34 @@
    public void recordMetaDSumTask() {
        //录像可用率
        log.info("开始执行录像可用数据同步");
        RecordMetaDSumParam param = new RecordMetaDSumParam();
        param.setTenantId(tenantId);
        Calendar instance = Calendar.getInstance();
        instance.setTime(new Date());
        instance.add(Calendar.DAY_OF_MONTH, -1);
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        String yesterday = format.format(instance.getTime());
        param.setStatTime(yesterday);
        JSONObject jsonObject = uyClient.recordMetaDSumList(param);
        if (jsonObject != null) {
            if (ApiConstants.UYSuccessCodeStr.equals(jsonObject.getString("code"))) {
                List<RecordMetaDSumResult> records = jsonObject.getList("data", RecordMetaDSumResult.class);
                if (!CollectionUtils.isEmpty(records)) {
                    //如果今天存在之前的数据先删除
                    Query query = new Query(Criteria
                            .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
                    DeleteResult result = mongoTemplate.remove(query, RecordMetaDSumResult.class);
                    //存放在mongo中
                    mongoTemplate.insertAll(records);
                }
            } else {
                log.error("录像可用数据为空{}", jsonObject);
            }
        }
//        RecordMetaDSumParam param = new RecordMetaDSumParam();
//        param.setTenantId(tenantId);
//        Calendar instance = Calendar.getInstance();
//        instance.setTime(new Date());
//        instance.add(Calendar.DAY_OF_MONTH, -1);
//        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
//        String yesterday = format.format(instance.getTime());
//        param.setStatTime(yesterday);
//        JSONObject jsonObject = uyClient.recordMetaDSumList(param);
//        if (jsonObject != null) {
//            if (ApiConstants.UYSuccessCodeStr.equals(jsonObject.getString("code"))) {
//                List<RecordMetaDSumResult> records = jsonObject.getList("data", RecordMetaDSumResult.class);
//                if (!CollectionUtils.isEmpty(records)) {
//                    //如果今天存在之前的数据先删除
//                    Query query = new Query(Criteria
//                            .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
//                    DeleteResult result = mongoTemplate.remove(query, RecordMetaDSumResult.class);
//                    //存放在mongo中
//                    mongoTemplate.insertAll(records);
//                    // 工单生成
//                    uyErrorTypeCheckService.recordMetaDSumCheck(records);
//                }
//            } else {
//                log.error("录像可用数据为空{}", jsonObject);
//            }
//        }
        Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date())));
        uyErrorTypeCheckService.recordMetaDSumCheck(mongoTemplate.find(query, RecordMetaDSumResult.class));
        log.info("结束执行录像可用数据同步");
    }
ycl-server/src/main/java/com/ycl/utils/ip/PingUtil.java
New file
@@ -0,0 +1,33 @@
package com.ycl.utils.ip;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
import java.net.InetAddress;
/**
 * ping
 *
 * @author:xp
 * @date:2024/8/19 11:11
 */
@Slf4j
public class PingUtil {
    /**
     * ping
     *
     * @param ip 目标ip地址
     * @param timeoutSed 超时时间
     * @return 是否在线
     */
    public static Boolean ping(String ip, Integer timeoutSed) {
        try {
            return InetAddress.getByName(ip).isReachable(timeoutSed * 1000);
        } catch (IOException e) {
            log.error("未知的IP地址");
            return Boolean.FALSE;
        }
    }
}
ycl-server/src/main/resources/mapper/zgyw/PlatformMapper.xml
@@ -44,7 +44,8 @@
            TP.remark,
            TP.create_time,
            TP.update_time,
            TP.id
            TP.id,
            TP.parent_id
        FROM
            t_platform TP
        WHERE