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 275c4e1bb..2b15cffe4 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 @@ -4,6 +4,7 @@ import com.genersoft.iot.vmp.gb28181.bean.CommonGBChannel; import com.genersoft.iot.vmp.gb28181.bean.Group; import com.genersoft.iot.vmp.gb28181.bean.GroupTree; import com.genersoft.iot.vmp.gb28181.bean.Platform; +import com.genersoft.iot.vmp.web.custom.bean.CameraCount; import com.genersoft.iot.vmp.web.custom.bean.CameraGroup; import org.apache.ibatis.annotations.*; @@ -304,4 +305,17 @@ public interface GroupMapper { @Select("SELECT * from wvp_common_group WHERE alias = #{alias} and business_group = #{businessGroup}") Group queryGroupByAliasAndBusinessGroup(@Param("alias") String alias, @Param("deviceId") String businessGroup); + + + @Select(" ") + List queryCountWithChild(List groupList); } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/GbChannelServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/GbChannelServiceImpl.java index e0ae556c1..8435350eb 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/GbChannelServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/GbChannelServiceImpl.java @@ -10,7 +10,6 @@ import com.genersoft.iot.vmp.gb28181.dao.PlatformChannelMapper; import com.genersoft.iot.vmp.gb28181.dao.RegionMapper; import com.genersoft.iot.vmp.gb28181.event.EventPublisher; import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent; -import com.genersoft.iot.vmp.gb28181.service.IDeviceChannelService; import com.genersoft.iot.vmp.gb28181.service.IGbChannelService; import com.genersoft.iot.vmp.gb28181.service.IPlatformChannelService; import com.genersoft.iot.vmp.service.bean.GPSMsgInfo; @@ -52,9 +51,6 @@ public class GbChannelServiceImpl implements IGbChannelService { @Autowired private GroupMapper groupMapper; - @Autowired - private IDeviceChannelService deviceChannelService; - @Override public CommonGBChannel queryByDeviceId(String gbDeviceId) { return commonGBChannelMapper.queryByDeviceId(gbDeviceId); diff --git a/src/main/java/com/genersoft/iot/vmp/web/custom/CameraChannelController.java b/src/main/java/com/genersoft/iot/vmp/web/custom/CameraChannelController.java index ccf9dc772..cba453a67 100644 --- a/src/main/java/com/genersoft/iot/vmp/web/custom/CameraChannelController.java +++ b/src/main/java/com/genersoft/iot/vmp/web/custom/CameraChannelController.java @@ -108,8 +108,7 @@ public class CameraChannelController { @ResponseBody @Operation(summary = "查询摄像机列表的总数和在线数", security = @SecurityRequirement(name = JwtUtils.HEADER)) @Parameter(name = "groupAlias", description = "分组别名") - public CameraCont queryCountWithChild(String groupAlias){ - + public List queryCountWithChild(String groupAlias){ return channelService.queryCountWithChild(groupAlias); } diff --git a/src/main/java/com/genersoft/iot/vmp/web/custom/bean/CameraCont.java b/src/main/java/com/genersoft/iot/vmp/web/custom/bean/CameraCont.java deleted file mode 100644 index e0d6dd374..000000000 --- a/src/main/java/com/genersoft/iot/vmp/web/custom/bean/CameraCont.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.genersoft.iot.vmp.web.custom.bean; - -import lombok.Data; - -@Data -public class CameraCont { - - private Long total; - private Long online; - -} diff --git a/src/main/java/com/genersoft/iot/vmp/web/custom/bean/CameraCount.java b/src/main/java/com/genersoft/iot/vmp/web/custom/bean/CameraCount.java new file mode 100644 index 000000000..10187f7fe --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/web/custom/bean/CameraCount.java @@ -0,0 +1,13 @@ +package com.genersoft.iot.vmp.web.custom.bean; + +import lombok.Data; + +@Data +public class CameraCount { + + private String groupAlias; + private String deviceId; + private Long allCount; + private Long onlineCount; + +} diff --git a/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java b/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java index 4f0c70cfd..ad184852a 100644 --- a/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java +++ b/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java @@ -158,16 +158,34 @@ public class CameraChannelService implements CommandLineRunner { } } - public CameraCont queryCountWithChild(String groupAlias) { + public List queryCountWithChild(String groupAlias) { // 构建组织结构信息 CameraGroup group = groupMapper.queryGroupByAlias(groupAlias); Assert.notNull(group, "组织结构不存在"); - String groupDeviceId = group.getDeviceId(); // 获取所有子节点 List groupList = queryAllGroupChildren(group.getId(), group.getBusinessGroup()); groupList.add(group); - return null; + // TODO 此处整理可优化,尽量让sql直接返回对应的结构 无需二次整理 + List cameraCounts = groupMapper.queryCountWithChild(groupList); + if (cameraCounts.isEmpty()) { + return Collections.emptyList(); + }else { + Map cameraGroupMap = new HashMap<>(); + for (CameraGroup cameraGroup : groupList) { + cameraGroupMap.put(cameraGroup.getDeviceId(), cameraGroup.getAlias()); + } + List result = new ArrayList<>(); + for (CameraCount cameraCount : cameraCounts) { + String alias = cameraGroupMap.get(cameraCount.getDeviceId()); + if (alias == null) { + continue; + } + cameraCount.setGroupAlias(alias); + result.add(cameraCount); + } + return result; + } } /**