1:数据表的设计
CREATE TABLE `fault_category` (
`id` varchar(64) NOT NULL COMMENT '主键id ',
`parent_id` varchar(32) NOT NULL DEFAULT '' COMMENT '父类型id',
`fault_type` varchar(100) NOT NULL COMMENT '故障类型',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
`update_date` datetime DEFAULT NULL COMMENT '更新时间',
`update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
`del_flag` char(1) DEFAULT '0' COMMENT '0:正常 1: 删除',
`tenant_id` varchar(64) NOT NULL DEFAULT '00000000' COMMENT '租户id',
`remarks` varchar(255) DEFAULT NULL COMMENT '备注',
`organization_id` varchar(64) DEFAULT NULL COMMENT '组织id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='故障类型';
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.

2:代码逻辑实现 实体类:
/**
* id
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
private String id;
/**
* 故障类型
*/
@TableField(value = "fault_type")
private String faultType;
/**
* 父级Id
*/
@TableField(value = "parent_id")
private String parentId;
/**
* 下级分类
*/
@TableField(exist = false)
private List<HitchTypeManagement> childMenu=new ArrayList<>();
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
dao层:
service层:
@Override
public List<HitchTypeManagement> getTree() {
//先查询所有
List<HitchTypeManagement> hitchTypeManagementList = hitchTypeMapper.getTree();
System.out.println(hitchTypeManagementList.size());
//声明一个集合,用来保存结果
List<HitchTypeManagement> deptTrees = new ArrayList<>();
//遍历查询出来的结果,确定顶级
for (HitchTypeManagement hitchTypeManagement : hitchTypeManagementList) {
//如果相等为第一级,这里“0”表示顶级父id
if ("0".equals(hitchTypeManagement.getParentId())) {
//打印顶级信息
System.out.println(hitchTypeManagement.getId() + "," + hitchTypeManagement.getFaultType() + "," + hitchTypeManagement.getParentId());
//创建树结构对象
HitchTypeManagement typeTree = new HitchTypeManagement();
//实例树对象
typeTree.setId(hitchTypeManagement.getId());
// 第一级名字(根)
typeTree.setFaultType(hitchTypeManagement.getFaultType());
typeTree.setChildMenu(getDepartmentList(hitchTypeManagement.getId(), hitchTypeManagementList));
//将最终结构封装到集合
deptTrees.add(typeTree);
}
}
return deptTrees;
}
/**
* @param pid 所传为最大父级的id,默认值为 0
* @param hitchTypeManagements
* @return
*/
public List<HitchTypeManagement> getDepartmentList(String pid, List<HitchTypeManagement> hitchTypeManagements) {
List<HitchTypeManagement> typeTrees = new ArrayList<>();
for (HitchTypeManagement hitchTypeManagement : hitchTypeManagements) {
//如果所有pid等于父级id
if (pid.equals(hitchTypeManagement.getParentId())) {
System.out.println(hitchTypeManagement.getId() + "," + hitchTypeManagement.getFaultType() + "," + hitchTypeManagement.getParentId());
HitchTypeManagement typeTree = new HitchTypeManagement();
typeTree.setId(hitchTypeManagement.getId());
// 第一级名字
typeTree.setFaultType(hitchTypeManagement.getFaultType());
//递归
typeTree.setChildMenu(getDepartmentList(hitchTypeManagement.getId(), hitchTypeManagements));
typeTrees.add(typeTree);
}
}
return typeTrees;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
controller层:
测试:


被折叠的 条评论
为什么被折叠?



