yangys
2024-10-30 25db770e621f1259b8d5b7fd514207f7481c2d0f
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
package com.qianwen.smartman.common.utils;
 
import java.util.List;
import java.util.stream.Collectors;
 
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.qianwen.core.tool.node.ForestNodeMerger;
import com.qianwen.core.tool.utils.SpringUtil;
import com.qianwen.smartman.modules.cps.entity.CommonGroup;
import com.qianwen.smartman.modules.cps.service.ICommonGroupService;
import com.qianwen.smartman.modules.cps.vo.CommonGroupTypeVO;
import com.qianwen.smartman.modules.cps.vo.GroupTreeVO;
import com.qianwen.smartman.modules.perf.vo.OffEmployeeTreeVO;
 
public class TreeUtils {
    private static final ICommonGroupService COMMON_GROUP_SERVICE = SpringUtil.getBean(ICommonGroupService.class);
 
    public static List<GroupTreeVO> allGroupTree(CommonGroupTypeVO vo, List<GroupTreeVO> children) {
        return getTree(children, vo);
    }
 
    public static List<OffEmployeeTreeVO> allGroupTreeOff(CommonGroupTypeVO vo, List<OffEmployeeTreeVO> children) {
        return getTreeOff(children, vo);
    }
 
    private static List<GroupTreeVO> getTree(List<GroupTreeVO> children, CommonGroupTypeVO vo) {
        List<CommonGroup> commonGroups = COMMON_GROUP_SERVICE.list(Wrappers.<CommonGroup>lambdaQuery()
                .eq(CommonGroup::getGroupType, vo.getGroupType())
                .eq(CommonGroup::getGroupCategory, vo.getGroupCategory()));
        List<GroupTreeVO> groups = commonGroups.stream().map(TreeUtils::convert).collect(Collectors.toList());
        children.addAll(groups);
        return ForestNodeMerger.merge(children);
            
        /*
        List<CommonGroup> commonGroups = COMMON_GROUP_SERVICE.list((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> {
            return v0.getGroupType();
        }, vo.getGroupType())).eq((v0) -> {
            return v0.getGroupCategory();
        }, vo.getGroupCategory()));
        List<GroupTreeVO> groups = (List) commonGroups.stream().map(TreeUtils::convert).collect(Collectors.toList());
        children.addAll(groups);
        return ForestNodeMerger.merge(children);
        */
    }
 
    private static List<OffEmployeeTreeVO> getTreeOff(List<OffEmployeeTreeVO> children, CommonGroupTypeVO vo) {
        List<CommonGroup> commonGroups = COMMON_GROUP_SERVICE.list(Wrappers.<CommonGroup>lambdaQuery()
                .eq(CommonGroup::getGroupType, vo.getGroupType())
                .eq(CommonGroup::getGroupCategory, vo.getGroupCategory()));
        List<OffEmployeeTreeVO> groups = commonGroups.stream().map(TreeUtils::convertOff).collect(Collectors.toList());
        children.addAll(groups);
        return ForestNodeMerger.merge(children);
            
        /*
        List<CommonGroup> commonGroups = COMMON_GROUP_SERVICE.list((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> {
            return v0.getGroupType();
        }, vo.getGroupType())).eq((v0) -> {
            return v0.getGroupCategory();
        }, vo.getGroupCategory()));
        List<OffEmployeeTreeVO> groups = (List) commonGroups.stream().map(TreeUtils::convertOff).collect(Collectors.toList());
        children.addAll(groups);
        return ForestNodeMerger.merge(children);
        */
    }
 
    private static GroupTreeVO convert(CommonGroup group) {
        GroupTreeVO treeVO = new GroupTreeVO();
        treeVO.setId(group.getId());
        treeVO.setName(group.getName());
        treeVO.setCode(group.getCode());
        treeVO.setParentId(group.getParentId());
        treeVO.setIsGroup(Boolean.TRUE);
        return treeVO;
    }
 
    private static OffEmployeeTreeVO convertOff(CommonGroup group) {
        OffEmployeeTreeVO treeVO = new OffEmployeeTreeVO();
        treeVO.setId(group.getId());
        treeVO.setName(group.getName());
        treeVO.setCode(group.getCode());
        treeVO.setParentId(group.getParentId());
        treeVO.setIsGroup(Boolean.TRUE);
        return treeVO;
    }
}