fuliqi
2024-09-02 bb4c01a00c8203fdadf38aca9290227f6682655f
ycl-server/src/main/java/com/ycl/task/OsdTask.java
@@ -4,6 +4,7 @@
import com.mongodb.client.result.DeleteResult;
import com.ycl.api.DH.utils.DHApi;
import com.ycl.api.HK.HKApi;
import com.ycl.api.YS.YSApi;
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.result.OSDResult;
import com.ycl.platform.domain.result.UY.MonitorQualifyResult;
@@ -65,7 +66,6 @@
     */
    public void getOSD() {
        log.info("开始获取OSD");
//        YSApi.getOsd("51.95.66.42",YSUserName,YSPassword);
        //批量修改海康品牌集合
        List<String> hkList = new ArrayList<>();
        //批量修改大华品牌集合
@@ -92,21 +92,26 @@
            for (TMonitor monitor : monitors) {
                executorService.submit(() -> {
                    if (DeviceType.HK.getType().equals(monitor.getDeviceType())) {
                        //海康品牌
                        //海康
                        OSDResult osd = HKApi.getOsdByIP(monitor.getIp(), HKUserName, HKPassword);
                        if (checkSuccess(osdResultList, monitor, osd)) {
                            log.info("海康调用成功" + osd);
                            return;
                        }
                    } else if (DeviceType.DH.getType().equals(monitor.getDeviceType())) {
                        //大华品牌
                        //大华
                        OSDResult osd = DHApi.getOsd(monitor.getIp(), DHUserName, DHPassword);
                        if (checkSuccess(osdResultList, monitor, osd)) {
                            log.info("大华调用成功" + osd);
                            return;
                        }
                    } else if (DeviceType.YS.getType().equals(monitor.getDeviceType())) {
                        //TODO:宇视api
                        //宇视
                        OSDResult osd = YSApi.getOsd(monitor.getIp(), YSUserName, YSPassword);
                        if (checkSuccess(osdResultList, monitor, osd)) {
                            log.info("宇视调用成功" + osd);
                            return;
                        }
                    }
                    //未知品牌或者api调用失败,挨个执行所有api
                    OSDResult osd = tryAllApi(monitor, hkList, dhList, ysList);
@@ -155,14 +160,14 @@
            }
            //修改数据库品牌
            if (!CollectionUtils.isEmpty(hkList)) {
                log.info("修改品牌");
                monitorMapper.batchUpdateDeviceType(hkList, DeviceType.HK.getType());
            }
            if (!CollectionUtils.isEmpty(dhList)) {
                log.info("修改品牌");
                monitorMapper.batchUpdateDeviceType(dhList, DeviceType.DH.getType());
            }
            //TODO:宇视
            if (!CollectionUtils.isEmpty(ysList)) {
                monitorMapper.batchUpdateDeviceType(ysList, DeviceType.YS.getType());
            }
        }
        log.info("结束获取OSD");
    }
@@ -195,16 +200,11 @@
            }
        }
        //检查通道名是否正确
        //TODO:校验规则,这里暂时不比较全景和细节两字。
        //校验规则,这里暂时不比较全景和细节两字。
        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())) {
                //OSD4和5都可能为名字、比较其中一条正确即可,正确了改为正确名字
                osdCheckResult.setOsdNameCorrect(ApiConstants.OSD_Correct);
                osdCheckResult.setOsdName(osdResult.getName());
            }else if (monitor.getName().equals(osdResult.getName2()) || monitor.getName().replace("全景","细节").equals(osdResult.getName2()) || monitor.getName().replace("细节","全景").equals(osdResult.getName2())) {
                //OSD4和5都可能为名字、比较其中一条正确即可,正确了改为正确名字
                osdCheckResult.setOsdName(osdResult.getName2());
                osdCheckResult.setOsdNameCorrect(ApiConstants.OSD_Correct);
            }else {
                osdCheckResult.setOsdNameCorrect(ApiConstants.OSD_Error);
            }
@@ -269,7 +269,16 @@
            }
            return dhosd;
        }
        //TODO:宇视api
        //宇视api
        OSDResult ysosd = YSApi.getOsd(monitor.getIp(), YSUserName, YSPassword);
        if (ysosd != null) {
            ysosd.setSerialNumber(monitor.getSerialNumber());
            log.info("宇视调用成功"+ysosd);
            synchronized (ysList) {
                ysList.add(monitor.getSerialNumber());
            }
            return ysosd;
        }
        return null;
    }
}