修复device_channel的Id改变带来的tree查询bug
This commit is contained in:
parent
e1cb286392
commit
aaa1c8d6cb
@ -16,7 +16,7 @@ public class BaseNode<T> implements INode<T> {
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
protected int id;
|
||||
protected String channelId;
|
||||
|
||||
/**
|
||||
* 父节点ID
|
||||
@ -50,12 +50,8 @@ public class BaseNode<T> implements INode<T> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
public String getChannelId() {
|
||||
return channelId;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -63,10 +59,6 @@ public class BaseNode<T> implements INode<T> {
|
||||
return parentId;
|
||||
}
|
||||
|
||||
public void setParentId(String parentId) {
|
||||
this.parentId = parentId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<T> getChildren() {
|
||||
return children;
|
||||
|
@ -15,8 +15,8 @@ public class ForestNode extends BaseNode<ForestNode> {
|
||||
*/
|
||||
private Object content;
|
||||
|
||||
public ForestNode(int id, String parentId, Object content) {
|
||||
this.id = id;
|
||||
public ForestNode(String id, String parentId, Object content) {
|
||||
this.channelId = id;
|
||||
this.parentId = parentId;
|
||||
this.content = content;
|
||||
}
|
||||
|
@ -17,15 +17,15 @@ public class ForestNodeManager<T extends INode<T>> {
|
||||
/**
|
||||
* 森林的所有节点
|
||||
*/
|
||||
private final ImmutableMap<Integer, T> nodeMap;
|
||||
private final ImmutableMap<String, T> nodeMap;
|
||||
|
||||
/**
|
||||
* 森林的父节点ID
|
||||
*/
|
||||
private final Map<Integer, Object> parentIdMap = Maps.newHashMap();
|
||||
private final Map<String, Object> parentIdMap = Maps.newHashMap();
|
||||
|
||||
public ForestNodeManager(List<T> nodes) {
|
||||
nodeMap = Maps.uniqueIndex(nodes, INode::getId);
|
||||
nodeMap = Maps.uniqueIndex(nodes, INode::getChannelId);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -46,7 +46,7 @@ public class ForestNodeManager<T extends INode<T>> {
|
||||
*
|
||||
* @param parentId 父节点ID
|
||||
*/
|
||||
public void addParentId(int parentId) {
|
||||
public void addParentId(String parentId) {
|
||||
parentIdMap.put(parentId, "");
|
||||
}
|
||||
|
||||
@ -58,7 +58,7 @@ public class ForestNodeManager<T extends INode<T>> {
|
||||
public List<T> getRoot() {
|
||||
List<T> roots = new ArrayList<>();
|
||||
nodeMap.forEach((key, node) -> {
|
||||
if (node.getParentId() == null || parentIdMap.containsKey(node.getId())) {
|
||||
if (node.getParentId() == null || parentIdMap.containsKey(node.getChannelId())) {
|
||||
roots.add(node);
|
||||
}
|
||||
});
|
||||
|
@ -25,7 +25,7 @@ public class ForestNodeMerger {
|
||||
if (node != null) {
|
||||
node.getChildren().add(forestNode);
|
||||
} else {
|
||||
forestNodeManager.addParentId(forestNode.getId());
|
||||
forestNodeManager.addParentId(forestNode.getChannelId());
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -37,8 +37,8 @@ public class ForestNodeMerger {
|
||||
items.forEach(forestNode -> {
|
||||
if (forestNode.getParentId() != null) {
|
||||
INode<T> node = forestNodeManager.getTreeNodeAt(forestNode.getParentId());
|
||||
if (CollectionUtil.contains(parentIds, forestNode.getId())){
|
||||
forestNodeManager.addParentId(forestNode.getId());
|
||||
if (CollectionUtil.contains(parentIds, forestNode.getChannelId())){
|
||||
forestNodeManager.addParentId(forestNode.getChannelId());
|
||||
} else {
|
||||
if (node != null){
|
||||
node.getChildren().add(forestNode);
|
||||
|
@ -14,7 +14,7 @@ public interface INode<T> extends Serializable {
|
||||
*
|
||||
* @return String
|
||||
*/
|
||||
int getId();
|
||||
String getChannelId();
|
||||
|
||||
/**
|
||||
* 父主键
|
||||
|
Loading…
Reference in New Issue
Block a user