Browse Source

fix:点位管理-点位管理列表接口调整

master
wangguangyuan 3 weeks ago
parent
commit
71111356da
3 changed files with 151 additions and 7 deletions
  1. +32
    -4
      inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/controller/BasedataDeviceController.java
  2. +2
    -1
      inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/service/IBasedataDeviceService.java
  3. +117
    -2
      inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/service/impl/BasedataDeviceServiceImpl.java

+ 32
- 4
inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/controller/BasedataDeviceController.java View File

@ -197,8 +197,36 @@ public class BasedataDeviceController extends BaseController {
: AjaxResult.success(new JSONArray());
}
@GetMapping({"/treeAreaDeviceSelectFilterByPreset/relation/havePoint"})
public AjaxResult treeAreaDeviceSelectFilterByPresetHavePoint(BaseDataArea baseDataArea) {
/**
* 用于迁移的左侧列表展示原始数据叶子节点有点位
* @param baseDataArea
* @return
*/
@GetMapping({"/treeAreaDeviceSelectFilterByPreset/relation/left"})
public AjaxResult treeAreaDeviceSelectFilterByPresetLeft(BaseDataArea baseDataArea) {
log.info("treeAreaDeviceSelectFilterByPreset param: {}", baseDataArea);
List<BaseDataArea> areaList = baseDataAreaService.selectAreaList(baseDataArea);
List<String> filterNameList = baseDataArea.getFilterNameList();
if(filterNameList == null || filterNameList.isEmpty()) {
filterNameList = new ArrayList<>();
filterNameList.add("无人机");
filterNameList.add("机器人");
filterNameList.add("安防摄像头");
filterNameList.add("生活区域");
filterNameList.add("新增相机");
}
return !areaList.isEmpty()
? AjaxResult.success(basedataDeviceService.buildAreaDeviceTreeSelectByAreasFilterByPresetRelationLeft(areaList, filterNameList))
: AjaxResult.success(new JSONArray());
}
/**
* 用于迁移的右侧列表展示叶子节点有点位
* @param baseDataArea
* @return
*/
@GetMapping({"/treeAreaDeviceSelectFilterByPreset/relation/right"})
public AjaxResult treeAreaDeviceSelectFilterByPresetRight(BaseDataArea baseDataArea) {
log.info("treeAreaDeviceSelectFilterByPreset param: {}", baseDataArea);
List<BaseDataArea> areaList = baseDataAreaService.selectAreaList(baseDataArea);
List<String> filterNameList = baseDataArea.getFilterNameList();
@ -211,12 +239,12 @@ public class BasedataDeviceController extends BaseController {
filterNameList.add("新增相机");
}
return !areaList.isEmpty()
? AjaxResult.success(basedataDeviceService.buildAreaDeviceTreeSelectByAreasFilterByPresetHavePoint(areaList, filterNameList))
? AjaxResult.success(basedataDeviceService.buildAreaDeviceTreeSelectByAreasFilterByPresetRelationRight(areaList, filterNameList))
: AjaxResult.success(new JSONArray());
}
/**
* 新的树形关系
* 新的树形关系 叶子节点无点位用于页面展示绍兴
* @param baseDataArea
* @return
*/


+ 2
- 1
inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/service/IBasedataDeviceService.java View File

@ -50,7 +50,8 @@ public interface IBasedataDeviceService {
List<AreaDeviceTreeSelect> buildAreaDeviceTreeSelectByAreas(List<BaseDataArea> areas);
List<AreaDeviceTreeSelect> buildAreaDeviceTreeSelectByAreasFilterByPreset(List<BaseDataArea> areas, List<String> filterNameList);
List<AreaDeviceTreeSelect> buildAreaDeviceTreeSelectByAreasFilterByPresetHavePoint(List<BaseDataArea> areas, List<String> filterNameList);
List<AreaDeviceTreeSelect> buildAreaDeviceTreeSelectByAreasFilterByPresetRelationLeft(List<BaseDataArea> areas, List<String> filterNameList);
List<AreaDeviceTreeSelect> buildAreaDeviceTreeSelectByAreasFilterByPresetRelationRight(List<BaseDataArea> areas, List<String> filterNameList);
List<AreaDeviceTreeSelect> buildAreaDeviceTreeSelectByAreasFilterByPresetRelation(List<BaseDataArea> areas, List<String> filterNameList);


+ 117
- 2
inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/service/impl/BasedataDeviceServiceImpl.java View File

@ -195,7 +195,7 @@ public class BasedataDeviceServiceImpl implements IBasedataDeviceService {
return AreaDeviceTreeSelectUtil.buildDeviceTree(areaVOS);
}
public List<AreaDeviceTreeSelect> buildAreaDeviceTreeSelectByAreasFilterByPresetHavePoint(List<BaseDataArea> areas, List<String> filterNamelist) {
public List<AreaDeviceTreeSelect> buildAreaDeviceTreeSelectByAreasFilterByPresetRelationLeft(List<BaseDataArea> areas, List<String> filterNamelist) {
ArrayList<Long> areaIdList = new ArrayList<>();
HashMap<Long, BaseDataArea> areaMap = new HashMap<>();
HashMap<Long, BasedataDevice> deviceHashMap = new HashMap<>();
@ -445,6 +445,56 @@ public class BasedataDeviceServiceImpl implements IBasedataDeviceService {
}
}
private void fillPointNumRelation(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.selectBasedataPatrolPointRelationListByDeviceIds(new ArrayList<>(deviceIds));
// 按设备ID分组
Map<Long, List<BasedataPatrolPoint>> devicePatrolMap = patrolPoints.stream()
.collect(Collectors.groupingBy(BasedataPatrolPoint::getDeviceId));
// 递归设置统计值
setPointNumRelation(treeList, devicePatrolMap);
}
/**
* 递归设置 pointNum 信息
*/
private void setPointNumRelation(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()) {
setPointNumRelation(node.getChildren(), devicePatrolMap);
// 累加子节点 pointNum
for (AreaDeviceTreeSelect child : node.getChildren()) {
pointNum += child.getPointNum() != null ? child.getPointNum() : 0L;
}
}
node.setPointNum(pointNum);
}
}
/**
* 与fillPointNumAndPatrolPoints区别在于查询的表不一样 此处用的是basedata_patrolpoint_relation表用于迁移数据使用
*/
@ -466,7 +516,7 @@ public class BasedataDeviceServiceImpl implements IBasedataDeviceService {
Map<Long, List<BasedataPatrolPoint>> devicePatrolMap = patrolPoints.stream()
.collect(Collectors.groupingBy(BasedataPatrolPoint::getDeviceId));
// 递归设置统计值
// 递归设置统计值和点位
setPointNumAndPatrolPoints(treeList, devicePatrolMap);
}
@ -529,6 +579,71 @@ public class BasedataDeviceServiceImpl implements IBasedataDeviceService {
List<AreaDeviceTreeSelect> treeList = AreaDeviceTreeSelectUtil.buildDeviceTreeFilterByAreaName(areaVOS, filterNamelist);
// 新增填充点位统计
fillPointNumRelation(areaVOS, treeList);
return treeList;
}
public List<AreaDeviceTreeSelect> buildAreaDeviceTreeSelectByAreasFilterByPresetRelationRight(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.selectBasedataDeviceRelationList(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);
// 新增填充点位统计
fillPointNumAndPatrolPointsRelation(areaVOS, treeList);


Loading…
Cancel
Save