package com.ycl.thread;
|
|
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 enumeration.DeviceType;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Value;
|
|
import java.util.concurrent.Callable;
|
@Slf4j
|
public class OSDCheckThread implements Callable<OSDResult> {
|
private TMonitor monitor;
|
|
public OSDCheckThread(TMonitor monitor) {
|
this.monitor = monitor;
|
}
|
|
public TMonitor getMonitor() {
|
return monitor;
|
}
|
|
public void setMonitor(TMonitor monitor) {
|
this.monitor = monitor;
|
}
|
|
@Override
|
public OSDResult call() throws Exception {
|
if (DeviceType.HK.getType().equals(monitor.getDeviceType())) {
|
//海康
|
OSDResult osd = HKApi.getOsdByIP(monitor.getSerialNumber(),monitor.getIp(),monitor.getUsername(),monitor.getPassword());
|
OSDResult osdResult = checkSuccess(monitor, osd);
|
if (osdResult!=null) {
|
return osd;
|
}else {
|
return null;
|
}
|
} else if (DeviceType.DH.getType().equals(monitor.getDeviceType())) {
|
//大华
|
OSDResult osd = DHApi.getOsd(monitor.getSerialNumber(),monitor.getIp(), monitor.getUsername(),monitor.getPassword());
|
OSDResult osdResult = checkSuccess(monitor, osd);
|
if (osdResult!=null) {
|
return osd;
|
}else {
|
return null;
|
}
|
} else if (DeviceType.YS.getType().equals(monitor.getDeviceType())) {
|
//宇视
|
OSDResult osd = YSApi.getOsd(monitor.getIp(), monitor.getUsername(),monitor.getPassword());
|
OSDResult osdResult = checkSuccess(monitor, osd);
|
if (osdResult!=null) {
|
return osd;
|
}else {
|
return null;
|
}
|
}
|
//未知品牌或者api调用失败,挨个执行所有api
|
return tryAllApi(monitor);
|
}
|
|
|
private OSDResult tryAllApi(TMonitor monitor) {
|
//尝试海康的api
|
OSDResult hkosd = HKApi.getOsdByIP(monitor.getSerialNumber(),monitor.getIp(), monitor.getUsername(),monitor.getPassword());
|
if (hkosd != null) {
|
hkosd.setSerialNumber(monitor.getSerialNumber());
|
return hkosd;
|
}
|
//尝试大华的api
|
OSDResult dhosd = DHApi.getOsd(monitor.getSerialNumber(),monitor.getIp(),monitor.getUsername(),monitor.getPassword());
|
if (dhosd != null) {
|
dhosd.setSerialNumber(monitor.getSerialNumber());
|
return dhosd;
|
}
|
//宇视api
|
OSDResult ysosd = YSApi.getOsd(monitor.getIp(), monitor.getUsername(),monitor.getPassword());
|
if (ysosd != null) {
|
ysosd.setSerialNumber(monitor.getSerialNumber());
|
return ysosd;
|
}
|
return null;
|
}
|
|
private OSDResult checkSuccess(TMonitor monitor, OSDResult osd) {
|
if (osd != null) {
|
osd.setSerialNumber(monitor.getSerialNumber());
|
return osd;
|
} else {
|
return null;
|
}
|
}
|
}
|