地址树遍历

该代码片段是一个处理HTTP请求的方法,用于根据公司ID和业务类型ID获取巡检地址树的数据。首先从请求中获取参数,然后通过服务获取业务类型对应的地址,进一步获取所有子地址,并构建树形结构。如果在处理过程中出现异常,则记录错误日志。返回的数据包含一个JSON对象,其中的`address`字段是一个包含树结构的数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@RequestMapping(value = "/selectPatrolAddressTree", method = {RequestMethod.GET, RequestMethod.POST})
    @ResponseBody
    public String selectPatrolAddressTree(HttpServletRequest request, HttpServletResponse response) {
        JSONObject json = new JSONObject();
        JSONObject allJsonObject = new JSONObject();
        JSONArray allArray = new JSONArray();
        Long compId = RequestTool.getLong(request, "compId");
        Long businessTypeId = RequestTool.getLong(request, "businessTypeId");

        List<SysAddress> selectPatrolAddressList = null;
        try {
            SysABusinessTypeAddress aBusinessTypeAddress = this.getSysABusinessLineService().getSysABusinessTypeAddress(compId, businessTypeId);
            if (aBusinessTypeAddress != null && aBusinessTypeAddress.getAddressId() != null) {
                SysAddress paramAddress = new SysAddress();
                paramAddress.setCompId(compId);
                paramAddress.setrId(aBusinessTypeAddress.getAddressId());
                selectPatrolAddressList = this.getSysAddressService().getSysAddressRidTreeList(paramAddress);
            }
            if (selectPatrolAddressList != null && selectPatrolAddressList.size() > 0) {
                for (int i = 0; i < selectPatrolAddressList.size(); i++) {
                    if (selectPatrolAddressList.get(i).getpId() == null) {
                        JSONObject pJson = new JSONObject();
                        pJson.put("id", selectPatrolAddressList.get(i).getAddressId());
                        pJson.put("text", selectPatrolAddressList.get(i).getAddressName());
                        pJson.put("pId", selectPatrolAddressList.get(i).getpId());
                        JSONArray pJsonArray = new JSONArray();
                        this.getPatrolAddressTree(pJsonArray, pJson, selectPatrolAddressList, selectPatrolAddressList.get(i).getAddressId());
                        allArray.add(pJson);
                    }
                }
            }
        } catch (Exception e) {
            this.getLogErrorService().insertLogError(request,
                    Thread.currentThread().getStackTrace()[1].getClassName(),
                    Thread.currentThread().getStackTrace()[1].getMethodName(),
                    "巡检计划查询关联地址失败", e);
            e.printStackTrace();
        }
        allJsonObject.put("address", allArray);
        JsonUtils.err(ErrCodeEnum.SUCCESS, json);
        json.put("data", allJsonObject);
        return json.toString();
    }

    //pJson是父亲,pJsonArray是父亲的所有孩子
    public void getPatrolAddressTree(JSONArray pJsonArray, JSONObject pJson, List<SysAddress> selectPatrolAddressList, Long pId) {
        for (int i = 0; i < selectPatrolAddressList.size(); i++) {
            if (selectPatrolAddressList.get(i).getpId() != null) {
                if (pId.toString().equals(selectPatrolAddressList.get(i).getpId().toString())) {
                    JSONObject json = new JSONObject();
                    json.put("id", selectPatrolAddressList.get(i).getAddressId());
                    json.put("text", selectPatrolAddressList.get(i).getAddressName());
                    json.put("pId", selectPatrolAddressList.get(i).getpId());
                    JSONArray jsonArray = new JSONArray();
                    this.getPatrolAddressTree(jsonArray, json, selectPatrolAddressList, selectPatrolAddressList.get(i).getAddressId());
                    pJsonArray.add(json);
                }
            }
        }
        if (pJsonArray.size() > 0) {
            pJson.put("children", pJsonArray);
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值