Merge remote-tracking branch 'origin/develop' into feature/ml

pull/217/head
Mlin 2 years ago
commit e0187b7337

@ -5,13 +5,14 @@ import com.engine.organization.entity.department.param.DeptSearchParam;
import com.engine.organization.entity.department.po.DepartmentPO;
import com.engine.organization.entity.department.vo.SingleDeptTreeVO;
import com.engine.organization.entity.searchtree.SearchTree;
import com.engine.organization.mapper.comp.CompMapper;
import com.engine.organization.mapper.department.DepartmentMapper;
import com.engine.organization.mapper.employee.EmployeeMapper;
import com.engine.organization.util.db.MapperProxyFactory;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import weaver.general.Util;
import weaver.hrm.company.DepartmentComInfo;
import weaver.hrm.company.SubCompanyComInfo;
import weaver.hrm.resource.ResourceComInfo;
import java.util.*;
import java.util.stream.Collectors;
@ -24,10 +25,25 @@ import java.util.stream.Collectors;
**/
public class DepartmentBO {
public static List<DepartmentListDTO> buildDeptDTOList(Collection<DepartmentPO> list) {
/**
*
* @param list
* @return
*/
public static List<DepartmentListDTO> buildDeptDTOShowNames(Collection<DepartmentListDTO> list) {
SubCompanyComInfo subCompanyComInfo = new SubCompanyComInfo();
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
return list.stream().map(e -> {
e.setSubCompanyName(0 == e.getSubCompanyId1() ? "" : subCompanyComInfo.getSubCompanyname(Util.null2String(e.getSubCompanyId1())));
e.setSupDepName(0 == e.getSupDepId() ? "" : departmentComInfo.getDepartmentname(Util.null2String(e.getSupDepId())));
e.setBmfzr(getEmployeeNameById(e.getId()));
return e;
}
).collect(Collectors.toList());
}
public static List<DepartmentListDTO> buildDeptDTOList(Collection<DepartmentPO> list) {
// 递归添加父级数据
Map<Integer, DepartmentPO> poMaps = list.stream().collect(Collectors.toMap(DepartmentPO::getId, item -> item));
List<DepartmentListDTO> dtoList = list.stream().map(e ->
DepartmentListDTO
.builder()
@ -36,10 +52,7 @@ public class DepartmentBO {
.departmentName(e.getDepartmentName())
.departmentCode(e.getDepartmentCode())
.subCompanyId1(e.getSubCompanyId1())
.subCompanyName(0 == e.getSubCompanyId1() ? "" : MapperProxyFactory.getProxy(CompMapper.class).listById(e.getSubCompanyId1()).getSubCompanyName())
.supDepId(e.getSupDepId())
.supDepName(null == poMaps.get(e.getSupDepId()) ? "" : poMaps.get(e.getSupDepId()).getDepartmentName())
.bmfzr(getEmployeeNameById(e.getId()))
.showOrder(null == e.getShowOrder() ? 0 : e.getShowOrder())
.canceled(null == e.getCanceled() ? 0 : e.getCanceled())
.build()).collect(Collectors.toList());
@ -162,11 +175,21 @@ public class DepartmentBO {
if (StringUtils.isBlank(departmentPrincipal) || "$NULL$".equalsIgnoreCase(departmentPrincipal)) {
return "";
}
List<Long> collect = Arrays.stream(departmentPrincipal.split(",")).map(Long::parseLong).collect(Collectors.toList());
List<String> collect = Arrays.stream(departmentPrincipal.split(",")).collect(Collectors.toList());
if (CollectionUtils.isEmpty(collect)) {
return "";
}
List<String> employeeNameById = MapperProxyFactory.getProxy(EmployeeMapper.class).getEmployeeNameById(collect);
List<String> employeeNameById = new ArrayList<>();
try {
for (String aLong : collect) {
String lastname = new ResourceComInfo().getLastname(Util.null2String(aLong));
if (StringUtils.isNotBlank(lastname)) {
employeeNameById.add(lastname);
}
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return StringUtils.join(employeeNameById, ",");
}

@ -142,7 +142,7 @@ public class JobBO {
}
}
public static List<SearchTree> buildSetToSearchTree(Set<JobPO> builderJobs) {
public static List<SearchTree> buildSetToSearchTree(Collection<JobPO> builderJobs) {
return builderJobs.stream().map(item -> {
SearchTree tree = new SearchTree();
tree.setCanClick(true);

@ -17,8 +17,16 @@
<select id="selectFilterDatas" resultType="com.engine.organization.entity.hrmresource.po.ResourcePO">
SELECT DISTINCT subcompanyid1, departmentid, jobtitle
from hrmresource where status &lt; 4
select distinct a.subcompanyid1, a.departmentid, a.jobtitle
from hrmresource a
where a.status &lt; 4
and not exists
(select 1
from jcl_org_job b
where a.subcompanyid1 = b.ec_company
and a.departmentid = b.ec_department
and a.jobtitle = b.ec_jobtitle
and b.delete_type = 0)
</select>
<select id="listByFilter" resultMap="HrmResourceMap">
select id, subcompanyid1 , departmentid , jobtitle , lastname , dspOrder from hrmresource t

@ -142,13 +142,13 @@ public class DepartmentServiceImpl extends Service implements DepartmentService
// 添加父级元素
List<DepartmentListDTO> compListDTOS = DepartmentBO.buildDeptDTOList(allList, filterDeptPOs);
List<DepartmentListDTO> subList = PageUtil.subList(param.getCurrent(), param.getPageSize(), compListDTOS);
pageInfos = new PageInfo<>(subList, DepartmentListDTO.class);
pageInfos = new PageInfo<>(DepartmentBO.buildDeptDTOShowNames(subList), DepartmentListDTO.class);
pageInfos.setTotal(compListDTOS.size());
} else {
// 组合list
List<DepartmentListDTO> compListDTOS = DepartmentBO.buildDeptDTOList(allList);
List<DepartmentListDTO> subList = PageUtil.subList(param.getCurrent(), param.getPageSize(), compListDTOS);
pageInfos = new PageInfo<>(subList, DepartmentListDTO.class);
pageInfos = new PageInfo<>(DepartmentBO.buildDeptDTOShowNames(subList), DepartmentListDTO.class);
pageInfos.setTotal(compListDTOS.size());
}

@ -775,12 +775,8 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
} else if (TYPE_JOB.equals(type)) {
// 查询部门信息
List<JobPO> filterDeparts = getJobMapper().listPOsByFilter(JobPO.builder().jobTitleName(keyword).parentJob(Long.parseLong(id)).forbiddenTag(0).build());
Set<JobPO> builderJobs = new HashSet<>();
for (JobPO departmentPO : filterDeparts) {
buildParentJobs(departmentPO, builderJobs);
}
searchTree = SearchTreeUtil.builderTreeMode(JobBO.buildSetToSearchTree(builderJobs));
List<JobPO> filterJobs = getJobMapper().listPOsByFilter(JobPO.builder().jobTitleName(keyword).parentJob(Long.parseLong(id)).forbiddenTag(0).build());
searchTree = SearchTreeUtil.builderTreeMode(JobBO.buildSetToSearchTree(filterJobs));
}
return searchTree;
}
@ -798,13 +794,8 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
new DetachUtil(user).filterJobList(jobPOS);
List<DepartmentPO> filterDeparts = getDepartmentMapper().listByFilter(departmentBuild, "showorder");
new DetachUtil(user).filterDepartmentList(filterDeparts);
// 添加父级岗位
Set<JobPO> builderJobs = new HashSet<>();
for (JobPO jobPO : jobPOS) {
buildParentJobs(jobPO, builderJobs);
}
// 添加岗位的上级部门或分部
List<SearchTree> jobTrees = SearchTreeUtil.builderTreeMode(JobBO.buildSetToSearchTree(builderJobs));
List<SearchTree> jobTrees = SearchTreeUtil.builderTreeMode(JobBO.buildSetToSearchTree(jobPOS));
String parentDeptS = jobTrees.stream().map(SearchTree::getParentComp).collect(Collectors.joining(","));
if (!StringUtil.isEmpty(parentDeptS)) {
// 兼容SQLServer每次最多in,2100条数据
@ -829,8 +820,10 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
List<CompPO> filterComps = getCompMapper().listByFilter(compBuild, "showorder");
new DetachUtil(user).filterCompanyList(filterComps);
Set<DepartmentPO> builderDeparts = new HashSet<>();
Map<Integer, DepartmentPO> departmentPOMap = getDepartmentMapper().listAll("showorder").stream().collect(Collectors.toMap(DepartmentPO::getId, item -> item));
for (DepartmentPO departmentPO : filterDeparts) {
buildParentDepts(departmentPO, builderDeparts);
buildParentDepts(departmentPO, builderDeparts,departmentPOMap);
}
List<SearchTree> departmentList = DepartmentBO.buildSetToSearchTree(builderDeparts);
List<SearchTree> deptTrees = SearchTreeUtil.builderTreeMode(departmentList);
@ -856,13 +849,8 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
private List<SearchTree> buildTreeByDeptAndJob(DepartmentPO departmentBuild, JobPO jobBuild) {
List<JobPO> jobPOS = getJobMapper().listPOsByFilter(jobBuild);
List<DepartmentPO> filterDeparts = getDepartmentMapper().listByFilter(departmentBuild, "showorder");
// 添加父级岗位
Set<JobPO> builderJobs = new HashSet<>();
for (JobPO jobPO : jobPOS) {
buildParentJobs(jobPO, builderJobs);
}
// 添加岗位的上级部门或分部
List<SearchTree> jobTrees = SearchTreeUtil.builderTreeMode(JobBO.buildSetToSearchTree(builderJobs));
List<SearchTree> jobTrees = SearchTreeUtil.builderTreeMode(JobBO.buildSetToSearchTree(jobPOS));
String parentDeptS = jobTrees.stream().map(SearchTree::getParentComp).collect(Collectors.joining(","));
if (!StringUtil.isEmpty(parentDeptS)) {
// 兼容SQLServer每次最多in,2100条数据
@ -880,40 +868,30 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic
filterDeparts.addAll(departmentsByIds);
}
}
Map<Integer, DepartmentPO> departmentPOMap = getDepartmentMapper().listAll("showorder").stream().collect(Collectors.toMap(DepartmentPO::getId, item -> item));
// 查询分部信息
Set<DepartmentPO> builderDeparts = new HashSet<>();
for (DepartmentPO departmentPO : filterDeparts) {
buildParentDepts(departmentPO, builderDeparts);
buildParentDepts(departmentPO, builderDeparts,departmentPOMap);
}
return SearchTreeUtil.builderTreeMode(DepartmentBO.buildSetToSearchTree(builderDeparts), jobTrees);
}
private void buildParentJobs(JobPO jobPO, Set<JobPO> builderJobs) {
builderJobs.add(jobPO);
if (SearchTreeUtil.isTop(jobPO.getParentJob())) {
return;
}
JobPO parentJob = getJobMapper().getJobById(jobPO.getParentJob());
if (null != parentJob) {
buildParentJobs(parentJob, builderJobs);
}
}
/**
*
*
* @param departmentPO
* @param builderDeparts
*/
private void buildParentDepts(DepartmentPO departmentPO, Set<DepartmentPO> builderDeparts) {
private void buildParentDepts(DepartmentPO departmentPO, Set<DepartmentPO> builderDeparts,Map<Integer, DepartmentPO> departmentPOMap) {
builderDeparts.add(departmentPO);
if (SearchTreeUtil.isTop(departmentPO.getSupDepId())) {
return;
}
DepartmentPO parentDept = getDepartmentMapper().getDeptById(departmentPO.getSupDepId());
DepartmentPO parentDept = departmentPOMap.get(departmentPO.getSupDepId());
if (null != parentDept) {
buildParentDepts(parentDept, builderDeparts);
buildParentDepts(parentDept, builderDeparts,departmentPOMap);
}
}

@ -279,7 +279,7 @@ public class JobServiceImpl extends Service implements JobService {
List<SearchConditionItem> items = getExtService(user).getExtSaveForm(user, EXTEND_TYPE + "", JCL_ORG_JOB, 2, extendTitle.getId().toString(), "job_no", RuleCodeType.JOBTITLES.getValue(), params, "scheme_id", "parent_comp");
if (CollectionUtils.isNotEmpty(items)) {
for (SearchConditionItem searchConditionItem : items) {
if("ec_jobTitle".equals(searchConditionItem.getDomkey()[0])){
if ("ec_jobTitle".equals(searchConditionItem.getDomkey()[0])) {
BrowserBean browserBean = searchConditionItem.getBrowserConditionParam();
String s = JSONObject.toJSONString(browserBean);
browserBean.setHasAddBtn(true);
@ -590,26 +590,23 @@ public class JobServiceImpl extends Service implements JobService {
@Override
public void refresh() {
// 解决并发情况下,岗位数据重复问题
synchronized(JobServiceImpl.class) {
synchronized (JobServiceImpl.class) {
//1.人员表查询
List<ResourcePO> resourcePOS = getHrmResourceMapper().selectFilterDatas();
//2.数据过滤
//3.数据插入
resourcePOS.forEach(resourcePO -> {
if (Objects.nonNull(resourcePO) && null != resourcePO.getJobtitle() && resourcePO.getJobtitle() > 0) {
int count = getJobMapper().selectByConditions(resourcePO);
if (count == 0) {
JobPO jobPO = JobPO.builder()
.ecCompany(resourcePO.getSubcompanyid1())
.ecDepartment(resourcePO.getDepartmentid())
.ecJobTitle(resourcePO.getJobtitle())
.isKey(0)
.deleteType(DeleteTypeEnum.NOT_DELETED.getValue())
.createTime(new Date())
.updateTime(new Date())
.build();
getJobMapper().insertIgnoreNull(jobPO);
}
JobPO jobPO = JobPO.builder()
.ecCompany(resourcePO.getSubcompanyid1())
.ecDepartment(resourcePO.getDepartmentid())
.ecJobTitle(resourcePO.getJobtitle())
.isKey(0)
.deleteType(DeleteTypeEnum.NOT_DELETED.getValue())
.createTime(new Date())
.updateTime(new Date())
.build();
getJobMapper().insertIgnoreNull(jobPO);
}
});
}
@ -640,14 +637,14 @@ public class JobServiceImpl extends Service implements JobService {
* @param departmentPO
* @param builderDeparts
*/
private void buildParentDepts(DepartmentPO departmentPO, Set<DepartmentPO> builderDeparts) {
private void buildParentDepts(DepartmentPO departmentPO, Set<DepartmentPO> builderDeparts,Map<Integer, DepartmentPO> departmentPOMap) {
builderDeparts.add(departmentPO);
if (SearchTreeUtil.isTop(departmentPO.getSupDepId())) {
return;
}
DepartmentPO parentDept = getDepartmentMapper().getDeptById(departmentPO.getSupDepId());
DepartmentPO parentDept = departmentPOMap.get(departmentPO.getSupDepId());
if (null != parentDept && (null == parentDept.getCanceled() || 0 == parentDept.getCanceled())) {
buildParentDepts(parentDept, builderDeparts);
buildParentDepts(parentDept, builderDeparts, departmentPOMap);
}
}
@ -685,9 +682,10 @@ public class JobServiceImpl extends Service implements JobService {
//
// 查询部门信息
List<DepartmentPO> filterDeparts = getDepartmentMapper().listByFilter(DepartmentPO.builder().departmentName(keyword).canceled(0).supDepId(Integer.parseInt(id)).build(), "showorder");
Map<Integer, DepartmentPO> departmentPOMap = filterDeparts.stream().collect(Collectors.toMap(DepartmentPO::getId, item -> item));
Set<DepartmentPO> builderDeparts = new HashSet<>();
for (DepartmentPO departmentPO : filterDeparts) {
buildParentDepts(departmentPO, builderDeparts);
buildParentDepts(departmentPO, builderDeparts, departmentPOMap);
}
searchTree = SearchTreeUtil.builderTreeMode(DepartmentBO.buildSetToSearchTree(builderDeparts));
@ -704,13 +702,15 @@ public class JobServiceImpl extends Service implements JobService {
*/
private List<SearchTree> buildTreeByCompAndDept(DepartmentPO departmentBuild, CompPO compBuild) {
List<DepartmentPO> filterDeparts = getDepartmentMapper().listByFilter(departmentBuild, "showorder");
Map<Integer, DepartmentPO> departmentPOMap = getDepartmentMapper().listAll("showorder").stream().collect(Collectors.toMap(DepartmentPO::getId, item -> item));
new DetachUtil(user).filterDepartmentList(filterDeparts);
// 查询分部信息
List<CompPO> filterComps = getCompMapper().listByFilter(compBuild, "showorder");
new DetachUtil(user).filterCompanyList(filterComps);
Set<DepartmentPO> builderDeparts = new HashSet<>();
for (DepartmentPO departmentPO : filterDeparts) {
buildParentDepts(departmentPO, builderDeparts);
buildParentDepts(departmentPO, builderDeparts,departmentPOMap);
}
List<SearchTree> deptTrees = SearchTreeUtil.builderTreeMode(DepartmentBO.buildSetToSearchTree(builderDeparts));
// 添加部门的上级分部

@ -42,10 +42,8 @@ import weaver.general.GCONST;
import weaver.general.StringUtil;
import weaver.general.Util;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
@ -641,8 +639,9 @@ public class PersonnelResumeServiceImpl extends Service implements PersonnelResu
new DetachUtil(user).filterCompanyList(filterComps);
Set<DepartmentPO> builderDeparts = new HashSet<>();
Map<Integer, DepartmentPO> departmentPOMap = getDepartmentMapper().listAll("showorder").stream().collect(Collectors.toMap(DepartmentPO::getId, item -> item));
for (DepartmentPO departmentPO : filterDeparts) {
buildParentDepts(departmentPO, builderDeparts);
buildParentDepts(departmentPO, builderDeparts,departmentPOMap);
}
List<SearchTree> departmentList = DepartmentBO.buildSetToSearchTree(builderDeparts);
List<SearchTree> deptTrees = SearchTreeUtil.builderTreeMode(departmentList);
@ -718,9 +717,11 @@ public class PersonnelResumeServiceImpl extends Service implements PersonnelResu
}
// 查询分部信息
Map<Integer, DepartmentPO> departmentPOMap = getDepartmentMapper().listAll("showorder").stream().collect(Collectors.toMap(DepartmentPO::getId, item -> item));
Set<DepartmentPO> builderDeparts = new HashSet<>();
for (DepartmentPO departmentPO : filterDeparts) {
buildParentDepts(departmentPO, builderDeparts);
buildParentDepts(departmentPO, builderDeparts,departmentPOMap);
}
return SearchTreeUtil.builderTreeMode(DepartmentBO.buildSetToSearchTree(builderDeparts), jobTrees);
}
@ -732,14 +733,14 @@ public class PersonnelResumeServiceImpl extends Service implements PersonnelResu
* @param departmentPO
* @param builderDeparts
*/
private void buildParentDepts(DepartmentPO departmentPO, Set<DepartmentPO> builderDeparts) {
private void buildParentDepts(DepartmentPO departmentPO, Set<DepartmentPO> builderDeparts,Map<Integer, DepartmentPO> departmentPOMap) {
builderDeparts.add(departmentPO);
if (SearchTreeUtil.isTop(departmentPO.getSupDepId())) {
return;
}
DepartmentPO parentDept = getDepartmentMapper().getDeptById(departmentPO.getSupDepId());
DepartmentPO parentDept = departmentPOMap.get(departmentPO.getSupDepId());
if (null != parentDept) {
buildParentDepts(parentDept, builderDeparts);
buildParentDepts(parentDept, builderDeparts,departmentPOMap);
}
}

Loading…
Cancel
Save