小知识,大挑战!本文正在参与“ 程序员必备小知识 ”创作活动
树形列表,又名无极分类,方法代码如下,数据库操作代码省略
/**
* 图层目录-树状列表
*
* @param param
* @Description:list method
* @Author: tarzan Liu
* @Date: 2019/12/6 11:14
*/
public ResponseDTO<List<LayerTypeTreeDTO>> list(LayerTypeParamDTO param) {
EntityWrapper<LayerTypeEntity> wrapper = new EntityWrapper<>();
wrapper.eq("drawing_id", param.getDrawingId());
wrapper.like(StringUtils.isNotBlank(param.getName()), "name", param.getName());
List<LayerTypeEntity> list = layerTypeDao.selectList(wrapper);
List<LayerTypeTreeDTO> resultList = Lists.newArrayList();
if (CollectionUtils.isNotEmpty(list)) {
List<LayerTypeTreeDTO> sourceList = SmartBeanUtil.copyList(list, LayerTypeTreeDTO.class);
resultList = sourceList.stream().filter(e -> e.getPid() == 0).collect(Collectors.toList());
resultList.sort(Comparator.comparing(LayerTypeTreeDTO::getSort));
resultList.forEach(e -> {
assemblyTree(sourceList, e);
});
}
return ResponseDTO.succData(resultList);
}
/**
* 图层目录-组装树
*
* @param sourceList&parent
* @Description:list method
* @Author: tarzan Liu
* @Date: 2019/12/6 11:14
*/
public void assemblyTree(List<LayerTypeTreeDTO> sourceList, LayerTypeTreeDTO parent) {
if (CollectionUtils.isNotEmpty(sourceList)) {
List<LayerTypeTreeDTO> resultList = sourceList.stream().filter(e -> e.getPid().equals(parent.getId())).collect(Collectors.toList());
resultList.sort(Comparator.comparing(LayerTypeTreeDTO::getSort));
parent.setChildList(resultList);
resultList.forEach(e -> {
assemblyTree(sourceList, e);
});
}
}
树形对象
@Data
public class LayerTypeTreeDTO {
@ApiModelProperty("目录ID")
private Long id;
@ApiModelProperty("矿井/图 id")
private Long drawingId;
@ApiModelProperty("分类名称")
private String name;
@ApiModelProperty("父目录ID")
private Long pid;
@ApiModelProperty("排序")
private Long sort;
@ApiModelProperty("子类集合")
private List<LayerTypeTreeDTO> childList;
}