Browse Source

feat: 过滤用设备树只展示有摄像头的设备,通道节点返回useMode

- BasedataAreaEquTreeVo 新增 useMode,构树时透传 basedata_eqpbook_channel.use_mode
- getAreaEqubookTreeSelectForFilter 只返回有子节点的数据:
  先按设备查询通道,无通道的设备不再作为叶子节点返回,
  其所在区域分支也随之过滤
- 通道列表按设备缓存复用,避免构树时重复查询
yanyuan
wangguangyuan 6 days ago
parent
commit
340e880195
2 changed files with 48 additions and 49 deletions
  1. +4
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/eqpbook/domain/vo/BasedataAreaEquTreeVo.java
  2. +44
    -49
      inspect-metadata/src/main/java/com/inspect/metadata/eqpbook/service/impl/BasedataEqpBookServiceImpl.java

+ 4
- 0
inspect-metadata/src/main/java/com/inspect/metadata/eqpbook/domain/vo/BasedataAreaEquTreeVo.java View File

@ -42,6 +42,10 @@ public class BasedataAreaEquTreeVo implements Serializable {
private String host;
private String port;
private String channelType;
/**
* 使用类型,取自台账 basedata_eqpbook_channel.use_mode。
*/
private String useMode;
/**
* 功能能力,如 {"ptz":true,"wiper":true,"position3d":false}。
*


+ 44
- 49
inspect-metadata/src/main/java/com/inspect/metadata/eqpbook/service/impl/BasedataEqpBookServiceImpl.java View File

@ -181,6 +181,7 @@ public class BasedataEqpBookServiceImpl implements IBasedataEqpBookService {
channelTreeVo.setAddress(channel.getAddress());
channelTreeVo.setHost(channel.getHost());
channelTreeVo.setPort(channel.getPort());
channelTreeVo.setUseMode(channel.getUseMode());
areaEquVos.add(channelTreeVo);
}
}
@ -255,25 +256,33 @@ public class BasedataEqpBookServiceImpl implements IBasedataEqpBookService {
}
List<BasedataEqpBook> eqpBooks = this.basedataEqpbookMapper.selectBasedataEqpBookOnlineList(queryFilterVo);
if (!eqpBooks.isEmpty()) {
// 只返回有子节点(通道/摄像头)的数据:没有通道的设备不展示,其所在区域分支也随之为空
List<BasedataEqpBook> eqpBooksWithChannel = new ArrayList<>();
Map<Long, List<BasedataEqpBookChannel>> channelListMap = new LinkedHashMap<>();
for (BasedataEqpBook eqpbook : eqpBooks) {
BasedataEqpBookChannel eqpBookChannel = new BasedataEqpBookChannel();
eqpBookChannel.setEqpBookId(eqpbook.getEqpBookId());
List<BasedataEqpBookChannel> channelList = this.basedataEqpbookChannelMapper.selectBasedataEqpBookChannelList(eqpBookChannel);
if (null != channelList && !channelList.isEmpty()) {
eqpBooksWithChannel.add(eqpbook);
channelListMap.put(eqpbook.getEqpBookId(), channelList);
}
}
if (!eqpBooksWithChannel.isEmpty()) {
HashMap<Long, Long> allAreaIdHashMap = new HashMap<>();
LinkedHashMap<Long, Long> hashMap = new LinkedHashMap<>();
Iterator<BasedataEqpBook> iterator = eqpBooks.iterator();
BasedataEqpBook eqpbook;
Long eqpbookId;
while (iterator.hasNext()) {
eqpbook = iterator.next();
eqpbookId = eqpbook.getAreaId();
hashMap.put(eqpbookId, eqpbookId);
for (BasedataEqpBook eqpbook : eqpBooksWithChannel) {
Long areaId = eqpbook.getAreaId();
hashMap.put(areaId, areaId);
}
if (!hashMap.isEmpty()) {
List<Long> areaList = new LinkedList<>();
for (Long aLong : hashMap.keySet()) {
eqpbookId = aLong;
this.recursionFnHandAreaForAreaList(areaList, allAreaIdHashMap, eqpbookId);
this.recursionFnHandAreaForAreaList(areaList, allAreaIdHashMap, aLong);
}
if (!areaList.isEmpty()) {
@ -281,46 +290,29 @@ public class BasedataEqpBookServiceImpl implements IBasedataEqpBookService {
}
}
iterator = eqpBooks.iterator();
label87:
while (true) {
BasedataAreaEquTreeVo areaEquBookTreeVo;
List channelList;
do {
if (!iterator.hasNext()) {
break label87;
}
eqpbook = iterator.next();
eqpbookId = eqpbook.getEqpBookId();
areaEquBookTreeVo = new BasedataAreaEquTreeVo();
areaEquBookTreeVo.setEqpBookId(eqpbookId);
areaEquBookTreeVo.setLabel(eqpbook.getPatrolDeviceName());
areaEquBookTreeVo.setId(eqpbook.getAreaId() + "-" + eqpbookId);
areaEquBookTreeVo.setParentId(String.valueOf(eqpbook.getAreaId()));
areaEquBookTreeVo.setAreaId(eqpbook.getAreaId());
areaEquBookTreeVo.setPatrolDeviceCode(eqpbook.getPatrolDeviceCode());
areaEquBookTreeVo.setPatrolDeviceName(eqpbook.getPatrolDeviceName());
areaEquBookTreeVo.setPatrolDeviceType(eqpbook.getType());
areaEquBookTreeVo.setPatrolDeviceFlag("Yes");
areaEquBookTreeVo.setType(eqpbook.getType());
if (onlineStatusMap.containsKey(eqpbookId)) {
areaEquBookTreeVo.setPatrolDeviceOnlineStatus((String) onlineStatusMap.get(eqpbookId));
} else {
areaEquBookTreeVo.setPatrolDeviceOnlineStatus("0");
}
for (BasedataEqpBook eqpbook : eqpBooksWithChannel) {
Long eqpbookId = eqpbook.getEqpBookId();
BasedataAreaEquTreeVo areaEquBookTreeVo = new BasedataAreaEquTreeVo();
areaEquBookTreeVo.setEqpBookId(eqpbookId);
areaEquBookTreeVo.setLabel(eqpbook.getPatrolDeviceName());
areaEquBookTreeVo.setId(eqpbook.getAreaId() + "-" + eqpbookId);
areaEquBookTreeVo.setParentId(String.valueOf(eqpbook.getAreaId()));
areaEquBookTreeVo.setAreaId(eqpbook.getAreaId());
areaEquBookTreeVo.setPatrolDeviceCode(eqpbook.getPatrolDeviceCode());
areaEquBookTreeVo.setPatrolDeviceName(eqpbook.getPatrolDeviceName());
areaEquBookTreeVo.setPatrolDeviceType(eqpbook.getType());
areaEquBookTreeVo.setPatrolDeviceFlag("Yes");
areaEquBookTreeVo.setType(eqpbook.getType());
if (onlineStatusMap.containsKey(eqpbookId)) {
areaEquBookTreeVo.setPatrolDeviceOnlineStatus((String) onlineStatusMap.get(eqpbookId));
} else {
areaEquBookTreeVo.setPatrolDeviceOnlineStatus("0");
}
areaEquVos.add(areaEquBookTreeVo);
BasedataEqpBookChannel eqpBookChannel = new BasedataEqpBookChannel();
eqpBookChannel.setEqpBookId(eqpbookId);
channelList = this.basedataEqpbookChannelMapper.selectBasedataEqpBookChannelList(eqpBookChannel);
} while (channelList.isEmpty());
areaEquVos.add(areaEquBookTreeVo);
BasedataAreaEquTreeVo channelTreeVo;
for (Iterator iterator1 = channelList.iterator(); iterator1.hasNext(); areaEquVos.add(channelTreeVo)) {
BasedataEqpBookChannel channel = (BasedataEqpBookChannel) iterator1.next();
channelTreeVo = new BasedataAreaEquTreeVo();
for (BasedataEqpBookChannel channel : channelListMap.get(eqpbookId)) {
BasedataAreaEquTreeVo channelTreeVo = new BasedataAreaEquTreeVo();
channelTreeVo.setId(areaEquBookTreeVo.getId() + "-" + channel.getChannelId());
channelTreeVo.setPatrolDeviceCode(areaEquBookTreeVo.getPatrolDeviceCode());
channelTreeVo.setPatrolDeviceName(areaEquBookTreeVo.getPatrolDeviceName());
@ -336,6 +328,7 @@ public class BasedataEqpBookServiceImpl implements IBasedataEqpBookService {
channelTreeVo.setHost(channel.getHost());
channelTreeVo.setPort(channel.getPort());
channelTreeVo.setChannelType(channel.getChannelType());
channelTreeVo.setUseMode(channel.getUseMode());
// 功能能力:解析不出来按未知处理(前端按可用),避免误置灰。
channelTreeVo.setCapabilities(parseCapabilities(channel.getCapabilities()));
boolean hasKey = this.redisService.hasKey("mont_patrol_device_channel_online_status:" + channel.getChannelCode()).booleanValue();
@ -344,6 +337,8 @@ public class BasedataEqpBookServiceImpl implements IBasedataEqpBookService {
} else {
channelTreeVo.setPatrolDeviceOnlineStatus("0");
}
areaEquVos.add(channelTreeVo);
}
}
}


Loading…
Cancel
Save