성, 시, 구 3급 조회 트리 구조, 코드 최적화

2701 단어
성, 시, 구 3급 조회 코드 최적화
사고방식: 성의code를 통해 각각 성의code 아래의 집합을 얻는다.그리고 교대로 대응하는 하위 노드를 넣는다
    //    、 、 
    @RequestMapping("/getAlllevel")
    public ResultInfo getAlllevel(@RequestBody JSONObject json) {
        try {
            //  
            List provinceList = perAreaService.getProvince(json.getString("provinceCode"));
            List cityList = perAreaService.getCityByProvinceCode(json.getString("provinceCode"));
            List districtList = perAreaService.getDistrictByProvinceCode(json.getString("provinceCode"));

            JSONArray jsonP = JSONArray.parseArray(JSON.toJSONString(provinceList));
            JSONArray jsonC = JSONArray.parseArray(JSON.toJSONString(cityList));
            JSONArray jsonD = JSONArray.parseArray(JSON.toJSONString(districtList));

            for (int i = 0; i < jsonP.size(); i++) {
                JSONObject province = jsonP.getJSONObject(i);

                JSONArray children = new JSONArray();
                for (int j = 0; j < jsonC.size(); j++) {
                    JSONObject city = jsonC.getJSONObject(j);
                    if (StringUtils.isNotEmpty(province.getString("provinceCode")) && StringUtils.isNotEmpty(city.getString("provinceCode"))
                            && province.getString("provinceCode").equals(city.getString("provinceCode"))) {
                        children.add(city);
                    }
                    JSONArray children2 = new JSONArray();
                    for (int k = 0; k < jsonD.size(); k++) {
                        JSONObject district = jsonD.getJSONObject(k);
                        if (StringUtils.isNotEmpty(city.getString("cityCode")) && StringUtils.isNotEmpty(district.getString("cityCode"))
                                && city.getString("cityCode").equals(district.getString("cityCode"))) {
                            children2.add(district);
                        }
                    }
                    if (children2.size() > 0) {
                        city.put("children", children2);//      
                    }
                }
                if (children.size() > 0) {
                    province.put("children", children);//      
                }

            }
            return ResultInfo.success(jsonP);
        } catch (Exception e) {
            logger.info(e.getMessage());
            e.printStackTrace();
        }
        return ResultInfo.error(MsgEnum.FAIL.getCode(), MsgEnum.FAIL.getMsg());
    }

좋은 웹페이지 즐겨찾기