1.Service层方法
public List<DsModelType> getModelTypeTree() {
List<DsModelType> allModelTypes = dsModelTypeMapper.selectDsModelTypeList(new DsModelType());
Map<Long, DsModelType> modelTypeMap = allModelTypes.stream()
.collect(Collectors.toMap(DsModelType::getModelTypeId, type -> type));
List<DsModelType> tree = new ArrayList<>();
for (DsModelType type : allModelTypes) {
if (Objects.isNull(type.getParentId()) || type.getParentId().equals(ROOT_DIR_ID)) {
tree.add(type);
} else {
DsModelType parent = modelTypeMap.get(type.getParentId());
if (parent != null) {
if (parent.getChildren() == null) {
parent.setChildren(new ArrayList<>());
}
parent.getChildren().add(type);
}
}
}
return tree;
}
2. 实体类:
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "数据集模型类型")
public class DsModelType extends BaseEntity {
private static final long serialVersionUID = 1L;
private Long modelTypeId;
@Excel(name = "模型名称")
@ApiModelProperty("模型名称")
@NotEmpty(message = "模型名称不能为空")
private String name;
@Excel(name = "父模型")
@ApiModelProperty("父模型")
private Long parentId;
@ApiModelProperty("级别")
@Excel(name = "级别", readConverterExp = "一=般两级,虫害下的棉铃虫")
private Long level;
@ApiModelProperty("子模型")
private List<DsModelType> children;
}