From 9ce22eba3c561d353e12c66c509fb91ca241409f Mon Sep 17 00:00:00 2001
From: 648540858 <456panlinlin>
Date: 星期二, 26 四月 2022 17:24:41 +0800
Subject: [PATCH] 行政区划作为级联数据的处理,修复设备树的显示
---
web_src/src/components/devicePosition.vue | 19 ++++++---
src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorage.java | 2
src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java | 9 +++-
web_src/src/components/service/DeviceService.js | 15 ++++---
src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java | 27 +++++++++++--
web_src/src/components/common/DeviceTree.vue | 4 +-
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java | 6 ++-
7 files changed, 57 insertions(+), 25 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java
index 6ae09bd..1a87996 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java
@@ -204,6 +204,7 @@
deviceChannel.setCivilCode(XmlUtil.getText(itemDevice, "CivilCode"));
deviceChannel.setBlock(XmlUtil.getText(itemDevice, "Block"));
deviceChannel.setAddress(XmlUtil.getText(itemDevice, "Address"));
+ String businessGroupID = XmlUtil.getText(itemDevice, "BusinessGroupID");
if (XmlUtil.getText(itemDevice, "Parental") == null
|| XmlUtil.getText(itemDevice, "Parental") == "") {
deviceChannel.setParental(0);
@@ -212,11 +213,27 @@
}
deviceChannel.setParentId(XmlUtil.getText(itemDevice, "ParentID"));
String parentId = XmlUtil.getText(itemDevice, "ParentID");
- if (parentId != null && parentId.contains("/")) {
- String lastParentId = parentId.substring(parentId.lastIndexOf("/") + 1);
- deviceChannel.setParentId(lastParentId);
+ if (parentId != null) {
+ if (parentId.contains("/")) {
+ String lastParentId = parentId.substring(parentId.lastIndexOf("/") + 1);
+ deviceChannel.setParentId(lastParentId);
+ }else {
+ deviceChannel.setParentId(parentId);
+ }
}else {
- deviceChannel.setParentId(parentId);
+ if (deviceChannel.getChannelId().length() <= 10) { // 姝ゆ椂涓鸿鏀垮尯鍒�, 涓婁笅绾ц鏀垮尯鍒掍娇鐢―eviceId鍏宠仈
+ deviceChannel.setParentId(deviceChannel.getChannelId().substring(0, deviceChannel.getChannelId().length() - 2));
+ }else if (deviceChannel.getChannelId().length() == 20) {
+ if (Integer.parseInt(deviceChannel.getChannelId().substring(10, 13)) == 216) { // 铏氭嫙缁勭粐
+ deviceChannel.setParentId(businessGroupID);
+ }else if (deviceChannel.getCivilCode() != null) {
+ // 璁惧锛� 鏃爌arentId鐨�20浣嶆槸浣跨敤CivilCode琛ㄧず涓婄骇鐨勮澶囷紝
+ // 娉細215 涓氬姟鍒嗙粍鏄渶瑕佹湁parentId鐨�
+ deviceChannel.setParentId(deviceChannel.getCivilCode());
+ }
+ }else {
+ deviceChannel.setParentId(deviceChannel.getDeviceId());
+ }
}
if (XmlUtil.getText(itemDevice, "SafetyWay") == null
@@ -277,4 +294,4 @@
deviceChannel.setHasAudio(true); // 榛樿鍚湁闊抽锛屾挱鏀炬椂鍐嶆鏌ユ槸鍚︽湁闊抽鍙婃槸鍚AC
return deviceChannel;
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorage.java b/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorage.java
index d3a9ae9..a29b7ae 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorage.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorage.java
@@ -89,7 +89,7 @@
* @param count 姣忛〉鏁伴噺
* @return
*/
- public PageInfo queryChannelsByDeviceId(String deviceId, String query, Boolean hasSubChannel, Boolean online, int page, int count);
+ public PageInfo queryChannelsByDeviceId(String deviceId, String query, Boolean hasSubChannel, Boolean online, Boolean catalogUnderDevice, int page, int count);
public List<DeviceChannel> queryChannelsByDeviceIdWithStartAndLimit(String deviceId, String query, Boolean hasSubChannel, Boolean online, int start, int limit);
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java
index 661a69b..070e312 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java
@@ -340,10 +340,15 @@
}
@Override
- public PageInfo queryChannelsByDeviceId(String deviceId, String query, Boolean hasSubChannel, Boolean online, int page, int count) {
+ public PageInfo queryChannelsByDeviceId(String deviceId, String query, Boolean hasSubChannel, Boolean online, Boolean catalogUnderDevice, int page, int count) {
// 鑾峰彇鍒版墍鏈夋鍦ㄦ挱鏀剧殑娴�
PageHelper.startPage(page, count);
- List<DeviceChannel> all = deviceChannelMapper.queryChannels(deviceId, null, query, hasSubChannel, online);
+ List<DeviceChannel> all;
+ if (catalogUnderDevice != null && catalogUnderDevice) {
+ all = deviceChannelMapper.queryChannels(deviceId, deviceId, query, hasSubChannel, online);
+ }else {
+ all = deviceChannelMapper.queryChannels(deviceId, null, query, hasSubChannel, online);
+ }
return new PageInfo<>(all);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java
index ab153ad..708008e 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java
@@ -128,12 +128,14 @@
@ApiImplicitParam(name="query", value = "鏌ヨ鍐呭" ,dataTypeClass = String.class),
@ApiImplicitParam(name="online", value = "鏄惁鍦ㄧ嚎" ,dataTypeClass = Boolean.class),
@ApiImplicitParam(name="channelType", value = "璁惧/瀛愮洰褰�-> false/true" ,dataTypeClass = Boolean.class),
+ @ApiImplicitParam(name="catalogUnderDevice", value = "鏄惁鐩村睘涓庤澶囩殑鐩綍" ,dataTypeClass = Boolean.class),
})
public ResponseEntity<PageInfo> channels(@PathVariable String deviceId,
int page, int count,
@RequestParam(required = false) String query,
@RequestParam(required = false) Boolean online,
- @RequestParam(required = false) Boolean channelType) {
+ @RequestParam(required = false) Boolean channelType,
+ @RequestParam(required = false) Boolean catalogUnderDevice) {
// if (logger.isDebugEnabled()) {
// logger.debug("鏌ヨ瑙嗛璁惧閫氶亾API璋冪敤");
// }
@@ -141,7 +143,7 @@
query = null;
}
- PageInfo pageResult = storager.queryChannelsByDeviceId(deviceId, query, channelType, online, page, count);
+ PageInfo pageResult = storager.queryChannelsByDeviceId(deviceId, query, channelType, online, catalogUnderDevice, page, count);
return new ResponseEntity<>(pageResult,HttpStatus.OK);
}
diff --git a/web_src/src/components/common/DeviceTree.vue b/web_src/src/components/common/DeviceTree.vue
index fab895f..31e49bd 100644
--- a/web_src/src/components/common/DeviceTree.vue
+++ b/web_src/src/components/common/DeviceTree.vue
@@ -89,8 +89,8 @@
})
}
if (node.level === 1) {
- this.deviceService.getAllChannel(true, node.data.id, (catalogData) => {
- this.deviceService.getAllChannel(false, node.data.id, (channelData) => {
+ this.deviceService.getAllChannel(true, true, node.data.id, (catalogData) => {
+ this.deviceService.getAllChannel(false, true, node.data.id, (channelData) => {
let data = catalogData.concat(channelData)
this.channelDataHandler(data, resolve)
})
diff --git a/web_src/src/components/devicePosition.vue b/web_src/src/components/devicePosition.vue
index a807363..16675c9 100644
--- a/web_src/src/components/devicePosition.vue
+++ b/web_src/src/components/devicePosition.vue
@@ -14,13 +14,14 @@
<div ref="infobox" v-if="channel != null " >
<div v-if="channel != null" class="infobox-content">
<el-descriptions class="margin-top" :title="channel.name" :column="1" :colon="true" size="mini" :labelStyle="labelStyle" >
- <el-descriptions-item label="鐢熶骇鍘傚晢">{{channel.manufacture}}</el-descriptions-item>
+ <el-descriptions-item label="缂栧彿" >{{channel.channelId}}</el-descriptions-item>
<el-descriptions-item label="鍨嬪彿">{{channel.model}}</el-descriptions-item>
- <el-descriptions-item label="璁惧褰掑睘" >{{channel.owner}}</el-descriptions-item>
+ <el-descriptions-item label="缁忕含搴�" >{{channel.longitude}},{{channel.latitude}}</el-descriptions-item>
+ <el-descriptions-item label="鐢熶骇鍘傚晢">{{channel.manufacture}}</el-descriptions-item>
<el-descriptions-item label="琛屾斂鍖哄煙" >{{channel.civilCode}}</el-descriptions-item>
+ <el-descriptions-item label="璁惧褰掑睘" >{{channel.owner}}</el-descriptions-item>
<el-descriptions-item label="瀹夎鍦板潃" >{{channel.address == null?'鏈煡': channel.address}}</el-descriptions-item>
<el-descriptions-item label="浜戝彴绫诲瀷" >{{channel.ptztypeText}}</el-descriptions-item>
- <el-descriptions-item label="缁忕含搴�" >{{channel.longitude}},{{channel.latitude}}</el-descriptions-item>
<el-descriptions-item label="鐘舵��">
<el-tag size="small" v-if="channel.status === 1">鍦ㄧ嚎</el-tag>
<el-tag size="small" type="info" v-if="channel.status === 0">绂荤嚎</el-tag>
@@ -75,7 +76,7 @@
console.log(this.$route.query.deviceId)
// this.$refs.deviceTree.openByDeivceId(this.$route.query.deivceId)
setTimeout(()=>{ // 寤惰繜浠ョ瓑寰呭湴鍥惧姞杞藉畬鎴� TODO 鍚庣画淇敼涓洪�氳繃鏄疄闄呰繖锛涚姸鎬佸姞鍥炶皟瀹屾垚
- this.deviceService.getAllChannel(false, this.$route.query.deviceId, this.channelsHandler)
+ this.deviceService.getAllChannel(false, false, this.$route.query.deviceId, this.channelsHandler)
}, 1000)
}
@@ -141,7 +142,13 @@
zIndex: 3000, // 鑿滃崟鏍峰紡 z-index
});
} else {
- this.deviceOrSubChannelMenu(event, data)
+ if (typeof data.channelId === "undefined") {
+ this.deviceOrSubChannelMenu(event, data)
+ }else {
+ // TODO 瀛愮洰褰曟殏鏃朵笉鏀寔鏌ヨ浠栦笅闈㈡墍鏈夎澶�, 鏀寔鏀寔鏌ヨ鐩村睘浜庤繖涓洰褰曠殑璁惧
+ this.deviceOrSubChannelMenu(event, data)
+ }
+
}
},
@@ -155,7 +162,7 @@
disabled: false,
onClick: () => {
if (!data.channelId) {
- this.deviceService.getAllChannel(false, data.deviceId, this.channelsHandler)
+ this.deviceService.getAllChannel(false, false, data.deviceId, this.channelsHandler)
}
if (data.channelId && data.subCount > 0) {
// 鐐瑰嚮瀛愮洰褰�
diff --git a/web_src/src/components/service/DeviceService.js b/web_src/src/components/service/DeviceService.js
index 6149579..dbe10d1 100644
--- a/web_src/src/components/service/DeviceService.js
+++ b/web_src/src/components/service/DeviceService.js
@@ -45,20 +45,20 @@
}
- getAllChannel(isCatalog, deviceId, callback, errorCallback) {
+ getAllChannel(isCatalog, catalogUnderDevice, deviceId, callback, errorCallback) {
let currentPage = 1;
let count = 100;
let catalogList = []
- this.getAllChannelIteration(isCatalog, deviceId, catalogList, currentPage, count, callback, errorCallback)
+ this.getAllChannelIteration(isCatalog, catalogUnderDevice, deviceId, catalogList, currentPage, count, callback, errorCallback)
}
- getAllChannelIteration(isCatalog, deviceId, catalogList, currentPage, count, callback, errorCallback) {
- this.getChanel(isCatalog, deviceId, currentPage, count, (data) => {
+ getAllChannelIteration(isCatalog, catalogUnderDevice, deviceId, catalogList, currentPage, count, callback, errorCallback) {
+ this.getChanel(isCatalog, catalogUnderDevice, deviceId, currentPage, count, (data) => {
if (data.list) {
catalogList = catalogList.concat(data.list);
if (catalogList.length < data.total) {
currentPage ++
- this.getAllChannelIteration(isCatalog, deviceId, catalogList, currentPage, count, callback, errorCallback)
+ this.getAllChannelIteration(isCatalog,catalogUnderDevice, deviceId, catalogList, currentPage, count, callback, errorCallback)
}else {
console.log(1)
if (typeof (callback) == "function") callback(catalogList)
@@ -66,7 +66,7 @@
}
}, errorCallback)
}
- getChanel(isCatalog, deviceId, currentPage, count, callback, errorCallback) {
+ getChanel(isCatalog, catalogUnderDevice, deviceId, currentPage, count, callback, errorCallback) {
this.$axios({
method: 'get',
url: `/api/device/query/devices/${deviceId}/channels`,
@@ -75,7 +75,8 @@
count: count,
query: "",
online: "",
- channelType: isCatalog
+ channelType: isCatalog,
+ catalogUnderDevice: catalogUnderDevice
}
}).then((res) =>{
if (typeof (callback) == "function") callback(res.data)
--
Gitblit v1.8.0