省,市,区 三级查询 代码优化
思路:通过省份的code,分别获取该省份code下的集合。然后轮训加入对应的子节点
// 查询省、市、县
@RequestMapping("/getAlllevel")
public ResultInfo getAlllevel(@RequestBody JSONObject json) {
try {
// 省
List<PerArea> provinceList = perAreaService.getProvince(json.getString("provinceCode"));
List<PerArea> cityList = perAreaService.getCityByProvinceCode(json.getString("provinceCode"));
List<PerArea> 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());
}