diff --git a/README.md b/README.md index a88ea2d4..ab0d0caa 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ https://gitee.com/18010473990/wvp-GB28181.git - [X] WEB添加上级平台 - [X] 注册 - [X] 心跳保活 - - [ ] 通道选择 + - [X] 通道选择 - [ ] 通道推送 - [ ] 点播 - [ ] 云台控制 diff --git a/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java b/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java index b4d0c9b6..9e986db4 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java @@ -206,9 +206,9 @@ public interface IVideoManagerStorager { void outlineForAllParentPlatform(); /** - * 查询通道信息, 不区分设备 + * 查询通道信息,不区分设备(已关联平台或全部) */ - PageInfo queryChannelListInAll(int page, int count, String query, Boolean online, Boolean channelType, String parentChannelId); + PageInfo queryAllChannelList(int page, int count, String query, Boolean online, Boolean channelType, String platformId, Boolean inPlatform); /** @@ -218,4 +218,14 @@ public interface IVideoManagerStorager { * @return */ int updateChannelForGB(String platformId, List channelReduces); + + /** + * 移除上级平台的通道信息 + * @param platformId + * @param channelReduces + * @return + */ + int delChannelForGB(String platformId, List channelReduces); + + } diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java index ff1a7e15..5b04222c 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java @@ -4,6 +4,7 @@ import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; import com.genersoft.iot.vmp.vmanager.platform.bean.ChannelReduce; import org.apache.ibatis.annotations.*; +import org.springframework.stereotype.Repository; import java.util.List; @@ -11,6 +12,7 @@ import java.util.List; * 用于存储设备通道信息 */ @Mapper +@Repository public interface DeviceChannelMapper { @Insert("INSERT INTO device_channel (channelId, deviceId, name, manufacture, model, owner, civilCode, block, " + @@ -79,18 +81,22 @@ public interface DeviceChannelMapper { @Select(value = {" "}) - List queryChannelListInAll(String query, Boolean online, Boolean hasSubChannel, String parentChannelId); + List queryChannelListInAll(String query, Boolean online, Boolean hasSubChannel, String platformId, Boolean inPlatform); } diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/PatformChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/PatformChannelMapper.java new file mode 100644 index 00000000..00b12607 --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/PatformChannelMapper.java @@ -0,0 +1,37 @@ +package com.genersoft.iot.vmp.storager.dao; + +import com.genersoft.iot.vmp.vmanager.platform.bean.ChannelReduce; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Mapper +@Repository +public interface PatformChannelMapper { + + /** + * 查询列表里已经关联的 + */ + @Select("") + List findChannelRelatedPlatform(String platformId, List deviceAndChannelIds); + + @Insert("") + int addChannels(String platformId, List channelReducesToAdd); + + + @Delete("") + int delChannelForGB(String platformId, List channelReducesToDel); +} diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/patformChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/patformChannelMapper.java deleted file mode 100644 index 9b10ece4..00000000 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/patformChannelMapper.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.genersoft.iot.vmp.storager.dao; - -import org.mapstruct.Mapper; - -@Mapper -public interface patformChannelMapper { -} diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java index 546a3e49..aed30268 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java @@ -9,6 +9,7 @@ import com.genersoft.iot.vmp.storager.IRedisCatchStorage; import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper; import com.genersoft.iot.vmp.storager.dao.DeviceMapper; import com.genersoft.iot.vmp.storager.dao.ParentPlatformMapper; +import com.genersoft.iot.vmp.storager.dao.PatformChannelMapper; import com.genersoft.iot.vmp.vmanager.platform.bean.ChannelReduce; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -39,6 +40,9 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager { @Autowired private IRedisCatchStorage redisCatchStorage; + @Autowired + private PatformChannelMapper patformChannelMapper; + @@ -275,17 +279,46 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager { @Override - public PageInfo queryChannelListInAll(int page, int count, String query, Boolean online, - Boolean channelType, String parentChannelId) { + public PageInfo queryAllChannelList(int page, int count, String query, Boolean online, + Boolean channelType, String platformId, Boolean inPlatform) { PageHelper.startPage(page, count); - List all = deviceChannelMapper.queryChannelListInAll(query, online, channelType, parentChannelId); + List all = deviceChannelMapper.queryChannelListInAll(query, online, channelType, platformId, inPlatform); return new PageInfo<>(all); } - @Transactional @Override public int updateChannelForGB(String platformId, List channelReduces) { - return 0; + + Map deviceAndChannels = new HashMap<>(); + for (ChannelReduce channelReduce : channelReduces) { + deviceAndChannels.put(channelReduce.getDeviceId() + "_" + channelReduce.getChannelId(), channelReduce); + } + List deviceAndChannelList = new ArrayList<>(deviceAndChannels.keySet()); + // 查询当前已经存在的 + List relatedPlatformchannels = patformChannelMapper.findChannelRelatedPlatform(platformId, deviceAndChannelList); + if (relatedPlatformchannels != null) { + deviceAndChannelList.removeAll(relatedPlatformchannels); + } + for (String relatedPlatformchannel : relatedPlatformchannels) { + deviceAndChannels.remove(relatedPlatformchannel); + } + List channelReducesToAdd = new ArrayList<>(deviceAndChannels.values()); + // 对剩下的数据进行存储 + int result = 0; + if (channelReducesToAdd.size() > 0) { + result = patformChannelMapper.addChannels(platformId, channelReducesToAdd); + } + + return result; + } + + + @Override + public int delChannelForGB(String platformId, List channelReduces) { + + int result = patformChannelMapper.delChannelForGB(platformId, channelReduces); + + return result; } } diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/platform/PlatformController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/platform/PlatformController.java index 0823c493..a75d753b 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/platform/PlatformController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/platform/PlatformController.java @@ -151,15 +151,21 @@ public class PlatformController { @RequestMapping("/platforms/channelList") @ResponseBody public PageInfo channelList(int page, int count, + @RequestParam(required = false) String platformId, @RequestParam(required = false) String query, @RequestParam(required = false) Boolean online, + @RequestParam(required = false) Boolean choosed, @RequestParam(required = false) Boolean channelType){ if (logger.isDebugEnabled()) { logger.debug("查询所有所有通道API调用"); } - - PageInfo channelReduces = storager.queryChannelListInAll(page, count, query, online, channelType, null); + PageInfo channelReduces = null; + if (platformId != null ) { + channelReduces = storager.queryAllChannelList(page, count, query, online, channelType, platformId, choosed); + }else { + channelReduces = storager.queryAllChannelList(page, count, query, online, channelType, null, false); + } return channelReduces; } @@ -177,5 +183,17 @@ public class PlatformController { return new ResponseEntity<>(String.valueOf(result > 0), HttpStatus.OK); } + @RequestMapping("/platforms/delChannelForGB") + @ResponseBody + public ResponseEntity delChannelForGB(@RequestBody UpdateChannelParam param){ + + if (logger.isDebugEnabled()) { + logger.debug("给上级平台添加国标通道API调用"); + } + int result = storager.delChannelForGB(param.getPlatformId(), param.getChannelReduces()); + + return new ResponseEntity<>(String.valueOf(result > 0), HttpStatus.OK); + } + } diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/platform/bean/ChannelReduce.java b/src/main/java/com/genersoft/iot/vmp/vmanager/platform/bean/ChannelReduce.java index 275e0f77..cf626506 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/platform/bean/ChannelReduce.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/platform/bean/ChannelReduce.java @@ -35,6 +35,11 @@ public class ChannelReduce { */ private int subCount; + /** + * 平台Id + */ + private String platformId; + public String getChannelId() { return channelId; @@ -75,4 +80,20 @@ public class ChannelReduce { public void setHostAddress(String hostAddress) { this.hostAddress = hostAddress; } + + public int getSubCount() { + return subCount; + } + + public void setSubCount(int subCount) { + this.subCount = subCount; + } + + public String getPlatformId() { + return platformId; + } + + public void setPlatformId(String platformId) { + this.platformId = platformId; + } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index caf4dfcd..ef46c2ad 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,3 +1,3 @@ spring: profiles: - active: dev \ No newline at end of file + active: local \ No newline at end of file diff --git a/src/main/resources/wvp.sqlite b/src/main/resources/wvp.sqlite index b72a3735..3694bad3 100644 Binary files a/src/main/resources/wvp.sqlite and b/src/main/resources/wvp.sqlite differ diff --git a/web_src/src/components/ParentPlatformList.vue b/web_src/src/components/ParentPlatformList.vue index 98907dbe..37b8b8f7 100644 --- a/web_src/src/components/ParentPlatformList.vue +++ b/web_src/src/components/ParentPlatformList.vue @@ -89,9 +89,9 @@ export default { }; }, computed: { - + getcurrentDeviceChannels: function() { - + } }, mounted() { @@ -155,7 +155,7 @@ export default { getPlatformList: function() { let that = this; - this.$axios.get(`/api/platforms/${that.count}/${that.currentPage - 1}`) + this.$axios.get(`/api/platforms/${that.count}/${that.currentPage}`) .then(function (res) { that.total = res.data.total; that.platformList = res.data.list; diff --git a/web_src/src/components/channelList.vue b/web_src/src/components/channelList.vue index a6a5bd65..943fe3a6 100644 --- a/web_src/src/components/channelList.vue +++ b/web_src/src/components/channelList.vue @@ -110,7 +110,7 @@ export default { if (this.autoList) { this.updateLooper = setInterval(this.initData, 5000); } - + }, destroyed() { this.$destroy('videojs'); diff --git a/web_src/src/components/gb28181/chooseChannel.vue b/web_src/src/components/gb28181/chooseChannel.vue index 9796eb43..62b39dc1 100644 --- a/web_src/src/components/gb28181/chooseChannel.vue +++ b/web_src/src/components/gb28181/chooseChannel.vue @@ -4,17 +4,13 @@ - - + - - 保存 - - - + + @@ -41,7 +37,6 @@ export default { // }; // } }, - created() {}, data() { return { isLoging: false, @@ -49,12 +44,11 @@ export default { platformId: "", isLoging: false, showDialog: false, - chooseData: [] - + chooseData: {} + }; }, methods: { - openDialog: function (platformId, closeCallback) { console.log(platformId) this.platformId = platformId @@ -88,10 +82,6 @@ export default { }).catch(function (error) { console.log(error); }); - }, - chooseChanage: function(val) { - console.log(val) - this.chooseData = val; } } }; diff --git a/web_src/src/components/gb28181/chooseChannelForGb.vue b/web_src/src/components/gb28181/chooseChannelForGb.vue index 3e488fe8..c57fe17f 100644 --- a/web_src/src/components/gb28181/chooseChannelForGb.vue +++ b/web_src/src/components/gb28181/chooseChannelForGb.vue @@ -3,19 +3,28 @@
搜索: - 通道类型: + 通道类型: - 在线状态: + + 选择状态: + + + + + + 在线状态: + + 全部共享
- - + + @@ -50,22 +59,32 @@ export default { // }; // } }, - props: ['chooseChanage'], + props: ['platformId'], created() { this.initData(); }, data() { return { gbChannels: [], + gbChoosechannel:{}, searchSrt: "", channelType: "", online: "", - currentPage: parseInt(this.$route.params.page), - count: parseInt(this.$route.params.count), - total: 0 - + choosed: "", + currentPage: 0, + count: 15, + total: 0, + eventEnanle: false + }; }, + watch:{ + platformId(newData, oldData){ + console.log(newData) + this.initData() + + }, + }, methods: { initData: function() { this.getChannelList(); @@ -75,30 +94,128 @@ export default { this.initData(); }, handleSizeChange: function (val) { - this.count = val; + this.count = val; + console.log(val) this.initData(); }, + rowcheckedChanage: function (val, row) { + console.log(val) + console.log(row) + }, + checkedChanage: function (val) { + var that = this; + if (!that.eventEnanle) { + return; + } + var tabelData = JSON.parse(JSON.stringify(this.$refs.gbChannelsTable.data)); + console.log("checkedChanage") + console.log(val) + + var newData = {}; + var addData = []; + var delData = []; + if (val.length > 0) { + for (let i = 0; i < val.length; i++) { + const element = val[i]; + var key = element.deviceId + "_" + element.channelId; + newData[key] = element; + if (!!!that.gbChoosechannel[key]){ + addData.push(element) + }else{ + delete that.gbChoosechannel[key] + } + } + + var oldKeys = Object.keys(that.gbChoosechannel); + if (oldKeys.length > 0) { + for (let i = 0; i < oldKeys.length; i++) { + const key = oldKeys[i]; + delData.push(that.gbChoosechannel[key]) + } + } + + }else{ + var oldKeys = Object.keys(that.gbChoosechannel); + if (oldKeys.length > 0) { + for (let i = 0; i < oldKeys.length; i++) { + const key = oldKeys[i]; + delData.push(that.gbChoosechannel[key]) + } + } + } + + that.gbChoosechannel = newData; + if (Object.keys(addData).length >0) { + that.$axios({ + method:"post", + url:"/api/platforms/updateChannelForGB", + data:{ + platformId: that.platformId, + channelReduces: addData + } + }).then((res)=>{ + console.log("保存成功") + }).catch(function (error) { + console.log(error); + }); + } + if (Object.keys(delData).length >0) { + that.$axios({ + method:"post", + url:"/api/platforms/delChannelForGB", + data:{ + platformId: that.platformId, + channelReduces: delData + } + }).then((res)=>{ + console.log("移除成功") + }).catch(function (error) { + console.log(error); + }); + } + + }, + shareAllCheckedChanage: function (val) { + this.chooseChanage(null, val) + }, getChannelList: function () { let that = this; this.$axios.get(`/api/platforms/channelList`, { params: { - page: that.currentPage - 1, + page: that.currentPage, count: that.count, query: that.searchSrt, online: that.online, + choosed: that.choosed, + platformId: that.platformId, channelType: that.channelType } }) .then(function (res) { - console.log(res); that.total = res.data.total; that.gbChannels = res.data.list; + that.gbChoosechannel = {}; // 防止出现表格错位 that.$nextTick(() => { that.$refs.gbChannelsTable.doLayout(); + // 默认选中 + var chooseGBS = []; + for (let i = 0; i < res.data.list.length; i++) { + const row = res.data.list[i]; + console.log(row.platformId) + if (row.platformId == that.platformId) { + that.$refs.gbChannelsTable.toggleRowSelection(row, true); + chooseGBS.push(row) + that.gbChoosechannel[row.deviceId+ "_" + row.channelId] = row; + + } + } + that.eventEnanle = true; + // that.checkedChanage(chooseGBS) }) + console.log(that.gbChoosechannel) }) .catch(function (error) { console.log(error);