临时提交
parent
913d4bdc8f
commit
8a605ad722
|
@ -16,11 +16,7 @@ public class CatalogData {
|
||||||
private Instant lastTime;
|
private Instant lastTime;
|
||||||
private Device device;
|
private Device device;
|
||||||
private String errorMsg;
|
private String errorMsg;
|
||||||
|
private DataStatus status;
|
||||||
public enum CatalogDataStatus{
|
|
||||||
ready, runIng, end
|
|
||||||
}
|
|
||||||
private CatalogDataStatus status;
|
|
||||||
|
|
||||||
|
|
||||||
public int getSn() {
|
public int getSn() {
|
||||||
|
@ -71,11 +67,11 @@ public class CatalogData {
|
||||||
this.errorMsg = errorMsg;
|
this.errorMsg = errorMsg;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CatalogDataStatus getStatus() {
|
public DataStatus getStatus() {
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setStatus(CatalogDataStatus status) {
|
public void setStatus(DataStatus status) {
|
||||||
this.status = status;
|
this.status = status;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
package com.genersoft.iot.vmp.gb28181.bean;
|
||||||
|
|
||||||
|
public enum DataStatus {
|
||||||
|
ready, runIng, end
|
||||||
|
}
|
|
@ -0,0 +1,70 @@
|
||||||
|
package com.genersoft.iot.vmp.gb28181.bean;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 预置位数据
|
||||||
|
* @author lin
|
||||||
|
*/
|
||||||
|
public class PresetData {
|
||||||
|
/**
|
||||||
|
* 命令序列号
|
||||||
|
*/
|
||||||
|
private int sn;
|
||||||
|
private int total;
|
||||||
|
private List<PresetItem> presetItemList;
|
||||||
|
private Instant lastTime;
|
||||||
|
private String errorMsg;
|
||||||
|
|
||||||
|
private DataStatus status;
|
||||||
|
|
||||||
|
|
||||||
|
public int getSn() {
|
||||||
|
return sn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSn(int sn) {
|
||||||
|
this.sn = sn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getTotal() {
|
||||||
|
return total;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTotal(int total) {
|
||||||
|
this.total = total;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<PresetItem> getPresetItemList() {
|
||||||
|
return presetItemList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPresetItemList(List<PresetItem> presetItemList) {
|
||||||
|
this.presetItemList = presetItemList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Instant getLastTime() {
|
||||||
|
return lastTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLastTime(Instant lastTime) {
|
||||||
|
this.lastTime = lastTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getErrorMsg() {
|
||||||
|
return errorMsg;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setErrorMsg(String errorMsg) {
|
||||||
|
this.errorMsg = errorMsg;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DataStatus getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStatus(DataStatus status) {
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package com.genersoft.iot.vmp.gb28181.bean;
|
||||||
|
|
||||||
|
public class PresetItem {
|
||||||
|
|
||||||
|
private int presetID;
|
||||||
|
private String presetName;
|
||||||
|
|
||||||
|
public int getPresetID() {
|
||||||
|
return presetID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPresetID(int presetID) {
|
||||||
|
this.presetID = presetID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPresetName() {
|
||||||
|
return presetName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPresetName(String presetName) {
|
||||||
|
this.presetName = presetName;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,8 +1,6 @@
|
||||||
package com.genersoft.iot.vmp.gb28181.event.subscribe.catalog;
|
package com.genersoft.iot.vmp.gb28181.event.subscribe.catalog;
|
||||||
|
|
||||||
import com.genersoft.iot.vmp.common.CommonGbChannel;
|
import com.genersoft.iot.vmp.common.CommonGbChannel;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
|
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.GbStream;
|
|
||||||
import org.springframework.context.ApplicationEvent;
|
import org.springframework.context.ApplicationEvent;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
package com.genersoft.iot.vmp.gb28181.session;
|
package com.genersoft.iot.vmp.gb28181.session;
|
||||||
|
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.CatalogData;
|
import com.genersoft.iot.vmp.gb28181.bean.*;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.Device;
|
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
|
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.SyncStatus;
|
|
||||||
import com.genersoft.iot.vmp.service.IDeviceChannelService;
|
import com.genersoft.iot.vmp.service.IDeviceChannelService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
@ -24,12 +21,12 @@ public class CatalogDataCatch {
|
||||||
|
|
||||||
public void addReady(Device device, int sn ) {
|
public void addReady(Device device, int sn ) {
|
||||||
CatalogData catalogData = data.get(device.getDeviceId());
|
CatalogData catalogData = data.get(device.getDeviceId());
|
||||||
if (catalogData == null || catalogData.getStatus().equals(CatalogData.CatalogDataStatus.end)) {
|
if (catalogData == null || catalogData.getStatus().equals(DataStatus.end)) {
|
||||||
catalogData = new CatalogData();
|
catalogData = new CatalogData();
|
||||||
catalogData.setChannelList(Collections.synchronizedList(new ArrayList<>()));
|
catalogData.setChannelList(Collections.synchronizedList(new ArrayList<>()));
|
||||||
catalogData.setDevice(device);
|
catalogData.setDevice(device);
|
||||||
catalogData.setSn(sn);
|
catalogData.setSn(sn);
|
||||||
catalogData.setStatus(CatalogData.CatalogDataStatus.ready);
|
catalogData.setStatus(DataStatus.ready);
|
||||||
catalogData.setLastTime(Instant.now());
|
catalogData.setLastTime(Instant.now());
|
||||||
data.put(device.getDeviceId(), catalogData);
|
data.put(device.getDeviceId(), catalogData);
|
||||||
}
|
}
|
||||||
|
@ -43,7 +40,7 @@ public class CatalogDataCatch {
|
||||||
catalogData.setTotal(total);
|
catalogData.setTotal(total);
|
||||||
catalogData.setDevice(device);
|
catalogData.setDevice(device);
|
||||||
catalogData.setChannelList(deviceChannelList);
|
catalogData.setChannelList(deviceChannelList);
|
||||||
catalogData.setStatus(CatalogData.CatalogDataStatus.runIng);
|
catalogData.setStatus(DataStatus.runIng);
|
||||||
catalogData.setLastTime(Instant.now());
|
catalogData.setLastTime(Instant.now());
|
||||||
data.put(deviceId, catalogData);
|
data.put(deviceId, catalogData);
|
||||||
}else {
|
}else {
|
||||||
|
@ -53,7 +50,7 @@ public class CatalogDataCatch {
|
||||||
}
|
}
|
||||||
catalogData.setTotal(total);
|
catalogData.setTotal(total);
|
||||||
catalogData.setDevice(device);
|
catalogData.setDevice(device);
|
||||||
catalogData.setStatus(CatalogData.CatalogDataStatus.runIng);
|
catalogData.setStatus(DataStatus.runIng);
|
||||||
catalogData.getChannelList().addAll(deviceChannelList);
|
catalogData.getChannelList().addAll(deviceChannelList);
|
||||||
catalogData.setLastTime(Instant.now());
|
catalogData.setLastTime(Instant.now());
|
||||||
}
|
}
|
||||||
|
@ -84,7 +81,7 @@ public class CatalogDataCatch {
|
||||||
syncStatus.setCurrent(catalogData.getChannelList().size());
|
syncStatus.setCurrent(catalogData.getChannelList().size());
|
||||||
syncStatus.setTotal(catalogData.getTotal());
|
syncStatus.setTotal(catalogData.getTotal());
|
||||||
syncStatus.setErrorMsg(catalogData.getErrorMsg());
|
syncStatus.setErrorMsg(catalogData.getErrorMsg());
|
||||||
if (catalogData.getStatus().equals(CatalogData.CatalogDataStatus.end)) {
|
if (catalogData.getStatus().equals(DataStatus.end)) {
|
||||||
syncStatus.setSyncIng(false);
|
syncStatus.setSyncIng(false);
|
||||||
}else {
|
}else {
|
||||||
syncStatus.setSyncIng(true);
|
syncStatus.setSyncIng(true);
|
||||||
|
@ -97,7 +94,7 @@ public class CatalogDataCatch {
|
||||||
if (catalogData == null) {
|
if (catalogData == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return !catalogData.getStatus().equals(CatalogData.CatalogDataStatus.end);
|
return !catalogData.getStatus().equals(DataStatus.end);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Scheduled(fixedRate = 5 * 1000) //每5秒执行一次, 发现数据5秒未更新则移除数据并认为数据接收超时
|
@Scheduled(fixedRate = 5 * 1000) //每5秒执行一次, 发现数据5秒未更新则移除数据并认为数据接收超时
|
||||||
|
@ -111,17 +108,17 @@ public class CatalogDataCatch {
|
||||||
CatalogData catalogData = data.get(deviceId);
|
CatalogData catalogData = data.get(deviceId);
|
||||||
if ( catalogData.getLastTime().isBefore(instantBefore5S)) {
|
if ( catalogData.getLastTime().isBefore(instantBefore5S)) {
|
||||||
// 超过五秒收不到消息任务超时, 只更新这一部分数据, 收到数据与声明的总数一致,则重置通道数据,数据不全则只对收到的数据做更新操作
|
// 超过五秒收不到消息任务超时, 只更新这一部分数据, 收到数据与声明的总数一致,则重置通道数据,数据不全则只对收到的数据做更新操作
|
||||||
if (catalogData.getStatus().equals(CatalogData.CatalogDataStatus.runIng)) {
|
if (catalogData.getStatus().equals(DataStatus.runIng)) {
|
||||||
deviceChannelService.updateChannelsForCatalog(catalogData.getDevice(), catalogData.getChannelList());
|
deviceChannelService.updateChannelsForCatalog(catalogData.getDevice(), catalogData.getChannelList());
|
||||||
String errorMsg = "更新成功,共" + catalogData.getTotal() + "条,已更新" + catalogData.getChannelList().size() + "条";
|
String errorMsg = "更新成功,共" + catalogData.getTotal() + "条,已更新" + catalogData.getChannelList().size() + "条";
|
||||||
catalogData.setErrorMsg(errorMsg);
|
catalogData.setErrorMsg(errorMsg);
|
||||||
}else if (catalogData.getStatus().equals(CatalogData.CatalogDataStatus.ready)) {
|
}else if (catalogData.getStatus().equals(DataStatus.ready)) {
|
||||||
String errorMsg = "同步失败,等待回复超时";
|
String errorMsg = "同步失败,等待回复超时";
|
||||||
catalogData.setErrorMsg(errorMsg);
|
catalogData.setErrorMsg(errorMsg);
|
||||||
}
|
}
|
||||||
catalogData.setStatus(CatalogData.CatalogDataStatus.end);
|
catalogData.setStatus(DataStatus.end);
|
||||||
}
|
}
|
||||||
if (catalogData.getStatus().equals(CatalogData.CatalogDataStatus.end) && catalogData.getLastTime().isBefore(instantBefore30S)) { // 超过三十秒,如果标记为end则删除
|
if (catalogData.getStatus().equals(DataStatus.end) && catalogData.getLastTime().isBefore(instantBefore30S)) { // 超过三十秒,如果标记为end则删除
|
||||||
data.remove(deviceId);
|
data.remove(deviceId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -133,7 +130,7 @@ public class CatalogDataCatch {
|
||||||
if (catalogData == null) {
|
if (catalogData == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
catalogData.setStatus(CatalogData.CatalogDataStatus.end);
|
catalogData.setStatus(DataStatus.end);
|
||||||
catalogData.setErrorMsg(errorMsg);
|
catalogData.setErrorMsg(errorMsg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,145 @@
|
||||||
|
package com.genersoft.iot.vmp.gb28181.session;
|
||||||
|
|
||||||
|
import com.genersoft.iot.vmp.gb28181.bean.*;
|
||||||
|
import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
|
||||||
|
import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
|
||||||
|
import com.genersoft.iot.vmp.service.IDeviceChannelService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 预置位缓存
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class PresetDataCatch {
|
||||||
|
|
||||||
|
public static Map<Integer, PresetData> data = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DeferredResultHolder deferredResultHolder;
|
||||||
|
|
||||||
|
|
||||||
|
public void addReady(int sn ) {
|
||||||
|
PresetData presetData = data.get(sn);
|
||||||
|
if (presetData == null || presetData.getStatus().equals(DataStatus.end)) {
|
||||||
|
presetData = new PresetData();
|
||||||
|
presetData.setPresetItemList(Collections.synchronizedList(new ArrayList<>()));
|
||||||
|
presetData.setSn(sn);
|
||||||
|
presetData.setStatus(DataStatus.ready);
|
||||||
|
presetData.setLastTime(Instant.now());
|
||||||
|
data.put(sn, presetData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void put(int sn, int total, Device device, List<PresetItem> deviceChannelList) {
|
||||||
|
PresetData presetData = data.get(sn);
|
||||||
|
if (presetData == null) {
|
||||||
|
presetData = new PresetData();
|
||||||
|
presetData.setSn(sn);
|
||||||
|
presetData.setTotal(total);
|
||||||
|
presetData.setPresetItemList(deviceChannelList);
|
||||||
|
presetData.setStatus(DataStatus.runIng);
|
||||||
|
presetData.setLastTime(Instant.now());
|
||||||
|
data.put(sn, presetData);
|
||||||
|
}else {
|
||||||
|
// 同一个设备的通道同步请求只考虑一个,其他的直接忽略
|
||||||
|
if (presetData.getSn() != sn) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
presetData.setTotal(total);
|
||||||
|
presetData.setStatus(DataStatus.runIng);
|
||||||
|
presetData.getPresetItemList().addAll(deviceChannelList);
|
||||||
|
presetData.setLastTime(Instant.now());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<PresetItem> get(int sn) {
|
||||||
|
PresetData presetData = data.get(sn);
|
||||||
|
if (presetData == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return presetData.getPresetItemList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getTotal(int sn) {
|
||||||
|
PresetData presetData = data.get(sn);
|
||||||
|
if (presetData == null) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return presetData.getTotal();
|
||||||
|
}
|
||||||
|
|
||||||
|
public SyncStatus getSyncStatus(int sn) {
|
||||||
|
PresetData presetData = data.get(sn);
|
||||||
|
if (presetData == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
SyncStatus syncStatus = new SyncStatus();
|
||||||
|
syncStatus.setCurrent(presetData.getPresetItemList().size());
|
||||||
|
syncStatus.setTotal(presetData.getTotal());
|
||||||
|
syncStatus.setErrorMsg(presetData.getErrorMsg());
|
||||||
|
if (presetData.getStatus().equals(DataStatus.end)) {
|
||||||
|
syncStatus.setSyncIng(false);
|
||||||
|
}else {
|
||||||
|
syncStatus.setSyncIng(true);
|
||||||
|
}
|
||||||
|
return syncStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSyncRunning(int sn) {
|
||||||
|
PresetData presetData = data.get(sn);
|
||||||
|
if (presetData == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return !presetData.getStatus().equals(DataStatus.end);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Scheduled(fixedRate = 5 * 1000) //每5秒执行一次, 发现数据5秒未更新则移除数据并认为数据接收超时
|
||||||
|
private void timerTask(){
|
||||||
|
Set<Integer> keys = data.keySet();
|
||||||
|
|
||||||
|
Instant instantBefore5S = Instant.now().minusMillis(TimeUnit.SECONDS.toMillis(5));
|
||||||
|
Instant instantBefore30S = Instant.now().minusMillis(TimeUnit.SECONDS.toMillis(30));
|
||||||
|
|
||||||
|
for (Integer sn : keys) {
|
||||||
|
PresetData presetData = data.get(sn);
|
||||||
|
String key = DeferredResultHolder.CALLBACK_CMD_PRESETQUERY + sn;
|
||||||
|
if ( presetData.getLastTime().isBefore(instantBefore5S)) {
|
||||||
|
// 超过五秒收不到消息任务超时, 只更新这一部分数据, 收到数据与声明的总数一致,则重置通道数据,数据不全则只对收到的数据做更新操作
|
||||||
|
if (presetData.getStatus().equals(DataStatus.runIng)) {
|
||||||
|
RequestMessage requestMessage = new RequestMessage();
|
||||||
|
requestMessage.setKey(key);
|
||||||
|
requestMessage.setData(presetData.getPresetItemList());
|
||||||
|
deferredResultHolder.invokeAllResult(requestMessage);
|
||||||
|
|
||||||
|
String errorMsg = "更新成功,共" + presetData.getTotal() + "条,已更新" + presetData.getPresetItemList().size() + "条";
|
||||||
|
presetData.setErrorMsg(errorMsg);
|
||||||
|
}else if (presetData.getStatus().equals(DataStatus.ready)) {
|
||||||
|
String errorMsg = "同步失败,等待回复超时";
|
||||||
|
presetData.setErrorMsg(errorMsg);
|
||||||
|
}
|
||||||
|
presetData.setStatus(DataStatus.end);
|
||||||
|
}
|
||||||
|
if (presetData.getStatus().equals(DataStatus.end) && presetData.getLastTime().isBefore(instantBefore30S)) { // 超过三十秒,如果标记为end则删除
|
||||||
|
data.remove(sn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setChannelSyncEnd(int sn, String errorMsg) {
|
||||||
|
PresetData presetData = data.get(sn);
|
||||||
|
if (presetData == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
presetData.setStatus(DataStatus.end);
|
||||||
|
presetData.setErrorMsg(errorMsg);
|
||||||
|
}
|
||||||
|
}
|
|
@ -306,7 +306,7 @@ public interface ISIPCommander {
|
||||||
*
|
*
|
||||||
* @param device 视频设备
|
* @param device 视频设备
|
||||||
*/
|
*/
|
||||||
void presetQuery(Device device, String channelId, SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException;
|
void presetQuery(Device device, String channelId, int sn, SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询移动设备位置数据
|
* 查询移动设备位置数据
|
||||||
|
|
|
@ -183,7 +183,7 @@ public class SIPCommander implements ISIPCommander {
|
||||||
ptzXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
ptzXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
||||||
ptzXml.append("<Control>\r\n");
|
ptzXml.append("<Control>\r\n");
|
||||||
ptzXml.append("<CmdType>DeviceControl</CmdType>\r\n");
|
ptzXml.append("<CmdType>DeviceControl</CmdType>\r\n");
|
||||||
ptzXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
ptzXml.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n");
|
||||||
ptzXml.append("<DeviceID>" + channelId + "</DeviceID>\r\n");
|
ptzXml.append("<DeviceID>" + channelId + "</DeviceID>\r\n");
|
||||||
ptzXml.append("<PTZCmd>" + cmdStr + "</PTZCmd>\r\n");
|
ptzXml.append("<PTZCmd>" + cmdStr + "</PTZCmd>\r\n");
|
||||||
ptzXml.append("<Info>\r\n");
|
ptzXml.append("<Info>\r\n");
|
||||||
|
@ -215,7 +215,7 @@ public class SIPCommander implements ISIPCommander {
|
||||||
ptzXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
ptzXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
||||||
ptzXml.append("<Control>\r\n");
|
ptzXml.append("<Control>\r\n");
|
||||||
ptzXml.append("<CmdType>DeviceControl</CmdType>\r\n");
|
ptzXml.append("<CmdType>DeviceControl</CmdType>\r\n");
|
||||||
ptzXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
ptzXml.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n");
|
||||||
ptzXml.append("<DeviceID>" + channelId + "</DeviceID>\r\n");
|
ptzXml.append("<DeviceID>" + channelId + "</DeviceID>\r\n");
|
||||||
ptzXml.append("<PTZCmd>" + cmdStr + "</PTZCmd>\r\n");
|
ptzXml.append("<PTZCmd>" + cmdStr + "</PTZCmd>\r\n");
|
||||||
ptzXml.append("<Info>\r\n");
|
ptzXml.append("<Info>\r\n");
|
||||||
|
@ -246,7 +246,7 @@ public class SIPCommander implements ISIPCommander {
|
||||||
ptzXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
ptzXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
||||||
ptzXml.append("<Control>\r\n");
|
ptzXml.append("<Control>\r\n");
|
||||||
ptzXml.append("<CmdType>DeviceControl</CmdType>\r\n");
|
ptzXml.append("<CmdType>DeviceControl</CmdType>\r\n");
|
||||||
ptzXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
ptzXml.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n");
|
||||||
ptzXml.append("<DeviceID>" + channelId + "</DeviceID>\r\n");
|
ptzXml.append("<DeviceID>" + channelId + "</DeviceID>\r\n");
|
||||||
ptzXml.append("<PTZCmd>" + cmdString + "</PTZCmd>\r\n");
|
ptzXml.append("<PTZCmd>" + cmdString + "</PTZCmd>\r\n");
|
||||||
ptzXml.append("<Info>\r\n");
|
ptzXml.append("<Info>\r\n");
|
||||||
|
@ -653,7 +653,7 @@ public class SIPCommander implements ISIPCommander {
|
||||||
broadcastXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
broadcastXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
||||||
broadcastXml.append("<Notify>\r\n");
|
broadcastXml.append("<Notify>\r\n");
|
||||||
broadcastXml.append("<CmdType>Broadcast</CmdType>\r\n");
|
broadcastXml.append("<CmdType>Broadcast</CmdType>\r\n");
|
||||||
broadcastXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
broadcastXml.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n");
|
||||||
broadcastXml.append("<SourceID>" + sipConfig.getId() + "</SourceID>\r\n");
|
broadcastXml.append("<SourceID>" + sipConfig.getId() + "</SourceID>\r\n");
|
||||||
broadcastXml.append("<TargetID>" + device.getDeviceId() + "</TargetID>\r\n");
|
broadcastXml.append("<TargetID>" + device.getDeviceId() + "</TargetID>\r\n");
|
||||||
broadcastXml.append("</Notify>\r\n");
|
broadcastXml.append("</Notify>\r\n");
|
||||||
|
@ -673,7 +673,7 @@ public class SIPCommander implements ISIPCommander {
|
||||||
broadcastXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
broadcastXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
||||||
broadcastXml.append("<Notify>\r\n");
|
broadcastXml.append("<Notify>\r\n");
|
||||||
broadcastXml.append("<CmdType>Broadcast</CmdType>\r\n");
|
broadcastXml.append("<CmdType>Broadcast</CmdType>\r\n");
|
||||||
broadcastXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
broadcastXml.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n");
|
||||||
broadcastXml.append("<SourceID>" + sipConfig.getId() + "</SourceID>\r\n");
|
broadcastXml.append("<SourceID>" + sipConfig.getId() + "</SourceID>\r\n");
|
||||||
broadcastXml.append("<TargetID>" + device.getDeviceId() + "</TargetID>\r\n");
|
broadcastXml.append("<TargetID>" + device.getDeviceId() + "</TargetID>\r\n");
|
||||||
broadcastXml.append("</Notify>\r\n");
|
broadcastXml.append("</Notify>\r\n");
|
||||||
|
@ -700,7 +700,7 @@ public class SIPCommander implements ISIPCommander {
|
||||||
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
||||||
cmdXml.append("<Control>\r\n");
|
cmdXml.append("<Control>\r\n");
|
||||||
cmdXml.append("<CmdType>DeviceControl</CmdType>\r\n");
|
cmdXml.append("<CmdType>DeviceControl</CmdType>\r\n");
|
||||||
cmdXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
cmdXml.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n");
|
||||||
if (ObjectUtils.isEmpty(channelId)) {
|
if (ObjectUtils.isEmpty(channelId)) {
|
||||||
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
||||||
} else {
|
} else {
|
||||||
|
@ -728,7 +728,7 @@ public class SIPCommander implements ISIPCommander {
|
||||||
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
||||||
cmdXml.append("<Control>\r\n");
|
cmdXml.append("<Control>\r\n");
|
||||||
cmdXml.append("<CmdType>DeviceControl</CmdType>\r\n");
|
cmdXml.append("<CmdType>DeviceControl</CmdType>\r\n");
|
||||||
cmdXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
cmdXml.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n");
|
||||||
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
||||||
cmdXml.append("<TeleBoot>Boot</TeleBoot>\r\n");
|
cmdXml.append("<TeleBoot>Boot</TeleBoot>\r\n");
|
||||||
cmdXml.append("</Control>\r\n");
|
cmdXml.append("</Control>\r\n");
|
||||||
|
@ -753,7 +753,7 @@ public class SIPCommander implements ISIPCommander {
|
||||||
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
||||||
cmdXml.append("<Control>\r\n");
|
cmdXml.append("<Control>\r\n");
|
||||||
cmdXml.append("<CmdType>DeviceControl</CmdType>\r\n");
|
cmdXml.append("<CmdType>DeviceControl</CmdType>\r\n");
|
||||||
cmdXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
cmdXml.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n");
|
||||||
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
||||||
cmdXml.append("<GuardCmd>" + guardCmdStr + "</GuardCmd>\r\n");
|
cmdXml.append("<GuardCmd>" + guardCmdStr + "</GuardCmd>\r\n");
|
||||||
cmdXml.append("</Control>\r\n");
|
cmdXml.append("</Control>\r\n");
|
||||||
|
@ -775,7 +775,7 @@ public class SIPCommander implements ISIPCommander {
|
||||||
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
||||||
cmdXml.append("<Control>\r\n");
|
cmdXml.append("<Control>\r\n");
|
||||||
cmdXml.append("<CmdType>DeviceControl</CmdType>\r\n");
|
cmdXml.append("<CmdType>DeviceControl</CmdType>\r\n");
|
||||||
cmdXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
cmdXml.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n");
|
||||||
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
||||||
cmdXml.append("<AlarmCmd>ResetAlarm</AlarmCmd>\r\n");
|
cmdXml.append("<AlarmCmd>ResetAlarm</AlarmCmd>\r\n");
|
||||||
if (!ObjectUtils.isEmpty(alarmMethod) || !ObjectUtils.isEmpty(alarmType)) {
|
if (!ObjectUtils.isEmpty(alarmMethod) || !ObjectUtils.isEmpty(alarmType)) {
|
||||||
|
@ -812,7 +812,7 @@ public class SIPCommander implements ISIPCommander {
|
||||||
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
||||||
cmdXml.append("<Control>\r\n");
|
cmdXml.append("<Control>\r\n");
|
||||||
cmdXml.append("<CmdType>DeviceControl</CmdType>\r\n");
|
cmdXml.append("<CmdType>DeviceControl</CmdType>\r\n");
|
||||||
cmdXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
cmdXml.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n");
|
||||||
if (ObjectUtils.isEmpty(channelId)) {
|
if (ObjectUtils.isEmpty(channelId)) {
|
||||||
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
||||||
} else {
|
} else {
|
||||||
|
@ -844,7 +844,7 @@ public class SIPCommander implements ISIPCommander {
|
||||||
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
||||||
cmdXml.append("<Control>\r\n");
|
cmdXml.append("<Control>\r\n");
|
||||||
cmdXml.append("<CmdType>DeviceControl</CmdType>\r\n");
|
cmdXml.append("<CmdType>DeviceControl</CmdType>\r\n");
|
||||||
cmdXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
cmdXml.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n");
|
||||||
if (ObjectUtils.isEmpty(channelId)) {
|
if (ObjectUtils.isEmpty(channelId)) {
|
||||||
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
||||||
} else {
|
} else {
|
||||||
|
@ -904,7 +904,7 @@ public class SIPCommander implements ISIPCommander {
|
||||||
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
||||||
cmdXml.append("<Control>\r\n");
|
cmdXml.append("<Control>\r\n");
|
||||||
cmdXml.append("<CmdType>DeviceConfig</CmdType>\r\n");
|
cmdXml.append("<CmdType>DeviceConfig</CmdType>\r\n");
|
||||||
cmdXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
cmdXml.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n");
|
||||||
if (ObjectUtils.isEmpty(channelId)) {
|
if (ObjectUtils.isEmpty(channelId)) {
|
||||||
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
||||||
} else {
|
} else {
|
||||||
|
@ -951,7 +951,7 @@ public class SIPCommander implements ISIPCommander {
|
||||||
catalogXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
catalogXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
||||||
catalogXml.append("<Query>\r\n");
|
catalogXml.append("<Query>\r\n");
|
||||||
catalogXml.append("<CmdType>DeviceStatus</CmdType>\r\n");
|
catalogXml.append("<CmdType>DeviceStatus</CmdType>\r\n");
|
||||||
catalogXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
catalogXml.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n");
|
||||||
catalogXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
catalogXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
||||||
catalogXml.append("</Query>\r\n");
|
catalogXml.append("</Query>\r\n");
|
||||||
|
|
||||||
|
@ -973,7 +973,7 @@ public class SIPCommander implements ISIPCommander {
|
||||||
catalogXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
catalogXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
||||||
catalogXml.append("<Query>\r\n");
|
catalogXml.append("<Query>\r\n");
|
||||||
catalogXml.append("<CmdType>DeviceInfo</CmdType>\r\n");
|
catalogXml.append("<CmdType>DeviceInfo</CmdType>\r\n");
|
||||||
catalogXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
catalogXml.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n");
|
||||||
catalogXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
catalogXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
||||||
catalogXml.append("</Query>\r\n");
|
catalogXml.append("</Query>\r\n");
|
||||||
|
|
||||||
|
@ -1076,7 +1076,7 @@ public class SIPCommander implements ISIPCommander {
|
||||||
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
||||||
cmdXml.append("<Query>\r\n");
|
cmdXml.append("<Query>\r\n");
|
||||||
cmdXml.append("<CmdType>Alarm</CmdType>\r\n");
|
cmdXml.append("<CmdType>Alarm</CmdType>\r\n");
|
||||||
cmdXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
cmdXml.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n");
|
||||||
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
||||||
if (!ObjectUtils.isEmpty(startPriority)) {
|
if (!ObjectUtils.isEmpty(startPriority)) {
|
||||||
cmdXml.append("<StartAlarmPriority>" + startPriority + "</StartAlarmPriority>\r\n");
|
cmdXml.append("<StartAlarmPriority>" + startPriority + "</StartAlarmPriority>\r\n");
|
||||||
|
@ -1119,7 +1119,7 @@ public class SIPCommander implements ISIPCommander {
|
||||||
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
||||||
cmdXml.append("<Query>\r\n");
|
cmdXml.append("<Query>\r\n");
|
||||||
cmdXml.append("<CmdType>ConfigDownload</CmdType>\r\n");
|
cmdXml.append("<CmdType>ConfigDownload</CmdType>\r\n");
|
||||||
cmdXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
cmdXml.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n");
|
||||||
if (ObjectUtils.isEmpty(channelId)) {
|
if (ObjectUtils.isEmpty(channelId)) {
|
||||||
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
||||||
} else {
|
} else {
|
||||||
|
@ -1140,14 +1140,14 @@ public class SIPCommander implements ISIPCommander {
|
||||||
* @param device 视频设备
|
* @param device 视频设备
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void presetQuery(Device device, String channelId, SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException {
|
public void presetQuery(Device device, String channelId, int sn, SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException {
|
||||||
|
|
||||||
StringBuffer cmdXml = new StringBuffer(200);
|
StringBuffer cmdXml = new StringBuffer(200);
|
||||||
String charset = device.getCharset();
|
String charset = device.getCharset();
|
||||||
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
||||||
cmdXml.append("<Query>\r\n");
|
cmdXml.append("<Query>\r\n");
|
||||||
cmdXml.append("<CmdType>PresetQuery</CmdType>\r\n");
|
cmdXml.append("<CmdType>PresetQuery</CmdType>\r\n");
|
||||||
cmdXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
cmdXml.append("<SN>" + sn + "</SN>\r\n");
|
||||||
if (ObjectUtils.isEmpty(channelId)) {
|
if (ObjectUtils.isEmpty(channelId)) {
|
||||||
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
||||||
} else {
|
} else {
|
||||||
|
@ -1173,7 +1173,7 @@ public class SIPCommander implements ISIPCommander {
|
||||||
mobilePostitionXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
mobilePostitionXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
||||||
mobilePostitionXml.append("<Query>\r\n");
|
mobilePostitionXml.append("<Query>\r\n");
|
||||||
mobilePostitionXml.append("<CmdType>MobilePosition</CmdType>\r\n");
|
mobilePostitionXml.append("<CmdType>MobilePosition</CmdType>\r\n");
|
||||||
mobilePostitionXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
mobilePostitionXml.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n");
|
||||||
mobilePostitionXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
mobilePostitionXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
||||||
mobilePostitionXml.append("<Interval>60</Interval>\r\n");
|
mobilePostitionXml.append("<Interval>60</Interval>\r\n");
|
||||||
mobilePostitionXml.append("</Query>\r\n");
|
mobilePostitionXml.append("</Query>\r\n");
|
||||||
|
@ -1200,7 +1200,7 @@ public class SIPCommander implements ISIPCommander {
|
||||||
subscribePostitionXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
subscribePostitionXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
||||||
subscribePostitionXml.append("<Query>\r\n");
|
subscribePostitionXml.append("<Query>\r\n");
|
||||||
subscribePostitionXml.append("<CmdType>MobilePosition</CmdType>\r\n");
|
subscribePostitionXml.append("<CmdType>MobilePosition</CmdType>\r\n");
|
||||||
subscribePostitionXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
subscribePostitionXml.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n");
|
||||||
subscribePostitionXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
subscribePostitionXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
||||||
if (device.getSubscribeCycleForMobilePosition() > 0) {
|
if (device.getSubscribeCycleForMobilePosition() > 0) {
|
||||||
subscribePostitionXml.append("<Interval>" + device.getMobilePositionSubmissionInterval() + "</Interval>\r\n");
|
subscribePostitionXml.append("<Interval>" + device.getMobilePositionSubmissionInterval() + "</Interval>\r\n");
|
||||||
|
@ -1241,7 +1241,7 @@ public class SIPCommander implements ISIPCommander {
|
||||||
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
||||||
cmdXml.append("<Query>\r\n");
|
cmdXml.append("<Query>\r\n");
|
||||||
cmdXml.append("<CmdType>Alarm</CmdType>\r\n");
|
cmdXml.append("<CmdType>Alarm</CmdType>\r\n");
|
||||||
cmdXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
cmdXml.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n");
|
||||||
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
||||||
if (!ObjectUtils.isEmpty(startPriority)) {
|
if (!ObjectUtils.isEmpty(startPriority)) {
|
||||||
cmdXml.append("<StartAlarmPriority>" + startPriority + "</StartAlarmPriority>\r\n");
|
cmdXml.append("<StartAlarmPriority>" + startPriority + "</StartAlarmPriority>\r\n");
|
||||||
|
@ -1275,7 +1275,7 @@ public class SIPCommander implements ISIPCommander {
|
||||||
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
cmdXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
||||||
cmdXml.append("<Query>\r\n");
|
cmdXml.append("<Query>\r\n");
|
||||||
cmdXml.append("<CmdType>Catalog</CmdType>\r\n");
|
cmdXml.append("<CmdType>Catalog</CmdType>\r\n");
|
||||||
cmdXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
cmdXml.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n");
|
||||||
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
||||||
cmdXml.append("</Query>\r\n");
|
cmdXml.append("</Query>\r\n");
|
||||||
|
|
||||||
|
@ -1302,7 +1302,7 @@ public class SIPCommander implements ISIPCommander {
|
||||||
dragXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
dragXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
||||||
dragXml.append("<Control>\r\n");
|
dragXml.append("<Control>\r\n");
|
||||||
dragXml.append("<CmdType>DeviceControl</CmdType>\r\n");
|
dragXml.append("<CmdType>DeviceControl</CmdType>\r\n");
|
||||||
dragXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
dragXml.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n");
|
||||||
if (ObjectUtils.isEmpty(channelId)) {
|
if (ObjectUtils.isEmpty(channelId)) {
|
||||||
dragXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
dragXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
||||||
} else {
|
} else {
|
||||||
|
@ -1408,7 +1408,7 @@ public class SIPCommander implements ISIPCommander {
|
||||||
deviceStatusXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet + "\"?>\r\n");
|
deviceStatusXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet + "\"?>\r\n");
|
||||||
deviceStatusXml.append("<Notify>\r\n");
|
deviceStatusXml.append("<Notify>\r\n");
|
||||||
deviceStatusXml.append("<CmdType>Alarm</CmdType>\r\n");
|
deviceStatusXml.append("<CmdType>Alarm</CmdType>\r\n");
|
||||||
deviceStatusXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
deviceStatusXml.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n");
|
||||||
deviceStatusXml.append("<DeviceID>" + deviceAlarm.getChannelId() + "</DeviceID>\r\n");
|
deviceStatusXml.append("<DeviceID>" + deviceAlarm.getChannelId() + "</DeviceID>\r\n");
|
||||||
deviceStatusXml.append("<AlarmPriority>" + deviceAlarm.getAlarmPriority() + "</AlarmPriority>\r\n");
|
deviceStatusXml.append("<AlarmPriority>" + deviceAlarm.getAlarmPriority() + "</AlarmPriority>\r\n");
|
||||||
deviceStatusXml.append("<AlarmMethod>" + deviceAlarm.getAlarmMethod() + "</AlarmMethod>\r\n");
|
deviceStatusXml.append("<AlarmMethod>" + deviceAlarm.getAlarmMethod() + "</AlarmMethod>\r\n");
|
||||||
|
|
|
@ -556,7 +556,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
|
||||||
catalogXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet + "\"?>\r\n")
|
catalogXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet + "\"?>\r\n")
|
||||||
.append("<Notify>\r\n")
|
.append("<Notify>\r\n")
|
||||||
.append("<CmdType>Catalog</CmdType>\r\n")
|
.append("<CmdType>Catalog</CmdType>\r\n")
|
||||||
.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n")
|
.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n")
|
||||||
.append("<DeviceID>" + parentPlatform.getDeviceGBId() + "</DeviceID>\r\n")
|
.append("<DeviceID>" + parentPlatform.getDeviceGBId() + "</DeviceID>\r\n")
|
||||||
.append("<SumNum>1</SumNum>\r\n")
|
.append("<SumNum>1</SumNum>\r\n")
|
||||||
.append("<DeviceList Num=\"" + channels.size() + "\">\r\n");
|
.append("<DeviceList Num=\"" + channels.size() + "\">\r\n");
|
||||||
|
@ -717,7 +717,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
|
||||||
catalogXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet + "\"?>\r\n")
|
catalogXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet + "\"?>\r\n")
|
||||||
.append("<Notify>\r\n")
|
.append("<Notify>\r\n")
|
||||||
.append("<CmdType>Catalog</CmdType>\r\n")
|
.append("<CmdType>Catalog</CmdType>\r\n")
|
||||||
.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n")
|
.append("<SN>" + SipUtils.getNewSn() + "</SN>\r\n")
|
||||||
.append("<DeviceID>" + parentPlatform.getDeviceGBId() + "</DeviceID>\r\n")
|
.append("<DeviceID>" + parentPlatform.getDeviceGBId() + "</DeviceID>\r\n")
|
||||||
.append("<SumNum>1</SumNum>\r\n")
|
.append("<SumNum>1</SumNum>\r\n")
|
||||||
.append("<DeviceList Num=\" " + channels.size() + " \">\r\n");
|
.append("<DeviceList Num=\" " + channels.size() + " \">\r\n");
|
||||||
|
|
|
@ -7,6 +7,7 @@ import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
|
||||||
import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
|
import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
|
||||||
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler;
|
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler;
|
||||||
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.ResponseMessageHandler;
|
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.ResponseMessageHandler;
|
||||||
|
import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
|
||||||
import gov.nist.javax.sip.message.SIPRequest;
|
import gov.nist.javax.sip.message.SIPRequest;
|
||||||
import org.dom4j.DocumentException;
|
import org.dom4j.DocumentException;
|
||||||
import org.dom4j.Element;
|
import org.dom4j.Element;
|
||||||
|
@ -43,6 +44,7 @@ public class PresetQueryResponseMessageHandler extends SIPRequestProcessorParent
|
||||||
private DeferredResultHolder deferredResultHolder;
|
private DeferredResultHolder deferredResultHolder;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() throws Exception {
|
public void afterPropertiesSet() throws Exception {
|
||||||
responseMessageHandler.addHandler(cmdType, this);
|
responseMessageHandler.addHandler(cmdType, this);
|
||||||
|
@ -52,7 +54,7 @@ public class PresetQueryResponseMessageHandler extends SIPRequestProcessorParent
|
||||||
public void handForDevice(RequestEvent evt, Device device, Element element) {
|
public void handForDevice(RequestEvent evt, Device device, Element element) {
|
||||||
|
|
||||||
SIPRequest request = (SIPRequest) evt.getRequest();
|
SIPRequest request = (SIPRequest) evt.getRequest();
|
||||||
|
String deviceId = SipUtils.getUserIdFromFromHeader(request);
|
||||||
try {
|
try {
|
||||||
Element rootElement = getRootElement(evt, device.getCharset());
|
Element rootElement = getRootElement(evt, device.getCharset());
|
||||||
|
|
||||||
|
@ -66,11 +68,14 @@ public class PresetQueryResponseMessageHandler extends SIPRequestProcessorParent
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Element presetListNumElement = rootElement.element("PresetList");
|
Element presetListNumElement = rootElement.element("PresetList");
|
||||||
Element snElement = rootElement.element("SN");
|
String sn = getText(rootElement, "SN");
|
||||||
//该字段可能为通道或则设备的id
|
//该字段可能为通道或则设备的id
|
||||||
String deviceId = getText(rootElement, "DeviceID");
|
String channelId = getText(rootElement, "DeviceID");
|
||||||
String key = DeferredResultHolder.CALLBACK_CMD_PRESETQUERY + deviceId;
|
if (channelId == null) {
|
||||||
if (snElement == null || presetListNumElement == null) {
|
|
||||||
|
}
|
||||||
|
String key = DeferredResultHolder.CALLBACK_CMD_PRESETQUERY + deviceId + channelId;
|
||||||
|
if (sn == null || presetListNumElement == null) {
|
||||||
try {
|
try {
|
||||||
responseAck(request, Response.BAD_REQUEST, "xml error");
|
responseAck(request, Response.BAD_REQUEST, "xml error");
|
||||||
} catch (InvalidArgumentException | ParseException | SipException e) {
|
} catch (InvalidArgumentException | ParseException | SipException e) {
|
||||||
|
|
|
@ -325,4 +325,8 @@ public class SipUtils {
|
||||||
subscribeInfo.setSimulatedToTag(UUID.randomUUID().toString().replace("-", ""));
|
subscribeInfo.setSimulatedToTag(UUID.randomUUID().toString().replace("-", ""));
|
||||||
return subscribeInfo;
|
return subscribeInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int getNewSn(){
|
||||||
|
return (int) ((Math.random() * 9 + 1) * 100000);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,12 +1,10 @@
|
||||||
package com.genersoft.iot.vmp.media.zlm;
|
package com.genersoft.iot.vmp.media.zlm;
|
||||||
|
|
||||||
import com.genersoft.iot.vmp.conf.UserSetting;
|
import com.genersoft.iot.vmp.conf.UserSetting;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.GbStream;
|
|
||||||
import com.genersoft.iot.vmp.media.zlm.dto.*;
|
import com.genersoft.iot.vmp.media.zlm.dto.*;
|
||||||
import com.genersoft.iot.vmp.media.zlm.dto.hook.OnStreamChangedHookParam;
|
import com.genersoft.iot.vmp.media.zlm.dto.hook.OnStreamChangedHookParam;
|
||||||
import com.genersoft.iot.vmp.service.IMediaServerService;
|
import com.genersoft.iot.vmp.service.IMediaServerService;
|
||||||
import com.genersoft.iot.vmp.service.IResourceService;
|
import com.genersoft.iot.vmp.service.IResourceService;
|
||||||
import com.genersoft.iot.vmp.service.IStreamProxyService;
|
|
||||||
import com.genersoft.iot.vmp.service.IStreamPushService;
|
import com.genersoft.iot.vmp.service.IStreamPushService;
|
||||||
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
||||||
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
|
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
package com.genersoft.iot.vmp.service;
|
package com.genersoft.iot.vmp.service;
|
||||||
|
|
||||||
import com.genersoft.iot.vmp.common.CommonGbChannel;
|
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.GbStream;
|
|
||||||
import com.genersoft.iot.vmp.media.zlm.dto.hook.OnStreamChangedHookParam;
|
import com.genersoft.iot.vmp.media.zlm.dto.hook.OnStreamChangedHookParam;
|
||||||
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
|
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
|
||||||
import com.genersoft.iot.vmp.media.zlm.dto.StreamPush;
|
import com.genersoft.iot.vmp.media.zlm.dto.StreamPush;
|
||||||
|
@ -62,7 +60,7 @@ public interface IStreamPushService {
|
||||||
/**
|
/**
|
||||||
* 中止多个推流
|
* 中止多个推流
|
||||||
*/
|
*/
|
||||||
boolean batchStop(List<GbStream> streamPushItems);
|
boolean batchStop(List<StreamPush> streamPushItems);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导入时批量增加
|
* 导入时批量增加
|
||||||
|
|
|
@ -7,15 +7,12 @@ import com.genersoft.iot.vmp.common.BatchLimit;
|
||||||
import com.genersoft.iot.vmp.common.CommonGbChannel;
|
import com.genersoft.iot.vmp.common.CommonGbChannel;
|
||||||
import com.genersoft.iot.vmp.conf.MediaConfig;
|
import com.genersoft.iot.vmp.conf.MediaConfig;
|
||||||
import com.genersoft.iot.vmp.conf.UserSetting;
|
import com.genersoft.iot.vmp.conf.UserSetting;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.*;
|
|
||||||
import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
|
import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
|
||||||
import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent;
|
|
||||||
import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
|
import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
|
||||||
import com.genersoft.iot.vmp.media.zlm.dto.*;
|
import com.genersoft.iot.vmp.media.zlm.dto.*;
|
||||||
import com.genersoft.iot.vmp.media.zlm.dto.hook.OnStreamChangedHookParam;
|
import com.genersoft.iot.vmp.media.zlm.dto.hook.OnStreamChangedHookParam;
|
||||||
import com.genersoft.iot.vmp.media.zlm.dto.hook.OriginType;
|
import com.genersoft.iot.vmp.media.zlm.dto.hook.OriginType;
|
||||||
import com.genersoft.iot.vmp.service.*;
|
import com.genersoft.iot.vmp.service.*;
|
||||||
import com.genersoft.iot.vmp.service.bean.CommonGbChannelType;
|
|
||||||
import com.genersoft.iot.vmp.service.bean.GPSMsgInfo;
|
import com.genersoft.iot.vmp.service.bean.GPSMsgInfo;
|
||||||
import com.genersoft.iot.vmp.service.bean.Group;
|
import com.genersoft.iot.vmp.service.bean.Group;
|
||||||
import com.genersoft.iot.vmp.service.bean.StreamPushItemFromRedis;
|
import com.genersoft.iot.vmp.service.bean.StreamPushItemFromRedis;
|
||||||
|
@ -29,14 +26,11 @@ import com.github.pagehelper.PageInfo;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.TransactionDefinition;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.ObjectUtils;
|
import org.springframework.util.ObjectUtils;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class StreamPushServiceImpl implements IStreamPushService {
|
public class StreamPushServiceImpl implements IStreamPushService {
|
||||||
|
@ -366,15 +360,15 @@ public class StreamPushServiceImpl implements IStreamPushService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean batchStop(List<GbStream> gbStreams) {
|
public boolean batchStop(List<StreamPush> streamPushList) {
|
||||||
if (gbStreams == null || gbStreams.size() == 0) {
|
if (streamPushList == null || streamPushList.size() == 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
int delStream = streamPushMapper.delAllForGbStream(gbStreams);
|
int delStream = streamPushMapper.delAllForStream(streamPushList);
|
||||||
if (delStream > 0) {
|
if (delStream > 0) {
|
||||||
for (GbStream gbStream : gbStreams) {
|
for (StreamPush streamPush : streamPushList) {
|
||||||
MediaServerItem mediaServerItem = mediaServerService.getOne(gbStream.getMediaServerId());
|
MediaServerItem mediaServerItem = mediaServerService.getOne(streamPush.getMediaServerId());
|
||||||
zlmresTfulUtils.closeStreams(mediaServerItem, gbStream.getApp(), gbStream.getStream());
|
zlmresTfulUtils.closeStreams(mediaServerItem, streamPush.getApp(), streamPush.getStream());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package com.genersoft.iot.vmp.storager.dao;
|
package com.genersoft.iot.vmp.storager.dao;
|
||||||
|
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.GbStream;
|
|
||||||
import com.genersoft.iot.vmp.media.zlm.dto.StreamPush;
|
import com.genersoft.iot.vmp.media.zlm.dto.StreamPush;
|
||||||
import com.genersoft.iot.vmp.service.bean.GPSMsgInfo;
|
import com.genersoft.iot.vmp.service.bean.GPSMsgInfo;
|
||||||
import com.genersoft.iot.vmp.service.bean.StreamPushItemFromRedis;
|
import com.genersoft.iot.vmp.service.bean.StreamPushItemFromRedis;
|
||||||
|
@ -56,11 +55,11 @@ public interface StreamPushMapper {
|
||||||
|
|
||||||
@Delete("<script> "+
|
@Delete("<script> "+
|
||||||
"DELETE FROM wvp_stream_push where " +
|
"DELETE FROM wvp_stream_push where " +
|
||||||
"<foreach collection='gbStreams' item='item' separator='or'>" +
|
"<foreach collection='streamPushList' item='item' separator='or'>" +
|
||||||
"(app=#{item.app} and stream=#{item.stream}) " +
|
"(app=#{item.app} and stream=#{item.stream}) " +
|
||||||
"</foreach>" +
|
"</foreach>" +
|
||||||
"</script>")
|
"</script>")
|
||||||
int delAllForGbStream(List<GbStream> gbStreams);
|
int delAllForStream(List<StreamPush> streamPushList);
|
||||||
|
|
||||||
|
|
||||||
@Select(value = {" <script>" +
|
@Select(value = {" <script>" +
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package com.genersoft.iot.vmp.vmanager.bean;
|
package com.genersoft.iot.vmp.vmanager.bean;
|
||||||
|
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.GbStream;
|
import com.genersoft.iot.vmp.media.zlm.dto.StreamPush;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -11,13 +11,13 @@ import java.util.List;
|
||||||
@Schema(description = "多个推流信息")
|
@Schema(description = "多个推流信息")
|
||||||
public class BatchGBStreamParam {
|
public class BatchGBStreamParam {
|
||||||
@Schema(description = "推流信息列表")
|
@Schema(description = "推流信息列表")
|
||||||
private List<GbStream> gbStreams;
|
private List<StreamPush> streamPushes;
|
||||||
|
|
||||||
public List<GbStream> getGbStreams() {
|
public List<StreamPush> getStreamPushes() {
|
||||||
return gbStreams;
|
return streamPushes;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setGbStreams(List<GbStream> gbStreams) {
|
public void setStreamPushes(List<StreamPush> streamPushes) {
|
||||||
this.gbStreams = gbStreams;
|
this.streamPushes = streamPushes;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,9 +3,12 @@ package com.genersoft.iot.vmp.vmanager.gb28181.ptz;
|
||||||
|
|
||||||
import com.genersoft.iot.vmp.conf.exception.ControllerException;
|
import com.genersoft.iot.vmp.conf.exception.ControllerException;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.Device;
|
import com.genersoft.iot.vmp.gb28181.bean.Device;
|
||||||
|
import com.genersoft.iot.vmp.gb28181.bean.PresetItem;
|
||||||
import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
|
import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
|
||||||
import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
|
import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
|
||||||
|
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander;
|
||||||
import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
|
import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
|
||||||
|
import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
|
||||||
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
|
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
|
||||||
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
|
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
@ -21,6 +24,7 @@ import org.springframework.web.context.request.async.DeferredResult;
|
||||||
import javax.sip.InvalidArgumentException;
|
import javax.sip.InvalidArgumentException;
|
||||||
import javax.sip.SipException;
|
import javax.sip.SipException;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@Tag(name = "云台控制")
|
@Tag(name = "云台控制")
|
||||||
|
@ -32,7 +36,7 @@ public class PtzController {
|
||||||
private final static Logger logger = LoggerFactory.getLogger(PtzController.class);
|
private final static Logger logger = LoggerFactory.getLogger(PtzController.class);
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private SIPCommander cmder;
|
private ISIPCommander cmder;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IVideoManagerStorage storager;
|
private IVideoManagerStorage storager;
|
||||||
|
@ -141,31 +145,33 @@ public class PtzController {
|
||||||
@Parameter(name = "deviceId", description = "设备国标编号", required = true)
|
@Parameter(name = "deviceId", description = "设备国标编号", required = true)
|
||||||
@Parameter(name = "channelId", description = "通道国标编号", required = true)
|
@Parameter(name = "channelId", description = "通道国标编号", required = true)
|
||||||
@GetMapping("/preset/query/{deviceId}/{channelId}")
|
@GetMapping("/preset/query/{deviceId}/{channelId}")
|
||||||
public DeferredResult<String> presetQueryApi(@PathVariable String deviceId, @PathVariable String channelId) {
|
public DeferredResult<List<PresetItem>> presetQueryApi(@PathVariable String deviceId, @PathVariable String channelId) {
|
||||||
if (logger.isDebugEnabled()) {
|
if (logger.isDebugEnabled()) {
|
||||||
logger.debug("设备预置位查询API调用");
|
logger.debug("设备预置位查询API调用");
|
||||||
}
|
}
|
||||||
Device device = storager.queryVideoDevice(deviceId);
|
Device device = storager.queryVideoDevice(deviceId);
|
||||||
String uuid = UUID.randomUUID().toString();
|
int sn = SipUtils.getNewSn();
|
||||||
String key = DeferredResultHolder.CALLBACK_CMD_PRESETQUERY + (ObjectUtils.isEmpty(channelId) ? deviceId : channelId);
|
String msgId = sn + "";
|
||||||
DeferredResult<String> result = new DeferredResult<String> (3 * 1000L);
|
String key = DeferredResultHolder.CALLBACK_CMD_PRESETQUERY + sn;
|
||||||
|
DeferredResult<List<PresetItem>> result = new DeferredResult<> (3 * 1000L);
|
||||||
result.onTimeout(()->{
|
result.onTimeout(()->{
|
||||||
logger.warn(String.format("获取设备预置位超时"));
|
logger.warn(String.format("获取设备预置位超时"));
|
||||||
// 释放rtpserver
|
// 释放rtpserver
|
||||||
RequestMessage msg = new RequestMessage();
|
RequestMessage msg = new RequestMessage();
|
||||||
msg.setId(uuid);
|
msg.setId(msgId);
|
||||||
msg.setKey(key);
|
msg.setKey(key);
|
||||||
msg.setData("获取设备预置位超时");
|
msg.setData("获取设备预置位超时");
|
||||||
resultHolder.invokeResult(msg);
|
resultHolder.invokeResult(msg);
|
||||||
|
|
||||||
});
|
});
|
||||||
if (resultHolder.exist(key, null)) {
|
if (resultHolder.exist(key, null)) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
resultHolder.put(key, uuid, result);
|
resultHolder.put(key, msgId, result);
|
||||||
try {
|
try {
|
||||||
cmder.presetQuery(device, channelId, event -> {
|
cmder.presetQuery(device, channelId, sn, event -> {
|
||||||
RequestMessage msg = new RequestMessage();
|
RequestMessage msg = new RequestMessage();
|
||||||
msg.setId(uuid);
|
msg.setId(msgId);
|
||||||
msg.setKey(key);
|
msg.setKey(key);
|
||||||
msg.setData(String.format("获取设备预置位失败,错误码: %s, %s", event.statusCode, event.msg));
|
msg.setData(String.format("获取设备预置位失败,错误码: %s, %s", event.statusCode, event.msg));
|
||||||
resultHolder.invokeResult(msg);
|
resultHolder.invokeResult(msg);
|
||||||
|
|
|
@ -106,10 +106,10 @@ public class StreamPushController {
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@Operation(summary = "中止多个推流")
|
@Operation(summary = "中止多个推流")
|
||||||
public void batchStop(@RequestBody BatchGBStreamParam batchGBStreamParam){
|
public void batchStop(@RequestBody BatchGBStreamParam batchGBStreamParam){
|
||||||
if (batchGBStreamParam.getGbStreams().size() == 0) {
|
if (batchGBStreamParam.getStreamPushes().size() == 0) {
|
||||||
throw new ControllerException(ErrorCode.ERROR100);
|
throw new ControllerException(ErrorCode.ERROR100);
|
||||||
}
|
}
|
||||||
if (!streamPushService.batchStop(batchGBStreamParam.getGbStreams())){
|
if (!streamPushService.batchStop(batchGBStreamParam.getStreamPushes())){
|
||||||
throw new ControllerException(ErrorCode.ERROR100);
|
throw new ControllerException(ErrorCode.ERROR100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -194,7 +194,7 @@ public class ApiDeviceController {
|
||||||
|
|
||||||
Device device = storager.queryVideoDevice(serial);
|
Device device = storager.queryVideoDevice(serial);
|
||||||
String uuid = UUID.randomUUID().toString();
|
String uuid = UUID.randomUUID().toString();
|
||||||
String key = DeferredResultHolder.CALLBACK_CMD_PRESETQUERY + (ObjectUtils.isEmpty(code) ? serial : code);
|
String key = DeferredResultHolder.CALLBACK_CMD_PRESETQUERY + serial + code;
|
||||||
DeferredResult<Object> result = new DeferredResult<> (timeout * 1000L);
|
DeferredResult<Object> result = new DeferredResult<> (timeout * 1000L);
|
||||||
DeferredResultEx<Object> deferredResultEx = new DeferredResultEx<>(result);
|
DeferredResultEx<Object> deferredResultEx = new DeferredResultEx<>(result);
|
||||||
result.onTimeout(()->{
|
result.onTimeout(()->{
|
||||||
|
|
Loading…
Reference in New Issue