1.DicSonVO 类
@Data
@ApiModel(description = "计划更新涉及的业务单元树形Node")
public class DicSonVO {
@ApiModelProperty(value = "id")
private String id;
@ApiModelProperty(value = "parentId")
private String parentId;
@ApiModelProperty(value = "父业务单元影响的业务单元")
@TableField(exist = false)
private List<DicSonVO> children;
private String code;
private String enumValues;
private int orderIndex;
private String isban;
private String discription1;
private String discription2;
private String discription3;
private String dr;
private String url;
}
2.DicSonDTO 类
@Data
public class DicSonDTO extends BasePO {
private String dicId;
private String code;
private String enumValues;
private String parentId;
private int orderIndex;
private String isban;
private String discription1;
private String discription2;
private String discription3;
private String dr;
private String url;
}
3.组装树形结构成
List<DicSonDTO> oneFormByDicList = formByDic.stream()
.filter(unit -> StringUtils.isEmpty(unit.getParentId()) && StringUtils.isBlank(unit.getParentId()))
.collect(Collectors.toList());
for(DicSonDTO oneUnit : oneFormByDicList) {
DicSonVO oneUnitVo = new DicSonVO();
BeanUtil.copyProperties(oneUnit,oneUnitVo);
List<DicSonDTO> twoUnitList = formByDic.stream()
.filter(unit -> unit.getParentId().equals(oneUnit.getId()))
.collect(Collectors.toList());
List<DicSonVO> children = new ArrayList<>();
for(DicSonDTO twoUnit : twoUnitList) {
DicSonVO twoUnitVo = new DicSonVO();
BeanUtil.copyProperties(twoUnit,twoUnitVo);
children.add(twoUnitVo);
}
oneUnitVo.setChildren(children);
listUnit.add(oneUnitVo);
}
Map<String, DicSonVO> dicMap = Optional.ofNullable(
listUnit.stream()
.collect(Collectors.toMap(DicSonVO::getCode, Function.identity()))
).orElse(new HashMap<>());