diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/patrolpointmnt/controller/BasedataPatrolPointController.java b/inspect-metadata/src/main/java/com/inspect/metadata/patrolpointmnt/controller/BasedataPatrolPointController.java index 21db10c..badc0d8 100644 --- a/inspect-metadata/src/main/java/com/inspect/metadata/patrolpointmnt/controller/BasedataPatrolPointController.java +++ b/inspect-metadata/src/main/java/com/inspect/metadata/patrolpointmnt/controller/BasedataPatrolPointController.java @@ -122,6 +122,48 @@ public class BasedataPatrolPointController extends BaseController { } } + + /** + * 这个查询的是迁移过后的表basedata_patrolpoint_relation,basedata_device_relation + * @param basedataPatrolpoint + * @return + */ + @GetMapping({"/list/monitor/relation"}) + public TableDataInfo monitorRelationList(BasedataPatrolPoint basedataPatrolpoint) { + startPage(); + if (null == basedataPatrolpoint.getDeviceId()) { + return getDataTable(new ArrayList<>()); + } else { + logger.info("[META] monitorList: basedataPatrolPoint: {}", basedataPatrolpoint); + List list = basedataPatrolPointService.selectBasedataMonitorRelationList(basedataPatrolpoint); + logger.info("[META] deviceId: {}, size: {}", basedataPatrolpoint.getDeviceId(), list.size()); + List listEx = new ArrayList<>(); + for(int i = 0; i < list.size(); i++) { + BasedataPatrolPoint basedataPatrolPoint = list.get(i); + logger.info(Color.GREEN + "[META] monitorList result: {}" + Color.END, basedataPatrolPoint); + BasedataPatrolPoint basedataPatrolPoint2 = new BasedataPatrolPoint(); + basedataPatrolPoint2.setDeviceId(basedataPatrolpoint.getDeviceId()); + basedataPatrolPoint2.setPatrolPointId(basedataPatrolPoint.getPatrolPointId()); + basedataPatrolPoint2.setDeviceId(basedataPatrolPoint.getDeviceId()); + basedataPatrolPoint2.setMainDeviceId(basedataPatrolPoint.getMainDeviceId()); + basedataPatrolPoint2.setPatrolPointCode(basedataPatrolPoint.getPatrolPointCode()); + basedataPatrolPoint2.setPatrolPointName(basedataPatrolPoint.getPatrolPointName()); + basedataPatrolPoint2.setDeviceName(basedataPatrolPoint.getDeviceName()); + basedataPatrolPoint2.setAlgSubtypeId(basedataPatrolPoint.getAlgSubtypeId()); + basedataPatrolPoint2.setAlgSubtypeIds(basedataPatrolPoint.getAlgSubtypeIds()); + basedataPatrolPoint2.setPatrolContent(basedataPatrolPoint.getPatrolContent()); + basedataPatrolPoint2.setAreaId(basedataPatrolPoint.getAreaId()); + basedataPatrolPoint2.setDeviceTypeId(basedataPatrolPoint.getDeviceTypeId()); + basedataPatrolPoint2.setPatrolTypeId(basedataPatrolPoint.getPatrolTypeId()); + basedataPatrolPoint2.setPointImptLevel(basedataPatrolPoint.getPointImptLevel()); + basedataPatrolPoint2.setAlgSubtypeName(basedataPatrolPoint.getAlgSubtypeName()); + basedataPatrolPoint2.setPurpose(basedataPatrolPoint.getPurpose()); + listEx.add(basedataPatrolPoint2); + } + return getDataTable(listEx); + } + } + @RequiresPermissions({"basedata/patrolpointmnt:patrolpoint:export"}) @Log( title = "巡检点位", diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/patrolpointmnt/mapper/BasedataPatrolPointMapper.java b/inspect-metadata/src/main/java/com/inspect/metadata/patrolpointmnt/mapper/BasedataPatrolPointMapper.java index 1b6388f..5765ec8 100644 --- a/inspect-metadata/src/main/java/com/inspect/metadata/patrolpointmnt/mapper/BasedataPatrolPointMapper.java +++ b/inspect-metadata/src/main/java/com/inspect/metadata/patrolpointmnt/mapper/BasedataPatrolPointMapper.java @@ -16,6 +16,7 @@ public interface BasedataPatrolPointMapper { List selectBasedataPatrolPointList(BasedataPatrolPoint patrolPoint); List selectBasedataMonitorList(BasedataPatrolPoint patrolPoint); + List selectBasedataMonitorRelationList(BasedataPatrolPoint patrolPoint); List selectBasedataMonitorUnionList(BasedataPatrolPoint patrolPoint); diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/patrolpointmnt/service/IBasedataPatrolPointService.java b/inspect-metadata/src/main/java/com/inspect/metadata/patrolpointmnt/service/IBasedataPatrolPointService.java index c17082e..b3bea80 100644 --- a/inspect-metadata/src/main/java/com/inspect/metadata/patrolpointmnt/service/IBasedataPatrolPointService.java +++ b/inspect-metadata/src/main/java/com/inspect/metadata/patrolpointmnt/service/IBasedataPatrolPointService.java @@ -13,6 +13,7 @@ public interface IBasedataPatrolPointService { List selectBasedataPatrolPointList(BasedataPatrolPoint patrolPoint); List selectBasedataMonitorList(BasedataPatrolPoint patrolPoint); + List selectBasedataMonitorRelationList(BasedataPatrolPoint patrolPoint); BasedataPatrolPoint insertBasedataPatrolPoint(BasedataPatrolPoint patrolPoint); diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/patrolpointmnt/service/impl/BasedataPatrolPointServiceImpl.java b/inspect-metadata/src/main/java/com/inspect/metadata/patrolpointmnt/service/impl/BasedataPatrolPointServiceImpl.java index f09f048..9f9782e 100644 --- a/inspect-metadata/src/main/java/com/inspect/metadata/patrolpointmnt/service/impl/BasedataPatrolPointServiceImpl.java +++ b/inspect-metadata/src/main/java/com/inspect/metadata/patrolpointmnt/service/impl/BasedataPatrolPointServiceImpl.java @@ -119,6 +119,41 @@ public class BasedataPatrolPointServiceImpl implements IBasedataPatrolPointServi return pointList; } + public List selectBasedataMonitorRelationList(BasedataPatrolPoint basedataPatrolpoint) { + List pointList = basedataPatrolpointMapper.selectBasedataMonitorRelationList(basedataPatrolpoint); + logger.info("[META] pointList size: {},pointList: {}", pointList.size(), pointList); + if (null != basedataPatrolpoint.getDeviceId()) { + BasedataDevice basedataDevice = basedataDeviceMapper.selectBasedataDeviceRelationByDeviceId(basedataPatrolpoint.getDeviceId()); + if(basedataDevice != null) { + basedataPatrolpoint.setDeviceTypeId(basedataDevice.getDeviceTypeId()); + List stdPointList = basedataPatrolpointMapper.selectBasedataMonitorUnionList(basedataPatrolpoint); + logger.info("[META] stdPointList cnt: {}", stdPointList.size()); + for (BasedataPatrolPoint stdPoint : stdPointList) { + if (!pointList.isEmpty()) { + if (pointList.stream().filter((item) -> stdPoint.getStdParolPointId().equals(item.getStdParolPointId())).count() == 0) { + pointList.add(stdPoint); + } + } else { + pointList.add(stdPoint); + } + } + } else { + logger.warn(Color.RED + "[META] basedataDevice deviceId: {} not exist!" + Color.END, basedataPatrolpoint.getDeviceId()); + } + } + + List basedataAlgSubtypes = basedataAlgSubtypeMapper.selectBasedataAlgSubtypeList(new BasedataAlgSubtype()); + logger.info("[META] basedataAlgSubtypes cnt: {}", basedataAlgSubtypes.size()); + Map algSubtypeMap = new HashMap<>(); + basedataAlgSubtypes.forEach((item) -> { + algSubtypeMap.put(item.getAlgSubtypeId() + "", item.getAlgSubtypeName()); + }); + logger.info("[META] algSubtypeMap: {}", algSubtypeMap); + pointList.forEach((item) -> item.loadAlgSubtypeName(algSubtypeMap)); + logger.info("[META] pointList size: {},pointList: {}", pointList.size(), pointList); + return pointList; + } + public BasedataPatrolPoint insertBasedataPatrolPoint(BasedataPatrolPoint basedataPatrolpoint) { basedataPatrolpoint.setCreateTime(DateUtils.getNowDate()); int resId = basedataPatrolpointMapper.insertBasedataPatrolPoint(basedataPatrolpoint); diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/controller/BasedataDeviceController.java b/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/controller/BasedataDeviceController.java index 55f4bae..c28760e 100644 --- a/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/controller/BasedataDeviceController.java +++ b/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/controller/BasedataDeviceController.java @@ -197,6 +197,24 @@ public class BasedataDeviceController extends BaseController { : AjaxResult.success(new JSONArray()); } + @GetMapping({"/treeAreaDeviceSelectFilterByPreset/relation/havePoint"}) + public AjaxResult treeAreaDeviceSelectFilterByPresetHavePoint(BaseDataArea baseDataArea) { + log.info("treeAreaDeviceSelectFilterByPreset param: {}", baseDataArea); + List areaList = baseDataAreaService.selectAreaList(baseDataArea); + List 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.buildAreaDeviceTreeSelectByAreasFilterByPresetHavePoint(areaList, filterNameList)) + : AjaxResult.success(new JSONArray()); + } + /** * 新的树形关系 * @param baseDataArea diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/service/IBasedataDeviceService.java b/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/service/IBasedataDeviceService.java index 2e9c287..1b96802 100644 --- a/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/service/IBasedataDeviceService.java +++ b/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/service/IBasedataDeviceService.java @@ -50,6 +50,7 @@ public interface IBasedataDeviceService { List buildAreaDeviceTreeSelectByAreas(List areas); List buildAreaDeviceTreeSelectByAreasFilterByPreset(List areas, List filterNameList); + List buildAreaDeviceTreeSelectByAreasFilterByPresetHavePoint(List areas, List filterNameList); List buildAreaDeviceTreeSelectByAreasFilterByPresetRelation(List areas, List filterNameList); diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/service/impl/BasedataDeviceServiceImpl.java b/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/service/impl/BasedataDeviceServiceImpl.java index 28714c8..d9f1b2b 100644 --- a/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/service/impl/BasedataDeviceServiceImpl.java +++ b/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/service/impl/BasedataDeviceServiceImpl.java @@ -195,7 +195,7 @@ public class BasedataDeviceServiceImpl implements IBasedataDeviceService { return AreaDeviceTreeSelectUtil.buildDeviceTree(areaVOS); } - public List buildAreaDeviceTreeSelectByAreasFilterByPreset(List areas, List filterNamelist) { + public List buildAreaDeviceTreeSelectByAreasFilterByPresetHavePoint(List areas, List filterNamelist) { ArrayList areaIdList = new ArrayList<>(); HashMap areaMap = new HashMap<>(); HashMap deviceHashMap = new HashMap<>(); @@ -260,6 +260,71 @@ public class BasedataDeviceServiceImpl implements IBasedataDeviceService { return treeList; } + public List buildAreaDeviceTreeSelectByAreasFilterByPreset(List areas, List filterNamelist) { + ArrayList areaIdList = new ArrayList<>(); + HashMap areaMap = new HashMap<>(); + HashMap deviceHashMap = new HashMap<>(); + List 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 params = new HashMap<>(); + params.put("areaIdList", areaIdList); + basedataDeviceQuery.setParams(params); + List deviceList = this.basedataDeviceMapper.selectBasedataDeviceList(basedataDeviceQuery); + Iterator 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 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 allNodes, List treeList) { + // 收集所有设备ID + Set deviceIds = new HashSet<>(); + for (AreaDeviceTreeSelect node : allNodes) { + if (node.getDeviceId() != null) { + deviceIds.add(node.getDeviceId()); + } + } + if (deviceIds.isEmpty()) { + return; + } + + // 批量查询点位 + List patrolPoints = basedataPatrolPointMapper.selectBasedataPatrolPointListByDeviceIds(new ArrayList<>(deviceIds)); + // 按设备ID分组 + Map> devicePatrolMap = patrolPoints.stream() + .collect(Collectors.groupingBy(BasedataPatrolPoint::getDeviceId)); + + // 递归设置统计值 + setPointNum(treeList, devicePatrolMap); + } + + /** + * 递归设置 pointNum 信息 + */ + private void setPointNum(List nodes, Map> devicePatrolMap) { + for (AreaDeviceTreeSelect node : nodes) { + long pointNum = 0L; + + // 处理设备节点自身点位 + if (node.getDeviceId() != null) { + List 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表,用于迁移数据使用 */ diff --git a/inspect-metadata/src/main/resources/mapper/patrolpointmnt/BasedataPatrolPointMapper.xml b/inspect-metadata/src/main/resources/mapper/patrolpointmnt/BasedataPatrolPointMapper.xml index 447ebb6..bdc58ec 100644 --- a/inspect-metadata/src/main/resources/mapper/patrolpointmnt/BasedataPatrolPointMapper.xml +++ b/inspect-metadata/src/main/resources/mapper/patrolpointmnt/BasedataPatrolPointMapper.xml @@ -212,6 +212,44 @@ and a.patrol_type_id = #{patrolTypeId} + + +