后端处理加载组织层级树

需求:

入参:考核批次id(jxkh2200) ,考核表id(jxkh0700)
出参:带有层级的组织数据
1.根据考核表判断考核对象是组织还是人员。通过jxkh07, jxkh02 这两张表查出 考核对象jxkh0214)
2.如果考核对象为人员,则查出人员所在的组织以及他的所有上级组织,如果考核对象为机构,则查出该机构的考核对象以及所有 的上级组织

mapper文件

1.根据考核表判断考核对象是组织还是人员。通过jxkh07, jxkh02 这两张表查出 考核对象jxkh0214)

<select id="loadExamineResultOrgTree" parameterType="string" resultType="string">
    SELECT b.JXKH0214
    FROM JXKH07 a
    inner JOIN jxkh02 b ON a.jxkh0200 = b.jxkh0200
    WHERE a.JXKH0700  = #{JXKH0700}

2.如果考核对象为人员,则查出人员所在的组织以及他的所有上级组织

select c.b00, c.JXKH6504, c.JXKH6501, c.JXKH6502 from ( select DMPARENTCOD from jxkh65_hiber where DMCOD in ( select b.JXKH6618 from jxkh_khdx_ry a left join jxkh66 b on a.A00 = b.a00 where a.JXKH2200 = #{jxkh2200} and a.JXKH0700 = #{jxkh0700}) union select b.JXKH6618 as DMPARENTCOD from jxkh_khdx_ry a left join jxkh66 b on a.A00 = b.a00 where a.JXKH2200 = #{jxkh2200} and a.JXKH0700 = #{jxkh0700}) t left join jxkh65 c on t.DMPARENTCOD = c.B00 where c.jxkh2200 = #{jxkh2200}

3.如果考核对象为机构,则查出该机构的考核对象以及所有 的上级组织

select c.b00, c.JXKH6504, c.JXKH6501, c.JXKH6502 from ( select DMPARENTCOD from jxkh65_hiber where DMCOD in ( select a.b00 from JXKH_KHZBTXSYDW a where a.JXKH2200 = #{jxkh2200} and a.JXKH0700 = #{jxkh0700}) union select a.b00 as DMPARENTCOD from JXKH_KHZBTXSYDW a where a.JXKH2200 = #{jxkh2200} and a.JXKH0700 = #{jxkh0700}) t left join jxkh65 c on t.DMPARENTCOD = c.B00 where c.jxkh2200 = #{jxkh2200

实体类

public class PMLoadOrgTreeVo {

@ApiModelProperty(value = "机构ID")
private String b00;

@ApiModelProperty(value = "父级机构ID")
private String jxkh6504;

@ApiModelProperty(value = "机构名称")
private String jxkh6501;

@ApiModelProperty(value = "机构简称")
private String jxkh6502;

@ApiModelProperty(value = "下级机构子集")
private List<PMLoadOrgTreeVo> children;
}

service实现类

最主要的就是 service实现类了

public List<PMLoadOrgTreeVo> getPeopleTree(String jxkh2200, String jxkh0700) {
    List<PMLoadOrgTreeVo> orgTreeVoList = pmJxkhResultsBrowsingMapper.getPeopleTree(jxkh2200, jxkh0700);
    List<PMLoadOrgTreeVo> tree = orgTreeVoList.stream().filter(father -> {
        List<PMLoadOrgTreeVo> children = orgTreeVoList.stream().filter(child -> father.getB00().equals(child.getJxkh6504())).collect(Collectors.toList());
        father.setChildren(children);
        if(StringUtility.isNullOrEmpty(father.getJxkh6504()) || father.getJxkh6504().equals("00000000-0000-0000-0000-000000000000")){
            return true;
        }
        else{
            return false;
        }
    }).collect(Collectors.toList());
    return tree;
}

需要注意的有:boo为当前id,jxkh6504为父级id,最终的组织根目录id为000000000那个,直到查询到根目录就终止;

controller实现

public JsonObject<List<PMLoadOrgTreeVo>> GetExamineResultOrgTree( String jxkh2200,String jxkh0700) {
    Assert.hasText(jxkh0700, "考核表ID不能为空");
    Assert.hasText(jxkh2200, "考核批次ID不能为空");
    String jxkh0214 = pmJxkh07Service.loadExamineResultOrgTree(jxkh0700);
    //        1为机构,2为人员
    if(jxkh0214.equals(1)){
        List<PMLoadOrgTreeVo> orgTree = pmJxkhResultsBrowsingService.getOrgTree(jxkh2200,jxkh0700);
        return  new JsonSuccessObject<>(orgTree);
    }else {
        List<PMLoadOrgTreeVo> peopleTree = pmJxkhResultsBrowsingService.getPeopleTree(jxkh2200, jxkh0700);
        return new JsonSuccessObject<>(peopleTree);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值