一、前言
最近有个需求,需要做一个联级列表,数据是调用第三方获取的。前端同学想让我帮他把数据处理一下,换一下字段。
页面是这个样子:
修改之前的数据:
{
"error": 0,
"body": {
"list": [
{
"deptLevel": "3",
"deptCode": "484560642",
"deptName": "业财运营部",
"parentDeptCode": "57364999",
"subDeptList": [
{
"deptLevel": "4",
"deptCode": "582020709",
"deptName": "数据运营组",
"parentDeptCode": "558333864",
"subDeptList": [
{
"deptLevel": "5",
"deptCode": "676189295",
"deptName": "线下运营组",
"parentDeptCode": "582020709"
},
{
"deptLevel": "5",
"deptCode": "676148284",
"deptName": "电商组",
"parentDeptCode": "582020709"
},
{
"deptLevel": "5",
"deptCode": "702186646",
"deptName": "品牌组",
"parentDeptCode": "582020709"
}
]
},
]
},
修改之后:
{
"error": 0,
"errorCode": "0",
"message": "请求成功",
"body": [
{
"label": "业务部",
"value": "748",
"children": [
{
"label": "A作战部",
"value": "A作战部",
"children": [
{
"label": "A作战分部",
"value": "A作战分部"
},
{
"label": "B作战分部",
"value": "B作战分部"
},
{
"label": "C作战分部",
"value": "C作战分部"
},
{
"label": "广州作战分部",
"value": "广州作战分部",
"children": [
{
"label": "广州谈判组",
"value": "广州谈判组"
},
{
"label": "广州执行组",
"value": "广州执行组"
},
{
"label": "粤西北执行组",
"value": "粤西北执行组"
}
]
}
]
}
]
}
]
}
二、 类
第三方返回的类:
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @date 2022/10/24 17:48
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DepartBo {
private String deptLevel;
private String deptCode;
private String deptName;
private String parentDeptCode;
private List<DepartBo> subDeptList;
}
前端需要的类:
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @description 返回给前端的作战单元列表 组织树
* @date 2022/10/31 13:39
*/
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class LabelVO {
@ApiModelProperty("名称")
private String label;
@ApiModelProperty("值")
private String value;
@ApiModelProperty("孩子")
private List<LabelVO> children;
}
三、我的代码
/**
* 递归,将部门树的字段替换成前端需要的字段
* @param bo
* @return
*/
private LabelVO replaceLabel(DepartBo bo) {
List<LabelVO> children = null;
if (CollectionUtils.isNotEmpty(bo.getSubDeptList())) {
children = new ArrayList<>();
for (DepartBo departBo : bo.getSubDeptList()) {
children.add(this.replaceLabel(departBo));
}
}
return LabelVO.builder().label(bo.getDeptName()).value(bo.getDeptName()).children(children).build();
}
@Override
public List<LabelVO> combatUnit() {
List<LabelVO> result = new ArrayList<>();
//从第三方接口获取的数据
List<DepartmentBo> list = feignDeptInterface.queryDepartments().getList();
if (CollectionUtils.isNotEmpty(list)) {
//3.然后再调用部门书列表接口 传入deptCode部门编号
for (DepartmentBo departmentBo : list) {
List<DepartBo> departBoList =
feignDeptInterface.queryDeptTreeList().getList();
List<LabelVO> labelVOList = new ArrayList<>();
for (DepartBo departBo : departBoList) {
labelVOList.add(this.replaceLabel(departBo));
}
result.add(LabelVO.builder().label(departmentBo.getDeptName()).value(departmentBo.getDeptName()).children(labelVOList).build());
}
}
}
return result;
}