mirror of
https://gitee.com/pan648540858/wvp-GB28181-pro.git
synced 2026-05-24 14:07:50 +08:00
修复移动位置订阅无法关闭的BUG
This commit is contained in:
parent
bc545f12a5
commit
8d97ee613e
@ -518,8 +518,8 @@ public class DeviceServiceImpl implements IDeviceService, CommandLineRunner {
|
|||||||
log.info("[目录订阅]成功: {}", device.getDeviceId());
|
log.info("[目录订阅]成功: {}", device.getDeviceId());
|
||||||
if (!subscribeTaskRunner.containsKey(SubscribeTaskForCatalog.getKey(device))) {
|
if (!subscribeTaskRunner.containsKey(SubscribeTaskForCatalog.getKey(device))) {
|
||||||
SIPResponse response = (SIPResponse) event.getResponse();
|
SIPResponse response = (SIPResponse) event.getResponse();
|
||||||
SipTransactionInfo transactionInfoForResonse = new SipTransactionInfo(response);
|
SipTransactionInfo transactionInfoForResponse = new SipTransactionInfo(response);
|
||||||
SubscribeTask subscribeTask = SubscribeTaskForCatalog.getInstance(device, this::catalogSubscribeExpire, transactionInfoForResonse);
|
SubscribeTask subscribeTask = SubscribeTaskForCatalog.getInstance(device, this::catalogSubscribeExpire, transactionInfoForResponse);
|
||||||
if (subscribeTask != null) {
|
if (subscribeTask != null) {
|
||||||
subscribeTaskRunner.addSubscribe(subscribeTask);
|
subscribeTaskRunner.addSubscribe(subscribeTask);
|
||||||
}
|
}
|
||||||
@ -582,13 +582,13 @@ public class DeviceServiceImpl implements IDeviceService, CommandLineRunner {
|
|||||||
log.info("[移动位置订阅]成功: {}", device.getDeviceId());
|
log.info("[移动位置订阅]成功: {}", device.getDeviceId());
|
||||||
if (!subscribeTaskRunner.containsKey(SubscribeTaskForMobilPosition.getKey(device))) {
|
if (!subscribeTaskRunner.containsKey(SubscribeTaskForMobilPosition.getKey(device))) {
|
||||||
SIPResponse response = (SIPResponse) event.getResponse();
|
SIPResponse response = (SIPResponse) event.getResponse();
|
||||||
SipTransactionInfo transactionInfoForResonse = new SipTransactionInfo(response);
|
SipTransactionInfo transactionInfoForResponse = new SipTransactionInfo(response);
|
||||||
SubscribeTask subscribeTask = SubscribeTaskForMobilPosition.getInstance(device, this::catalogSubscribeExpire, transactionInfoForResonse);
|
SubscribeTask subscribeTask = SubscribeTaskForMobilPosition.getInstance(device, this::mobilPositionSubscribeExpire, transactionInfoForResponse);
|
||||||
if (subscribeTask != null) {
|
if (subscribeTask != null) {
|
||||||
subscribeTaskRunner.addSubscribe(subscribeTask);
|
subscribeTaskRunner.addSubscribe(subscribeTask);
|
||||||
}
|
}
|
||||||
}else {
|
}else {
|
||||||
subscribeTaskRunner.updateDelay(SubscribeTaskForMobilPosition.getKey(device), (device.getSubscribeCycleForCatalog() * 1000L - 500L) + System.currentTimeMillis());
|
subscribeTaskRunner.updateDelay(SubscribeTaskForMobilPosition.getKey(device), (device.getSubscribeCycleForMobilePosition() * 1000L - 500L) + System.currentTimeMillis());
|
||||||
}
|
}
|
||||||
|
|
||||||
},eventResult -> {
|
},eventResult -> {
|
||||||
@ -874,7 +874,16 @@ public class DeviceServiceImpl implements IDeviceService, CommandLineRunner {
|
|||||||
public void subscribeMobilePosition(int id, int cycle, int interval) {
|
public void subscribeMobilePosition(int id, int cycle, int interval) {
|
||||||
Device device = deviceMapper.query(id);
|
Device device = deviceMapper.query(id);
|
||||||
Assert.notNull(device, "未找到设备");
|
Assert.notNull(device, "未找到设备");
|
||||||
Assert.isTrue(device.isOnLine(), "设备已离线");
|
if (!device.isOnLine()) {
|
||||||
|
// 开启订阅
|
||||||
|
device.setSubscribeCycleForMobilePosition(cycle);
|
||||||
|
device.setMobilePositionSubmissionInterval(interval);
|
||||||
|
updateDevice(device);
|
||||||
|
if (subscribeTaskRunner.containsKey(SubscribeTaskForMobilPosition.getKey(device))) {
|
||||||
|
subscribeTaskRunner.removeSubscribe(SubscribeTaskForMobilPosition.getKey(device));
|
||||||
|
}
|
||||||
|
throw new ControllerException(ErrorCode.ERROR100.getCode(), "设备已离线");
|
||||||
|
}
|
||||||
|
|
||||||
if (device.getSubscribeCycleForMobilePosition() == cycle) {
|
if (device.getSubscribeCycleForMobilePosition() == cycle) {
|
||||||
return;
|
return;
|
||||||
@ -890,6 +899,7 @@ public class DeviceServiceImpl implements IDeviceService, CommandLineRunner {
|
|||||||
// 开启订阅
|
// 开启订阅
|
||||||
device.setSubscribeCycleForMobilePosition(cycle);
|
device.setSubscribeCycleForMobilePosition(cycle);
|
||||||
device.setMobilePositionSubmissionInterval(interval);
|
device.setMobilePositionSubmissionInterval(interval);
|
||||||
|
updateDevice(device);
|
||||||
if (cycle > 0) {
|
if (cycle > 0) {
|
||||||
addMobilePositionSubscribe(device, null);
|
addMobilePositionSubscribe(device, null);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,7 +12,7 @@ public class SubscribeTaskForMobilPosition extends SubscribeTask {
|
|||||||
public static final String name = "mobilPosition";
|
public static final String name = "mobilPosition";
|
||||||
|
|
||||||
public static SubscribeTask getInstance(Device device, SubscribeCallback callback, SipTransactionInfo transactionInfo) {
|
public static SubscribeTask getInstance(Device device, SubscribeCallback callback, SipTransactionInfo transactionInfo) {
|
||||||
if (device.getSubscribeCycleForCatalog() <= 0) {
|
if (device.getSubscribeCycleForMobilePosition() <= 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
SubscribeTaskForMobilPosition subscribeTaskForMobilPosition = new SubscribeTaskForMobilPosition();
|
SubscribeTaskForMobilPosition subscribeTaskForMobilPosition = new SubscribeTaskForMobilPosition();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user