思路来自掘金中的用户:SHA-1
@Data
public class BudgetSubjectVo implements Serializable {
private static final long serialVersionUID = -58098132454573675L;
/**
* 主键
*/
@ApiModelProperty(value = "主键")
private String id;
/**
* 预算标准主键
*/
@ApiModelProperty(value = "预算标准主键")
private String budgetStandardId;
/**
* 上级科目主键
*/
@ApiModelProperty(value = "上级科目主键")
private String superiorSubjectId;
/**
* 预算科目名称
*/
@ApiModelProperty(value = "预算科目名称")
private String budgetSubjectName;
/**
* 预算调整限制,代码库维护
*/
@ApiModelProperty(value = "预算调整限制")
private String budgetAdjustLimit;
/**
* 预算填写说明
*/
@ApiModelProperty(value = "预算填写说明")
private String budgetWriteExplain;
/**
* 子预算科目
*/
@ApiModelProperty(value = "子预算科目")
private List<BudgetSubjectVo> subSubjectVos;
}
List<BudgetSubjectVo> budgetSubjectVos = budgetSubjectMapper.getBudgetSubjectsById(budgetStandardId);
if (budgetSubjectVos.size() > 0) {
Map<String, BudgetSubjectVo> map = new HashMap<>(budgetSubjectVos.size());
budgetSubjectVos.forEach(e -> map.put(e.getId(), e));
List<BudgetSubjectVo> resVos = new ArrayList<>(budgetSubjectVos.size());
budgetSubjectVos.forEach(e -> {
String superiorSubjectId = e.getSuperiorSubjectId();
if (UsualUtil.strIsNotEmpty(superiorSubjectId)) {
BudgetSubjectVo vo = map.get(superiorSubjectId);
List<BudgetSubjectVo> subSubjectVos = vo.getSubSubjectVos();
if(subSubjectVos == null){
subSubjectVos = new ArrayList<>();
vo.setSubSubjectVos(subSubjectVos);
}
subSubjectVos.add(e);
} else {
resVos.add(e);
}
}
);
return resVos;
}
return null;