From a6b10dcd8e64e5b5b18a9bd8861fd1daadb75d82 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Fri, 2 Aug 2024 14:15:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=B9=E7=BB=93=E7=82=B9=E6=A0=91=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=83=A8=E9=97=A8=E8=8A=82=E7=82=B9=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChartServiceImpl.java | 24 ++++++-- .../service/impl/OrgChartServiceImpl.java | 58 +++++-------------- 2 files changed, 33 insertions(+), 49 deletions(-) diff --git a/src/com/engine/organization/service/impl/ChartServiceImpl.java b/src/com/engine/organization/service/impl/ChartServiceImpl.java index b3c3b360..2f9e8acf 100644 --- a/src/com/engine/organization/service/impl/ChartServiceImpl.java +++ b/src/com/engine/organization/service/impl/ChartServiceImpl.java @@ -89,6 +89,7 @@ public class ChartServiceImpl extends Service implements ChartService { // 根结点 String root = Util.null2String(params.get("root")); root = StringUtils.isBlank(root) ? "0" : root; + boolean isDepartment = root.startsWith("d"); // 维度 String dimension = Util.null2String(params.get("fclass")); @@ -524,6 +525,19 @@ public class ChartServiceImpl extends Service implements ChartService { public Map getDepartmentTree(Map params) { Map result = new HashMap<>(2); + List departmentTree = getDepartmentTreeList(params); + result.put("departmentTree", departmentTree); + result.put("api_status", true); + return result; + } + + /** + * 获取部门树集合 + * + * @param params + * @return + */ + public static List getDepartmentTreeList(Map params) { RecordSet rs = new RecordSet(); List departmentTree = new ArrayList<>(); String subCompany = Util.null2String(params.get("subcompany")); @@ -535,11 +549,9 @@ public class ChartServiceImpl extends Service implements ChartService { String sql = getDepartmentTreeSql(versionId, dimension, subCompany); rs.executeQuery(sql); while (rs.next()) { - departmentTree.add(CompanyTreePO.builder().id(rs.getString("id")).pId(rs.getString("pId")).disabled(!rs.getString("id").startsWith("d")).value(rs.getString("value")).title(rs.getString("title")).isLeaf(judgeTreeLeaf(versionId, dimension, rs.getString("id"))).build()); + departmentTree.add(CompanyTreePO.builder().id(rs.getString("id")).pId(rs.getString("pId")).disabled(false).value(rs.getString("value")).title(rs.getString("title")).isLeaf(judgeTreeLeaf(versionId, dimension, rs.getString("id"))).build()); } - result.put("departmentTree", departmentTree); - result.put("api_status", true); - return result; + return departmentTree; } @Override @@ -1654,7 +1666,7 @@ public class ChartServiceImpl extends Service implements ChartService { * @param subCompany 上级Id * @return SQL */ - private String getDepartmentTreeSql(String versionId, String dimension, String subCompany) { + private static String getDepartmentTreeSql(String versionId, String dimension, String subCompany) { // 是否展示当前数据 boolean isSearchCurrent = StringUtils.isBlank(versionId) || "0".equals(versionId); boolean isCurrentDimension = StringUtils.isNotBlank(dimension) && !"0".equals(dimension); @@ -1716,7 +1728,7 @@ public class ChartServiceImpl extends Service implements ChartService { * @param subCompany 上级元素ID * @return */ - private boolean judgeTreeLeaf(String versionId, String dimension, String subCompany) { + private static boolean judgeTreeLeaf(String versionId, String dimension, String subCompany) { RecordSet recordSet = new RecordSet(); String sql = getDepartmentTreeSql(versionId, dimension, subCompany); recordSet.executeQuery(sql); diff --git a/src/com/engine/organization/service/impl/OrgChartServiceImpl.java b/src/com/engine/organization/service/impl/OrgChartServiceImpl.java index 53ca2237..0c116879 100644 --- a/src/com/engine/organization/service/impl/OrgChartServiceImpl.java +++ b/src/com/engine/organization/service/impl/OrgChartServiceImpl.java @@ -58,54 +58,29 @@ public class OrgChartServiceImpl extends Service implements OrgChartService { item.put("companyname", rs.getString("companyname")); fclasslist.add(item); } - - List companyTree = new ArrayList<>(); - String sql = "select id as id, id as value, subcompanyname as title, supsubcomid as pId from hrmsubcompany where (canceled is null or canceled != '1') and " + DBType.get(new RecordSet().getDBType()).ifNull("supsubcomid", "0") + " = '0'"; - // 一级分部数据分权处理 - String dimension = Util.null2String(request2Map.get("fclass")); - //版本id - String id = Util.null2String(request2Map.get("id")); - boolean isRealDimension = StringUtils.isBlank(dimension) || "0".equals(dimension); - boolean isRealTime = StringUtils.isBlank(id) || "0".equals(id); - if (isRealTime && user.getUID() != 1 && isRealDimension) { - DetachUtil detachUtil = new DetachUtil(user); - if(detachUtil.isDETACH()) { - String ids = detachUtil.getJclRoleLevels(); - sql = sql + " and id in (" + ids + ")"; - } - } - - rs.executeQuery(sql); - while (rs.next()) { - companyTree.add(CompanyTreePO.builder().id(rs.getString("id")).pId(rs.getString("pId")).value(rs.getString("value")).title(rs.getString("title")).isLeaf(judgeTreeLeaf("select id from hrmsubcompany where (canceled is null or canceled != '1') and supsubcomid = ?", rs.getString("id"))).build()); - } result.put("api_status", true); result.put("fclasslist", fclasslist); - result.put("companyTree", companyTree); + Map subCompanyTree = getSubCompanyTree(request2Map); + result.putAll(subCompanyTree); return result; } @Override public Map getSubCompanyTree(Map params) { Map result = new HashMap<>(2); + List departmentTree = ChartServiceImpl.getDepartmentTreeList(params); + result.put("companyTree", departmentTree); + return result; + } - RecordSet rs = new RecordSet(); - List companyTree = new ArrayList<>(); - String subcompany = Util.null2String(params.get("subcompany")); - if (StringUtils.isBlank(subcompany)) { - subcompany = "0"; - } - String fclass = Util.null2String(params.get("fclass")); - String id = Util.null2String(params.get("id")); + private String getSubCompanyTreeSql(String id, String fclass, String subcompany) { // 是否展示当前数据 boolean isSearchCurrent = StringUtils.isBlank(id) || "0".equals(id); String sql; - String judgeTreeLeafSql; if (isSearchCurrent) { sql = "select id as id, id as value, subcompanyname as title, supsubcomid as pId from hrmsubcompany where (canceled is null or canceled != '1') and " + DBType.get(new RecordSet().getDBType()).ifNull("supsubcomid", "0") + " = ? "; boolean isRealDimension = StringUtils.isBlank(fclass) || "0".equals(fclass); boolean isRealTime = StringUtils.isBlank(id) || "0".equals(id); - judgeTreeLeafSql = sql; if (isRealTime && user.getUID() != 1 && isRealDimension) { DetachUtil detachUtil = new DetachUtil(user); if (detachUtil.isDETACH()) { @@ -125,14 +100,8 @@ public class OrgChartServiceImpl extends Service implements OrgChartService { } // 添加时间轴条件 sql += " and versionid = " + id; - judgeTreeLeafSql = sql; } - rs.executeQuery(sql, subcompany); - while (rs.next()) { - companyTree.add(CompanyTreePO.builder().id(rs.getString("id")).pId(rs.getString("pId")).value(rs.getString("value")).title(rs.getString("title")).isLeaf(judgeTreeLeaf(judgeTreeLeafSql, rs.getString("id"))).build()); - } - result.put("companyTree", companyTree); - return result; + return sql; } private String companyDateWhereSql(Map request2Map) { @@ -705,16 +674,19 @@ public class OrgChartServiceImpl extends Service implements OrgChartService { return fieldname; } + /** * 判断树是否为叶子节点 * - * @param sql 查询下级元素SQL - * @param treeId 当前元素ID + * @param versionId + * @param dimension + * @param subCompany * @return */ - private boolean judgeTreeLeaf(String sql, String treeId) { + private boolean judgeTreeLeaf(String versionId, String dimension, String subCompany) { RecordSet recordSet = new RecordSet(); - recordSet.executeQuery(sql, treeId); + String sql = getSubCompanyTreeSql(versionId, dimension, subCompany); + recordSet.executeQuery(sql, subCompany); return !recordSet.next(); }