perf: 配置只返回有子节点的tree

dev
huangfeng 1 year ago
parent 503d645529
commit a161f0f953

@ -50,7 +50,7 @@ public class NSensorController extends BasicController {
@GetMapping("getTree")
@ApiOperation("查询树")
public Response<List<Bdz>> getTree() throws Exception {
List<Bdz> result = bindService.getTree();
List<Bdz> result = bindService.getTree(true);
return Response.success(result);
}

@ -31,7 +31,7 @@ public class ParamBindController extends BasicController {
@GetMapping("getTree")
@ApiOperation("查询树")
public Response<List<Bdz>> getTree() throws Exception {
List<Bdz> result = bindService.getTree();
List<Bdz> result = bindService.getTree(true);
return Response.success(result);
}

@ -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<Jg> children;
public void addChild(Jg child, boolean ignoreEmpty) {
if (children == null) {
children = new ArrayList<>();
}
if (ignoreEmpty && CollectionUtils.isEmpty(child.getChildren())) {
} else {
children.add(child);
}
}
}

@ -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<Zsb> children;
public void addChild(Zsb child, boolean ignoreEmpty) {
if (children == null) {
children = new ArrayList<>();
}
if (ignoreEmpty && CollectionUtils.isEmpty(child.getChildren())) {
} else {
children.add(child);
}
}
}

@ -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<NSensor> children;
public void addChild(NSensor child) {
if (children == null) {
children = new ArrayList<>();
}
children.add(child);
}
}

@ -12,7 +12,7 @@ public interface ParamBindService {
List<Bdz> getTrunk() throws Exception;
List<Bdz> getTree() throws Exception;
List<Bdz> getTree(boolean ignoreEmpty) throws Exception;
List<IcdConfigTypeInst> instList(String iedName);

@ -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<Bdz> getTree() throws Exception {
public List<Bdz> getTree(boolean ignoreEmpty) throws Exception {
// 获取全量
List<Bdz> bdzList = bdzRepository.findAll();
HashMap<Integer, Bdz> bdzMap = new HashMap<>();
for (Bdz bdz : bdzList) {
List<Jg> jgList = jgRepository.findByBdzid(bdz.getId());
bdz.setChildren(jgList);
for (Jg jg : jgList) {
jg.setBdzName(bdz.getMc());
List<Zsb> zsbList = zsbRepository.findByJgid(jg.getId());
jg.setChildren(zsbList);
for (Zsb zsb : zsbList) {
zsb.setBdzName(bdz.getMc());
zsb.setJgName(jg.getMc());
List<NSensor> sensorList = sensorRepository.findByZsbId(zsb.getId());
zsb.setChildren(sensorList);
bdzMap.put(bdz.getId(), bdz);
}
List<Jg> jgList = jgRepository.findAll();
HashMap<Integer, Jg> jgMap = new HashMap<>();
for (Jg jg : jgList) {
jgMap.put(jg.getId(), jg);
}
List<Zsb> zsbList = zsbRepository.findAll();
HashMap<Integer, Zsb> zsbMap = new HashMap<>();
for (Zsb zsb : zsbList) {
zsbMap.put(zsb.getId(), zsb);
}
List<NSensor> 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<Bdz> 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

Loading…
Cancel
Save