From d97accee4abf8098abd1d24dbe95477addcdf044 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: Tue, 6 Aug 2024 16:55:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/vmp/gb28181/bean/GbCode.java | 8 +- .../iot/vmp/gb28181/bean/GroupTree.java | 22 +-- .../controller/CommonChannelController.java | 50 ++++- .../controller/PlatformController.java | 145 +------------- .../bean/ChannelToGroupByGbDeviceParam.java | 12 ++ .../controller/bean/ChannelToGroupParam.java | 14 ++ ...va => ChannelToRegionByGbDeviceParam.java} | 2 +- .../gb28181/dao/CommonGBChannelMapper.java | 14 +- .../iot/vmp/gb28181/dao/GroupMapper.java | 44 ++++- .../gb28181/dao/PlatformChannelMapper.java | 2 +- .../gb28181/dao/provider/ChannelProvider.java | 2 +- .../iot/vmp/gb28181/event/EventPublisher.java | 4 +- .../event/subscribe/catalog/CatalogEvent.java | 2 +- .../subscribe/catalog/CatalogEventLister.java | 35 ++-- .../gb28181/service/IGbChannelService.java | 12 +- .../vmp/gb28181/service/IPlatformService.java | 2 + .../impl/DeviceChannelServiceImpl.java | 6 +- .../service/impl/GbChannelServiceImpl.java | 121 +++++++++--- .../service/impl/GroupServiceImpl.java | 119 ++++++++---- .../impl/PlatformChannelServiceImpl.java | 4 +- .../service/impl/PlatformServiceImpl.java | 5 + .../request/impl/InviteRequestProcessor.java | 19 +- .../vmp/storager/IVideoManagerStorage.java | 22 --- .../impl/VideoManagerStorageImpl.java | 183 +----------------- web_src/src/components/common/GroupTree.vue | 37 ++-- .../src/components/dialog/GbDeviceSelect.vue | 4 +- web_src/src/components/dialog/groupEdit.vue | 26 ++- 27 files changed, 417 insertions(+), 499 deletions(-) create mode 100644 src/main/java/com/genersoft/iot/vmp/gb28181/controller/bean/ChannelToGroupByGbDeviceParam.java create mode 100644 src/main/java/com/genersoft/iot/vmp/gb28181/controller/bean/ChannelToGroupParam.java rename src/main/java/com/genersoft/iot/vmp/gb28181/controller/bean/{ChannelToRegionBYGbDeviceParam.java => ChannelToRegionByGbDeviceParam.java} (79%) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GbCode.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GbCode.java index de0ab2aaf..bc5e508ef 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GbCode.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GbCode.java @@ -35,10 +35,10 @@ public class GbCode { code = code.trim(); GbCode gbCode = new GbCode(); gbCode.setCenterCode(code.substring(0, 8)); - gbCode.setIndustryCode(code.substring(9, 10)); - gbCode.setTypeCode(code.substring(11, 13)); - gbCode.setNetCode(code.substring(14, 15)); - gbCode.setSn(code.substring(15, 20)); + gbCode.setIndustryCode(code.substring(8, 10)); + gbCode.setTypeCode(code.substring(10, 13)); + gbCode.setNetCode(code.substring(13, 14)); + gbCode.setSn(code.substring(14)); return gbCode; } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GroupTree.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GroupTree.java index dc4bee43a..6c8229f35 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GroupTree.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GroupTree.java @@ -34,28 +34,18 @@ public class GroupTree { @Schema(description = "父区域国标ID") private String parentDeviceId; + /** + * 业务分组ID + */ + @Schema(description = "父区域国标ID") + private String businessGroup; + @Schema(description = "是否有子节点") private boolean isLeaf; @Schema(description = "类型, 行政区划:0 摄像头: 1") private int type; - - - public static GroupTree getInstance(Region region) { - GroupTree regionTree = new GroupTree(); - regionTree.setId(region.getDeviceId()); - regionTree.setLabel(region.getName()); - regionTree.setParentDeviceId(region.getParentDeviceId()); - regionTree.setType(0); - if (region.getDeviceId().length() < 8) { - regionTree.setLeaf(false); - }else { - regionTree.setLeaf(true); - } - return regionTree; - } - public static GroupTree getInstance(CommonGBChannel channel) { GroupTree regionTree = new GroupTree(); regionTree.setId(channel.getGbDeviceId()); diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/controller/CommonChannelController.java b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/CommonChannelController.java index 70f7ec44c..8eb444279 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/controller/CommonChannelController.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/CommonChannelController.java @@ -5,7 +5,9 @@ import com.genersoft.iot.vmp.gb28181.bean.CommonGBChannel; import com.genersoft.iot.vmp.gb28181.bean.DeviceType; import com.genersoft.iot.vmp.gb28181.bean.IndustryCodeType; import com.genersoft.iot.vmp.gb28181.bean.NetworkIdentificationType; -import com.genersoft.iot.vmp.gb28181.controller.bean.ChannelToRegionBYGbDeviceParam; +import com.genersoft.iot.vmp.gb28181.controller.bean.ChannelToGroupByGbDeviceParam; +import com.genersoft.iot.vmp.gb28181.controller.bean.ChannelToGroupParam; +import com.genersoft.iot.vmp.gb28181.controller.bean.ChannelToRegionByGbDeviceParam; import com.genersoft.iot.vmp.gb28181.controller.bean.ChannelToRegionParam; import com.genersoft.iot.vmp.gb28181.service.IGbChannelService; import com.genersoft.iot.vmp.media.service.IMediaServerService; @@ -119,16 +121,54 @@ public class CommonChannelController { @Operation(summary = "通道设置行政区划-根据国标设备", security = @SecurityRequirement(name = JwtUtils.HEADER)) @PostMapping("/region/device/add") - public void addChannelToRegionBYGbDevice(@RequestBody ChannelToRegionBYGbDeviceParam param){ + public void addChannelToRegionByGbDevice(@RequestBody ChannelToRegionByGbDeviceParam param){ Assert.notEmpty(param.getDeviceIds(),"参数异常"); Assert.hasLength(param.getCivilCode(),"未添加行政区划"); - channelService.addChannelToRegionBYGbDevice(param.getCivilCode(), param.getDeviceIds()); + channelService.addChannelToRegionByGbDevice(param.getCivilCode(), param.getDeviceIds()); } @Operation(summary = "通道删除行政区划-根据国标设备", security = @SecurityRequirement(name = JwtUtils.HEADER)) @PostMapping("/region/device/delete") - public void deleteChannelToRegionBYGbDevice(@RequestBody ChannelToRegionBYGbDeviceParam param){ + public void deleteChannelToRegionByGbDevice(@RequestBody ChannelToRegionByGbDeviceParam param){ Assert.notEmpty(param.getDeviceIds(),"参数异常"); - channelService.deleteChannelToRegionBYGbDevice(param.getDeviceIds()); + channelService.deleteChannelToRegionByGbDevice(param.getDeviceIds()); + } + + + + + + @Operation(summary = "通道设置业务分组", security = @SecurityRequirement(name = JwtUtils.HEADER)) + @PostMapping("/group/add") + public void addChannelToGroup(@RequestBody ChannelToGroupParam param){ + Assert.notEmpty(param.getChannelIds(),"通道ID不可为空"); + Assert.hasLength(param.getParentId(),"未添加上级分组编号"); + Assert.hasLength(param.getBusinessGroup(),"未添加业务分组"); + channelService.addChannelToGroup(param.getParentId(), param.getBusinessGroup(), param.getChannelIds()); + } + + @Operation(summary = "通道删除业务分组", security = @SecurityRequirement(name = JwtUtils.HEADER)) + @PostMapping("/group/delete") + public void deleteChannelToGroup(@RequestBody ChannelToGroupParam param){ + Assert.isTrue(!param.getChannelIds().isEmpty() + || (!ObjectUtils.isEmpty(param.getParentId()) && !ObjectUtils.isEmpty(param.getBusinessGroup())), + "参数异常"); + channelService.deleteChannelToGroup(param.getParentId(), param.getBusinessGroup(), param.getChannelIds()); + } + + @Operation(summary = "通道设置业务分组-根据国标设备", security = @SecurityRequirement(name = JwtUtils.HEADER)) + @PostMapping("/group/device/add") + public void addChannelToGroupByGbDevice(@RequestBody ChannelToGroupByGbDeviceParam param){ + Assert.notEmpty(param.getDeviceIds(),"参数异常"); + Assert.hasLength(param.getParentId(),"未添加上级分组编号"); + Assert.hasLength(param.getBusinessGroup(),"未添加业务分组"); + channelService.addChannelToGroupByGbDevice(param.getParentId(), param.getBusinessGroup(), param.getDeviceIds()); + } + + @Operation(summary = "通道删除业务分组-根据国标设备", security = @SecurityRequirement(name = JwtUtils.HEADER)) + @PostMapping("/group/device/delete") + public void deleteChannelToGroupByGbDevice(@RequestBody ChannelToGroupByGbDeviceParam param){ + Assert.notEmpty(param.getDeviceIds(),"参数异常"); + channelService.deleteChannelToGroupByGbDevice(param.getDeviceIds()); } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/controller/PlatformController.java b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/PlatformController.java index 6be770d82..29f9c159d 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/controller/PlatformController.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/PlatformController.java @@ -255,7 +255,7 @@ public class PlatformController { } boolean deleteResult = storager.deleteParentPlatform(parentPlatform); - storager.delCatalogByPlatformId(parentPlatform.getServerGBId()); +// storager.delCatalogByPlatformId(parentPlatform.getServerGBId()); storager.delRelationByPlatformId(parentPlatform.getServerGBId()); // 停止发送位置订阅定时任务 String key = VideoManagerConstants.SIP_SUBSCRIBE_PREFIX + userSetting.getServerId() + "_MobilePosition_" + parentPlatform.getServerGBId(); @@ -382,124 +382,6 @@ public class PlatformController { } } - /** - * 获取目录 - * - * @param platformId 平台ID - * @param parentId 目录父ID - * @return - */ - @Operation(summary = "获取目录", security = @SecurityRequirement(name = JwtUtils.HEADER)) - @Parameter(name = "platformId", description = "上级平台的国标编号", required = true) - @Parameter(name = "parentId", description = "父级目录的国标编号", required = true) - @GetMapping("/catalog") - @ResponseBody - public List getCatalogByPlatform(String platformId, String parentId) { - - if (log.isDebugEnabled()) { - log.debug("查询目录,platformId: {}, parentId: {}", platformId, parentId); - } - ParentPlatform platform = storager.queryParentPlatByServerGBId(platformId); - if (platform == null) { - throw new ControllerException(ErrorCode.ERROR100.getCode(), "平台未找到"); - } -// if (platformId.equals(parentId)) { -// parentId = platform.getDeviceGBId(); -// } - - if (platformId.equals(platform.getDeviceGBId())) { - parentId = null; - } - - return storager.getChildrenCatalogByPlatform(platformId, parentId); - } - - /** - * 添加目录 - * - * @param platformCatalog 目录 - * @return - */ - @Operation(summary = "添加目录", security = @SecurityRequirement(name = JwtUtils.HEADER)) - @PostMapping("/catalog/add") - @ResponseBody - public void addCatalog(@RequestBody PlatformCatalog platformCatalog) { - - if (log.isDebugEnabled()) { - log.debug("添加目录,{}", JSON.toJSONString(platformCatalog)); - } - PlatformCatalog platformCatalogInStore = storager.getCatalog(platformCatalog.getPlatformId(), platformCatalog.getId()); - - if (platformCatalogInStore != null) { - throw new ControllerException(ErrorCode.ERROR100.getCode(), platformCatalog.getId() + " already exists"); - } - int addResult = storager.addCatalog(platformCatalog); - if (addResult <= 0) { - throw new ControllerException(ErrorCode.ERROR100); - } - } - - /** - * 编辑目录 - * - * @param platformCatalog 目录 - * @return - */ - @Operation(summary = "编辑目录", security = @SecurityRequirement(name = JwtUtils.HEADER)) - @PostMapping("/catalog/edit") - @ResponseBody - public void editCatalog(@RequestBody PlatformCatalog platformCatalog) { - - if (log.isDebugEnabled()) { - log.debug("编辑目录,{}", JSON.toJSONString(platformCatalog)); - } - PlatformCatalog platformCatalogInStore = storager.getCatalog(platformCatalog.getPlatformId(), platformCatalog.getId()); - - if (platformCatalogInStore == null) { - throw new ControllerException(ErrorCode.ERROR100.getCode(), platformCatalog.getId() + " not exists"); - } - int addResult = storager.updateCatalog(platformCatalog); - if (addResult <= 0) { - throw new ControllerException(ErrorCode.ERROR100.getCode(), "写入数据库失败"); - } - } - - /** - * 删除目录 - * - * @param id 目录Id - * @param platformId 平台Id - * @return - */ - @Operation(summary = "删除目录", security = @SecurityRequirement(name = JwtUtils.HEADER)) - @Parameter(name = "id", description = "目录Id", required = true) - @Parameter(name = "platformId", description = "平台Id", required = true) - @DeleteMapping("/catalog/del") - @ResponseBody - public void delCatalog(String id, String platformId) { - - if (log.isDebugEnabled()) { - log.debug("删除目录,{}", id); - } - - if (ObjectUtils.isEmpty(id) || ObjectUtils.isEmpty(platformId)) { - throw new ControllerException(ErrorCode.ERROR400); - } - - int delResult = storager.delCatalog(platformId, id); - // 如果删除的是默认目录则根目录设置为默认目录 - PlatformCatalog parentPlatform = storager.queryDefaultCatalogInPlatform(platformId); - - // 默认节点被移除 - if (parentPlatform == null) { - storager.setDefaultCatalog(platformId, platformId); - } - - if (delResult <= 0) { - throw new ControllerException(ErrorCode.ERROR100.getCode(), "写入数据库失败"); - } - } - /** * 删除关联 * @@ -522,29 +404,4 @@ public class PlatformController { } - /** - * 修改默认目录 - * - * @param platformId 平台Id - * @param catalogId 目录Id - * @return - */ - @Operation(summary = "修改默认目录", security = @SecurityRequirement(name = JwtUtils.HEADER)) - @Parameter(name = "catalogId", description = "目录Id", required = true) - @Parameter(name = "platformId", description = "平台Id", required = true) - @PostMapping("/catalog/default/update") - @ResponseBody - public void setDefaultCatalog(String platformId, String catalogId) { - - if (log.isDebugEnabled()) { - log.debug("修改默认目录,{},{}", platformId, catalogId); - } - int updateResult = storager.setDefaultCatalog(platformId, catalogId); - - if (updateResult <= 0) { - throw new ControllerException(ErrorCode.ERROR100.getCode(), "写入数据库失败"); - } - } - - } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/controller/bean/ChannelToGroupByGbDeviceParam.java b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/bean/ChannelToGroupByGbDeviceParam.java new file mode 100644 index 000000000..b95a7b8a5 --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/bean/ChannelToGroupByGbDeviceParam.java @@ -0,0 +1,12 @@ +package com.genersoft.iot.vmp.gb28181.controller.bean; + +import lombok.Data; + +import java.util.List; + +@Data +public class ChannelToGroupByGbDeviceParam { + private List deviceIds; + private String parentId; + private String businessGroup; +} diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/controller/bean/ChannelToGroupParam.java b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/bean/ChannelToGroupParam.java new file mode 100644 index 000000000..58898933d --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/bean/ChannelToGroupParam.java @@ -0,0 +1,14 @@ +package com.genersoft.iot.vmp.gb28181.controller.bean; + +import lombok.Data; + +import java.util.List; + +@Data +public class ChannelToGroupParam { + + private String parentId; + private String businessGroup; + private List channelIds; + +} diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/controller/bean/ChannelToRegionBYGbDeviceParam.java b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/bean/ChannelToRegionByGbDeviceParam.java similarity index 79% rename from src/main/java/com/genersoft/iot/vmp/gb28181/controller/bean/ChannelToRegionBYGbDeviceParam.java rename to src/main/java/com/genersoft/iot/vmp/gb28181/controller/bean/ChannelToRegionByGbDeviceParam.java index a12b51773..6820bb6da 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/controller/bean/ChannelToRegionBYGbDeviceParam.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/bean/ChannelToRegionByGbDeviceParam.java @@ -5,7 +5,7 @@ import lombok.Data; import java.util.List; @Data -public class ChannelToRegionBYGbDeviceParam { +public class ChannelToRegionByGbDeviceParam { private List deviceIds; private String civilCode; } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java index 4d70ce545..59b423dbc 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java @@ -380,7 +380,7 @@ public interface CommonGBChannelMapper { " WHERE id in "+ " #{item.gbId}" + " "}) - void updateBusinessGroupByChannelList(@Param("businessGroup") String businessGroup, List channelList); + int updateBusinessGroupByChannelList(@Param("businessGroup") String businessGroup, List channelList); @Update(value = {" "}) - void updateParentIdByChannelList(@Param("parentId") String parentId, List channelList); + int updateParentIdByChannelList(@Param("parentId") String parentId, List channelList); + + @Update(value = {" "}) + int updateGroup(@Param("parentId") String parentId, @Param("businessGroup") String businessGroup, + List channelList); + } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/GroupMapper.java b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/GroupMapper.java index 7690d41b2..5dfd42283 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/GroupMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/GroupMapper.java @@ -1,6 +1,5 @@ package com.genersoft.iot.vmp.gb28181.dao; -import com.genersoft.iot.vmp.gb28181.bean.Group; import com.genersoft.iot.vmp.gb28181.bean.Group; import com.genersoft.iot.vmp.gb28181.bean.GroupTree; import org.apache.ibatis.annotations.*; @@ -16,6 +15,11 @@ public interface GroupMapper { @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") int add(Group group); + @Insert("INSERT INTO wvp_common_group (device_id, name, business_group, platform_id, create_time, update_time) " + + "VALUES (#{deviceId}, #{name}, #{businessGroup}, #{platformId}, #{createTime}, #{updateTime})") + @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") + int addBusinessGroup(Group group); + @Delete("DELETE FROM wvp_common_group WHERE id=#{id}") int delete(@Param("id") int id); @@ -61,11 +65,12 @@ public interface GroupMapper { " device_id," + " name, " + " parent_device_id," + + " business_group," + " create_time," + " update_time) " + " VALUES " + " " + - " (#{item.deviceId}, #{item.name}, #{item.parentDeviceId},#{item.createTime},#{item.updateTime})" + + " (#{item.deviceId}, #{item.name}, #{item.parentDeviceId}, #{item.businessGroup},#{item.createTime},#{item.updateTime})" + " " + " ") int batchAdd(List groupList); @@ -75,20 +80,40 @@ public interface GroupMapper { " device_id as id," + " name as label, " + " parent_device_id," + + " business_group," + " id as db_id," + " 0 as type," + " false as is_leaf" + " from wvp_common_group " + - " where " + - " parent_device_id = #{parentId} " + - " parent_device_id is null " + - " platform_id = #{platformId} " + - " platform_id is null " + + " where 1=1 " + + " and parent_device_id = #{parentId} " + + " and parent_device_id is null " + + " and platform_id = #{platformId} " + + " and platform_id is null " + " AND (device_id LIKE concat('%',#{query},'%') OR name LIKE concat('%',#{query},'%')) " + " ") List queryForTree(@Param("query") String query, @Param("parentId") String parentId, @Param("platformId") Integer platformId); + @Select(" ") + List queryForTreeByBusinessGroup(@Param("query") String query, + @Param("businessGroup") String businessGroup, + @Param("platformId") Integer platformId); + @Select("