|
|
|
@ -195,7 +195,7 @@ public class BasedataDeviceServiceImpl implements IBasedataDeviceService { |
|
|
|
return AreaDeviceTreeSelectUtil.buildDeviceTree(areaVOS); |
|
|
|
} |
|
|
|
|
|
|
|
public List<AreaDeviceTreeSelect> buildAreaDeviceTreeSelectByAreasFilterByPreset(List<BaseDataArea> areas, List<String> filterNamelist) { |
|
|
|
public List<AreaDeviceTreeSelect> buildAreaDeviceTreeSelectByAreasFilterByPresetHavePoint(List<BaseDataArea> areas, List<String> filterNamelist) { |
|
|
|
ArrayList<Long> areaIdList = new ArrayList<>(); |
|
|
|
HashMap<Long, BaseDataArea> areaMap = new HashMap<>(); |
|
|
|
HashMap<Long, BasedataDevice> deviceHashMap = new HashMap<>(); |
|
|
|
@ -260,6 +260,71 @@ public class BasedataDeviceServiceImpl implements IBasedataDeviceService { |
|
|
|
return treeList; |
|
|
|
} |
|
|
|
|
|
|
|
public List<AreaDeviceTreeSelect> buildAreaDeviceTreeSelectByAreasFilterByPreset(List<BaseDataArea> areas, List<String> filterNamelist) { |
|
|
|
ArrayList<Long> areaIdList = new ArrayList<>(); |
|
|
|
HashMap<Long, BaseDataArea> areaMap = new HashMap<>(); |
|
|
|
HashMap<Long, BasedataDevice> deviceHashMap = new HashMap<>(); |
|
|
|
List<AreaDeviceTreeSelect> areaVOS = new ArrayList<>(); |
|
|
|
|
|
|
|
for (BaseDataArea area : areas) { |
|
|
|
areaIdList.add(area.getAreaId()); |
|
|
|
areaMap.put(area.getAreaId(), area); |
|
|
|
AreaDeviceTreeSelect areaVO = new AreaDeviceTreeSelect(); |
|
|
|
areaVO.setDataId(String.valueOf(area.getAreaId())); |
|
|
|
areaVO.setParentId(String.valueOf(area.getParentId())); |
|
|
|
areaVO.setAreaId(area.getAreaId()); |
|
|
|
areaVO.setAreaFlag("Yes"); |
|
|
|
areaVO.setAreaParentId(area.getParentId()); |
|
|
|
areaVO.setAreaName(area.getAreaName()); |
|
|
|
areaVO.setAreaType(area.getAreaType()); |
|
|
|
areaVOS.add(areaVO); |
|
|
|
} |
|
|
|
|
|
|
|
BasedataDevice basedataDeviceQuery = new BasedataDevice(); |
|
|
|
Map<String, Object> params = new HashMap<>(); |
|
|
|
params.put("areaIdList", areaIdList); |
|
|
|
basedataDeviceQuery.setParams(params); |
|
|
|
List<BasedataDevice> deviceList = this.basedataDeviceMapper.selectBasedataDeviceList(basedataDeviceQuery); |
|
|
|
Iterator<BasedataDevice> iterator = deviceList.iterator(); |
|
|
|
|
|
|
|
BasedataDevice basedataDevice; |
|
|
|
while (iterator.hasNext()) { |
|
|
|
basedataDevice = iterator.next(); |
|
|
|
deviceHashMap.put(basedataDevice.getDeviceId(), basedataDevice); |
|
|
|
} |
|
|
|
|
|
|
|
iterator = deviceList.iterator(); |
|
|
|
|
|
|
|
while (iterator.hasNext()) { |
|
|
|
basedataDevice = iterator.next(); |
|
|
|
AreaDeviceTreeSelect deviceVO = new AreaDeviceTreeSelect(); |
|
|
|
StringBuilder idBuilder = new StringBuilder(); |
|
|
|
StringBuilder pIdBuilder = new StringBuilder(); |
|
|
|
this.getAreaDeviceTreeDeviceCode(basedataDevice.getDeviceId(), areaMap, deviceHashMap, idBuilder, pIdBuilder); |
|
|
|
deviceVO.setDataId(idBuilder.toString()); |
|
|
|
deviceVO.setParentId(pIdBuilder.toString()); |
|
|
|
deviceVO.setAreaId(basedataDevice.getAreaId()); |
|
|
|
deviceVO.setDeviceParentId(basedataDevice.getParentId()); |
|
|
|
deviceVO.setDeviceId(basedataDevice.getDeviceId()); |
|
|
|
deviceVO.setDeviceName(basedataDevice.getDeviceName()); |
|
|
|
deviceVO.setPowerMainEquFlag(basedataDevice.getPowerMainEquFlag()); |
|
|
|
deviceVO.setPositionX(basedataDevice.getPositionX()); |
|
|
|
deviceVO.setPositionY(basedataDevice.getPositionY()); |
|
|
|
deviceVO.setPositionZ(basedataDevice.getPositionZ()); |
|
|
|
deviceVO.setDeviceLength(basedataDevice.getDeviceLength()); |
|
|
|
deviceVO.setDeviceWidth(basedataDevice.getDeviceWidth()); |
|
|
|
deviceVO.setDeviceHigh(basedataDevice.getDeviceHeight()); |
|
|
|
areaVOS.add(deviceVO); |
|
|
|
} |
|
|
|
|
|
|
|
List<AreaDeviceTreeSelect> treeList = AreaDeviceTreeSelectUtil.buildDeviceTreeFilterByAreaName(areaVOS, filterNamelist); |
|
|
|
|
|
|
|
// 新增:填充点位统计 |
|
|
|
fillPointNum(areaVOS, treeList); |
|
|
|
|
|
|
|
return treeList; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 填充 pointNum 和 basedataPatrolPoints |
|
|
|
* @param allNodes 平面节点列表(包含所有区域和设备节点) |
|
|
|
@ -330,6 +395,56 @@ public class BasedataDeviceServiceImpl implements IBasedataDeviceService { |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void fillPointNum(List<AreaDeviceTreeSelect> allNodes, List<AreaDeviceTreeSelect> treeList) { |
|
|
|
// 收集所有设备ID |
|
|
|
Set<Long> deviceIds = new HashSet<>(); |
|
|
|
for (AreaDeviceTreeSelect node : allNodes) { |
|
|
|
if (node.getDeviceId() != null) { |
|
|
|
deviceIds.add(node.getDeviceId()); |
|
|
|
} |
|
|
|
} |
|
|
|
if (deviceIds.isEmpty()) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 批量查询点位 |
|
|
|
List<BasedataPatrolPoint> patrolPoints = basedataPatrolPointMapper.selectBasedataPatrolPointListByDeviceIds(new ArrayList<>(deviceIds)); |
|
|
|
// 按设备ID分组 |
|
|
|
Map<Long, List<BasedataPatrolPoint>> devicePatrolMap = patrolPoints.stream() |
|
|
|
.collect(Collectors.groupingBy(BasedataPatrolPoint::getDeviceId)); |
|
|
|
|
|
|
|
// 递归设置统计值 |
|
|
|
setPointNum(treeList, devicePatrolMap); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 递归设置 pointNum 信息 |
|
|
|
*/ |
|
|
|
private void setPointNum(List<AreaDeviceTreeSelect> nodes, Map<Long, List<BasedataPatrolPoint>> devicePatrolMap) { |
|
|
|
for (AreaDeviceTreeSelect node : nodes) { |
|
|
|
long pointNum = 0L; |
|
|
|
|
|
|
|
// 处理设备节点自身点位 |
|
|
|
if (node.getDeviceId() != null) { |
|
|
|
List<BasedataPatrolPoint> patrols = devicePatrolMap.get(node.getDeviceId()); |
|
|
|
if (patrols != null) { |
|
|
|
pointNum += patrols.size(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 递归处理子节点 |
|
|
|
if (node.getChildren() != null && !node.getChildren().isEmpty()) { |
|
|
|
setPointNum(node.getChildren(), devicePatrolMap); |
|
|
|
// 累加子节点 pointNum |
|
|
|
for (AreaDeviceTreeSelect child : node.getChildren()) { |
|
|
|
pointNum += child.getPointNum() != null ? child.getPointNum() : 0L; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
node.setPointNum(pointNum); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 与fillPointNumAndPatrolPoints区别在于查询的表不一样 此处用的是basedata_patrolpoint_relation表,用于迁移数据使用 |
|
|
|
*/ |
|
|
|
|