fuliqi
2024-11-13 6da8bd9bf08a75e3d026505f23c008f3b8188c22
ycl-server/src/main/java/com/ycl/task/OsdTask.java
@@ -47,15 +47,38 @@
    private UYErrorTypeCheckService uyErrorTypeCheckService;
    @Autowired
    private YwPointService pointService;
    @Value("${HK.userName}")
    public String HKUserName;
    @Value("${HK.password}")
    public String HKPassword;
    @Value("${DH.userName}")
    public String DHUserName;
    @Value("${DH.password}")
    public String DHPassword;
    @Value("${YS.userName}")
    public String YSUserName;
    @Value("${YS.password}")
    public String YSPassword;
    /**
     * 通过查mongoDB每日一机一档数据获取设备ip
     * 通过设备ip、品牌调用不同api获取osd信息
     * 比对mongoDB一机一档信息,整理成result存入mongo
     * 同步品牌到mysql
     */
    //TODO:大华动态库linux换位置
    public void getOSD() throws ExecutionException, InterruptedException {
        log.info("开始获取OSD");
//        //海康设备测试
//        //全景
//        OSDResult osd1 = HKApi.getOsdByIP("51031140001320359101","51.95.99.112", HKUserName, HKPassword);
//        log.info("海康全景:{}",osd1);
//        //细节
//        OSDResult osd2 = HKApi.getOsdByIP("51031140001321359101","51.95.99.112", HKUserName, HKPassword);
//        log.info("海康细节:{}",osd2);
//        //大华设备测试
//        OSDResult osd3 = DHApi.getOsd("51030244001320120201","51.95.4.3", DHUserName, DHPassword);
//        log.info("大华全景:{}",osd3);
//        OSDResult osd4 = DHApi.getOsd("51030244001321120201","51.95.4.3", DHUserName, DHPassword);
//        log.info("大华细节:{}",osd4);
        //查一机一档monitor
        Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
        List<MonitorQualifyResult> oneMachineFileResults = mongoTemplate.find(query, MonitorQualifyResult.class);
@@ -75,7 +98,7 @@
            List<Future<OSDResult>> futureList = new ArrayList<>(48);
            List<OSDResult> osdResultList = new ArrayList<>();
            for (TMonitor monitor : monitors) {
                OSDCheckThread thread = new OSDCheckThread(monitor);
                OSDCheckThread thread = new OSDCheckThread(monitor,HKUserName,HKPassword,DHUserName,DHPassword,YSUserName,YSPassword);
                Future<OSDResult> future = executorService.submit(thread);
                futureList.add(future);
            }
@@ -88,12 +111,13 @@
            List<OsdCheckResult> checkResults = new ArrayList<>();
            Map<String, TMonitor> monitorMap = monitors.stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity()));
            for (OSDResult osdResult : osdResultList) {
                TMonitor monitor = monitorMap.get(osdResult.getSerialNumber());
                //封装OsdCheckResult
                OsdCheckResult osdCheckResult = getOsdCheckResult(osdResult, monitor);
                checkCorrect(osdResult, monitor, osdCheckResult);
                log.info("校验结果:{}",osdCheckResult);
                checkResults.add(osdCheckResult);
                if(osdResult!=null) {
                    TMonitor monitor = monitorMap.get(osdResult.getSerialNumber());
                    //封装OsdCheckResult
                    OsdCheckResult osdCheckResult = getOsdCheckResult(osdResult, monitor);
                    checkCorrect(osdResult, monitor, osdCheckResult);
                    checkResults.add(osdCheckResult);
                }
            }
            log.info("结果数据大小:{}", checkResults.size());
            //结果存入mongo
@@ -116,6 +140,7 @@
    private OsdCheckResult getOsdCheckResult(OSDResult osdResult, TMonitor monitor) {
        OsdCheckResult osdCheckResult = new OsdCheckResult();
        osdCheckResult.setDeviceNo(osdResult.getSerialNumber());
        osdCheckResult.setNo(osdResult.getSerialNumber());
        osdCheckResult.setIp(monitor.getIp());
        osdCheckResult.setDeviceType(monitor.getCameraFunType());
        osdCheckResult.setCheckTime(osdResult.getCheckTime());
@@ -140,16 +165,19 @@
            } else {
                osdCheckResult.setOsdTimeCorrect(ApiConstants.OSD_Error);
            }
        }else {
            osdCheckResult.setOsdTimeCorrect(ApiConstants.OSD_Unknown);
        }
        //检查通道名是否正确
        //校验规则,这里暂时不比较全景和细节两字。
        if (!StringUtils.isEmpty(osdResult.getName()) && !StringUtils.isEmpty(monitor.getName())) {
            if (monitor.getName().equals(osdResult.getName()) || monitor.getName().replace("全景", "细节").equals(osdResult.getName()) || monitor.getName().replace("细节", "全景").equals(osdResult.getName())) {
            if (monitor.getName().equals(osdResult.getName())) {
                osdCheckResult.setOsdNameCorrect(ApiConstants.OSD_Correct);
                osdCheckResult.setOsdName(osdResult.getName());
            } else {
                osdCheckResult.setOsdNameCorrect(ApiConstants.OSD_Error);
            }
        }else {
            osdCheckResult.setOsdNameCorrect(ApiConstants.OSD_Unknown);
        }
        //检查省是否正确
        if (!StringUtils.isEmpty(osdResult.getOSD1())) {
@@ -158,6 +186,8 @@
            } else {
                osdCheckResult.setOsdProvinceCorrect(ApiConstants.OSD_Error);
            }
        }else {
            osdCheckResult.setOsdProvinceCorrect(ApiConstants.OSD_Unknown);
        }
        //检查市是否正确
        if (!StringUtils.isEmpty(osdResult.getOSD2())) {
@@ -166,15 +196,19 @@
            } else {
                osdCheckResult.setOsdCityCorrect(ApiConstants.OSD_Error);
            }
        }else {
            osdCheckResult.setOsdCityCorrect(ApiConstants.OSD_Unknown);
        }
        //检查区县是否正确
        if (!StringUtils.isEmpty(osdResult.getOSD3())) {
            AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(monitor.getSerialNumber().substring(0, 6));
            if (areaDeptEnum != null && osdResult.getOSD3().equals(areaDeptEnum.getName())) {
            if (areaDeptEnum != null && osdResult.getOSD3().equals(areaDeptEnum.getOsdName())) {
                osdCheckResult.setOsdPartCorrect(ApiConstants.OSD_Correct);
            } else {
                osdCheckResult.setOsdPartCorrect(ApiConstants.OSD_Error);
            }
        }else {
            osdCheckResult.setOsdPartCorrect(ApiConstants.OSD_Unknown);
        }
    }