diff --git a/src/main/java/com/xydl/cac/controller/NSensorController.java b/src/main/java/com/xydl/cac/controller/NSensorController.java index cd5fcf0..175de29 100644 --- a/src/main/java/com/xydl/cac/controller/NSensorController.java +++ b/src/main/java/com/xydl/cac/controller/NSensorController.java @@ -50,7 +50,7 @@ public class NSensorController extends BasicController { @GetMapping("getTree") @ApiOperation("查询树") public Response> getTree() throws Exception { - List result = bindService.getTree(); + List result = bindService.getTree(true); return Response.success(result); } diff --git a/src/main/java/com/xydl/cac/controller/ParamBindController.java b/src/main/java/com/xydl/cac/controller/ParamBindController.java index 986c96c..fee28e1 100644 --- a/src/main/java/com/xydl/cac/controller/ParamBindController.java +++ b/src/main/java/com/xydl/cac/controller/ParamBindController.java @@ -31,7 +31,7 @@ public class ParamBindController extends BasicController { @GetMapping("getTree") @ApiOperation("查询树") public Response> getTree() throws Exception { - List result = bindService.getTree(); + List result = bindService.getTree(true); return Response.success(result); } diff --git a/src/main/java/com/xydl/cac/entity/Bdz.java b/src/main/java/com/xydl/cac/entity/Bdz.java index bdc8f04..43dd867 100644 --- a/src/main/java/com/xydl/cac/entity/Bdz.java +++ b/src/main/java/com/xydl/cac/entity/Bdz.java @@ -6,11 +6,13 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import org.springframework.util.CollectionUtils; import javax.persistence.*; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; @Data @@ -97,4 +99,14 @@ public class Bdz { @Transient private List children; + public void addChild(Jg child, boolean ignoreEmpty) { + if (children == null) { + children = new ArrayList<>(); + } + if (ignoreEmpty && CollectionUtils.isEmpty(child.getChildren())) { + } else { + children.add(child); + } + } + } \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/entity/Jg.java b/src/main/java/com/xydl/cac/entity/Jg.java index d5c0de2..4a581f8 100644 --- a/src/main/java/com/xydl/cac/entity/Jg.java +++ b/src/main/java/com/xydl/cac/entity/Jg.java @@ -6,12 +6,14 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import org.springframework.util.CollectionUtils; import javax.persistence.*; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; @Data @@ -54,4 +56,14 @@ public class Jg { @Transient private List children; + + public void addChild(Zsb child, boolean ignoreEmpty) { + if (children == null) { + children = new ArrayList<>(); + } + if (ignoreEmpty && CollectionUtils.isEmpty(child.getChildren())) { + } else { + children.add(child); + } + } } \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/entity/Zsb.java b/src/main/java/com/xydl/cac/entity/Zsb.java index 8c01f5f..1a056b8 100644 --- a/src/main/java/com/xydl/cac/entity/Zsb.java +++ b/src/main/java/com/xydl/cac/entity/Zsb.java @@ -12,6 +12,7 @@ import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; @Data @@ -222,4 +223,11 @@ public class Zsb { @Transient private List children; + public void addChild(NSensor child) { + if (children == null) { + children = new ArrayList<>(); + } + children.add(child); + } + } \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/service/ParamBindService.java b/src/main/java/com/xydl/cac/service/ParamBindService.java index 2946cba..1556d96 100644 --- a/src/main/java/com/xydl/cac/service/ParamBindService.java +++ b/src/main/java/com/xydl/cac/service/ParamBindService.java @@ -12,7 +12,7 @@ public interface ParamBindService { List getTrunk() throws Exception; - List getTree() throws Exception; + List getTree(boolean ignoreEmpty) throws Exception; List instList(String iedName); diff --git a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java index 8673698..e522f41 100644 --- a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java @@ -17,6 +17,7 @@ import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -61,24 +62,55 @@ public class ParamBindServiceImpl implements ParamBindService { } @Override - public List getTree() throws Exception { + public List getTree(boolean ignoreEmpty) throws Exception { + // 获取全量 List bdzList = bdzRepository.findAll(); + HashMap bdzMap = new HashMap<>(); for (Bdz bdz : bdzList) { - List jgList = jgRepository.findByBdzid(bdz.getId()); - bdz.setChildren(jgList); - for (Jg jg : jgList) { - jg.setBdzName(bdz.getMc()); - List zsbList = zsbRepository.findByJgid(jg.getId()); - jg.setChildren(zsbList); - for (Zsb zsb : zsbList) { - zsb.setBdzName(bdz.getMc()); - zsb.setJgName(jg.getMc()); - List sensorList = sensorRepository.findByZsbId(zsb.getId()); - zsb.setChildren(sensorList); + bdzMap.put(bdz.getId(), bdz); + } + List jgList = jgRepository.findAll(); + HashMap jgMap = new HashMap<>(); + for (Jg jg : jgList) { + jgMap.put(jg.getId(), jg); + } + List zsbList = zsbRepository.findAll(); + HashMap zsbMap = new HashMap<>(); + for (Zsb zsb : zsbList) { + zsbMap.put(zsb.getId(), zsb); + } + List sensorList = sensorRepository.findAll(); + + // 每一个放入上一层 + for (NSensor sensor : sensorList) { + Zsb zsb = zsbMap.get(sensor.getZsbId()); + if (zsb != null) { + zsb.addChild(sensor); + } + } + for (Zsb zsb : zsbList) { + Jg jg = jgMap.get(zsb.getJgid()); + if (jg != null) { + jg.addChild(zsb, ignoreEmpty); + } + } + for (Jg jg : jgList) { + Bdz bdz = bdzMap.get(jg.getBdzid()); + if (bdz != null) { + bdz.addChild(jg, ignoreEmpty); + } + } + List result = new ArrayList<>(); + if (ignoreEmpty) { + for (Bdz bdz : bdzList) { + if (!CollectionUtils.isEmpty(bdz.getChildren())) { + result.add(bdz); } } + } else { + result = bdzList; } - return bdzList; + return result; } @Override