package org.jeecg.modules.dnc.service.support;
|
|
import org.jeecg.modules.dnc.entity.DeviceGroup;
|
import org.jeecg.modules.dnc.entity.DeviceInfo;
|
import org.jeecg.modules.dnc.response.CommonGenericTree;
|
import org.jeecg.modules.dnc.dto.DeviceGroupExt;
|
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
public class DeviceTreeWrapper {
|
public static List<CommonGenericTree> loadTree(List<DeviceGroupExt> groupExtList, List<DeviceInfo> deviceInfoList) {
|
List<CommonGenericTree> groupJsonTreeList = DeviceGroupTreeWrapper.loadTree(groupExtList);
|
if(deviceInfoList == null || deviceInfoList.isEmpty())
|
return groupJsonTreeList;
|
Map<String, CommonGenericTree> groupTreeMap = new HashMap<>();
|
CommonGenericTree<DeviceGroup> groupNode;
|
CommonGenericTree<DeviceInfo> deviceNode;
|
for(CommonGenericTree group : groupJsonTreeList) {
|
groupTreeMap = CommonGenericTree.getLeafNode(groupTreeMap, group);
|
}
|
for(DeviceInfo deviceInfo : deviceInfoList) {
|
deviceNode = new CommonGenericTree();
|
deviceNode.setId(deviceInfo.getDeviceId());
|
deviceNode.setLabel(deviceInfo.getDeviceName());
|
deviceNode.setParentId(null);
|
deviceNode.setIconClass("");
|
deviceNode.setType(2);
|
deviceNode.setRField(deviceInfo.getGroupId());
|
deviceNode.setEntity(deviceInfo);
|
if(groupTreeMap.containsKey(deviceNode.getRField())) {
|
groupNode = groupTreeMap.get(deviceNode.getRField());
|
deviceNode.setParentId(groupNode.getId());
|
groupNode.addChildren(deviceNode);
|
}
|
}
|
return groupJsonTreeList;
|
}
|
|
|
public static List<CommonGenericTree> loadDepartTree(List<DeviceGroupExt> groupExtList, List<DeviceInfo> deviceInfoList) {
|
List<CommonGenericTree> groupJsonTreeList = DeviceGroupTreeWrapper.loadDepartTree(groupExtList);
|
if(deviceInfoList == null || deviceInfoList.isEmpty())
|
return groupJsonTreeList;
|
Map<String, CommonGenericTree> groupTreeMap = new HashMap<>();
|
CommonGenericTree<DeviceGroup> groupNode;
|
CommonGenericTree<DeviceInfo> deviceNode;
|
for(CommonGenericTree group : groupJsonTreeList) {
|
groupTreeMap = CommonGenericTree.getLeafNode(groupTreeMap, group);
|
}
|
for(DeviceInfo deviceInfo : deviceInfoList) {
|
deviceNode = new CommonGenericTree();
|
deviceNode.setId(deviceInfo.getDeviceId());
|
deviceNode.setLabel(deviceInfo.getDeviceName());
|
deviceNode.setParentId(null);
|
deviceNode.setIconClass("");
|
deviceNode.setType(2);
|
deviceNode.setRField(deviceInfo.getGroupId());
|
deviceNode.setEntity(deviceInfo);
|
if(groupTreeMap.containsKey(deviceNode.getRField())) {
|
groupNode = groupTreeMap.get(deviceNode.getRField());
|
deviceNode.setParentId(groupNode.getId());
|
groupNode.addChildren(deviceNode);
|
}
|
}
|
return groupJsonTreeList;
|
}
|
|
private static CommonGenericTree addToGroup(CommonGenericTree tree, DeviceInfo deviceInfo) {
|
Map<String, CommonGenericTree> groupTreeMap = new HashMap<>();
|
groupTreeMap = CommonGenericTree.getLeafNode(groupTreeMap, tree);
|
if(groupTreeMap.containsKey(deviceInfo.getGroupId())) {
|
CommonGenericTree parent = groupTreeMap.get(deviceInfo.getGroupId());
|
CommonGenericTree<DeviceInfo> childNode = new CommonGenericTree<>();
|
childNode.setId(deviceInfo.getDeviceId());
|
childNode.setLabel(deviceInfo.getDeviceName());
|
childNode.setParentId(deviceInfo.getGroupId());
|
childNode.setIconClass("");
|
childNode.setType(2);
|
childNode.setEntity(deviceInfo);
|
parent.addChildren(childNode);
|
groupTreeMap.put(childNode.getId(), childNode);
|
Map<String, CommonGenericTree> hashMap = new HashMap<>();
|
CommonGenericTree.getAllParentNode(hashMap, groupTreeMap, childNode);
|
CommonGenericTree newNode = new CommonGenericTree();
|
newNode.copyNoneChild(tree);
|
CommonGenericTree.copyToNewTree(tree, newNode, hashMap);
|
return newNode;
|
}else {
|
return null;
|
}
|
}
|
}
|