From eefd5b8483966655e4ee589fb06254d5076ac009 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Mon, 6 Jun 2022 14:41:46 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E7=94=9F=E6=88=90=E7=BC=96?= =?UTF-8?q?=E5=8F=B7=20=E6=96=B9=E6=B3=95=E6=8A=BD=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CompServiceImpl.java | 129 +++++--------- .../service/impl/DepartmentServiceImpl.java | 136 +++------------ .../service/impl/JobServiceImpl.java | 164 +++--------------- src/com/engine/organization/util/MenuBtn.java | 23 +++ .../util/tree/SearchTreeUtil.java | 146 ++++++++++++++++ 5 files changed, 263 insertions(+), 335 deletions(-) create mode 100644 src/com/engine/organization/util/tree/SearchTreeUtil.java diff --git a/src/com/engine/organization/service/impl/CompServiceImpl.java b/src/com/engine/organization/service/impl/CompServiceImpl.java index b26aa625..caa8e8ab 100644 --- a/src/com/engine/organization/service/impl/CompServiceImpl.java +++ b/src/com/engine/organization/service/impl/CompServiceImpl.java @@ -204,26 +204,12 @@ public class CompServiceImpl extends Service implements CompService { @Override public Map getHasRight() { - Map btnDatas = new HashMap<>(); - ArrayList topMenuList = new ArrayList<>(); - ArrayList rightMenuList = new ArrayList<>(); - // 新增 - topMenuList.add(MenuBtn.topMenu_addNew()); - // 批量删除 - topMenuList.add(MenuBtn.topMenu_batchDelete()); - btnDatas.put("topMenu", topMenuList); - // 新增 - rightMenuList.add(MenuBtn.rightMenu_addNew()); - // 日志 - rightMenuList.add(MenuBtn.rightMenu_btnLog()); - btnDatas.put("rightMenu", rightMenuList); - return btnDatas; + return MenuBtn.getDatasNoBtnColum(); } @Override public Map getCompBaseForm(Map params) { OrganizationAssert.notNull(params.get("viewAttr"), "请标识操作类型"); - // 2编辑 1查看 int viewAttr = Integer.parseInt((String) params.get("viewAttr")); long id = Long.parseLong((String) params.get("id")); @@ -271,6 +257,23 @@ public class CompServiceImpl extends Service implements CompService { compNoItem.setHelpfulTip("编号为空,则按照指定规则自动生成编号"); } + getSameFormItem(conditionItems, compNoItem, null); + + + addGroups.add(new SearchConditionGroup("基本信息", true, conditionItems)); + apiDatas.put("condition", addGroups); + + return apiDatas; + + } + + /** + * 新增、编辑表单,相同属性 + * + * @param conditionItems + * @param compNoItem + */ + private void getSameFormItem(List conditionItems, SearchConditionItem compNoItem, Long id) { // 名称 SearchConditionItem compNameItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 3, 50, "名称", "compName"); compNameItem.setRules("required|string"); @@ -299,12 +302,36 @@ public class CompServiceImpl extends Service implements CompService { conditionItems.add(compPrincipalItem); conditionItems.add(descriptionItem); + if (null == id) { + return; + } + // 赋值 + CompPO compPO = getCompMapper().listById(id); + OrganizationAssert.notNull(compPO, "数据不存在或数据已删除"); + compNoItem.setValue(compPO.getCompNo()); + compNameItem.setValue(compPO.getCompName()); + compNameShortItem.setValue(compPO.getCompNameShort()); - addGroups.add(new SearchConditionGroup("基本信息", true, conditionItems)); - apiDatas.put("condition", addGroups); - - return apiDatas; - + // compBrowserItem + if (null != compPO.getParentCompany()) { + BrowserBean compBrowserBean = compBrowserItem.getBrowserConditionParam(); + compBrowserBean.setReplaceDatas(creatReplaceDatas(compPO.getParentCompany(), getCompMapper().listById(compPO.getParentCompany()).getCompName())); + compBrowserItem.setBrowserConditionParam(compBrowserBean); + } + orgCodeItem.setValue(compPO.getOrgCode()); + // industryItem + BrowserBean industryBean = industryItem.getBrowserConditionParam(); + industryBean.setReplaceDatas(creatReplaceDatas(compPO.getIndustry(), new SectorInfoComInfo().getSectorInfoname(compPO.getIndustry() + ""))); + industryItem.setBrowserConditionParam(industryBean); + try { + // compPrincipalItem + BrowserBean PrincipalBean = compPrincipalItem.getBrowserConditionParam(); + PrincipalBean.setReplaceDatas(creatReplaceDatas(compPO.getCompPrincipal(), new ResourceComInfo().getLastname(compPO.getCompPrincipal() + ""))); + compPrincipalItem.setBrowserConditionParam(PrincipalBean); + } catch (Exception e) { + throw new RuntimeException(e); + } + descriptionItem.setValue(compPO.getDescription()); } /** @@ -354,67 +381,7 @@ public class CompServiceImpl extends Service implements CompService { List conditionItems = new ArrayList<>(); // 编号 SearchConditionItem compNoItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 1, 50, "编号", "compNo"); - // 名称 - SearchConditionItem compNameItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 3, 50, "名称", "compName"); - compNameItem.setRules("required|string"); - // 简称 - SearchConditionItem compNameShortItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 3, 50, "简称", "compNameShort"); - compNameShortItem.setRules("required|string"); - // TODO 自定义按钮 - // 上级公司 - SearchConditionItem compBrowserItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "上级公司", "161", "parentCompany", "compBrowser"); - // 组织机构代码 - SearchConditionItem orgCodeItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 2, 50, "组织机构代码", "orgCode"); - orgCodeItem.setRules("required|string"); - // 行业 - SearchConditionItem industryItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "行业", "63", "industry", ""); - // 负责人 - SearchConditionItem compPrincipalItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "负责人", "1", "compPrincipal", ""); - compPrincipalItem.setRules("required|string"); - // 说明 - SearchConditionItem descriptionItem = OrganizationFormItemUtil.textareaItem(user, 2, 16, true, 2, 60, "说明", "description"); - - - conditionItems.add(compNoItem); - conditionItems.add(compNameItem); - conditionItems.add(compNameShortItem); - conditionItems.add(compBrowserItem); - conditionItems.add(orgCodeItem); - conditionItems.add(industryItem); - conditionItems.add(compPrincipalItem); - conditionItems.add(descriptionItem); - - - // 编辑、查看状态赋值,设置只读状态 - - // 赋值 - CompPO compPO = getCompMapper().listById(id); - OrganizationAssert.notNull(compPO, "数据不存在或数据已删除"); - compNoItem.setValue(compPO.getCompNo()); - compNameItem.setValue(compPO.getCompName()); - compNameShortItem.setValue(compPO.getCompNameShort()); - - // compBrowserItem - if (null != compPO.getParentCompany()) { - BrowserBean compBrowserBean = compBrowserItem.getBrowserConditionParam(); - compBrowserBean.setReplaceDatas(creatReplaceDatas(compPO.getParentCompany(), getCompMapper().listById(compPO.getParentCompany()).getCompName())); - compBrowserItem.setBrowserConditionParam(compBrowserBean); - } - orgCodeItem.setValue(compPO.getOrgCode()); - // industryItem - BrowserBean industryBean = industryItem.getBrowserConditionParam(); - industryBean.setReplaceDatas(creatReplaceDatas(compPO.getIndustry(), new SectorInfoComInfo().getSectorInfoname(compPO.getIndustry() + ""))); - industryItem.setBrowserConditionParam(industryBean); - try { - // compPrincipalItem - BrowserBean PrincipalBean = compPrincipalItem.getBrowserConditionParam(); - PrincipalBean.setReplaceDatas(creatReplaceDatas(compPO.getCompPrincipal(), new ResourceComInfo().getLastname(compPO.getCompPrincipal() + ""))); - compPrincipalItem.setBrowserConditionParam(PrincipalBean); - } catch (Exception e) { - throw new RuntimeException(e); - } - descriptionItem.setValue(compPO.getDescription()); - + getSameFormItem(conditionItems, compNoItem, id); // 查看,全部置位只读 if (1 == viewAttr) { for (SearchConditionItem item : conditionItems) { diff --git a/src/com/engine/organization/service/impl/DepartmentServiceImpl.java b/src/com/engine/organization/service/impl/DepartmentServiceImpl.java index c81f90a5..560c9f80 100644 --- a/src/com/engine/organization/service/impl/DepartmentServiceImpl.java +++ b/src/com/engine/organization/service/impl/DepartmentServiceImpl.java @@ -5,7 +5,6 @@ import com.api.browser.bean.BrowserBean; import com.api.browser.bean.SearchConditionGroup; import com.api.browser.bean.SearchConditionItem; import com.api.browser.bean.SearchConditionOption; -import com.api.hrm.bean.TreeNode; import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.cloudstore.eccom.result.WeaResultMsg; import com.engine.common.util.ServiceUtil; @@ -40,8 +39,8 @@ import com.engine.organization.util.db.MapperProxyFactory; import com.engine.organization.util.page.Column; import com.engine.organization.util.page.PageInfo; import com.engine.organization.util.page.PageUtil; +import com.engine.organization.util.tree.SearchTreeUtil; import org.apache.commons.collections4.CollectionUtils; -import weaver.conn.RecordSet; import weaver.general.StringUtil; import weaver.general.Util; import weaver.hrm.User; @@ -73,14 +72,6 @@ public class DepartmentServiceImpl extends Service implements DepartmentService */ private static final String JCL_ORG_DEPTEXT_DT1 = "JCL_ORG_DEPTEXT_DT1"; - /** - * 左侧树 类型表示 - *

- * 0:集团 - * 1:分部 - * 2:部门 - */ - private static final String TYPE_GROUP = "0"; private DepartmentMapper getDepartmentMapper() { return MapperProxyFactory.getProxy(DepartmentMapper.class); @@ -130,30 +121,11 @@ public class DepartmentServiceImpl extends Service implements DepartmentService @Override public Map getSearchTree(SearchTreeParams params) { - Map dataMap = new HashMap<>(); - SearchTree topGroup = getTopGroup(); - // 集团 - List companyList = new ArrayList<>(); - companyList.add(topGroup); String keyword = params.getKeyword(); - String type = Util.null2String(params.getType()); String id = params.getId(); - - List treeDatas = getFilterCompany(id, keyword); - // 未点击,初始化树结构 - if (StringUtil.isEmpty(type)) { - dataMap.put("companys", companyList); - SearchTree rootCompany = getTopGroup(); - rootCompany.setSubs(treeDatas); - rootCompany.setIsParent(CollectionUtils.isNotEmpty(rootCompany.getSubs())); - Map rootCompanyMap = new HashMap<>(); - rootCompanyMap.put("rootCompany", rootCompany); - dataMap.put("datas", rootCompanyMap); - } else { - // 根据ID查询 - dataMap.put("datas", treeDatas); - } - return dataMap; + String type = Util.null2String(params.getType()); + List treeList = getFilterCompany(id, keyword); + return SearchTreeUtil.getSearchTree(type, treeList); } @Override @@ -202,9 +174,8 @@ public class DepartmentServiceImpl extends Service implements DepartmentService public int saveBaseForm(DeptSearchParam params) { try { // 处理自动编号 - String departmentNo = CodeRuleManager.getCodeRuleManager().generateRuleCode(RuleCodeType. - DEPARTMENT, params.getDeptNo()); - params.setDeptNo(departmentNo); + params.setDeptNo(CodeRuleManager.getCodeRuleManager().generateRuleCode(RuleCodeType. + DEPARTMENT, params.getDeptNo())); } catch (Exception e) { throw new RuntimeException(e); } @@ -253,7 +224,6 @@ public class DepartmentServiceImpl extends Service implements DepartmentService SearchConditionItem deptNameItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 2, 50, "名称", "departmentName"); // 简称 SearchConditionItem deptNameShortItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 2, 50, "简称", "deptNameShort"); - // TODO // 所属分部 SearchConditionItem parentCompBrowserItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "所属分部", "161", "parentComp", "compBrowser"); // 上级部门 @@ -422,15 +392,25 @@ public class DepartmentServiceImpl extends Service implements DepartmentService List idList = Arrays.stream(copyParam.getIds().split(",")).map(Long::parseLong).collect(Collectors.toList()); for (Long id : idList) { DepartmentPO deptById = getDepartmentMapper().getDeptById(id); - // TODO 自动编号 - deptById.setDeptNo("复制_" + deptById.getDeptNo()); + try { + // 处理自动编号 + deptById.setDeptNo(CodeRuleManager.getCodeRuleManager().generateRuleCode(RuleCodeType. + DEPARTMENT, "")); + } catch (Exception e) { + throw new RuntimeException(e); + } deptById.setParentComp(Long.parseLong(copyParam.getCompany())); insertCount += getDepartmentMapper().insertIgnoreNull(deptById); if ("1".equals(copyParam.getCopyJob())) { List jobPOS = MapperProxyFactory.getProxy(JobMapper.class).listJobsByDepartmentId(id); for (JobPO jobPO : jobPOS) { - // TODO 自动编号 - jobPO.setJobNo("部门复制_" + jobPO.getJobNo()); + try { + // 处理自动编号 + jobPO.setJobNo(CodeRuleManager.getCodeRuleManager().generateRuleCode(RuleCodeType. + JOBTITLES, "")); + } catch (Exception e) { + throw new RuntimeException(e); + } jobPO.setParentDept(deptById.getId()); jobPO.setCreator((long) user.getUID()); jobPO.setCreateTime(new Date()); @@ -645,29 +625,6 @@ public class DepartmentServiceImpl extends Service implements DepartmentService } - /** - * 获取集团 - * - * @return - */ - private SearchTree getTopGroup() { - RecordSet rs = new RecordSet(); - String sql = "select * from HrmCompany "; - rs.executeQuery(sql); - SearchTree groupTree = new SearchTree(); - groupTree.setCanClick(false); - groupTree.setCanceled(false); - groupTree.setCompanyid("1"); - groupTree.setIcon("icon-coms-LargeArea"); - groupTree.setId("0"); - groupTree.setIsVirtual("0"); - while (rs.next()) { - groupTree.setName(rs.getString("COMPANYNAME")); - } - groupTree.setSelected(false); - groupTree.setType(TYPE_GROUP); - return groupTree; - } /** * 根据keyword查询数据 @@ -676,10 +633,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService * @param keyword * @return */ - private List getFilterCompany(String id, String keyword) { - List compSearchTree = new ArrayList<>(); - - // + private List getFilterCompany(String id, String keyword) { // 查询部门信息 Long parentCompId = StringUtil.isEmpty(id) ? null : Long.parseLong(id); CompPO compBuild = CompPO.builder().compName(keyword).parentCompany(parentCompId).build(); @@ -689,17 +643,8 @@ public class DepartmentServiceImpl extends Service implements DepartmentService for (CompPO compPO : filterComps) { buildParentComps(compPO, builderComps); } - List compTrees = builderTreeMode(CompBO.buildSetToSearchTree(builderComps)); - - // 排序,设置是否为叶子节点 - List collect = compTrees.stream().peek(item -> - item.setIsParent(CollectionUtils.isNotEmpty(item.getSubs())) - ).sorted(Comparator.comparing(item -> Integer.parseInt(item.getId()))).collect(Collectors.toList()); - if (CollectionUtils.isNotEmpty(collect)) { - compSearchTree.addAll(collect); - } + return SearchTreeUtil.builderTreeMode(CompBO.buildSetToSearchTree(builderComps)); - return compSearchTree; } /** @@ -710,7 +655,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService */ private void buildParentComps(CompPO compPO, Set builderComps) { builderComps.add(compPO); - if (isTop(compPO.getParentCompany())) { + if (SearchTreeUtil.isTop(compPO.getParentCompany())) { return; } CompPO parentComp = getCompMapper().listById(compPO.getParentCompany()); @@ -719,40 +664,5 @@ public class DepartmentServiceImpl extends Service implements DepartmentService } } - /** - * 处理树层级 - * - * @param treeList - * @return - */ - private List builderTreeMode(List treeList) { - Map> collects = treeList.stream().collect(Collectors.groupingBy(TreeNode::getPid)); - return treeList.stream().peek(e -> e.setSubs(collects.get(e.getId()))).peek(item -> { - if (CollectionUtils.isNotEmpty(item.getSubs())) { - item.setIsParent(true); - } - }).filter(item -> isTop(item.getPid())).collect(Collectors.toList()); - } - - /** - * 判断是为顶层数据 - * - * @param pid - * @return - */ - private boolean isTop(Long pid) { - return null == pid; - } - - /** - * 判断是为顶层数据 - * - * @param pid - * @return - */ - private boolean isTop(String pid) { - return StringUtil.isEmpty(pid) || "0".equals(pid); - } - } diff --git a/src/com/engine/organization/service/impl/JobServiceImpl.java b/src/com/engine/organization/service/impl/JobServiceImpl.java index 2da44b0f..369978c8 100644 --- a/src/com/engine/organization/service/impl/JobServiceImpl.java +++ b/src/com/engine/organization/service/impl/JobServiceImpl.java @@ -5,7 +5,6 @@ import com.api.browser.bean.BrowserBean; import com.api.browser.bean.SearchConditionGroup; import com.api.browser.bean.SearchConditionItem; import com.api.browser.bean.SearchConditionOption; -import com.api.hrm.bean.TreeNode; import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.cloudstore.eccom.result.WeaResultMsg; import com.engine.common.util.ServiceUtil; @@ -49,8 +48,8 @@ import com.engine.organization.util.db.MapperProxyFactory; import com.engine.organization.util.page.Column; import com.engine.organization.util.page.PageInfo; import com.engine.organization.util.page.PageUtil; +import com.engine.organization.util.tree.SearchTreeUtil; import org.apache.commons.collections4.CollectionUtils; -import weaver.conn.RecordSet; import weaver.general.StringUtil; import weaver.general.Util; import weaver.hrm.User; @@ -73,7 +72,6 @@ public class JobServiceImpl extends Service implements JobService { * 1:分部 * 2:部门 */ - private static final String TYPE_GROUP = "0"; private static final String TYPE_COMP = "1"; private static final String TYPE_DEPT = "2"; @@ -128,31 +126,11 @@ public class JobServiceImpl extends Service implements JobService { @Override public Map getSearchTree(SearchTreeParams params) { - Map dataMap = new HashMap<>(); - SearchTree topGroup = getTopGroup(); - // 集团 - List companyList = new ArrayList<>(); - companyList.add(topGroup); String keyword = params.getKeyword(); - String type = Util.null2String(params.getType()); String id = params.getId(); - - List treeDatas = getFilterCompany(id, type, keyword); - // 未点击,初始化树结构 - if (StringUtil.isEmpty(type)) { - dataMap.put("companys", companyList); - SearchTree rootCompany = getTopGroup(); - rootCompany.setSubs(treeDatas); - rootCompany.setIsParent(CollectionUtils.isNotEmpty(rootCompany.getSubs())); - Map rootCompanyMap = new HashMap<>(); - rootCompanyMap.put("rootCompany", rootCompany); - dataMap.put("datas", rootCompanyMap); - } else { - // 根据ID查询 - dataMap.put("datas", treeDatas); - } - - return dataMap; + String type = Util.null2String(params.getType()); + List treeList = getFilterCompany(id, type, keyword); + return SearchTreeUtil.getSearchTree(type, treeList); } @Override @@ -444,8 +422,13 @@ public class JobServiceImpl extends Service implements JobService { List idList = Arrays.stream(ids.split(",")).map(Long::parseLong).collect(Collectors.toList()); for (Long id : idList) { JobPO jobById = getJobMapper().getJobById(id); - // TODO 自动编号 - jobById.setJobNo("复制_" + jobById.getJobNo()); + try { + // 处理自动编号 + jobById.setJobNo(CodeRuleManager.getCodeRuleManager().generateRuleCode(RuleCodeType. + JOBTITLES, "")); + } catch (Exception e) { + throw new RuntimeException(e); + } jobById.setParentDept(Long.parseLong(department)); insertCount += getJobMapper().insertIgnoreNull(jobById); } @@ -485,7 +468,7 @@ public class JobServiceImpl extends Service implements JobService { */ private void buildParentDepts(DepartmentPO departmentPO, Set builderDeparts) { builderDeparts.add(departmentPO); - if (isTop(departmentPO.getParentDept())) { + if (SearchTreeUtil.isTop(departmentPO.getParentDept())) { return; } DepartmentPO parentDept = getDepartmentMapper().getDeptById(departmentPO.getParentDept()); @@ -502,7 +485,7 @@ public class JobServiceImpl extends Service implements JobService { */ private void buildParentComps(CompPO compPO, Set builderComps) { builderComps.add(compPO); - if (isTop(compPO.getParentCompany())) { + if (SearchTreeUtil.isTop(compPO.getParentCompany())) { return; } CompPO parentComp = getCompMapper().listById(compPO.getParentCompany()); @@ -511,30 +494,6 @@ public class JobServiceImpl extends Service implements JobService { } } - /** - * 获取集团 - * - * @return - */ - private SearchTree getTopGroup() { - RecordSet rs = new RecordSet(); - String sql = "select * from HrmCompany "; - rs.executeQuery(sql); - SearchTree groupTree = new SearchTree(); - groupTree.setCanClick(false); - groupTree.setCanceled(false); - groupTree.setCompanyid("1"); - groupTree.setIcon("icon-coms-LargeArea"); - groupTree.setId("0"); - groupTree.setIsVirtual("0"); - while (rs.next()) { - groupTree.setName(rs.getString("COMPANYNAME")); - } - groupTree.setSelected(false); - groupTree.setType(TYPE_GROUP); - return groupTree; - } - /** * 根据keyword查询数据 * @@ -543,14 +502,14 @@ public class JobServiceImpl extends Service implements JobService { * @param keyword * @return */ - private List getFilterCompany(String id, String type, String keyword) { - List compSearchTree = new ArrayList<>(); + private List getFilterCompany(String id, String type, String keyword) { + List searchTree = new ArrayList<>(); // 通过分部、公司 组装数据 if (StringUtil.isEmpty(id) || TYPE_COMP.equals(type)) { Long parentCompId = StringUtil.isEmpty(id) ? null : Long.parseLong(id); DepartmentPO departmentBuild = DepartmentPO.builder().deptName(keyword).parentComp(parentCompId).build(); CompPO compBuild = CompPO.builder().compName(keyword).parentCompany(parentCompId).build(); - buildTreeByCompAndDept(departmentBuild, compBuild, compSearchTree); + searchTree = buildTreeByCompAndDept(departmentBuild, compBuild); } else if (TYPE_DEPT.equals(type)) { // // 查询部门信息 @@ -559,16 +518,10 @@ public class JobServiceImpl extends Service implements JobService { for (DepartmentPO departmentPO : filterDeparts) { buildParentDepts(departmentPO, builderDeparts); } - List deptTrees = builderTreeMode(DepartmentBO.buildSetToSearchTree(builderDeparts)); - // 排序,设置是否为叶子节点 - List collect = deptTrees.stream().peek(item -> - item.setIsParent(CollectionUtils.isNotEmpty(item.getSubs())) - ).sorted(Comparator.comparing(item -> Integer.parseInt(item.getId()))).collect(Collectors.toList()); - if (CollectionUtils.isNotEmpty(collect)) { - compSearchTree.addAll(collect); - } + searchTree = SearchTreeUtil.builderTreeMode(DepartmentBO.buildSetToSearchTree(builderDeparts)); + } - return compSearchTree; + return searchTree; } /** @@ -576,9 +529,9 @@ public class JobServiceImpl extends Service implements JobService { * * @param departmentBuild * @param compBuild - * @param compSearchTree + * @return */ - private void buildTreeByCompAndDept(DepartmentPO departmentBuild, CompPO compBuild, List compSearchTree) { + private List buildTreeByCompAndDept(DepartmentPO departmentBuild, CompPO compBuild) { List filterDeparts = getDepartmentMapper().listByFilter(departmentBuild); // 查询分部信息 List filterComps = getCompMapper().listByFilter(compBuild); @@ -586,7 +539,7 @@ public class JobServiceImpl extends Service implements JobService { for (DepartmentPO departmentPO : filterDeparts) { buildParentDepts(departmentPO, builderDeparts); } - List deptTrees = builderTreeMode(DepartmentBO.buildSetToSearchTree(builderDeparts)); + List deptTrees = SearchTreeUtil.builderTreeMode(DepartmentBO.buildSetToSearchTree(builderDeparts)); // 添加部门的上级分部 String parentCompS = deptTrees.stream().map(SearchTree::getParentComp).collect(Collectors.joining(",")); if (!StringUtil.isEmpty(parentCompS)) { @@ -599,81 +552,10 @@ public class JobServiceImpl extends Service implements JobService { for (CompPO compPO : filterComps) { buildParentComps(compPO, builderComps); } - List compTrees = builderTreeMode(CompBO.buildSetToSearchTree(builderComps), deptTrees); - - // 排序,设置是否为叶子节点 - List collect = compTrees.stream().peek(item -> - item.setIsParent(CollectionUtils.isNotEmpty(item.getSubs())) - ).sorted(Comparator.comparing(item -> Integer.parseInt(item.getId()))).collect(Collectors.toList()); - if (CollectionUtils.isNotEmpty(collect)) { - compSearchTree.addAll(collect); - } - } - - /** - * 判断是为顶层数据 - * - * @param pid - * @return - */ - private boolean isTop(Long pid) { - return null == pid; - } - - /** - * 判断是为顶层数据 - * - * @param pid - * @return - */ - private boolean isTop(String pid) { - return StringUtil.isEmpty(pid) || "0".equals(pid); + return SearchTreeUtil.builderTreeMode(CompBO.buildSetToSearchTree(builderComps), deptTrees); } - /** - * 处理树层级 - * - * @param treeList - * @return - */ - private List builderTreeMode(List treeList) { - Map> collects = treeList.stream().collect(Collectors.groupingBy(TreeNode::getPid)); - return treeList.stream().peek(e -> e.setSubs(collects.get(e.getId()))).peek(item -> { - if (CollectionUtils.isNotEmpty(item.getSubs())) { - item.setIsParent(true); - } - }).filter(item -> isTop(item.getPid())).collect(Collectors.toList()); - } - - /** - * 组合分部、部门层级关系 - * - * @param treeList - * @param deptTrees - * @return - */ - private List builderTreeMode(List treeList, List deptTrees) { - Map> parentMap = treeList.stream().collect(Collectors.groupingBy(TreeNode::getPid)); - Map> childMap = deptTrees.stream().collect(Collectors.groupingBy(SearchTree::getParentComp)); - boolean isAdd = !childMap.isEmpty(); - return treeList.stream().peek(e -> { - List treeNodes = new ArrayList<>(); - List nodes = parentMap.get(e.getId()); - if (CollectionUtils.isNotEmpty(nodes)) { - treeNodes.addAll(nodes); - } - if (isAdd && CollectionUtils.isNotEmpty(childMap.get(e.getId()))) { - treeNodes.addAll(childMap.get(e.getId())); - } - e.setSubs(treeNodes); - }).peek(item -> { - if (CollectionUtils.isNotEmpty(item.getSubs())) { - item.setIsParent(true); - } - }).filter(item -> isTop(item.getPid())).collect(Collectors.toList()); - } - /** * 是否有搜索查询 * diff --git a/src/com/engine/organization/util/MenuBtn.java b/src/com/engine/organization/util/MenuBtn.java index cad98205..7d00f83d 100644 --- a/src/com/engine/organization/util/MenuBtn.java +++ b/src/com/engine/organization/util/MenuBtn.java @@ -113,5 +113,28 @@ public class MenuBtn { return btnDatas; } + /** + * 获取常用按钮列表 + * @return + */ + public static Map getDatasNoBtnColum() { + Map btnDatas = new HashMap<>(); + ArrayList topMenuList = new ArrayList<>(); + ArrayList rightMenuList = new ArrayList<>(); + // 新增 + topMenuList.add(MenuBtn.topMenu_addNew()); + // 批量删除 + topMenuList.add(MenuBtn.topMenu_batchDelete()); + btnDatas.put("topMenu", topMenuList); + // 新增 + rightMenuList.add(MenuBtn.rightMenu_addNew()); + // 日志 + rightMenuList.add(MenuBtn.rightMenu_btnLog()); + // 显示列定制 + rightMenuList.add(MenuBtn.rightMenu_btnColumn()); + btnDatas.put("rightMenu", rightMenuList); + return btnDatas; + } + } diff --git a/src/com/engine/organization/util/tree/SearchTreeUtil.java b/src/com/engine/organization/util/tree/SearchTreeUtil.java new file mode 100644 index 00000000..497e12d4 --- /dev/null +++ b/src/com/engine/organization/util/tree/SearchTreeUtil.java @@ -0,0 +1,146 @@ +package com.engine.organization.util.tree; + +import com.api.hrm.bean.TreeNode; +import com.engine.organization.entity.searchtree.SearchTree; +import org.apache.commons.collections4.CollectionUtils; +import weaver.conn.RecordSet; +import weaver.general.StringUtil; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * @description: TODO + * @author:dxfeng + * @createTime: 2022/06/06 + * @version: 1.0 + */ +public class SearchTreeUtil { + /** + * 左侧树 类型表示 + *

+ * 0:集团 + * 1:分部 + * 2:部门 + */ + private static final String TYPE_GROUP = "0"; + + public static Map getSearchTree(String type, List treeList) { + Map dataMap = new HashMap<>(); + SearchTree topGroup = getTopGroup(); + // 集团 + List companyList = new ArrayList<>(); + companyList.add(topGroup); + + List treeDatas = new ArrayList<>(); + // 排序,设置是否为叶子节点 + List collect = treeList.stream().peek(item -> + item.setIsParent(CollectionUtils.isNotEmpty(item.getSubs())) + ).sorted(Comparator.comparing(item -> Integer.parseInt(item.getId()))).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(collect)) { + treeDatas.addAll(collect); + } + + // 未点击,初始化树结构 + if (StringUtil.isEmpty(type)) { + dataMap.put("companys", companyList); + SearchTree rootCompany = getTopGroup(); + rootCompany.setSubs(treeDatas); + rootCompany.setIsParent(CollectionUtils.isNotEmpty(rootCompany.getSubs())); + Map rootCompanyMap = new HashMap<>(); + rootCompanyMap.put("rootCompany", rootCompany); + dataMap.put("datas", rootCompanyMap); + } else { + // 根据ID查询 + dataMap.put("datas", treeDatas); + } + return dataMap; + } + + /** + * 获取集团 + * + * @return + */ + private static SearchTree getTopGroup() { + RecordSet rs = new RecordSet(); + String sql = "select * from HrmCompany "; + rs.executeQuery(sql); + SearchTree groupTree = new SearchTree(); + groupTree.setCanClick(false); + groupTree.setCanceled(false); + groupTree.setCompanyid("1"); + groupTree.setIcon("icon-coms-LargeArea"); + groupTree.setId("0"); + groupTree.setIsVirtual("0"); + while (rs.next()) { + groupTree.setName(rs.getString("COMPANYNAME")); + } + groupTree.setSelected(false); + groupTree.setType(TYPE_GROUP); + return groupTree; + } + + /** + * 处理树层级 + * + * @param treeList + * @return + */ + public static List builderTreeMode(List treeList) { + Map> collects = treeList.stream().collect(Collectors.groupingBy(TreeNode::getPid)); + return treeList.stream().peek(e -> e.setSubs(collects.get(e.getId()))).peek(item -> { + if (CollectionUtils.isNotEmpty(item.getSubs())) { + item.setIsParent(true); + } + }).filter(item -> isTop(item.getPid())).collect(Collectors.toList()); + } + + /** + * 组合分部、部门层级关系 + * + * @param treeList + * @param deptTrees + * @return + */ + public static List builderTreeMode(List treeList, List deptTrees) { + Map> parentMap = treeList.stream().collect(Collectors.groupingBy(TreeNode::getPid)); + Map> childMap = deptTrees.stream().collect(Collectors.groupingBy(SearchTree::getParentComp)); + boolean isAdd = !childMap.isEmpty(); + return treeList.stream().peek(e -> { + List treeNodes = new ArrayList<>(); + List nodes = parentMap.get(e.getId()); + if (CollectionUtils.isNotEmpty(nodes)) { + treeNodes.addAll(nodes); + } + if (isAdd && CollectionUtils.isNotEmpty(childMap.get(e.getId()))) { + treeNodes.addAll(childMap.get(e.getId())); + } + e.setSubs(treeNodes); + }).peek(item -> { + if (CollectionUtils.isNotEmpty(item.getSubs())) { + item.setIsParent(true); + } + }).filter(item -> isTop(item.getPid())).collect(Collectors.toList()); + } + + /** + * 判断是为顶层数据 + * + * @param pid + * @return + */ + private static boolean isTop(String pid) { + return StringUtil.isEmpty(pid) || "0".equals(pid); + } + + /** + * 判断是为顶层数据 + * + * @param pid + * @return + */ + public static boolean isTop(Long pid) { + return null == pid; + } +}