From ad0ec458aa0e9baef56341cf4b067bcce13e48ff Mon Sep 17 00:00:00 2001 From: htjcAdmin Date: Wed, 10 Sep 2025 09:12:21 +0800 Subject: [PATCH] =?UTF-8?q?/*=201.=20=E7=BB=8D=E5=85=B4=E7=AB=99=E6=96=B0?= =?UTF-8?q?=E9=9C=80=E6=B1=82-=E5=8D=A1=E7=89=87-=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E8=B6=8B=E5=8A=BF=EF=BC=9A=E5=8F=AA=E6=98=BE=E7=A4=BA=E6=9C=89?= =?UTF-8?q?=E8=A1=A8=E8=AE=A1=E8=AF=BB=E6=95=B0=E7=82=B9=E4=BD=8D=E7=9A=84?= =?UTF-8?q?=E5=8C=BA=E5=9F=9F=E9=97=B4=E9=9A=94=E8=AE=BE=E5=A4=87=EF=BC=8C?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=BC=80=E5=8F=91=E5=90=8E=E7=AB=AF=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3-treeAreaDeviceSelectFilterByMeter=EF=BC=9B=202.=20?= =?UTF-8?q?=E7=BB=8D=E5=85=B4=E7=AB=99=E6=96=B0=E9=9C=80=E6=B1=82-?= =?UTF-8?q?=E5=8D=A1=E7=89=87-=E7=82=B9=E4=BD=8D=E7=AE=A1=E7=90=86?= =?UTF-8?q?=EF=BC=9A=E5=B7=A1=E8=A7=86=E7=82=B9=E4=BD=8D=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E6=A0=91=E4=B8=8D=E6=98=BE=E7=A4=BA=E6=97=A0=E4=BA=BA=E6=9C=BA?= =?UTF-8?q?=E3=80=81=E6=9C=BA=E5=99=A8=E4=BA=BA=E3=80=81=E5=AE=89=E9=98=B2?= =?UTF-8?q?=E6=91=84=E5=83=8F=E5=A4=B4=E3=80=81=E7=94=9F=E6=B4=BB=E5=8C=BA?= =?UTF-8?q?=E5=9F=9F=E3=80=81=E6=96=B0=E5=A2=9E=E7=9B=B8=E6=9C=BA=E3=80=81?= =?UTF-8?q?=E6=9C=BA=E5=99=A8=E7=8B=97=EF=BC=8C=E5=AE=8C=E6=88=90=E5=BC=80?= =?UTF-8?q?=E5=8F=91=E5=90=8E=E7=AB=AF=E6=8E=A5=E5=8F=A3-treeAreaDeviceSel?= =?UTF-8?q?ectFilterByPreset=EF=BC=9B=20*/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../analysis/utils/ResultAnalysisUtils.java | 16 ++- .../metadata/area/domain/BaseDataArea.java | 10 ++ .../controller/BasedataDeviceController.java | 32 +++++ .../prodevmnt/domain/BasedataDevice.java | 2 + .../domain/vo/AreaDeviceTreeSelect.java | 40 ++++++ .../mapper/BasedataDeviceMapper.java | 2 + .../service/IBasedataDeviceService.java | 4 + .../impl/BasedataDeviceServiceImpl.java | 130 ++++++++++++++++++ .../util/AreaDeviceTreeSelectUtil.java | 82 +++++++++++ .../mapper/prodevmnt/BasedataDeviceMapper.xml | 58 ++++++++ 10 files changed, 372 insertions(+), 4 deletions(-) diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java index d016343..b5fb0df 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/utils/ResultAnalysisUtils.java @@ -120,10 +120,18 @@ public class ResultAnalysisUtils { defaultDesc = messageUtils.get("正常"); } else { log.info("------------------parseAlg meter is alarm"); - resultAnalysis.setResStatus("0"); - resultAnalysis.setPointStatus("0"); - resultAnalysis.setResultType("0"); - defaultDesc = messageUtils.get("表计超限"); + String[] valueArr = value.split(StringUtils.COMMA); + if(valueArr.length > 1) { + resultAnalysis.setResStatus("0"); + resultAnalysis.setPointStatus("0"); + resultAnalysis.setResultType("0"); + defaultDesc = messageUtils.get("正常"); + } else { + resultAnalysis.setResStatus("0"); + resultAnalysis.setPointStatus("0"); + resultAnalysis.setResultType("0"); + defaultDesc = messageUtils.get("表计超限"); + } } } else if (algType.equals("sound")) { if (value.equals("1")) { diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/area/domain/BaseDataArea.java b/inspect-metadata/src/main/java/com/inspect/metadata/area/domain/BaseDataArea.java index af773c3..1a690a9 100644 --- a/inspect-metadata/src/main/java/com/inspect/metadata/area/domain/BaseDataArea.java +++ b/inspect-metadata/src/main/java/com/inspect/metadata/area/domain/BaseDataArea.java @@ -49,6 +49,7 @@ public class BaseDataArea extends BaseEntity { private String oldAreaId; private String oldParentId; private List children = new ArrayList<>(); + private List filterNameList; public String getOldAreaId() { return this.oldAreaId; @@ -129,6 +130,14 @@ public class BaseDataArea extends BaseEntity { return this.areaIdS; } + public List getFilterNameList() { + return filterNameList; + } + + public void setFilterNameList(List filterNameList) { + this.filterNameList = filterNameList; + } + @Override public String toString() { return "BaseDataArea{" + @@ -148,6 +157,7 @@ public class BaseDataArea extends BaseEntity { ", areaIdS='" + areaIdS + '\'' + ", oldAreaId='" + oldAreaId + '\'' + ", oldParentId='" + oldParentId + '\'' + + ", filterNameList='" + filterNameList + '\'' + ", children=" + children + '}'; } 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 4123c26..6542420 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 @@ -36,8 +36,10 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import javax.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.math3.exception.NullArgumentException; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.CellType; @@ -54,6 +56,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; +@Slf4j @RestController @RequestMapping({"/prodevmnt/device"}) public class BasedataDeviceController extends BaseController { @@ -173,10 +176,39 @@ public class BasedataDeviceController extends BaseController { @GetMapping({"/treeAreaDeviceSelect"}) public AjaxResult treeAreaDeviceSelect(BaseDataArea area) { + log.info("treeAreaDeviceSelect param: {}", area); List areas = this.baseDataAreaService.selectAreaList(area); return null != areas && !areas.isEmpty() ? AjaxResult.success(this.basedataDeviceService.buildAreaDeviceTreeSelectByAreas(areas)) : AjaxResult.success(new JSONArray()); } + @GetMapping({"/treeAreaDeviceSelectFilterByPreset"}) + public AjaxResult treeAreaDeviceSelectFilterByPreset(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("生活区域"); + filterNameList.add("新增相机"); + } + return !areaList.isEmpty() + ? AjaxResult.success(basedataDeviceService.buildAreaDeviceTreeSelectByAreasFilterByPreset(areaList, filterNameList)) + : AjaxResult.success(new JSONArray()); + } + + @GetMapping({"/treeAreaDeviceSelectFilterByMeter"}) + public AjaxResult treeAreaDeviceSelectFilterByMeter(BaseDataArea baseDataArea) { + log.info("treeAreaDeviceSelectFilterByMeter param: {}", baseDataArea); + List areaList = baseDataAreaService.selectAreaList(baseDataArea); + return !areaList.isEmpty() + ? AjaxResult.success(basedataDeviceService.buildAreaDeviceTreeSelectByAreasFilterByMeter(areaList)) + : AjaxResult.success(new JSONArray()); + } + @GetMapping({"/treeProMainDevicePatrolEquSelect"}) public AjaxResult treeProMainDevicePatrolEquSelect(BasedataDevice basedataDevice) { logger.info("[META] device: {}", basedataDevice); diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/domain/BasedataDevice.java b/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/domain/BasedataDevice.java index ee157ca..8e41c6a 100644 --- a/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/domain/BasedataDevice.java +++ b/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/domain/BasedataDevice.java @@ -84,6 +84,8 @@ public class BasedataDevice extends BaseEntity { private String oldParentId; private String oldAreaId; private String oldAreaName; + private String patrolPointId; + private String patrolPointName; @Override public String toString() { diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/domain/vo/AreaDeviceTreeSelect.java b/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/domain/vo/AreaDeviceTreeSelect.java index 3de9fb3..4724b00 100644 --- a/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/domain/vo/AreaDeviceTreeSelect.java +++ b/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/domain/vo/AreaDeviceTreeSelect.java @@ -2,8 +2,10 @@ package com.inspect.metadata.prodevmnt.domain.vo; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.annotation.JsonProperty; import java.io.Serializable; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -26,6 +28,10 @@ public class AreaDeviceTreeSelect implements Serializable { private String deviceLength; private String deviceWidth; private String deviceHigh; + @JsonInclude(JsonInclude.Include.NON_NULL) + private String patrolPointId; + @JsonInclude(JsonInclude.Include.NON_NULL) + private String patrolPointName; @JsonInclude(Include.NON_EMPTY) private List children; @@ -196,4 +202,38 @@ public class AreaDeviceTreeSelect implements Serializable { public void setChildren(List children) { this.children = children; } + + public String getPatrolPointId() { + return patrolPointId; + } + + public void setPatrolPointId(String patrolPointId) { + this.patrolPointId = patrolPointId; + } + + public String getPatrolPointName() { + return patrolPointName; + } + + public void setPatrolPointName(String patrolPointName) { + this.patrolPointName = patrolPointName; + } + public List cleanEmptyPatrolPoints() { + // 递归清理 + if (children != null) { + // 清理子节点 + for (int i = children.size() - 1; i >= 0; i--) { + AreaDeviceTreeSelect child = children.get(i); + child.cleanEmptyPatrolPoints(); // 递归清理子节点 + // 如果子节点是叶子节点且 patrolPointId 为空,则移除 + if (child.getChildren() == null || child.getChildren().isEmpty()) { + if (child.getPatrolPointId() == null) { + children.remove(i); + } + } + } + } + return children; + } + } diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/mapper/BasedataDeviceMapper.java b/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/mapper/BasedataDeviceMapper.java index e31857a..c383093 100644 --- a/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/mapper/BasedataDeviceMapper.java +++ b/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/mapper/BasedataDeviceMapper.java @@ -15,6 +15,8 @@ public interface BasedataDeviceMapper { List selectBasedataDeviceList(BasedataDevice device); + List selectBasedataDeviceListFilterByMeter(BasedataDevice device); + List selectAreaAndDeviceTree(BasedataDevice device); List selectPointList(); 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 f3489d5..8765072 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 @@ -48,4 +48,8 @@ public interface IBasedataDeviceService { String checkDeviceNameUnique(BasedataDevice device); List buildAreaDeviceTreeSelectByAreas(List areas); + + List buildAreaDeviceTreeSelectByAreasFilterByPreset(List areas, List filterNameList); + + List buildAreaDeviceTreeSelectByAreasFilterByMeter(List areas); } 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 fcc8086..26bd0e5 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 @@ -184,6 +184,136 @@ public class BasedataDeviceServiceImpl implements IBasedataDeviceService { return AreaDeviceTreeSelectUtil.buildDeviceTree(areaVOS); } + 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); + } + + return AreaDeviceTreeSelectUtil.buildDeviceTreeFilterByAreaName(areaVOS, filterNamelist); + } + + public List buildAreaDeviceTreeSelectByAreasFilterByMeter(List areas) { + 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 = basedataDeviceMapper.selectBasedataDeviceListFilterByMeter(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(); + logger.info("!!!!!!!!!patrolPointId: {}, patrolPointName: {}", basedataDevice.getPatrolPointId(), basedataDevice.getPatrolPointName()); + AreaDeviceTreeSelect deviceVO = new AreaDeviceTreeSelect(); + StringBuilder idBuilder = new StringBuilder(); + StringBuilder pIdBuilder = new StringBuilder(); + 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()); + deviceVO.setPatrolPointId(basedataDevice.getPatrolPointId()); + deviceVO.setPatrolPointName(basedataDevice.getPatrolPointName()); + deviceVO.setDeviceName(basedataDevice.getPatrolPointName()); + areaVOS.add(deviceVO); + } + + List results = AreaDeviceTreeSelectUtil.buildDeviceTreeByAreaMeter(areaVOS); + for (AreaDeviceTreeSelect area : results) { + area.cleanEmptyPatrolPoints(); + } + return results; + } + + + private void getAreaDeviceTreeDeviceCode(Long deviceId, HashMap areaMap, HashMap deviceHashMap, StringBuilder idBuilder, StringBuilder pIdBuilder) { if (deviceHashMap.containsKey(deviceId)) { BasedataDevice device = deviceHashMap.get(deviceId); diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/util/AreaDeviceTreeSelectUtil.java b/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/util/AreaDeviceTreeSelectUtil.java index b137736..f85fc8e 100644 --- a/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/util/AreaDeviceTreeSelectUtil.java +++ b/inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/util/AreaDeviceTreeSelectUtil.java @@ -2,11 +2,13 @@ package com.inspect.metadata.prodevmnt.util; import com.inspect.metadata.prodevmnt.domain.vo.AreaDeviceTreeSelect; import com.inspect.base.core.utils.StringUtils; +import lombok.extern.slf4j.Slf4j; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +@Slf4j public class AreaDeviceTreeSelectUtil { public static List buildDeviceTree(List areas) { List returnList = new ArrayList<>(); @@ -34,6 +36,63 @@ public class AreaDeviceTreeSelectUtil { return returnList; } + public static List buildDeviceTreeByAreaMeter(List areaVOS) { + List returnList = new ArrayList<>(); + List tempList = new ArrayList<>(); + Iterator iterator = areaVOS.iterator(); + AreaDeviceTreeSelect area; + while (iterator.hasNext()) { + area = iterator.next(); + tempList.add(area.getDataId()); + } + + iterator = areaVOS.iterator(); + while (iterator.hasNext()) { + area = iterator.next(); + if (!tempList.contains(area.getParentId())) { + recursionFn(areaVOS, area); + returnList.add(area); + } + } + + if (returnList.isEmpty()) { + returnList = areaVOS; + } + + return returnList; + } + + public static List buildDeviceTreeFilterByAreaName(List areas, List filterNameList) { + List returnList = new ArrayList<>(); + List tempList = new ArrayList<>(); + Iterator iterator = areas.iterator(); + AreaDeviceTreeSelect area; + while (iterator.hasNext()) { + area = iterator.next(); + tempList.add(area.getDataId()); + } + + iterator = areas.iterator(); + while (iterator.hasNext()) { + area = iterator.next(); + if (!tempList.contains(area.getParentId()) && !shouldFilter(area, filterNameList)) { + recursionFn(areas, area, filterNameList); + returnList.add(area); + } + } + + if (returnList.isEmpty()) { + returnList = areas; + } + + return returnList; + } + + // Helper method to determine if an area should be filtered out + private static boolean shouldFilter(AreaDeviceTreeSelect area, List filterNames) { + return filterNames.stream().anyMatch(filterName -> StringUtils.isNotEmpty(area.getAreaName()) && area.getAreaName().contains(filterName)); + } + private static void recursionFn(List list, AreaDeviceTreeSelect t) { List childList = getChildList(list, t); t.setChildren(childList); @@ -46,6 +105,17 @@ public class AreaDeviceTreeSelectUtil { } + private static void recursionFn(List list, AreaDeviceTreeSelect t, List filterNames) { + List childList = getChildList(list, t, filterNames); + t.setChildren(childList); + + for (AreaDeviceTreeSelect tChild : childList) { + if (hasChild(list, tChild)) { + recursionFn(list, tChild, filterNames); + } + } + } + private static List getChildList(List list, AreaDeviceTreeSelect t) { List tlist = new ArrayList<>(); @@ -58,6 +128,18 @@ public class AreaDeviceTreeSelectUtil { return tlist; } + private static List getChildList(List list, AreaDeviceTreeSelect t, List filterNames) { + List tlist = new ArrayList<>(); + + for (AreaDeviceTreeSelect n : list) { + if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().equals(t.getDataId()) && !shouldFilter(n, filterNames)) { + tlist.add(n); + } + } + + return tlist; + } + private static boolean hasChild(List list, AreaDeviceTreeSelect t) { return !getChildList(list, t).isEmpty(); } diff --git a/inspect-metadata/src/main/resources/mapper/prodevmnt/BasedataDeviceMapper.xml b/inspect-metadata/src/main/resources/mapper/prodevmnt/BasedataDeviceMapper.xml index 760207c..8260256 100644 --- a/inspect-metadata/src/main/resources/mapper/prodevmnt/BasedataDeviceMapper.xml +++ b/inspect-metadata/src/main/resources/mapper/prodevmnt/BasedataDeviceMapper.xml @@ -40,6 +40,8 @@ + + @@ -134,6 +136,62 @@ + +