lyh
2025-01-13 137d008bd9b7d932160436a3a560b24512f6d1db
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
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;
        }
    }
}