公司跟部门表结合的树形结构

先展示结果

对应的数据库字段:

公司表

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进行分组,然后将部门跟公司结合,最后将公司重新设置成树形

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值