需求:
入参:考核批次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);
}
}