|
@@ -41,6 +41,8 @@ import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
+import static com.genersoft.iot.vmp.gb28181.utils.XmlUtil.getText;
|
|
|
+
|
|
|
/**
|
|
|
* 设备业务(目录订阅)
|
|
|
*/
|
|
@@ -121,27 +123,26 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
logger.info("[设备上线,首次注册]: {},查询设备信息以及通道信息", device.getDeviceId());
|
|
|
deviceMapper.add(device);
|
|
|
redisCatchStorage.updateDevice(device);
|
|
|
- try {
|
|
|
- commander.deviceInfoQuery(device);
|
|
|
- } catch (InvalidArgumentException | SipException | ParseException e) {
|
|
|
- logger.error("[命令发送失败] 查询设备信息: {}", e.getMessage());
|
|
|
- }
|
|
|
+// try {
|
|
|
+// commander.deviceInfoQuery(device);
|
|
|
+// } catch (InvalidArgumentException | SipException | ParseException e) {
|
|
|
+// logger.error("[命令发送失败] 查询设备信息: {}", e.getMessage());
|
|
|
+// }
|
|
|
sync(device);
|
|
|
}else {
|
|
|
if(device.getOnline() == 0){
|
|
|
device.setOnline(1);
|
|
|
device.setCreateTime(now);
|
|
|
- logger.info("[设备上线,离线状态下重新注册]: {},查询设备信息以及通道信息", device.getDeviceId());
|
|
|
+ logger.info("[设备上线,离线状态下重新注册1]: {},查询设备信息以及通道信息", device.getDeviceId());
|
|
|
deviceMapper.update(device);
|
|
|
redisCatchStorage.updateDevice(device);
|
|
|
if (userSetting.getSyncChannelOnDeviceOnline()) {
|
|
|
- logger.info("[设备上线,离线状态下重新注册]: {},查询设备信息以及通道信息", device.getDeviceId());
|
|
|
- try {
|
|
|
- commander.deviceInfoQuery(device);
|
|
|
- } catch (InvalidArgumentException | SipException | ParseException e) {
|
|
|
- logger.error("[命令发送失败] 查询设备信息: {}", e.getMessage());
|
|
|
- }
|
|
|
- sync(device);
|
|
|
+ logger.info("[设备上线,离线状态下重新注册2]: {},查询设备信息以及通道信息", device.getDeviceId());
|
|
|
+// try {
|
|
|
+// commander.deviceInfoQuery(device);
|
|
|
+// } catch (InvalidArgumentException | SipException | ParseException e) {
|
|
|
+// logger.error("[命令发送失败] 查询设备信息: {}", e.getMessage());
|
|
|
+// }
|
|
|
// TODO 如果设备下的通道级联到了其他平台,那么需要发送事件或者notify给上级平台
|
|
|
}
|
|
|
}else {
|
|
@@ -155,6 +156,14 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+ try {
|
|
|
+ logger.info("下发deviceInfo 获取设备信息");
|
|
|
+ commander.deviceInfoQuery(device);
|
|
|
+ } catch (InvalidArgumentException | SipException | ParseException e) {
|
|
|
+ logger.error("[命令发送失败] 查询设备信息: {}", e.getMessage());
|
|
|
+ }
|
|
|
+ sync(device);
|
|
|
+
|
|
|
|
|
|
// 上线添加订阅
|
|
|
if (device.getSubscribeCycleForCatalog() > 0) {
|
|
@@ -345,12 +354,21 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
public void updateDevice(Device device) {
|
|
|
|
|
|
String now = DateUtil.getNow();
|
|
|
+ Device deviceInDb = deviceMapper.getDeviceByDeviceId(device.getDeviceId());
|
|
|
device.setUpdateTime(now);
|
|
|
device.setCharset(device.getCharset().toUpperCase());
|
|
|
device.setUpdateTime(DateUtil.getNow());
|
|
|
+
|
|
|
+ // 如果设备存在,且自动更新为0,则不更新设备名称等信息
|
|
|
+ if(deviceInDb.getAutoUpdate() == 0) {
|
|
|
+ logger.info("[设备更新] 设备{} 不跟随sip跟新设备信息",deviceInDb.getDeviceId());
|
|
|
+ device.setName(deviceInDb.getName());
|
|
|
+ device.setManufacturer(deviceInDb.getManufacturer());
|
|
|
+ device.setModel(device.getModel());
|
|
|
+ }
|
|
|
+ logger.info("[设备更新] 设备{} 更新设备信息",device.getDeviceId());
|
|
|
if (deviceMapper.update(device) > 0) {
|
|
|
redisCatchStorage.updateDevice(device);
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
|