diff --git a/src/com/engine/organization/entity/chart/TreeSelect.java b/src/com/engine/organization/entity/chart/TreeSelect.java index 8e3da768..c3775af7 100644 --- a/src/com/engine/organization/entity/chart/TreeSelect.java +++ b/src/com/engine/organization/entity/chart/TreeSelect.java @@ -38,7 +38,7 @@ public class TreeSelect { private String canceled; private boolean disabled; - private String cancelSql; + private String showCanceled; public List getChildren() { if (null != children) { @@ -50,24 +50,24 @@ public class TreeSelect { String sql = "select id ,subcompanyname ,canceled from hrmsubcompany where " + getCancelSqlStr() + " and (supsubcomid is null or supsubcomid = 0) and companyid = ? order by showorder,id"; rs.executeQuery(sql, key); while (rs.next()) { - children.add(TreeSelect.builder().key(rs.getString("id")).title(rs.getString("subcompanyname")).canceled(rs.getString("canceled")).type(SUB_COMPANY).cancelSql(cancelSql).build()); + children.add(TreeSelect.builder().key(rs.getString("id")).title(rs.getString("subcompanyname")).canceled(rs.getString("canceled")).type(SUB_COMPANY).showCanceled(showCanceled).build()); } } else if (SUB_COMPANY.equals(type)) { String sql = "select id ,subcompanyname ,canceled from hrmsubcompany where " + getCancelSqlStr() + " and supsubcomid = ? order by showorder,id"; rs.executeQuery(sql, key); while (rs.next()) { - children.add(TreeSelect.builder().key(rs.getString("id")).title(rs.getString("subcompanyname")).canceled(rs.getString("canceled")).type(SUB_COMPANY).cancelSql(cancelSql).build()); + children.add(TreeSelect.builder().key(rs.getString("id")).title(rs.getString("subcompanyname")).canceled(rs.getString("canceled")).type(SUB_COMPANY).showCanceled(showCanceled).build()); } sql = "select id,departmentname ,canceled from hrmdepartment where " + getCancelSqlStr() + " and (supdepid is null or supdepid =0) and subcompanyid1 = ? order by showorder,id"; rs.executeQuery(sql, key); while (rs.next()) { - children.add(TreeSelect.builder().key(rs.getString("id")).title(rs.getString("departmentname")).canceled(rs.getString("canceled")).type(DEPARTMENT).cancelSql(cancelSql).build()); + children.add(TreeSelect.builder().key(rs.getString("id")).title(rs.getString("departmentname")).canceled(rs.getString("canceled")).type(DEPARTMENT).showCanceled(showCanceled).build()); } } else if (DEPARTMENT.equals(type)) { String sql = "select id,departmentname ,canceled from hrmdepartment where " + getCancelSqlStr() + " and supdepid = ? order by showorder,id"; rs.executeQuery(sql, key); while (rs.next()) { - children.add(TreeSelect.builder().key(rs.getString("id")).title(rs.getString("departmentname")).canceled(rs.getString("canceled")).type(DEPARTMENT).cancelSql(cancelSql).build()); + children.add(TreeSelect.builder().key(rs.getString("id")).title(rs.getString("departmentname")).canceled(rs.getString("canceled")).type(DEPARTMENT).showCanceled(showCanceled).build()); } } return CollectionUtils.isEmpty(children) ? null : children; @@ -98,12 +98,12 @@ public class TreeSelect { return canceled; } - public String getCancelSql() { + public String getShowCanceled() { return null; } private String getCancelSqlStr() { - if (StringUtils.isNotBlank(cancelSql) && "1".equals(cancelSql)) { + if (StringUtils.isNotBlank(showCanceled) && "1".equals(showCanceled)) { return " 1=1 "; } else { return " (canceled is null or canceled != 1) "; diff --git a/src/com/engine/organization/service/impl/ChartServiceImpl.java b/src/com/engine/organization/service/impl/ChartServiceImpl.java index 6d57df96..94b6d9ca 100644 --- a/src/com/engine/organization/service/impl/ChartServiceImpl.java +++ b/src/com/engine/organization/service/impl/ChartServiceImpl.java @@ -20,6 +20,8 @@ import weaver.conn.RecordSet; import weaver.conn.RecordSetTrans; import weaver.general.Util; import weaver.hrm.User; +import weaver.hrm.company.DepartmentComInfo; +import weaver.hrm.company.SubCompanyComInfo; import weaver.hrm.resource.ResourceComInfo; import java.time.LocalDate; @@ -480,11 +482,14 @@ public class ChartServiceImpl extends Service implements ChartService { rs.executeQuery("select id,companyname from hrmcompany"); TreeSelect companyTree = null; List expandedKeys = new ArrayList<>(); - String canceled = Util.null2String(params.get("canceled")); + String showCanceled = Util.null2String(params.get("showCanceled")); + String expandedKeyStr = Util.null2String(params.get("expandedKeys")); if(rs.next()){ - companyTree = TreeSelect.builder().key(rs.getString("id")).title(rs.getString("companyname")).type(TreeSelect.COMPANY).cancelSql(canceled).build(); + companyTree = TreeSelect.builder().key(rs.getString("id")).title(rs.getString("companyname")).type(TreeSelect.COMPANY).showCanceled(showCanceled).build(); expandedKeys.add(companyTree.getKey()); } + // 所有需展开节点,同时需查询父级部门、分部ID + addParentTreeId(expandedKeys, expandedKeyStr); Map result = new HashMap<>(3); result.put("movingTree", Collections.singletonList(companyTree)); result.put("expandedKeys", expandedKeys); @@ -498,9 +503,9 @@ public class ChartServiceImpl extends Service implements ChartService { rs.executeQuery("select id,companyname from hrmcompany"); TreeSelect companyTree = null; List expandedKeys = new ArrayList<>(); - String canceled = Util.null2String(params.get("canceled")); + String showCanceled = Util.null2String(params.get("showCanceled")); if(rs.next()){ - companyTree = TreeSelect.builder().key(rs.getString("id")).title(rs.getString("companyname")).type(TreeSelect.COMPANY).cancelSql(canceled).build(); + companyTree = TreeSelect.builder().key(rs.getString("id")).title(rs.getString("companyname")).type(TreeSelect.COMPANY).showCanceled(showCanceled).build(); expandedKeys = companyTree.getChildren().stream().filter(item -> CollectionUtils.isNotEmpty(item.getChildren())).map(TreeSelect::getKey).collect(Collectors.toList()); expandedKeys.add(companyTree.getKey()); } @@ -512,6 +517,47 @@ public class ChartServiceImpl extends Service implements ChartService { return result; } + /** + * 添加树结构所有上级节点 + * + * @param expandedKeys 完整的上级ID集合 + * @param expandedKeyStr 需要展开的树ID + */ + private void addParentTreeId(List expandedKeys,String expandedKeyStr){ + if(StringUtils.isNotBlank(expandedKeyStr)) { + String[] split = expandedKeyStr.split(","); + for (String s : split) { + try { + // 上级分部ID + String subcompanyid1 = new DepartmentComInfo().getSubcompanyid1(s); + String allSupCompany = new SubCompanyComInfo().getAllSupCompany(subcompanyid1); + String[] array = allSupCompany.split(","); + for (String supCompany : array) { + if (StringUtils.isBlank(supCompany)) { + continue; + } + expandedKeys.add("s" + supCompany); + } + expandedKeys.add("s" + subcompanyid1); + + // 上级部门ID + String allSupDepartment = new DepartmentComInfo().getAllSupDepartment(s); + array = allSupDepartment.split(","); + for (String supDepartment : array) { + if (StringUtils.isBlank(supDepartment)) { + continue; + } + expandedKeys.add("d" + supDepartment); + } + + expandedKeys.add("d" + s); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } + } + /** * 树节点是否禁用 *