宿舍树结构

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
95
96
97
98
99
100
<br>// service 代码<br>public RestResponse<JSONObject> getDormTreeByWorkshop( @RequestParam("workshopId") String workshopId,@RequestParam("sex") String sex) {
        List<Map> dormitoryAllList = iDormManageDao.getDormitoryBydept(workshopId,sex);
        //1. 所有区域
        JSONArray areas = new JSONArray();
        //1.1 所有区域id
        List<String> areaIdList = new LinkedList<>();
        //2. 所有楼
        JSONArray floors = new JSONArray();
        //2.1 所有楼id
        List<String> floorIdList = new LinkedList<>();
        //1. 所有房间
        JSONArray rooms = new JSONArray();
        //1.1 所有房间id
        List<String> roomIdList = new LinkedList<>();
        //1. 所有床位
        JSONArray beds = new JSONArray();
        //1.1 所有床位id
        List<String> bedIdList = new LinkedList<>();
        //1.2 循环把id放进区域id中
        for (Map map1 : dormitoryAllList) {
            Optional<String> optional = areaIdList.stream().filter(e -> e.equals( map1.get("areaId"))).findFirst();
            if (!optional.isPresent()){
                areaIdList.add((String) map1.get("areaId"));
                JSONObject area = new JSONObject();
                area.put("value",map1.get("areaId"));
                area.put("label",map1.get("area"));
                //1.3 相对应的区域信息也放进所有区域中
                areas.add(area);
            }
            Optional<String> optional1 = floorIdList.stream().filter(e -> e.equals( map1.get("lId"))).findFirst();
            if (!optional1.isPresent()){
                floorIdList.add((String) map1.get("lId"));
                JSONObject floor = new JSONObject();
                floor.put("value",map1.get("lId"));
                floor.put("parentId",map1.get("areaId"));
                floor.put("label",map1.get("lmc"));
                //1.3 相对应的区域信息也放进所有区域中
                floors.add(floor);
            }Optional<String> optional2 = roomIdList.stream().filter(e -> e.equals( map1.get("fjId"))).findFirst();
            if (!optional2.isPresent()){
                roomIdList.add((String) map1.get("fjId"));
                JSONObject room = new JSONObject();
                room.put("value",map1.get("fjId"));
                room.put("parentId",map1.get("lId"));
                room.put("label",map1.get("fjmc"));
                //1.3 相对应的区域信息也放进所有区域中
                rooms.add(room);
            }Optional<String> optional3 = bedIdList.stream().filter(e -> e.equals( map1.get("bedId"))).findFirst();
            if (!optional3.isPresent()){
                bedIdList.add((String) map1.get("bedId"));
                JSONObject bed = new JSONObject();
                bed.put("value",map1.get("bedId"));
                bed.put("parentId",map1.get("fjId"));
                bed.put("label",map1.get("bedName"));
                //1.3 相对应的区域信息也放进所有区域中
                beds.add(bed);
            }
        }
 
        List<JSONObject> areaList = JSONObject.parseArray(areas.toJSONString(), JSONObject.class);
        List<JSONObject> floorList = JSONObject.parseArray(floors.toJSONString(), JSONObject.class);
        List<JSONObject> roomsList = JSONObject.parseArray(rooms.toJSONString(), JSONObject.class);
        List<JSONObject> bedsList = JSONObject.parseArray(beds.toJSONString(), JSONObject.class);
 
        try {
            //循环房间 和 床位的关系<br>       //先循环大的再循环小的
            for (JSONObject room : roomsList) {
                ArrayList<JSONObject> bedjson = new ArrayList<>();
                for (JSONObject bed : bedsList) {
                    if (bed.getString("parentId").equals(room.getString("value"))){
                        bedjson.add(bed);
                    }
                }
                room.put("children",bedjson);
            }
            //楼 和 房间的关系
            for (JSONObject floor : floorList) {
                ArrayList<JSONObject> romjson = new ArrayList<>();
                for (JSONObject rom : roomsList) {
                    if (rom.getString("parentId").equals(floor.getString("value"))){
                        romjson.add(rom);
                    }
                }
                floor.put("children",romjson);
            }
            //区域 和 楼的关系
            for (JSONObject area : areaList) {
                ArrayList<JSONObject> floorjson = new ArrayList<>();
                for (JSONObject floor : floorList) {
                    if (floor.getString("parentId").equals(area.getString("value"))){
                        floorjson.add(floor);
                    }
                }
                area.put("children",floorjson);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return new RestResponse(areaList);
    }

  数据库sql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SELECT
    q.mc area,
    q.id areaId,
    l.id lId,
    l.mc lmc,
    f.id fjId,
    f.mc fjmc,
    c.bh,
    c.id,
    f.sslb,
    f.cjid
FROM
    t_sys_sscwxx c
    INNER JOIN t_sys_ssfjxx f ON c.bh LIKE concat ( f.bh, '%' )
    INNER JOIN t_sys_sslxx l ON f.bh LIKE concat ( l.bh, '%' )
    INNER JOIN t_sys_ssxx q ON l.bh LIKE concat ( q.bh, '%' )
WHERE
    c.zt = 0
    AND f.sslb= '女'
    AND f.cjid= '12' /*部门ID*/

  数据库结果集

 

posted @   Li_ll  Views(51)  Comments(0Edit  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示