优化通道刷新
parent
40fb794798
commit
c2e2e24551
|
@ -44,6 +44,12 @@ public class CatalogDataCatch {
|
||||||
return catalogData.getChannelList();
|
return catalogData.getChannelList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getTotal(String key) {
|
||||||
|
CatalogData catalogData = data.get(key);
|
||||||
|
if (catalogData == null) return 0;
|
||||||
|
return catalogData.getTotal();
|
||||||
|
}
|
||||||
|
|
||||||
public void del(String key) {
|
public void del(String key) {
|
||||||
data.remove(key);
|
data.remove(key);
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,7 @@ import javax.sip.*;
|
||||||
import javax.sip.address.SipURI;
|
import javax.sip.address.SipURI;
|
||||||
import javax.sip.header.HeaderAddress;
|
import javax.sip.header.HeaderAddress;
|
||||||
import javax.sip.header.ToHeader;
|
import javax.sip.header.ToHeader;
|
||||||
|
import javax.sip.message.Response;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
@ -103,6 +104,18 @@ public class DeviceControlQueryMessageHandler extends SIPRequestProcessorParent
|
||||||
if (!StringUtils.isEmpty(getText(rootElement,"PTZCmd")) && !parentPlatform.getServerGBId().equals(targetGBId)) {
|
if (!StringUtils.isEmpty(getText(rootElement,"PTZCmd")) && !parentPlatform.getServerGBId().equals(targetGBId)) {
|
||||||
String cmdString = getText(rootElement,"PTZCmd");
|
String cmdString = getText(rootElement,"PTZCmd");
|
||||||
Device deviceForPlatform = storager.queryVideoDeviceByPlatformIdAndChannelId(parentPlatform.getServerGBId(), channelId);
|
Device deviceForPlatform = storager.queryVideoDeviceByPlatformIdAndChannelId(parentPlatform.getServerGBId(), channelId);
|
||||||
|
if (deviceForPlatform == null) {
|
||||||
|
try {
|
||||||
|
responseAck(evt, Response.NOT_FOUND);
|
||||||
|
return;
|
||||||
|
} catch (SipException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (InvalidArgumentException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (ParseException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
cmder.fronEndCmd(deviceForPlatform, channelId, cmdString, eventResult -> {
|
cmder.fronEndCmd(deviceForPlatform, channelId, cmdString, eventResult -> {
|
||||||
// 失败的回复
|
// 失败的回复
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -115,16 +115,15 @@ public class CatalogResponseMessageHandler extends SIPRequestProcessorParent imp
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
//by brewswang
|
//by brewswang
|
||||||
if (NumericUtil.isDouble(XmlUtil.getText(itemDevice, "Longitude"))) {//如果包含位置信息,就更新一下位置
|
// if (NumericUtil.isDouble(XmlUtil.getText(itemDevice, "Longitude"))) {//如果包含位置信息,就更新一下位置
|
||||||
processNotifyMobilePosition(evt, itemDevice);
|
// processNotifyMobilePosition(evt, itemDevice);
|
||||||
}
|
// }
|
||||||
|
|
||||||
DeviceChannel deviceChannel = XmlUtil.channelContentHander(itemDevice);
|
DeviceChannel deviceChannel = XmlUtil.channelContentHander(itemDevice);
|
||||||
deviceChannel.setDeviceId(device.getDeviceId());
|
deviceChannel.setDeviceId(device.getDeviceId());
|
||||||
logger.debug("收到来自设备【{}】的通道: {}【{}】", device.getDeviceId(), deviceChannel.getName(), deviceChannel.getChannelId());
|
|
||||||
channelList.add(deviceChannel);
|
channelList.add(deviceChannel);
|
||||||
}
|
}
|
||||||
|
logger.debug("收到来自设备【{}】的通道: {}个,{}/{}", device.getDeviceId(), channelList.size(), catalogDataCatch.get(key) == null ? 0 :catalogDataCatch.get(key).size(), sumNum);
|
||||||
catalogDataCatch.put(key, sumNum, device, channelList);
|
catalogDataCatch.put(key, sumNum, device, channelList);
|
||||||
if (catalogDataCatch.get(key).size() == sumNum) {
|
if (catalogDataCatch.get(key).size() == sumNum) {
|
||||||
// 数据已经完整接收
|
// 数据已经完整接收
|
||||||
|
@ -230,4 +229,9 @@ public class CatalogResponseMessageHandler extends SIPRequestProcessorParent imp
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getChannelSyncProgress(String deviceId) {
|
||||||
|
String key = DeferredResultHolder.CALLBACK_CMD_CATALOG + deviceId;
|
||||||
|
return catalogDataCatch.get(key) == null ? "0/0" : catalogDataCatch.get(key).size() + "/" + catalogDataCatch.getTotal(key);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -274,7 +274,7 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
|
||||||
channels = deviceChannelList;
|
channels = deviceChannelList;
|
||||||
}
|
}
|
||||||
if (stringBuilder.length() > 0) {
|
if (stringBuilder.length() > 0) {
|
||||||
logger.debug("[目录查询]收到的数据存在重复: {}" , stringBuilder);
|
logger.info("[目录查询]收到的数据存在重复: {}" , stringBuilder);
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
int cleanChannelsResult = deviceChannelMapper.cleanChannelsNotInList(deviceId, channels);
|
int cleanChannelsResult = deviceChannelMapper.cleanChannelsNotInList(deviceId, channels);
|
||||||
|
|
|
@ -175,22 +175,23 @@ public class DeviceQuery {
|
||||||
});
|
});
|
||||||
// 等待其他相同请求返回时一起返回
|
// 等待其他相同请求返回时一起返回
|
||||||
if (resultHolder.exist(key, null)) {
|
if (resultHolder.exist(key, null)) {
|
||||||
|
resultHolder.put(key, uuid, result);
|
||||||
|
return result;
|
||||||
|
}else {
|
||||||
|
cmder.catalogQuery(device, event -> {
|
||||||
|
RequestMessage msg = new RequestMessage();
|
||||||
|
msg.setKey(key);
|
||||||
|
msg.setId(uuid);
|
||||||
|
WVPResult<Object> wvpResult = new WVPResult<>();
|
||||||
|
wvpResult.setCode(-1);
|
||||||
|
wvpResult.setData(device);
|
||||||
|
wvpResult.setMsg(String.format("同步通道失败,错误码: %s, %s", event.statusCode, event.msg));
|
||||||
|
msg.setData(wvpResult);
|
||||||
|
resultHolder.invokeAllResult(msg);
|
||||||
|
});
|
||||||
|
resultHolder.put(key, uuid, result);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
cmder.catalogQuery(device, event -> {
|
|
||||||
RequestMessage msg = new RequestMessage();
|
|
||||||
msg.setKey(key);
|
|
||||||
msg.setId(uuid);
|
|
||||||
WVPResult<Object> wvpResult = new WVPResult<>();
|
|
||||||
wvpResult.setCode(-1);
|
|
||||||
wvpResult.setData(device);
|
|
||||||
wvpResult.setMsg(String.format("同步通道失败,错误码: %s, %s", event.statusCode, event.msg));
|
|
||||||
msg.setData(wvpResult);
|
|
||||||
resultHolder.invokeAllResult(msg);
|
|
||||||
});
|
|
||||||
|
|
||||||
resultHolder.put(key, uuid, result);
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -57,7 +57,7 @@
|
||||||
|
|
||||||
<el-table-column label="操作" width="450" align="center" fixed="right">
|
<el-table-column label="操作" width="450" align="center" fixed="right">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button size="mini" :loading="scope.row.loading" v-if="scope.row.online!=0" icon="el-icon-refresh" @click="refDevice(scope.row)">刷新</el-button>
|
<el-button size="mini" :loading="syncDevices.includes(scope.row.deviceId)" v-if="scope.row.online!=0" icon="el-icon-refresh" @click="refDevice(scope.row)">刷新</el-button>
|
||||||
<el-button-group>
|
<el-button-group>
|
||||||
<el-button size="mini" icon="el-icon-video-camera-solid" v-bind:disabled="scope.row.online==0" type="primary" @click="showChannelList(scope.row)">通道</el-button>
|
<el-button size="mini" icon="el-icon-video-camera-solid" v-bind:disabled="scope.row.online==0" type="primary" @click="showChannelList(scope.row)">通道</el-button>
|
||||||
<el-button size="mini" icon="el-icon-location" v-bind:disabled="scope.row.online==0" type="primary" @click="showDevicePosition(scope.row)">定位</el-button>
|
<el-button size="mini" icon="el-icon-location" v-bind:disabled="scope.row.online==0" type="primary" @click="showDevicePosition(scope.row)">定位</el-button>
|
||||||
|
@ -104,7 +104,8 @@
|
||||||
currentPage:1,
|
currentPage:1,
|
||||||
count:15,
|
count:15,
|
||||||
total:0,
|
total:0,
|
||||||
getDeviceListLoading: false
|
getDeviceListLoading: false,
|
||||||
|
syncDevices:[]
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
@ -117,8 +118,6 @@
|
||||||
});
|
});
|
||||||
this.currentDeviceChannelsLenth = channels.length;
|
this.currentDeviceChannelsLenth = channels.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("数据:" + JSON.stringify(channels));
|
|
||||||
return channels;
|
return channels;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -153,13 +152,11 @@
|
||||||
count: that.count
|
count: that.count
|
||||||
}
|
}
|
||||||
}).then(function (res) {
|
}).then(function (res) {
|
||||||
console.log(res);
|
|
||||||
console.log(res.data.list);
|
|
||||||
that.total = res.data.total;
|
that.total = res.data.total;
|
||||||
that.deviceList = res.data.list;
|
that.deviceList = res.data.list;
|
||||||
that.getDeviceListLoading = false;
|
that.getDeviceListLoading = false;
|
||||||
}).catch(function (error) {
|
}).catch(function (error) {
|
||||||
console.log(error);
|
console.error(error);
|
||||||
that.getDeviceListLoading = false;
|
that.getDeviceListLoading = false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -182,7 +179,7 @@
|
||||||
}).then((res)=>{
|
}).then((res)=>{
|
||||||
this.getDeviceList();
|
this.getDeviceList();
|
||||||
}).catch((error) =>{
|
}).catch((error) =>{
|
||||||
console.log(error);
|
console.error(error);
|
||||||
});
|
});
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
|
|
||||||
|
@ -191,11 +188,9 @@
|
||||||
|
|
||||||
},
|
},
|
||||||
showChannelList: function(row) {
|
showChannelList: function(row) {
|
||||||
console.log(JSON.stringify(row))
|
|
||||||
this.$router.push(`/channelList/${row.deviceId}/0/15/1`);
|
this.$router.push(`/channelList/${row.deviceId}/0/15/1`);
|
||||||
},
|
},
|
||||||
showDevicePosition: function(row) {
|
showDevicePosition: function(row) {
|
||||||
console.log(JSON.stringify(row))
|
|
||||||
this.$router.push(`/devicePosition/${row.deviceId}/0/15/1`);
|
this.$router.push(`/devicePosition/${row.deviceId}/0/15/1`);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -204,11 +199,11 @@
|
||||||
refDevice: function(itemData) {
|
refDevice: function(itemData) {
|
||||||
console.log("刷新对应设备:" + itemData.deviceId);
|
console.log("刷新对应设备:" + itemData.deviceId);
|
||||||
var that = this;
|
var that = this;
|
||||||
that.$set(itemData,"loading", true);
|
this.syncDevices.push(itemData.deviceId)
|
||||||
this.$axios({
|
this.$axios({
|
||||||
method: 'post',
|
method: 'post',
|
||||||
url: '/api/device/query/devices/' + itemData.deviceId + '/sync'
|
url: '/api/device/query/devices/' + itemData.deviceId + '/sync'
|
||||||
}).then(function(res) {
|
}).then((res) => {
|
||||||
console.log("刷新设备结果:"+JSON.stringify(res));
|
console.log("刷新设备结果:"+JSON.stringify(res));
|
||||||
if (res.data.code !==0) {
|
if (res.data.code !==0) {
|
||||||
that.$message({
|
that.$message({
|
||||||
|
@ -224,15 +219,15 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
that.initData()
|
that.initData()
|
||||||
that.$set(itemData,"loading", true);
|
this.syncDevices.splice(this.syncDevices.indexOf(itemData.deviceId, 1));
|
||||||
}).catch(function(e) {
|
}).catch((e) => {
|
||||||
console.error(e)
|
console.error(e)
|
||||||
that.$message({
|
that.$message({
|
||||||
showClose: true,
|
showClose: true,
|
||||||
message: e,
|
message: e,
|
||||||
type: 'error'
|
type: 'error'
|
||||||
});
|
});
|
||||||
that.$set(itemData,"loading", true);
|
this.syncDevices.splice(this.syncDevices.indexOf(itemData.deviceId, 1));
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
//通知设备上传媒体流
|
//通知设备上传媒体流
|
||||||
|
@ -251,7 +246,6 @@
|
||||||
// });
|
// });
|
||||||
},
|
},
|
||||||
transportChange: function (row) {
|
transportChange: function (row) {
|
||||||
console.log(row);
|
|
||||||
console.log(`修改传输方式为 ${row.streamMode}:${row.deviceId} `);
|
console.log(`修改传输方式为 ${row.streamMode}:${row.deviceId} `);
|
||||||
let that = this;
|
let that = this;
|
||||||
this.$axios({
|
this.$axios({
|
||||||
|
@ -263,7 +257,6 @@
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
edit: function (row) {
|
edit: function (row) {
|
||||||
console.log(row);
|
|
||||||
this.$refs.deviceEdit.openDialog(row, ()=>{
|
this.$refs.deviceEdit.openDialog(row, ()=>{
|
||||||
this.$refs.deviceEdit.close();
|
this.$refs.deviceEdit.close();
|
||||||
this.$message({
|
this.$message({
|
||||||
|
|
Loading…
Reference in New Issue