先展示结果
对应的数据库字段:
公司表
CREATE TABLE "THTJ_USER"."AUTH_COMPANY"
( "COMPANY_ID" VARCHAR2(32) DEFAULT sys_guid() NOT NULL ENABLE,
"COMPANY_NAME" VARCHAR2(255),
"COMPANY_CREATE_BY" VARCHAR2(32),
"COMPANY_CREATE_TIME" DATE DEFAULT SYSDATE,
"COMPANY_UPDATE_BY" VARCHAR2(32),
"COMPANY_FLAG" NUMBER(1,0) DEFAULT 0,
"COMPANY_UPDATE_TIME" VARCHAR2(32),
"COMPANY_CREDIT_CODE" VARCHAR2(32),
"COMPANY_ORGANIZATION_CODE" VARCHAR2(32),
"COMPANY_LEADER" VARCHAR2(32),
"COMPANY_PARENT_ID" VARCHAR2(32),
"COMPANY_PHONE" VARCHAR2(16),
"COMPANY_STATUS" NUMBER(1,0),
"COMPANY_SORT" NUMBER(38,0),
"DWDM" VARCHAR2(16),
"DWJC" VARCHAR2(64),
"DWLX" NUMBER(4,0),
"BZ" VARCHAR2(32)
) ;
COMMENT ON COLUMN "THTJ_USER"."AUTH_COMPANY"."COMPANY_ID" IS '主表主键';
COMMENT ON COLUMN "THTJ_USER"."AUTH_COMPANY"."COMPANY_NAME" IS '单位全称';
COMMENT ON COLUMN "THTJ_USER"."AUTH_COMPANY"."COMPANY_CREATE_BY" IS '创建人';
COMMENT ON COLUMN "THTJ_USER"."AUTH_COMPANY"."COMPANY_CREATE_TIME" IS '创建时间';
COMMENT ON COLUMN "THTJ_USER"."AUTH_COMPANY"."COMPANY_UPDATE_BY" IS '修改人';
COMMENT ON COLUMN "THTJ_USER"."AUTH_COMPANY"."COMPANY_FLAG" IS '是否删除';
COMMENT ON COLUMN "THTJ_USER"."AUTH_COMPANY"."COMPANY_UPDATE_TIME" IS '修改时间';
COMMENT ON COLUMN "THTJ_USER"."AUTH_COMPANY"."COMPANY_CREDIT_CODE" IS '统一社会信用代码';
COMMENT ON COLUMN "THTJ_USER"."AUTH_COMPANY"."COMPANY_ORGANIZATION_CODE" IS '尚未领取统一社会信用代码的填写原组织机构代码';
COMMENT ON COLUMN "THTJ_USER"."AUTH_COMPANY"."COMPANY_LEADER" IS '单位负责人';
COMMENT ON COLUMN "THTJ_USER"."AUTH_COMPANY"."COMPANY_PARENT_ID" IS '父部门id';
COMMENT ON COLUMN "THTJ_USER"."AUTH_COMPANY"."COMPANY_PHONE" IS '联系电话';
COMMENT ON COLUMN "THTJ_USER"."AUTH_COMPANY"."COMPANY_STATUS" IS '状态(0正常,停用)';
COMMENT ON COLUMN "THTJ_USER"."AUTH_COMPANY"."COMPANY_SORT" IS '单位顺序';
COMMENT ON COLUMN "THTJ_USER"."AUTH_COMPANY"."DWDM" IS '单位代码';
COMMENT ON COLUMN "THTJ_USER"."AUTH_COMPANY"."DWJC" IS '单位简称';
COMMENT ON COLUMN "THTJ_USER"."AUTH_COMPANY"."DWLX" IS '单位类型(1.总公司,2.分公司,3.子公司,4.机保段)';
COMMENT ON COLUMN "THTJ_USER"."AUTH_COMPANY"."BZ" IS '备注';
部门表
CREATE TABLE "THTJ_USER"."AUTH_DEPA"
( "DEPA_ID" VARCHAR2(32) DEFAULT sys_guid() NOT NULL ENABLE,
"DEPA_NAME" VARCHAR2(32),
"COMPANY_ID" VARCHAR2(32),
"PARENT_ID" VARCHAR2(32),
"DEPA_ORDER" NUMBER(38,0),
"DEPA_STATUS" NUMBER(38,0),
"DEPA_LEADER" VARCHAR2(32),
"DEPA_PHONE" VARCHAR2(32),
"CREATE_DATE" DATE DEFAULT SYSDATE,
"UPDATE_DATE" DATE DEFAULT SYSDATE,
"CREATE_BY" VARCHAR2(32),
"UPDATE_BY" VARCHAR2(32),
"DEPA_EMAIL" VARCHAR2(32)
);
COMMENT ON COLUMN "THTJ_USER"."AUTH_DEPA"."DEPA_ID" IS '主表主键';
COMMENT ON COLUMN "THTJ_USER"."AUTH_DEPA"."DEPA_NAME" IS '部门名称';
COMMENT ON COLUMN "THTJ_USER"."AUTH_DEPA"."COMPANY_ID" IS '单位ID';
COMMENT ON COLUMN "THTJ_USER"."AUTH_DEPA"."PARENT_ID" IS '父部门id';
COMMENT ON COLUMN "THTJ_USER"."AUTH_DEPA"."DEPA_ORDER" IS '显示顺序';
COMMENT ON COLUMN "THTJ_USER"."AUTH_DEPA"."DEPA_STATUS" IS '部门状态(0正常,1停用)';
COMMENT ON COLUMN "THTJ_USER"."AUTH_DEPA"."DEPA_LEADER" IS '部门负责人';
COMMENT ON COLUMN "THTJ_USER"."AUTH_DEPA"."DEPA_PHONE" IS '联系电话';
COMMENT ON COLUMN "THTJ_USER"."AUTH_DEPA"."CREATE_DATE" IS '创建时间';
COMMENT ON COLUMN "THTJ_USER"."AUTH_DEPA"."UPDATE_DATE" IS '修改时间';
COMMENT ON COLUMN "THTJ_USER"."AUTH_DEPA"."CREATE_BY" IS '创建人';
COMMENT ON COLUMN "THTJ_USER"."AUTH_DEPA"."UPDATE_BY" IS '修改人';
COMMENT ON COLUMN "THTJ_USER"."AUTH_DEPA"."DEPA_EMAIL" IS '部门邮箱';
部门表实体类
@Data
@TableName(value = "AUTH_DEPA")
public class DepaEntity {
@Schema(description = "主键id")
@TableId(value = "DEPA_ID", type = IdType.AUTO)
private String depaId;
@Schema(description = "部门名称")
private String depaName;
@Schema(description = "公司id")
private String companyId;
@Schema(description = "父类id")
private String parentId;
@Schema(description = "排序")
private Integer depaOrder;
@Schema(description = "状态:0-正常,1-停用")
private Integer depaStatus;
@Schema(description = "部门负责人")
private String depaLeader;
@Schema(description = "电话号码")
private String depaPhone;
@Schema(description = "创建时间")
private Date createDate;
@Schema(description = "修改时间")
private Date updateDate;
@Schema(description = "创建人")
private String createBy;
@Schema(description = "修改人")
private String updateBy;
@Schema(description = "电子邮件")
private String depaEmail;
@TableField(exist = false)
private transient List<DepaEntity> children;//子类
}
公司表实体类
@Data
@TableName(value = "AUTH_COMPANY")
public class AuthCompanyEntity {
@Schema(description = "主键id")
@TableId(value = "COMPANY_ID", type = IdType.AUTO)
private String companyId;
@Schema(description = "单位全称", example = "中铁特货物流股份有限公司")
private String companyName;
@Schema(description = "创建人", example = "张三")
private String companyCreateBy;
@Schema(description = "创建时间", example = "2023:03:13 18:13:58")
private Date companyCreateTime;
@Schema(description = "修改人", example = "李四")
private String companyUpdateBy;
@Schema(description = "是否删除:0-正常 1-异常", example = "0")
private Integer companyFlag;
@Schema(description = "修改时间 ", example = "2023:03:13 18:13:58")
private String companyUpdateTime;
@Schema(description = "统一社会信用代码", example = "BD")
private String companyCreditCode;
@Schema(description = "尚未领取统一社会信用代码的填写原组织机构代码", example = "BD")
private String companyOrganizationCode;
@Schema(description = "单位负责人", example = "张三")
private String companyLeader;
@Schema(description = "父类id")
private String companyParentId;
@Schema(description = "联系电话", example = "18222821082")
private String companyPhone;
@Schema(description = "状态:0-正常,1-异常", example = "0")
private Integer companyStatus;
@Schema(description = "单位顺序", example = "0")
private Integer companySort;
@Schema(description = "公司简称", example = "中铁特货物流股份有限公司")
private String dwjc;
@Schema(description = "单位类型:1.总公司,2.分公司,3.子公司,4.机保段", example = "1")
private Integer dwlx;
@Schema(description = "单位代码", example = "THZGS")
private String dwdm;
@TableField(exist = false)
private List<AuthCompanyEntity> children;//子类
}
返回给前端的实体类
@Data
public class DepaCompanyDto {
@Schema(description = "主键id")
@TableId(value = "COMPANY_ID", type = IdType.AUTO)
private String companyId;
@Schema(description = "单位全称", example = "中铁特货物流股份有限公司")
private String companyName;
@Schema(description = "单位负责人", example = "张三")
private String companyLeader;
@Schema(description = "父类id")
private String companyParentId;
@Schema(description = "状态:0-正常,1-异常", example = "0")
private Integer companyStatus;
@Schema(description = "单位顺序", example = "0")
private Integer companySort;
@Schema(description = "公司简称", example = "中铁特货物流股份有限公司")
private String dwjc;
@TableField(exist = false)
private List<DepaCompanyDto> children;//子类
@TableField(exist = false)
@Schema(description = "部门信息")
private List<DepaEntity> depaIdName;
}
controller层
@RestController
@RequestMapping("/depa")
public class DepaController {
//查询部门树
@PostMapping("/depetree")
public ResponseResult<List<DepaCompanyDto>> depaTree() {
return ResponseResult.success( depaService.depaTree() );
}
}
server接口层
public interface DepaService {
DepaUserIdEntity selectUserIdDepa();
}
serviceImpl实现层
@Slf4j
@Service
public class DepaServiceImpl implements DepaService {
@Autowired
private DepaMapper depaMapper;
@Autowired
public CompanyMapper companyMapper;
@Override
public List<DepaCompanyDto> depaTree() {
//查询所有部门
QueryWrapper<DepaEntity> depaWrapper = new QueryWrapper<>();
depaWrapper.lambda().eq( DepaEntity::getDepaStatus, "0" );
List<DepaEntity> depaEntities = depaMapper.selectList( depaWrapper );
List<DepaEntity> list = depaEntities.stream().filter( parenId -> parenId.getParentId().equals( "0" ) ).map( depa -> {
//进行递归查询
depa.setChildren( getChildrens( depa, depaEntities ) );
return depa;
} ).sorted( (depa1, depa2) -> {
return (depa1.getDepaOrder() == null ? 0 : depa1.getDepaOrder()) - (depa2.getDepaOrder() == null ? 0 : depa2.getDepaOrder());
} ).collect( Collectors.toList() );
//key 是公司id ,list集合是部门信息
Map<String, List<DepaEntity>> collect = list.stream().collect( Collectors.groupingBy( DepaEntity::getCompanyId ) );
//查询公司信息
QueryWrapper<AuthCompanyEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq( AuthCompanyEntity::getCompanyStatus, "0" );
List<AuthCompanyEntity> authCompanyEntities = companyMapper.selectList( queryWrapper );
List<DepaCompanyDto> depaCompanyDtoList = new ArrayList<>();
for (AuthCompanyEntity authCompanyEntity : authCompanyEntities) {
DepaCompanyDto depaCompanyDto = new DepaCompanyDto();
List<DepaEntity> list1 = collect.get( authCompanyEntity.getCompanyId() );
depaCompanyDto.setDepaIdName(list1 );
depaCompanyDto.setCompanyId( authCompanyEntity.getCompanyId() );
depaCompanyDto.setCompanyName( authCompanyEntity.getCompanyName() );
depaCompanyDto.setCompanyLeader( authCompanyEntity.getCompanyLeader() );
depaCompanyDto.setCompanyParentId( authCompanyEntity.getCompanyParentId() );
depaCompanyDto.setCompanyStatus( authCompanyEntity.getCompanyStatus() );
depaCompanyDto.setCompanySort( authCompanyEntity.getCompanySort() );
depaCompanyDto.setDwjc( authCompanyEntity.getDwjc() );
depaCompanyDtoList.add( depaCompanyDto );
}
//对公司进行树的构成
List<DepaCompanyDto> collect1 = depaCompanyDtoList.stream().filter( parenId -> parenId.getCompanyParentId().equals( "0" ) ).map( company -> {
company.setChildren( getChildren( company, depaCompanyDtoList ) );
return company;
} ).sorted( (company1, company2) -> {
return (company1.getCompanySort() == null ? 0 : company1.getCompanySort()) - (company2.getCompanySort() == null ? 0 : company2.getCompanySort());
} ).collect( Collectors.toList() );
return collect1;
}
//对公司进行递归处理生成树
private List<DepaCompanyDto> getChildren(DepaCompanyDto root, List<DepaCompanyDto> all) {
List<DepaCompanyDto> children = all.stream().filter( company -> {
return company.getCompanyParentId().equals( root.getCompanyId() );
} ).map( company -> {
company.setChildren( getChildren( company, all ) );
return company;
} ).sorted( (sort1, sort2) -> {
return (sort1.getCompanySort() == null ? 0 : sort1.getCompanySort()) - (sort2.getCompanySort() == null ? 0 : sort2.getCompanySort());
} ).collect( Collectors.toList() );
return children;
}
//递归找到当前部门的子部门
private List<DepaEntity> getChildrens(DepaEntity root, List<DepaEntity> all) {
List<DepaEntity> children = all.stream().filter( depa -> {
return root.getDepaId().equals( depa.getParentId() );
} ).map( depa -> {
depa.setChildren( getChildrens( depa, all ) );
return depa;
} ).sorted( (order1, order2) -> {
return (order1.getDepaOrder() == null ? 0 : order1.getDepaOrder()) - (order2.getDepaOrder() == null ? 0 : order2.getDepaOrder());
} ).collect( Collectors.toList() );
return children;
}
dao层
公司表的dao层
@Mapper
@Repository
public interface CompanyMapper extends BaseMapper<AuthCompanyEntity> {
}
部门表的dao层
@Mapper
@Repository
public interface DepaMapper extends BaseMapper<DepaEntity> {
}
返回给前端的数据格式
{
"code": 200,
"msg": "请求成功",
"data": [
{
"companyId": "755BF1009FA947ADA39D96A74376218F",
"companyName": "中铁特货物流股份有限公司",
"companyLeader": "张三",
"companyParentId": "0",
"companyStatus": 0,
"companySort": 0,
"dwjc": "中铁特货物流股份有限公司",
"children": [
{
"companyId": "93748A6B1E0343EB9384F9ABE0030181",
"companyName": "中铁特货物流股份有限公司哈尔滨分公司",
"companyLeader": "李四",
"companyParentId": "755BF1009FA947ADA39D96A74376218F",
"companyStatus": 0,
"companySort": 1,
"dwjc": "哈尔滨分公司",
"children": [],
"depaIdName": null
},
{
"companyId": "4226A8808D90497AA261B12C0DA9C80F",
"companyName": "中铁特货物流股份有限公司沈阳分公司",
"companyLeader": "任吉",
"companyParentId": "755BF1009FA947ADA39D96A74376218F",
"companyStatus": 0,
"companySort": 2,
"dwjc": "沈阳分公司",
"children": [],
"depaIdName": null
},
{
"companyId": "1E86CD35E0B6442DA52CAB2B7683D1FC",
"companyName": "中铁特货物流股份有限公司北京分公司",
"companyLeader": "任吉",
"companyParentId": "755BF1009FA947ADA39D96A74376218F",
"companyStatus": 0,
"companySort": 3,
"dwjc": "北京分公司",
"children": [],
"depaIdName": null
},
{
"companyId": "2A6FB43A60BF41DF9BCF57EDDE3002A6",
"companyName": "中铁特货物流股份有限公司呼和浩特分公司",
"companyLeader": null,
"companyParentId": "755BF1009FA947ADA39D96A74376218F",
"companyStatus": 0,
"companySort": 4,
"dwjc": "呼和浩特分公司",
"children": [],
"depaIdName": null
},
{
"companyId": "AB7CC7B5CD86440F8D5C2C83A7C18D0F",
"companyName": "中铁特货物流股份有限公司郑州分公司",
"companyLeader": null,
"companyParentId": "755BF1009FA947ADA39D96A74376218F",
"companyStatus": 0,
"companySort": 5,
"dwjc": "郑州分公司",
"children": [],
"depaIdName": null
},
{
"companyId": "D870E6AB16DF423E886E27F733545B50",
"companyName": "中铁特货物流股份有限公司武汉分公司",
"companyLeader": null,
"companyParentId": "755BF1009FA947ADA39D96A74376218F",
"companyStatus": 0,
"companySort": 6,
"dwjc": "武汉分公司",
"children": [],
"depaIdName": null
},
{
"companyId": "B99373849AD047758FF2B8FC95F8316C",
"companyName": "中铁特货物流股份有限公司西安分公司",
"companyLeader": null,
"companyParentId": "755BF1009FA947ADA39D96A74376218F",
"companyStatus": 0,
"companySort": 7,
"dwjc": "西安分公司",
"children": [],
"depaIdName": null
},
{
"companyId": "7BDA8B1D4F144F3AA9406FB19215824E",
"companyName": "中铁特货物流股份有限公司济南分公司",
"companyLeader": null,
"companyParentId": "755BF1009FA947ADA39D96A74376218F",
"companyStatus": 0,
"companySort": 8,
"dwjc": "济南分公司",
"children": [],
"depaIdName": null
},
{
"companyId": "0F8293742E614DC685A90F3E1961194F",
"companyName": "中铁特货物流股份有限公司上海分公司",
"companyLeader": null,
"companyParentId": "755BF1009FA947ADA39D96A74376218F",
"companyStatus": 0,
"companySort": 9,
"dwjc": "上海分公司",
"children": [],
"depaIdName": null
},
{
"companyId": "08D3E385FBAB4C28876E70D6026F48B4",
"companyName": "中铁特货物流股份有限公司南昌分公司",
"companyLeader": null,
"companyParentId": "755BF1009FA947ADA39D96A74376218F",
"companyStatus": 0,
"companySort": 10,
"dwjc": "南昌分公司",
"children": [],
"depaIdName": null
},
{
"companyId": "8F8AD1CA2BF741CF891E8A4E67DA45F9",
"companyName": "中铁特货物流股份有限公司广州分公司",
"companyLeader": "boss",
"companyParentId": "755BF1009FA947ADA39D96A74376218F",
"companyStatus": 0,
"companySort": 11,
"dwjc": "广州分公司",
"children": [],
"depaIdName": null
},
{
"companyId": "FE4AC62D4EC74F72A0105C259C9CA807",
"companyName": "中铁特货物流股份有限公司南宁分公司",
"companyLeader": null,
"companyParentId": "755BF1009FA947ADA39D96A74376218F",
"companyStatus": 0,
"companySort": 12,
"dwjc": "南宁分公司",
"children": [],
"depaIdName": null
},
{
"companyId": "7F386A42FFD24E4F89FF96EFEB2B73D3",
"companyName": "中铁特货物流股份有限公司成都分公司",
"companyLeader": null,
"companyParentId": "755BF1009FA947ADA39D96A74376218F",
"companyStatus": 0,
"companySort": 13,
"dwjc": "成都分公司",
"children": [],
"depaIdName": null
},
{
"companyId": "2F08F21859A54D87B5DF3DF10BD49575",
"companyName": "中铁特货物流股份有限公司昆明分公司",
"companyLeader": null,
"companyParentId": "755BF1009FA947ADA39D96A74376218F",
"companyStatus": 0,
"companySort": 14,
"dwjc": "昆明分公司",
"children": [],
"depaIdName": null
},
{
"companyId": "2914372AADCE4B2DB555AF62B32129A0",
"companyName": "中铁特货物流股份有限公司兰州分公司",
"companyLeader": null,
"companyParentId": "755BF1009FA947ADA39D96A74376218F",
"companyStatus": 0,
"companySort": 15,
"dwjc": "兰州分公司",
"children": [],
"depaIdName": null
},
{
"companyId": "25A08E074292432DA227AC44F721EDD8",
"companyName": "中铁特货物流股份有限公司乌鲁木齐分公司",
"companyLeader": null,
"companyParentId": "755BF1009FA947ADA39D96A74376218F",
"companyStatus": 0,
"companySort": 16,
"dwjc": "乌鲁木齐分公司",
"children": [],
"depaIdName": [
{
"depaId": "FE9EBDFB0BBB4AD69E92DAFFD75ACCC5",
"depaName": "党务部门",
"companyId": "25A08E074292432DA227AC44F721EDD8",
"parentId": "0",
"depaOrder": 1,
"depaStatus": 0,
"depaLeader": null,
"depaPhone": null,
"createDate": "2023-06-14T06:01:04.000+00:00",
"updateDate": "2023-06-14T06:01:04.000+00:00",
"createBy": null,
"updateBy": null,
"depaEmail": null,
"children": []
}
]
},
{
"companyId": "F01F88BEF0F140F2B18C7CE9ECF3E15D",
"companyName": "中铁特货物流股份有限公司郑州机保段",
"companyLeader": null,
"companyParentId": "755BF1009FA947ADA39D96A74376218F",
"companyStatus": 0,
"companySort": 17,
"dwjc": "郑州机保段",
"children": [],
"depaIdName": null
},
{
"companyId": "D102411391A4474FA0F7898D73CA14E5",
"companyName": "中铁特货物流股份有限公司广州机保段",
"companyLeader": null,
"companyParentId": "755BF1009FA947ADA39D96A74376218F",
"companyStatus": 0,
"companySort": 18,
"dwjc": "广州机保段",
"children": [],
"depaIdName": null
},
{
"companyId": "FFA5C5C641A64388914C89C8CF1FC438",
"companyName": "中铁特货物流股份有限公司柳州机保段",
"companyLeader": null,
"companyParentId": "755BF1009FA947ADA39D96A74376218F",
"companyStatus": 0,
"companySort": 19,
"dwjc": "柳州机保段",
"children": [],
"depaIdName": null
},
{
"companyId": "2A07B08AEE62426D991C3A7986F4BE64",
"companyName": "中铁特货大件运输有限责任公司",
"companyLeader": null,
"companyParentId": "755BF1009FA947ADA39D96A74376218F",
"companyStatus": 0,
"companySort": 20,
"dwjc": "大件物流公司",
"children": [],
"depaIdName": null
},
{
"companyId": "9AD259733E7B4923880077177135798E",
"companyName": "中铁特货汽车物流有限公司",
"companyLeader": "超级管理员",
"companyParentId": "755BF1009FA947ADA39D96A74376218F",
"companyStatus": 0,
"companySort": 21,
"dwjc": "汽车物流公司",
"children": [],
"depaIdName": null
}
],
"depaIdName": [
{
"depaId": "C70E408F9E79462082FF219BE95195CE",
"depaName": "统计部门",
"companyId": "755BF1009FA947ADA39D96A74376218F",
"parentId": "0",
"depaOrder": 1,
"depaStatus": 0,
"depaLeader": null,
"depaPhone": null,
"createDate": "2023-06-14T06:00:26.000+00:00",
"updateDate": "2023-06-14T06:00:26.000+00:00",
"createBy": null,
"updateBy": null,
"depaEmail": null,
"children": [
{
"depaId": "6906EA9BC42E41BFA3835315C298AADB",
"depaName": "销售部门",
"companyId": "755BF1009FA947ADA39D96A74376218F",
"parentId": "C70E408F9E79462082FF219BE95195CE",
"depaOrder": 1,
"depaStatus": 0,
"depaLeader": null,
"depaPhone": null,
"createDate": "2023-06-14T06:00:38.000+00:00",
"updateDate": "2023-06-14T06:00:38.000+00:00",
"createBy": null,
"updateBy": null,
"depaEmail": null,
"children": []
}
]
},
{
"depaId": "92206AABCF014D82A817FA978EA575E4",
"depaName": "财务部门",
"companyId": "755BF1009FA947ADA39D96A74376218F",
"parentId": "0",
"depaOrder": 2,
"depaStatus": 0,
"depaLeader": null,
"depaPhone": null,
"createDate": "2023-06-14T06:00:48.000+00:00",
"updateDate": "2023-06-14T06:00:48.000+00:00",
"createBy": null,
"updateBy": null,
"depaEmail": null,
"children": []
}
]
}
]
}
思维想法
因为公司需要树形结构的而且有多级树形,部门也是树形,也有多级树
第一步,先找出部门当中所有的子父类级别,然后再父类跟自己的子类共有相同的公司id,所以同一个部门当中公司的id是相同,如果有两个树,他们的公司id相同那就是同一个公司的,可以分在同一个组当中。根据公司id进行分组,公司id相同的放在同一个组放在。 然后再查询处所有公司信息,根据查询到的公司id在这个组当中找自己的部门,然后将公司跟部门组合一起,此时部门是树形的,公司不是树形的。最后再将散列的公司重新组装成树形的。
树形结构一般都是先写最下面的树,然后最后分组组装。
简洁版
先组装部门树 ,然后对部门树根据id进行分组,然后将部门跟公司结合,最后将公司重新设置成树形