查询Json 层级对象

@Autowired
OrgSearchFeginClient orgSearchFeginClient;

@Override
public ResponseData orgSearchTree(Map map) {

JSONObject json = null;
List<Map> result = null;
List<Map> level1 = null;
List<Map> level2 = null;
List<Map> level3 = null;
ResponseData res = new ResponseData();
try {
//调用组织层级属性结构(博智接口)
json = orgSearchFeginClient.orgSearchTree(new HashMap());
result = (ArrayList)json.get("result");
result = result.stream().collect(Collectors.toList());
//获取前端选择组织代表类型参数
String orgType = (String) map.get("orgType");
//上级公司(金徽酒公司)
if (orgType != null && orgType.equals("group")){
List<CustomerTypeDTO> list = new ArrayList<>();
for(int i = 0; i < result.size();i ++) {
//调用方法
CustomerTypeDTO customerTypeDTO = getLevel( result.get(i),null);
list.add(customerTypeDTO);
}
return ResponseData.ok(list,"查询成功");
}
//事业部
if (orgType != null && orgType.equals("company")){
List<CustomerTypeDTO> list = new ArrayList<>();
for(int i = 0 ; i < result.size();i++){
level1 = (List<Map>)result.get(i).get("children");
if (level1 != null && level1.size() > 0){
for(int j = 0; j < level1.size(); j ++){
//调用封装方法
CustomerTypeDTO customerTypeDTO = getLevel(level1.get(j),null);
list.add(customerTypeDTO);
}
}
}
return ResponseData.ok(list,"查询成功");
}
//大区
if (orgType != null && orgType.equals("division")){
List<CustomerTypeDTO> list = new ArrayList<>();
for(int i = 0 ; i < result.size();i++){
//事业部集合
level1 = (List<Map>)result.get(i).get("children");
if (level1 != null && level1.size() > 0) {
for (int j = 0; j < level1.size(); j ++ ){
//大区集合
level2 = (List<Map>)level1.get(j).get("children");
//获取二层级orgName
String parentOrgName = (String) level1.get(j).get("orgName");
if (level2 != null && level2.size() > 0) {
for (int k = 0; k < level2.size(); k ++){
//调用封装方法
CustomerTypeDTO customerTypeDTO = getLevel(level2.get(k),parentOrgName);
list.add(customerTypeDTO);
}
}
}
}
}
return ResponseData.ok(list,"查询成功");
}
//区域(经销商)
if (orgType != null && orgType.equals("region")){
List<CustomerTypeDTO> list = new ArrayList<>();
//遍历上级公司
for(int i = 0 ; i < result.size();i++){
//事业部集合
level1 = (List<Map>)result.get(i).get("children");
if (level1 != null && level1.size() > 0) {
for (int j = 0; j < level1.size(); j ++ ){
//大区集合
level2 = (List<Map>)level1.get(j).get("children");
if (level2 != null && level2.size() > 0) {
for (int k = 0; k < level2.size(); k ++){
//区域集合
level3 = (List<Map>)level2.get(k).get("children");
if (level3 != null && level3.size() >0) {
for (int l =0; l < level3.size();l++){
//调用封装方法
CustomerTypeDTO customerTypeDTO = getLevel(level3.get(l),null);
list.add(customerTypeDTO);
}
}
}
}
}
}
}
return ResponseData.ok(list,"查询成功");
}
} catch (Exception e) {
log.info("查询失败{}",e.getMessage());
res = ResponseData.fail("查询失败");
}
return res;
}

/**
* 封装调用方法
* @param level1
* @return
*/
public static CustomerTypeDTO getLevel(Map level1,String parentOrgName){

CustomerTypeDTO customerTypeDTO = new CustomerTypeDTO();
String orgCode = (String) level1.get("orgCode");
String orgName = (String) level1.get("orgName");
String newOrgType = (String) level1.get("orgType");
String orgTypeName = (String) level1.get("orgTypeName");
String parentCode = (String) level1.get("parentCode");
String orgDesc = (String) level1.get("orgDesc");
Integer levelNum = (Integer) level1.get("levelNum");
String ruleCode = (String) level1.get("ruleCode");
if (level1.get("orgType").equals("division")){customerTypeDTO.setParentOrgName(parentOrgName);}
customerTypeDTO.setOrgCode(orgCode);
customerTypeDTO.setOrgName(orgName);
customerTypeDTO.setOrgType(newOrgType);
customerTypeDTO.setOrgTypeName(orgTypeName);
customerTypeDTO.setOrgDesc(orgDesc);
customerTypeDTO.setParentCode(parentCode);
customerTypeDTO.setRuleCode(ruleCode);
customerTypeDTO.setLevelNum(levelNum);
return customerTypeDTO;
}
原文地址:https://www.cnblogs.com/pxzbky/p/14897743.html