宿舍树结构
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*/ |
数据库结果集
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)