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 loadTree(List groupExtList, List deviceInfoList) { List groupJsonTreeList = DeviceGroupTreeWrapper.loadTree(groupExtList); if(deviceInfoList == null || deviceInfoList.isEmpty()) return groupJsonTreeList; Map groupTreeMap = new HashMap<>(); CommonGenericTree groupNode; CommonGenericTree 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 loadDepartTree(List groupExtList, List deviceInfoList) { List groupJsonTreeList = DeviceGroupTreeWrapper.loadDepartTree(groupExtList); if(deviceInfoList == null || deviceInfoList.isEmpty()) return groupJsonTreeList; Map groupTreeMap = new HashMap<>(); CommonGenericTree groupNode; CommonGenericTree 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 groupTreeMap = new HashMap<>(); groupTreeMap = CommonGenericTree.getLeafNode(groupTreeMap, tree); if(groupTreeMap.containsKey(deviceInfo.getGroupId())) { CommonGenericTree parent = groupTreeMap.get(deviceInfo.getGroupId()); CommonGenericTree 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 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; } } }