ljz110119 2021-08-04 15:57 采纳率: 100%
浏览 12
已结题

组织是一个对象,组织里有子组织,有的组织没有子组织,子组织也是对象,现在将数据传给前端,前端不能解析,这里该用什么存储?

实体类

@Data
public class OrganizationEntity implements Serializable {
    private Integer id;
    private String organizationName; //部门名称
    private String organizationUuid;
    private String type;// 根据type来判断组织部门:SELF_OU:组织;DEPARTMENT:部门
    private String rootNode;//是否是根节点
    private Integer levelNumber; //部门排序号
    private Integer status;//部门状态:1:启用;0:停用
    private String parentUuid;//父节点id

业务代码
 @ApiOperation(value = "获取组织架构及其员工", notes = "", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @CrossOrigin(origins = "*")//解决跨域问题的标签
    @GetMapping("/findOrganizationAndStaff")
    public R findOrganizationAndStaff(HttpServletRequest request) {
        Map<Object, Object> organizationMap = new HashMap<>();
        //获取所有根组织架构
        List<OrganizationEntity> rootOrganizations = organizationService.getRootOrganization();
        for (OrganizationEntity rootOrganization : rootOrganizations) {
            Map<String, Object> memberMap = new HashMap<>();
            String id = rootOrganization.getId() + "";//组织id
            //获取该组织的管理者
            List<Map<String, Object>> organizationAdmins = organizationService.getOrganizationAdmin(id);
            //组织员工
            List<Map<String, Object>> organizationStaffs = organizationService.getOrganizationStaff(id);
            //展示子节点组织及其管理员和员工
            Map<Object, Object> childOrganization = findChildOrganization(rootOrganization.getOrganizationUuid());
            memberMap.put("admin", organizationAdmins);
            memberMap.put("staff", organizationStaffs);
            memberMap.put("childOrganization", childOrganization);
            organizationMap.put(rootOrganization, memberMap);
        }
        return new R().put("data", organizationMap);

    }

    //递归查询子组织架构及其成员
    private Map<Object, Object> findChildOrganization(String parentUuid) {
        Map<Object, Object> map = new HashMap<>();
        Map<String, Object> memberMap = new HashMap<>();
        List<OrganizationEntity> childOrganizations = organizationService.getChildOrganization(parentUuid);
        for (OrganizationEntity or : childOrganizations) {
            Map<Object, Object> childOrganization = findChildOrganization(or.getOrganizationUuid());
            String id = or.getId() + "";
            //获取该组织的管理者
            List<Map<String, Object>> organizationAdmins = organizationService.getOrganizationAdmin(id);
            //组织员工
            List<Map<String, Object>> organizationStaffs = organizationService.getOrganizationStaff(id);
            memberMap.put("admin", organizationAdmins);
            memberMap.put("staff", organizationStaffs);
            memberMap.put("childOrganization", childOrganization);
            map.put(or, memberMap);
        }
        return map;
    }

用postman测试是这样的结果
"OrganizationEntity(id=143, organizationName=四川省环境政策研究与规划院, organizationUuid=3be864f2c61047c69f7ad2d06eb54f4b, type=DEPARTMENT, rootNode=0, levelNumber=326, status=1, parentUuid=root)": {
"admin": [],
"staff": [],
"childOrganization": {
"OrganizationEntity(id=148, organizationName=能源与气候变化研究中心, organizationUuid=55fb490a57ba449889fa97aa608980be, type=DEPARTMENT, rootNode=0, levelNumber=70, status=1, parentUuid=3be864f2c61047c69f7ad2d06eb54f4b)": {
"admin": [],
"staff": [],
"childOrganization": {}
},
"OrganizationEntity(id=144, organizationName=环境政策研究部, organizationUuid=0fca9e074b454254bbd4ee6890c80ab3, type=DEPARTMENT, rootNode=0, levelNumber=20, status=1, parentUuid=3be864f2c61047c69f7ad2d06eb54f4b)": {
"admin": [],
"staff": [],
"childOrganization": {}
},
"OrganizationEntity(id=151, organizationName=战略规划部, organizationUuid=dab737faca564a30993bdcc2aacca924, type=DEPARTMENT, rootNode=0, levelNumber=40, status=1, parentUuid=3be864f2c61047c69f7ad2d06eb54f4b)": {
"admin": [],
"staff": [],
"childOrganization": {}
},

  • 写回答

1条回答 默认 最新

  • a1767028198 2021-08-04 16:02
    关注

    这种树形结构自己去定义类,map看着又难受,不要的数据还多

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月12日
  • 已采纳回答 8月4日
  • 创建了问题 8月4日

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)