|
|
|
package com.engine.organization.service.impl;
|
|
|
|
|
|
|
|
import com.engine.core.impl.Service;
|
|
|
|
import com.engine.organization.entity.DeleteParam;
|
|
|
|
import com.engine.organization.entity.company.bo.CompBO;
|
|
|
|
import com.engine.organization.entity.company.po.CompPO;
|
|
|
|
import com.engine.organization.entity.department.bo.DepartmentBO;
|
|
|
|
import com.engine.organization.entity.department.po.DepartmentPO;
|
|
|
|
import com.engine.organization.entity.hrmresource.bo.ResourceBO;
|
|
|
|
import com.engine.organization.entity.hrmresource.po.ResourcePO;
|
|
|
|
import com.engine.organization.entity.job.bo.JobBO;
|
|
|
|
import com.engine.organization.entity.job.po.JobPO;
|
|
|
|
import com.engine.organization.entity.resume.po.HrmFamilyInfoPO;
|
|
|
|
import com.engine.organization.entity.resume.po.PersonnelResumeColumn;
|
|
|
|
import com.engine.organization.entity.resume.po.PersonnelResumePO;
|
|
|
|
import com.engine.organization.entity.resume.po.PersonnelResumeTable;
|
|
|
|
import com.engine.organization.entity.searchtree.SearchTree;
|
|
|
|
import com.engine.organization.entity.searchtree.SearchTreeParams;
|
|
|
|
import com.engine.organization.enums.ModuleTypeEnum;
|
|
|
|
import com.engine.organization.mapper.comp.CompMapper;
|
|
|
|
import com.engine.organization.mapper.department.DepartmentMapper;
|
|
|
|
import com.engine.organization.mapper.job.JobMapper;
|
|
|
|
import com.engine.organization.mapper.resource.HrmResourceMapper;
|
|
|
|
import com.engine.organization.service.PersonnelResumeService;
|
|
|
|
import com.engine.organization.util.MenuBtn;
|
|
|
|
import com.engine.organization.util.OrganizationAssert;
|
|
|
|
import com.engine.organization.util.db.MapperProxyFactory;
|
|
|
|
import com.engine.organization.util.detach.DetachUtil;
|
|
|
|
import com.engine.organization.util.page.PageUtil;
|
|
|
|
import com.engine.organization.util.tree.SearchTreeUtil;
|
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
|
import weaver.general.StringUtil;
|
|
|
|
import weaver.general.Util;
|
|
|
|
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @author:dxfeng
|
|
|
|
* @createTime: 2022/12/28
|
|
|
|
* @version: 1.0
|
|
|
|
*/
|
|
|
|
public class PersonnelResumeServiceImpl extends Service implements PersonnelResumeService {
|
|
|
|
|
|
|
|
|
|
|
|
private DepartmentMapper getDepartmentMapper() {
|
|
|
|
return MapperProxyFactory.getProxy(DepartmentMapper.class);
|
|
|
|
}
|
|
|
|
|
|
|
|
private CompMapper getCompMapper() {
|
|
|
|
return MapperProxyFactory.getProxy(CompMapper.class);
|
|
|
|
}
|
|
|
|
|
|
|
|
private JobMapper getJobMapper() {
|
|
|
|
return MapperProxyFactory.getProxy(JobMapper.class);
|
|
|
|
}
|
|
|
|
|
|
|
|
private HrmResourceMapper getHrmResourceMapper() {
|
|
|
|
return MapperProxyFactory.getProxy(HrmResourceMapper.class);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Map<String, Object> getSearchTree(SearchTreeParams params) {
|
|
|
|
String keyword = params.getKeyword();
|
|
|
|
String id = params.getId();
|
|
|
|
String type = Util.null2String(params.getType());
|
|
|
|
List<SearchTree> treeList = getFilterDatas(id, type, keyword);
|
|
|
|
return SearchTreeUtil.getSearchTree(type, treeList);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Map<String, Object> getResumeList(Integer uId) {
|
|
|
|
Map<String, Object> resultMap = new HashMap<>();
|
|
|
|
// 根据ID查询用户信息
|
|
|
|
PersonnelResumePO personnelResumePO = getHrmResourceMapper().getPersonnelResumeById(uId);
|
|
|
|
OrganizationAssert.notNull(personnelResumePO, "未找到对应人员");
|
|
|
|
resultMap.put("lastName", Util.null2String(personnelResumePO.getLastName()));
|
|
|
|
resultMap.put("sex", Util.null2String(personnelResumePO.getSex()));
|
|
|
|
resultMap.put("birthday", Util.null2String(personnelResumePO.getBirthday()));
|
|
|
|
resultMap.put("image", Util.null2String(personnelResumePO.getImage()));
|
|
|
|
resultMap.put("native", Util.null2String(personnelResumePO.getNativePlace()));
|
|
|
|
resultMap.put("politics", Util.null2String(personnelResumePO.getPolitics()));
|
|
|
|
resultMap.put("department", Util.null2String(personnelResumePO.getDepartment()));
|
|
|
|
resultMap.put("marriage", Util.null2String(personnelResumePO.getMarriage()));
|
|
|
|
resultMap.put("jobtitle", Util.null2String(personnelResumePO.getJobTitle()));
|
|
|
|
resultMap.put("companystartdate", Util.null2String(personnelResumePO.getCompanyStartDate()));
|
|
|
|
resultMap.put("workstartdate", Util.null2String(personnelResumePO.getWorkStartDate()));
|
|
|
|
resultMap.put("idCard", Util.null2String(personnelResumePO.getIdCard()));
|
|
|
|
resultMap.put("address", Util.null2String(personnelResumePO.getAddress()));
|
|
|
|
resultMap.put("telephone", Util.null2String(personnelResumePO.getTelephone()));
|
|
|
|
resultMap.put("email", Util.null2String(personnelResumePO.getEmail()));
|
|
|
|
resultMap.put("selfStatement", "");
|
|
|
|
|
|
|
|
// 简历相关表格,待拓展
|
|
|
|
List<PersonnelResumeTable> tables = new ArrayList<>();
|
|
|
|
List<PersonnelResumeColumn> insurancesTitles = new ArrayList<>();
|
|
|
|
List<PersonnelResumeColumn> familyInfoTitles = new ArrayList<>();
|
|
|
|
|
|
|
|
List<PersonnelResumeColumn> insuranceDatas = new ArrayList<>();
|
|
|
|
insurancesTitles.add(PersonnelResumeColumn.builder().name("首次参保时间").colspans(2).rowspans(1).build());
|
|
|
|
insurancesTitles.add(PersonnelResumeColumn.builder().name("养老保险").colspans(1).rowspans(1).build());
|
|
|
|
insurancesTitles.add(PersonnelResumeColumn.builder().name("医疗保险").colspans(1).rowspans(1).build());
|
|
|
|
insurancesTitles.add(PersonnelResumeColumn.builder().name("失业保险").colspans(1).rowspans(1).build());
|
|
|
|
insurancesTitles.add(PersonnelResumeColumn.builder().name("住房公积金").colspans(1).rowspans(1).build());
|
|
|
|
insurancesTitles.add(PersonnelResumeColumn.builder().name("企业年金").colspans(1).rowspans(1).build());
|
|
|
|
|
|
|
|
insuranceDatas.add(PersonnelResumeColumn.builder().value("2022-10-02").colspans(2).rowspans(1).build());
|
|
|
|
insuranceDatas.add(PersonnelResumeColumn.builder().value("80").colspans(1).rowspans(1).build());
|
|
|
|
insuranceDatas.add(PersonnelResumeColumn.builder().value("36").colspans(1).rowspans(1).build());
|
|
|
|
insuranceDatas.add(PersonnelResumeColumn.builder().value("360").colspans(1).rowspans(1).build());
|
|
|
|
insuranceDatas.add(PersonnelResumeColumn.builder().value("180").colspans(1).rowspans(1).build());
|
|
|
|
insuranceDatas.add(PersonnelResumeColumn.builder().value("20000").colspans(1).rowspans(1).build());
|
|
|
|
tables.add(PersonnelResumeTable.builder().title("二、社会保险及住房公积金缴纳情况(单位/元)").columns(insurancesTitles).datas(Collections.singletonList(insuranceDatas)).build());
|
|
|
|
|
|
|
|
// 家庭情况
|
|
|
|
familyInfoTitles.add(PersonnelResumeColumn.builder().name("关系").colspans(1).rowspans(1).build());
|
|
|
|
familyInfoTitles.add(PersonnelResumeColumn.builder().name("姓名").colspans(1).rowspans(1).build());
|
|
|
|
familyInfoTitles.add(PersonnelResumeColumn.builder().name("工作单位").colspans(2).rowspans(1).build());
|
|
|
|
familyInfoTitles.add(PersonnelResumeColumn.builder().name("职务").colspans(1).rowspans(1).build());
|
|
|
|
familyInfoTitles.add(PersonnelResumeColumn.builder().name("住址").colspans(2).rowspans(1).build());
|
|
|
|
|
|
|
|
|
|
|
|
List<HrmFamilyInfoPO> hrmFamilyInfoByUser = getHrmResourceMapper().getHrmFamilyInfoByUser(uId);
|
|
|
|
if (CollectionUtils.isEmpty(hrmFamilyInfoByUser)) {
|
|
|
|
hrmFamilyInfoByUser.add(new HrmFamilyInfoPO());
|
|
|
|
}
|
|
|
|
List<List<PersonnelResumeColumn>> objects = new ArrayList<>();
|
|
|
|
for (HrmFamilyInfoPO hrmFamilyInfoPO : hrmFamilyInfoByUser) {
|
|
|
|
List<PersonnelResumeColumn> familyInfoDatas = new ArrayList<>();
|
|
|
|
familyInfoDatas.add(PersonnelResumeColumn.builder().value(hrmFamilyInfoPO.getTitle()).colspans(1).rowspans(1).build());
|
|
|
|
familyInfoDatas.add(PersonnelResumeColumn.builder().value(hrmFamilyInfoPO.getMember()).colspans(1).rowspans(1).build());
|
|
|
|
familyInfoDatas.add(PersonnelResumeColumn.builder().value(hrmFamilyInfoPO.getCompany()).colspans(2).rowspans(1).build());
|
|
|
|
familyInfoDatas.add(PersonnelResumeColumn.builder().value(hrmFamilyInfoPO.getJobTitle()).colspans(1).rowspans(1).build());
|
|
|
|
familyInfoDatas.add(PersonnelResumeColumn.builder().value(hrmFamilyInfoPO.getAddress()).colspans(2).rowspans(1).build());
|
|
|
|
objects.add(familyInfoDatas);
|
|
|
|
}
|
|
|
|
tables.add(PersonnelResumeTable.builder().title("三、家庭成员信息(包括父母、配偶、子女)").columns(familyInfoTitles).datas(objects).build());
|
|
|
|
|
|
|
|
|
|
|
|
resultMap.put("tables", tables);
|
|
|
|
|
|
|
|
return resultMap;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Map<String, Object> hasRight() {
|
|
|
|
Map<String, Object> resultMap = new HashMap<>();
|
|
|
|
resultMap.put("hasRight", true);
|
|
|
|
ArrayList<MenuBtn> topMenuList = new ArrayList<>();
|
|
|
|
ArrayList<MenuBtn> rightMenuList = new ArrayList<>();
|
|
|
|
// 新增
|
|
|
|
topMenuList.add(MenuBtn.builder().isBatch("0").isTop("1").menuFun("screening").menuIcon("icon-coms-man").menuName("人员筛选").type("BTN_Screening").build());
|
|
|
|
topMenuList.add(MenuBtn.builder().isBatch("0").isTop("1").menuFun("currentExport").menuIcon("icon-coms-export").menuName("导出当前").type("BTN_CurrentExport").build());
|
|
|
|
topMenuList.add(MenuBtn.builder().isBatch("0").isTop("1").menuFun("mergeExport").menuIcon("icon-coms02-coms2-Batch-export").menuName("全部导出(合并)").type("BTN_MergeExport").build());
|
|
|
|
topMenuList.add(MenuBtn.builder().isBatch("0").isTop("1").menuFun("allExport").menuIcon("icon-coms02-coms2-export").menuName("全部导出").type("BTN_AllExport").build());
|
|
|
|
|
|
|
|
resultMap.put("topMenu", topMenuList);
|
|
|
|
// 新增
|
|
|
|
rightMenuList.add(MenuBtn.builder().isBatch("0").isTop("0").menuFun("screening").menuIcon("icon-coms-man").menuName("人员筛选").type("BTN_Screening").build());
|
|
|
|
rightMenuList.add(MenuBtn.builder().isBatch("0").isTop("0").menuFun("currentExport").menuIcon("icon-coms-export").menuName("导出当前").type("BTN_CurrentExport").build());
|
|
|
|
rightMenuList.add(MenuBtn.builder().isBatch("0").isTop("0").menuFun("mergeExport").menuIcon("icon-coms02-coms2-Batch-export").menuName("全部导出(合并)").type("BTN_MergeExport").build());
|
|
|
|
rightMenuList.add(MenuBtn.builder().isBatch("0").isTop("0").menuFun("allExport").menuIcon("icon-coms02-coms2-export").menuName("全部导出").type("BTN_AllExport").build());
|
|
|
|
|
|
|
|
resultMap.put("rightMenu", rightMenuList);
|
|
|
|
return resultMap;
|
|
|
|
}
|
|
|
|
|
|
|
|
public List<SearchTree> getFilterDatas(String id, String type, String keyword) {
|
|
|
|
List<SearchTree> searchTree = new ArrayList<>();
|
|
|
|
// 通过分部、公司 组装数据
|
|
|
|
if (StringUtil.isEmpty(id) || ModuleTypeEnum.subcompanyfielddefined.getValue().toString().equals(type)) {
|
|
|
|
Integer subCompanyId1 = StringUtil.isEmpty(id) ? null : Integer.parseInt(id);
|
|
|
|
DepartmentPO departmentBuild = DepartmentPO.builder().departmentName(keyword).subCompanyId1(subCompanyId1).canceled(0).build();
|
|
|
|
CompPO compBuild = CompPO.builder().subCompanyName(keyword).supSubComId(subCompanyId1).canceled(0).build();
|
|
|
|
// 所属分部下的岗位
|
|
|
|
JobPO jobBuild = JobPO.builder().jobTitleName(keyword).ecCompany(subCompanyId1).forbiddenTag(0).build();
|
|
|
|
ResourcePO resourcePO = ResourcePO.builder().lastName(keyword).subcompanyid1(subCompanyId1).build();
|
|
|
|
searchTree = buildTreeByCompAndDept(departmentBuild, compBuild, jobBuild, resourcePO);
|
|
|
|
} else if (ModuleTypeEnum.departmentfielddefined.getValue().toString().equals(type)) {
|
|
|
|
Integer departmentId = Integer.parseInt(id);
|
|
|
|
DepartmentPO departmentBuild = DepartmentPO.builder().departmentName(keyword).supDepId(departmentId).canceled(0).build();
|
|
|
|
// 所属分部下的岗位
|
|
|
|
JobPO jobBuild = JobPO.builder().jobTitleName(keyword).ecDepartment(departmentId).forbiddenTag(0).build();
|
|
|
|
ResourcePO resourcePO = ResourcePO.builder().lastName(keyword).departmentid(departmentId).build();
|
|
|
|
|
|
|
|
searchTree = buildTreeByDeptAndJob(departmentBuild, jobBuild, resourcePO);
|
|
|
|
|
|
|
|
} else if (ModuleTypeEnum.jobfielddefined.getValue().toString().equals(type)) {
|
|
|
|
Long jobId = Long.parseLong(id);
|
|
|
|
JobPO jobById = getJobMapper().getJobById(jobId);
|
|
|
|
ResourcePO resourcePO = ResourcePO.builder().lastName(keyword).subcompanyid1(jobById.getEcCompany()).departmentid(jobById.getEcDepartment()).jobtitle(jobById.getEcJobTitle()).build();
|
|
|
|
List<ResourcePO> resourcePOS = getHrmResourceMapper().listByFilter(resourcePO);
|
|
|
|
searchTree = SearchTreeUtil.builderTreeMode(ResourceBO.buildSetToSearchTree(resourcePOS));
|
|
|
|
}
|
|
|
|
return searchTree;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 分部、部门 组装左侧树
|
|
|
|
*
|
|
|
|
* @param departmentBuild
|
|
|
|
* @param compBuild
|
|
|
|
* @param jobBuild
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
private List<SearchTree> buildTreeByCompAndDept(DepartmentPO departmentBuild, CompPO compBuild, JobPO jobBuild, ResourcePO resourcePO) {
|
|
|
|
// 查询人员数据
|
|
|
|
List<ResourcePO> resourcePOS = getHrmResourceMapper().listByFilter(resourcePO);
|
|
|
|
Set<JobPO> builderJobs = new HashSet<>();
|
|
|
|
|
|
|
|
// 补充人员所有岗位,关联人员及聚才林岗位
|
|
|
|
for (ResourcePO resource : resourcePOS) {
|
|
|
|
JobPO jobByResource = getJobMapper().getJobByResource(resource);
|
|
|
|
if (null != jobByResource) {
|
|
|
|
resource.setJobId(jobByResource.getId());
|
|
|
|
builderJobs.add(jobByResource);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
List<SearchTree> resourceTrees = SearchTreeUtil.builderTreeMode(ResourceBO.buildSetToSearchTree(resourcePOS));
|
|
|
|
|
|
|
|
|
|
|
|
List<JobPO> jobPOS = getJobMapper().listPOsByFilter(jobBuild);
|
|
|
|
new DetachUtil(user).filterJobList(jobPOS);
|
|
|
|
List<DepartmentPO> filterDeparts = getDepartmentMapper().listByFilter(departmentBuild, "showorder");
|
|
|
|
new DetachUtil(user).filterDepartmentList(filterDeparts);
|
|
|
|
// 添加父级岗位
|
|
|
|
builderJobs.addAll(jobPOS);
|
|
|
|
// 添加岗位的上级部门或分部
|
|
|
|
List<SearchTree> jobTrees = SearchTreeUtil.builderTreeMode(JobBO.buildSetToSearchTree(builderJobs), resourceTrees);
|
|
|
|
String parentDeptS = jobTrees.stream().map(SearchTree::getParentComp).collect(Collectors.joining(","));
|
|
|
|
if (!StringUtil.isEmpty(parentDeptS)) {
|
|
|
|
// 兼容SQLServer每次最多in,2100条数据
|
|
|
|
List<Long> ids = DeleteParam.builder().ids(parentDeptS).build().getIds();
|
|
|
|
int ceilCount = (int) Math.ceil((double) ids.size() / 1000);
|
|
|
|
List<DepartmentPO> departmentsByIds = new ArrayList<>();
|
|
|
|
for (int i = 1; i < ceilCount + 1; i++) {
|
|
|
|
List<Long> longs = PageUtil.subList(i, 1000, ids);
|
|
|
|
List<DepartmentPO> departmentsById = getDepartmentMapper().getDeptsByIds(longs);
|
|
|
|
if (CollectionUtils.isNotEmpty(departmentsById)) {
|
|
|
|
departmentsByIds.addAll(departmentsById);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(departmentsByIds)) {
|
|
|
|
filterDeparts.addAll(departmentsByIds);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 查询分部信息
|
|
|
|
List<CompPO> filterComps = getCompMapper().listByFilter(compBuild, "showorder");
|
|
|
|
new DetachUtil(user).filterCompanyList(filterComps);
|
|
|
|
Set<DepartmentPO> builderDeparts = new HashSet<>();
|
|
|
|
for (DepartmentPO departmentPO : filterDeparts) {
|
|
|
|
buildParentDepts(departmentPO, builderDeparts);
|
|
|
|
}
|
|
|
|
List<SearchTree> departmentList = DepartmentBO.buildSetToSearchTree(builderDeparts);
|
|
|
|
List<SearchTree> deptTrees = SearchTreeUtil.builderTreeMode(departmentList);
|
|
|
|
List<SearchTree> searchTrees = SearchTreeUtil.builderTreeMode(departmentList, jobTrees);
|
|
|
|
// 添加部门的上级分部
|
|
|
|
String parentCompS = deptTrees.stream().map(SearchTree::getParentComp).collect(Collectors.joining(","));
|
|
|
|
if (!StringUtil.isEmpty(parentCompS)) {
|
|
|
|
List<CompPO> compsByIds = getCompMapper().getCompsByIds(DeleteParam.builder().ids(parentCompS).build().getIds());
|
|
|
|
if (CollectionUtils.isNotEmpty(compsByIds)) {
|
|
|
|
filterComps.addAll(compsByIds);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
List<CompPO> allCompanys = getCompMapper().listAll("showorder");
|
|
|
|
new DetachUtil(user).filterCompanyList(allCompanys);
|
|
|
|
Map<Integer, CompPO> allMaps = allCompanys.stream().collect(Collectors.toMap(CompPO::getId, item -> item, (k1, k2) -> k1));
|
|
|
|
Set<CompPO> builderComps = new HashSet<>();
|
|
|
|
for (CompPO compPO : filterComps) {
|
|
|
|
buildParentComps(compPO, builderComps, allMaps);
|
|
|
|
}
|
|
|
|
return SearchTreeUtil.builderTreeMode(CompBO.buildSetToSearchTree(builderComps), searchTrees);
|
|
|
|
}
|
|
|
|
|
|
|
|
private List<SearchTree> buildTreeByDeptAndJob(DepartmentPO departmentBuild, JobPO jobBuild, ResourcePO resourcePO) {
|
|
|
|
// 查询人员数据
|
|
|
|
List<ResourcePO> resourcePOS = getHrmResourceMapper().listByFilter(resourcePO);
|
|
|
|
Set<JobPO> builderJobs = new HashSet<>();
|
|
|
|
|
|
|
|
// 补充人员所有岗位,关联人员及聚才林岗位
|
|
|
|
for (ResourcePO resource : resourcePOS) {
|
|
|
|
JobPO jobByResource = getJobMapper().getJobByResource(resource);
|
|
|
|
if (null != jobByResource) {
|
|
|
|
resource.setJobId(jobByResource.getId());
|
|
|
|
builderJobs.add(jobByResource);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
List<SearchTree> resourceTrees = SearchTreeUtil.builderTreeMode(ResourceBO.buildSetToSearchTree(resourcePOS));
|
|
|
|
|
|
|
|
List<JobPO> jobPOS = getJobMapper().listPOsByFilter(jobBuild);
|
|
|
|
List<DepartmentPO> filterDeparts = getDepartmentMapper().listByFilter(departmentBuild, "showorder");
|
|
|
|
// 添加父级岗位
|
|
|
|
builderJobs.addAll(jobPOS);
|
|
|
|
// 添加岗位的上级部门或分部
|
|
|
|
List<SearchTree> jobTrees = SearchTreeUtil.builderTreeMode(JobBO.buildSetToSearchTree(builderJobs), resourceTrees);
|
|
|
|
String parentDeptS = jobTrees.stream().map(SearchTree::getParentComp).collect(Collectors.joining(","));
|
|
|
|
if (!StringUtil.isEmpty(parentDeptS)) {
|
|
|
|
// 兼容SQLServer每次最多in,2100条数据
|
|
|
|
List<Long> ids = (List<Long>) DeleteParam.builder().ids(parentDeptS).build().getIds();
|
|
|
|
int ceilCount = (int) Math.ceil((double) ids.size() / 1000);
|
|
|
|
List<DepartmentPO> departmentsByIds = new ArrayList<>();
|
|
|
|
for (int i = 0; i < ceilCount - 1; i++) {
|
|
|
|
List<DepartmentPO> departmentsById = getDepartmentMapper().getDeptsByIds(PageUtil.subList(i, 1000, ids));
|
|
|
|
if (CollectionUtils.isNotEmpty(departmentsById)) {
|
|
|
|
departmentsByIds.addAll(departmentsById);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(departmentsByIds)) {
|
|
|
|
filterDeparts.addAll(departmentsByIds);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 查询分部信息
|
|
|
|
Set<DepartmentPO> builderDeparts = new HashSet<>();
|
|
|
|
for (DepartmentPO departmentPO : filterDeparts) {
|
|
|
|
buildParentDepts(departmentPO, builderDeparts);
|
|
|
|
}
|
|
|
|
return SearchTreeUtil.builderTreeMode(DepartmentBO.buildSetToSearchTree(builderDeparts), jobTrees);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 添加查询元素的父级元素
|
|
|
|
*
|
|
|
|
* @param departmentPO
|
|
|
|
* @param builderDeparts
|
|
|
|
*/
|
|
|
|
private void buildParentDepts(DepartmentPO departmentPO, Set<DepartmentPO> builderDeparts) {
|
|
|
|
builderDeparts.add(departmentPO);
|
|
|
|
if (SearchTreeUtil.isTop(departmentPO.getSupDepId())) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
DepartmentPO parentDept = getDepartmentMapper().getDeptById(departmentPO.getSupDepId());
|
|
|
|
if (null != parentDept) {
|
|
|
|
buildParentDepts(parentDept, builderDeparts);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 添加查询元素的父级元素
|
|
|
|
*
|
|
|
|
* @param compPO
|
|
|
|
* @param builderComps
|
|
|
|
*/
|
|
|
|
private void buildParentComps(CompPO compPO, Set<CompPO> builderComps, Map<Integer, CompPO> allMaps) {
|
|
|
|
builderComps.add(compPO);
|
|
|
|
CompPO parentComp = allMaps.get(compPO.getSupSubComId());
|
|
|
|
if (null != parentComp) {
|
|
|
|
buildParentComps(parentComp, builderComps, allMaps);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|