lv.wenbin 8 сар өмнө
parent
commit
8fdb41d421

+ 23 - 1
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/controller/AreaController.java

@@ -57,6 +57,28 @@ public class AreaController extends BaseController {
     }
 
     /**
+     * 查询区域对象列表
+     */
+    @RequiresPermissions("ems:area:list")
+    @GetMapping("/getAreaListByTag")
+    public AjaxResult getAreaListByTag(@RequestParam(name = "parentCode", required = false, defaultValue = "0") String parentCode,
+        @RequestParam(name = "recursion", required = false, defaultValue = "true") boolean recursion,
+        @RequestParam(name = "tagCode") String tagCode) {
+        // 查询区域树
+        List<Area> areaTree = areaService.selectAreaTree(parentCode, recursion);
+
+        // 查询列表
+        List<ObjTagRel> tagRels = objTagRelService.selectListByTagCode(1, tagCode);
+        Set<String> facsAreaCodes = tagRels.stream().map(ObjTagRel::getObjCode).collect(Collectors.toSet());
+
+        // 过滤树节点
+        areaTree = AreaUtils.filterTree(areaTree, facsAreaCodes);
+        areaTree = AreaUtils.compressTree(areaTree);
+
+        return success(areaTree);
+    }
+
+    /**
      * 获取服务区树
      *
      * @param rootCode 根节点编码
@@ -114,7 +136,7 @@ public class AreaController extends BaseController {
         // 查询区域树
         List<Area> areaTree = areaService.selectAreaTree(parentCode, recursion);
 
-        // 查询b列表
+        // 查询列表
         List<ObjTagRel> tagRels = objTagRelService.selectListByTagCode(1, tagCode);
         Set<String> facsAreaCodes = tagRels.stream().map(ObjTagRel::getObjCode).collect(Collectors.toSet());
 

+ 2 - 23
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/service/impl/EmsFacsServiceImpl.java

@@ -100,7 +100,7 @@ public class EmsFacsServiceImpl implements IEmsFacsService {
 
         if (StringUtils.isEmpty(queryDevice.getAreaCode())) {
             List<Area> areaTree = areaService.selectAreaTree("0", true);
-            List<Area> areaList = compressTree(areaTree);
+            List<Area> areaList = AreaUtils.compressTree(areaTree);
             Map<String, Area> areaMap = areaList.stream().collect(Collectors.toMap(Area::getAreaCode, Function.identity()));
 
             if (CollectionUtils.isNotEmpty(areaTree)) {
@@ -127,7 +127,7 @@ public class EmsFacsServiceImpl implements IEmsFacsService {
         else {
             Area area = areaService.selectAreaByCode(queryDevice.getAreaCode());
             List<Area> areaTree = areaService.selectAreaTree(queryDevice.getAreaCode(), true);
-            List<Area> areaList = compressTree(areaTree);
+            List<Area> areaList = AreaUtils.compressTree(areaTree);
             Map<String, Area> areaMap = areaList.stream().collect(Collectors.toMap(Area::getAreaCode, Function.identity()));
 
             if (null != area) {
@@ -155,27 +155,6 @@ public class EmsFacsServiceImpl implements IEmsFacsService {
         return retList;
     }
 
-    private List<Area> compressTree(List<Area> areas) {
-        List<Area> retList = new ArrayList<>();
-
-        for (Area area : areas) {
-            retList.add(area);
-            compressTreeChild(area.getChildren(), retList);
-        }
-
-        return retList;
-    }
-
-    private void compressTreeChild(List<?> child, List<Area> retList) {
-        if (CollectionUtils.isNotEmpty(child)) {
-            for (Object o : child) {
-                Area area = (Area)o;
-                retList.add(area);
-                compressTreeChild(area.getChildren(), retList);
-            }
-        }
-    }
-
     private List<TreeEntity> buildFacsDevSub(List<EmsFacs> facsList, Map<String, List<EmsDevice>> deviceMap, Map<String, Area> areaMap) {
         List<TreeEntity> retList = new ArrayList<>();
 

+ 26 - 0
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/util/AreaUtils.java

@@ -173,4 +173,30 @@ public abstract class AreaUtils {
 
         return StringUtils.join(pathItems, "/");
     }
+
+    /**
+     * 区域树转平列表
+     * @param areas 区域树
+     * @return 平铺列表
+     */
+    public static List<Area> compressTree(List<Area> areas) {
+        List<Area> retList = new ArrayList<>();
+
+        for (Area area : areas) {
+            retList.add(area);
+            compressTreeChild(area.getChildren(), retList);
+        }
+
+        return retList;
+    }
+
+    public static void compressTreeChild(List<?> child, List<Area> retList) {
+        if (CollectionUtils.isNotEmpty(child)) {
+            for (Object o : child) {
+                Area area = (Area)o;
+                retList.add(area);
+                compressTreeChild(area.getChildren(), retList);
+            }
+        }
+    }
 }