diff --git a/src/com/api/browser/service/impl/JobBrowserService.java b/src/com/api/browser/service/impl/JobBrowserService.java index 5436dd0b..c192a099 100644 --- a/src/com/api/browser/service/impl/JobBrowserService.java +++ b/src/com/api/browser/service/impl/JobBrowserService.java @@ -9,20 +9,22 @@ import com.engine.organization.component.OrganizationWeaTable; import com.engine.organization.entity.browser.bo.CusBowserTreeBO; import com.engine.organization.entity.browser.enums.TreeNodeTypeEnum; import com.engine.organization.entity.browser.po.CusBrowserTree; +import com.engine.organization.entity.company.po.CompPO; +import com.engine.organization.entity.department.po.DepartmentPO; import com.engine.organization.entity.job.vo.JobBrowserVO; import com.engine.organization.entity.searchtree.SearchTree; import com.engine.organization.entity.searchtree.SearchTreeParams; -import com.engine.organization.service.impl.JobServiceImpl; +import com.engine.organization.mapper.comp.CompMapper; +import com.engine.organization.mapper.department.DepartmentMapper; import com.engine.organization.util.OrganizationFormItemUtil; import com.engine.organization.util.db.DBType; +import com.engine.organization.util.db.MapperProxyFactory; +import com.engine.organization.util.tree.SearchTreeUtil; import org.apache.commons.lang.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @author:dxfeng @@ -38,35 +40,19 @@ public class JobBrowserService extends BrowserService { Map resultMap = new HashMap<>(); String datatype = Util.null2String(params.get("datatype")); if ("tree".equals(datatype)) { - List nodeData = new ArrayList<>(); String id = Util.null2String(params.get("id")); SearchTreeParams searchTreeParams = new SearchTreeParams(); - if (StringUtils.isBlank(id)) { - Map searchTree = new JobServiceImpl().getSearchTree(searchTreeParams); - Map datas = (Map) searchTree.get("datas"); - // 集团 - SearchTree rootCompany = (SearchTree) datas.get("rootCompany"); - nodeData.add(rootCompany); - } else if ("0".equals(id)) { - Map searchTree = new JobServiceImpl().getSearchTree(searchTreeParams); - Map datas = (Map) searchTree.get("datas"); - SearchTree rootCompany = (SearchTree) datas.get("rootCompany"); - nodeData.addAll(rootCompany.getSubs()); - } else { - String[] idArray = id.split("_"); - if (idArray.length == 2) { - if (TreeNodeTypeEnum.TYPE_COMP.getName().equals(idArray[0])) { - searchTreeParams.setType(TreeNodeTypeEnum.TYPE_COMP.getValue()); - } else if (TreeNodeTypeEnum.TYPE_DEPT.getName().equals(idArray[0])) { - searchTreeParams.setType(TreeNodeTypeEnum.TYPE_DEPT.getValue()); - } - searchTreeParams.setId(idArray[1]); - Map searchTree = new JobServiceImpl().getSearchTree(searchTreeParams); - List datas = (List) searchTree.get("datas"); - TreeNode treeNode = datas.stream().filter(item -> idArray[1].equals(item.getId())).findFirst().orElse(new TreeNode()); - nodeData.addAll(treeNode.getSubs()); + searchTreeParams.setId(id); + String[] idArray = id.split("_"); + if (idArray.length == 2) { + if (TreeNodeTypeEnum.TYPE_COMP.getName().equals(idArray[0])) { + searchTreeParams.setType(TreeNodeTypeEnum.TYPE_COMP.getValue()); + } else if (TreeNodeTypeEnum.TYPE_DEPT.getName().equals(idArray[0])) { + searchTreeParams.setType(TreeNodeTypeEnum.TYPE_DEPT.getValue()); } + searchTreeParams.setId(idArray[1]); } + List nodeData = getCurrentTreeNode(searchTreeParams); List cusBrowserTrees = CusBowserTreeBO.convertSearchTreeToBorwserTree(nodeData); resultMap.put("datas", cusBrowserTrees); } else { @@ -140,4 +126,79 @@ public class JobBrowserService extends BrowserService { } return sqlWhere; } + + /** + * 获取当前点击节点下的层级数据 + * + * @param params + * @return + */ + private List getCurrentTreeNode(SearchTreeParams params) { + List treeNodes = new ArrayList<>(); + if (StringUtils.isBlank(params.getId())) { + // 集团总部 + SearchTree topGroup = SearchTreeUtil.getTopGroup(); + topGroup.setIsParent(true); + treeNodes.add(topGroup); + } else { + // 分部存在下级的ID + List compHasSubs = MapperProxyFactory.getProxy(CompMapper.class).hasSubs(); + // 部门存在下级的ID + List hasSubDepartment = MapperProxyFactory.getProxy(DepartmentMapper.class).hasSubs(); + + if ("0".equals(params.getId())) { + List compList = MapperProxyFactory.getProxy(CompMapper.class).listParent(); + // 获取顶层分部 + compList.stream().sorted(Comparator.comparing(CompPO::getShowOrder)).forEach(item -> buildCompNodes(treeNodes, compHasSubs, item)); + } else if ("1".equals(params.getType())) { + // 当前节点下的元素 + CompPO compBuild = CompPO.builder().parentCompany(Long.parseLong(params.getId())).forbiddenTag(0).deleteType(0).build(); + List compList = MapperProxyFactory.getProxy(CompMapper.class).listByFilter(compBuild, "show_order"); + DepartmentPO departmentBuild = DepartmentPO.builder().parentComp(Long.parseLong(params.getId())).forbiddenTag(0).deleteType(0).build(); + List departmentList = MapperProxyFactory.getProxy(DepartmentMapper.class).listByFilter(departmentBuild, "show_order"); + compList.forEach(item -> buildCompNodes(treeNodes, compHasSubs, item)); + + departmentList.stream().filter(item -> null == item.getParentDept() || 0 == item.getParentDept()).forEach(item -> buildDeptNodes(treeNodes, hasSubDepartment, item)); + } else if ("2".equals(params.getType())) { + DepartmentPO departmentBuild = DepartmentPO.builder().parentDept(Long.parseLong(params.getId())).forbiddenTag(0).deleteType(0).build(); + List departmentList = MapperProxyFactory.getProxy(DepartmentMapper.class).listByFilter(departmentBuild, "show_order"); + departmentList.forEach(item -> buildDeptNodes(treeNodes, hasSubDepartment, item)); + } + + } + return treeNodes; + } + + + /** + * 构建分部节点 + * + * @param treeNodes + * @param compHasSubs + * @param company + */ + private void buildCompNodes(List treeNodes, List compHasSubs, CompPO company) { + SearchTree searchTree = new SearchTree(); + searchTree.setId(company.getId().toString()); + searchTree.setType(TreeNodeTypeEnum.TYPE_COMP.getValue()); + searchTree.setName(company.getCompName()); + searchTree.setIsParent(compHasSubs.contains(company.getId().toString())); + treeNodes.add(searchTree); + } + + /** + * 构建部门节点 + * + * @param treeNodes + * @param hasSubDepartment + * @param department + */ + private void buildDeptNodes(List treeNodes, List hasSubDepartment, DepartmentPO department) { + SearchTree searchTree = new SearchTree(); + searchTree.setId(department.getId().toString()); + searchTree.setName(department.getDeptName()); + searchTree.setType(TreeNodeTypeEnum.TYPE_DEPT.getValue()); + searchTree.setIsParent(hasSubDepartment.contains(department.getId().toString())); + treeNodes.add(searchTree); + } } diff --git a/src/com/engine/organization/entity/browser/bo/CusBowserTreeBO.java b/src/com/engine/organization/entity/browser/bo/CusBowserTreeBO.java index f641a4be..3dfa427b 100644 --- a/src/com/engine/organization/entity/browser/bo/CusBowserTreeBO.java +++ b/src/com/engine/organization/entity/browser/bo/CusBowserTreeBO.java @@ -3,7 +3,6 @@ package com.engine.organization.entity.browser.bo; import com.api.hrm.bean.TreeNode; import com.engine.organization.entity.browser.enums.TreeNodeTypeEnum; import com.engine.organization.entity.browser.po.CusBrowserTree; -import org.apache.commons.collections.CollectionUtils; import java.util.List; import java.util.stream.Collectors; @@ -25,8 +24,8 @@ public class CusBowserTreeBO { List collect = searchTree.stream().map(item -> CusBrowserTree.builder() .domid("sel_" + item.getId()) - .hasChild(CollectionUtils.isNotEmpty(item.getSubs())) - .isLeaf(CollectionUtils.isEmpty(item.getSubs())) + .hasChild(item.getIsParent()) + .isLeaf(!item.getIsParent()) .isopen(false) .key(getKey(item)) .name(item.getName()) diff --git a/src/com/engine/organization/mapper/comp/CompMapper.java b/src/com/engine/organization/mapper/comp/CompMapper.java index 6bec7217..aad7c06f 100644 --- a/src/com/engine/organization/mapper/comp/CompMapper.java +++ b/src/com/engine/organization/mapper/comp/CompMapper.java @@ -30,6 +30,8 @@ public interface CompMapper { List listUsedIds(); + List hasSubs(); + /** * 根据搜索条件查询数据 * diff --git a/src/com/engine/organization/mapper/comp/CompMapper.xml b/src/com/engine/organization/mapper/comp/CompMapper.xml index 2acd1494..ac0acd15 100644 --- a/src/com/engine/organization/mapper/comp/CompMapper.xml +++ b/src/com/engine/organization/mapper/comp/CompMapper.xml @@ -239,6 +239,9 @@ #{compNameShort}, + + #{parentCompany}, + #{ecCompany}, @@ -311,6 +314,9 @@ jcl_org_comp t WHERE t.delete_type = 0 + + and t.parent_company = #{compPO.parentCompany} + and t.ec_company = #{compPO.ecCompany} @@ -418,6 +424,17 @@ where t.delete_type = 0 AND comp_no = #{companyNo} + update jcl_org_comp diff --git a/src/com/engine/organization/mapper/department/DepartmentMapper.java b/src/com/engine/organization/mapper/department/DepartmentMapper.java index 35c5c56d..b1153840 100644 --- a/src/com/engine/organization/mapper/department/DepartmentMapper.java +++ b/src/com/engine/organization/mapper/department/DepartmentMapper.java @@ -134,4 +134,6 @@ public interface DepartmentMapper { Long getIdByNameAndPid(@Param("departmentName") String departmentName, @Param("parentCompany") Long parentCompany, @Param("parentDepartment") Long parentDepartment); int checkRepeatNo(@Param("departmentNo") String departmentNo, @Param("id") Long id); + + List hasSubs(); } diff --git a/src/com/engine/organization/mapper/department/DepartmentMapper.xml b/src/com/engine/organization/mapper/department/DepartmentMapper.xml index fed2aec7..06efa124 100644 --- a/src/com/engine/organization/mapper/department/DepartmentMapper.xml +++ b/src/com/engine/organization/mapper/department/DepartmentMapper.xml @@ -178,6 +178,12 @@ and t.id != #{id} + and ifnull(parent_dept,0) = #{parentDepartment} diff --git a/src/com/engine/organization/mapper/job/JobMapper.xml b/src/com/engine/organization/mapper/job/JobMapper.xml index fd366d18..24cecc1c 100644 --- a/src/com/engine/organization/mapper/job/JobMapper.xml +++ b/src/com/engine/organization/mapper/job/JobMapper.xml @@ -464,6 +464,11 @@ select job_id from JCL_ORG_STAFF where delete_type = 0 + union + select field100002 + from cus_fielddata + inner join + hrmresource on STATUS < 4