临时提交
This commit is contained in:
@@ -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(" <script>" +
|
||||
" SELECT " +
|
||||
" coalesce( wdc.gb_parent_id, wdc.parent_id) as deviceId," +
|
||||
" COUNT(*) AS allCount," +
|
||||
" SUM(CASE WHEN coalesce( wdc.gb_status, wdc.status) = 'ON' THEN 1 ELSE 0 END) AS onlineCount" +
|
||||
" FROM " +
|
||||
" wvp_device_channel wdc " +
|
||||
" where coalesce( wdc.gb_parent_id, wdc.parent_id) in " +
|
||||
" <foreach collection='groupList' item='item' open='(' separator=',' close=')' > #{item.deviceId}</foreach>" +
|
||||
"</script>")
|
||||
List<CameraCount> queryCountWithChild(List<CameraGroup> groupList);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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<CameraCount> queryCountWithChild(String groupAlias){
|
||||
return channelService.queryCountWithChild(groupAlias);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -158,16 +158,34 @@ public class CameraChannelService implements CommandLineRunner {
|
||||
}
|
||||
}
|
||||
|
||||
public CameraCont queryCountWithChild(String groupAlias) {
|
||||
public List<CameraCount> queryCountWithChild(String groupAlias) {
|
||||
// 构建组织结构信息
|
||||
CameraGroup group = groupMapper.queryGroupByAlias(groupAlias);
|
||||
Assert.notNull(group, "组织结构不存在");
|
||||
String groupDeviceId = group.getDeviceId();
|
||||
// 获取所有子节点
|
||||
List<CameraGroup> groupList = queryAllGroupChildren(group.getId(), group.getBusinessGroup());
|
||||
groupList.add(group);
|
||||
|
||||
return null;
|
||||
// TODO 此处整理可优化,尽量让sql直接返回对应的结构 无需二次整理
|
||||
List<CameraCount> cameraCounts = groupMapper.queryCountWithChild(groupList);
|
||||
if (cameraCounts.isEmpty()) {
|
||||
return Collections.emptyList();
|
||||
}else {
|
||||
Map<String, String> cameraGroupMap = new HashMap<>();
|
||||
for (CameraGroup cameraGroup : groupList) {
|
||||
cameraGroupMap.put(cameraGroup.getDeviceId(), cameraGroup.getAlias());
|
||||
}
|
||||
List<CameraCount> 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;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user