From 8d9303f07cc9ef1575fa6e223c1f9cfa35df2ac8 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 30 Jul 2024 18:34:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=99=B6=E4=BC=98=E7=BB=84=E7=BB=87=E6=9E=B6?= =?UTF-8?q?=E6=9E=84=E5=9B=BE=E9=87=8D=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../organization/entity/jingyou/JyChart.java | 26 ++ .../entity/jingyou/JyCompanyChart.java | 42 ++- .../entity/jingyou/JyDepartmentChart.java | 58 +++- .../entity/jingyou/JyJobChart.java | 40 ++- .../entity/jingyou/JyResourceChart.java | 31 +- .../entity/jingyou/JySubCompanyChart.java | 59 +++- .../service/impl/JyChartServiceImpl.java | 282 ++++++++++++++++-- 7 files changed, 507 insertions(+), 31 deletions(-) diff --git a/src/com/engine/organization/entity/jingyou/JyChart.java b/src/com/engine/organization/entity/jingyou/JyChart.java index 94342a3e..bc165f75 100644 --- a/src/com/engine/organization/entity/jingyou/JyChart.java +++ b/src/com/engine/organization/entity/jingyou/JyChart.java @@ -1,5 +1,8 @@ package com.engine.organization.entity.jingyou; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; + import java.util.Objects; /** @@ -28,6 +31,13 @@ public class JyChart { private String fleaderlv; private String fleaderst; + protected static final RecordSet rs = new RecordSet(); + + // 提供静态方法来获取 RecordSet 实例 + public static RecordSet getRecordSet() { + return rs; + } + public String getId() { return id; } @@ -69,6 +79,22 @@ public class JyChart { } public String getFobjid() { + // 根据EcId获取聚才林ID + if (StringUtils.isNotBlank(fecid) && StringUtils.isNotBlank(id)) { + if (id.startsWith("s_")) { + // 查询聚才林分部的ID + rs.executeQuery("select id from jcl_org_comp where ec_company = ?",fecid); + if(rs.next()){ + return rs.getString("id"); + } + } else if (id.startsWith("d_")) { + // 查询聚才林分部的ID + rs.executeQuery("select id from jcl_org_dept where ec_department = ?",fecid); + if(rs.next()){ + return rs.getString("id"); + } + } + } return fobjid; } diff --git a/src/com/engine/organization/entity/jingyou/JyCompanyChart.java b/src/com/engine/organization/entity/jingyou/JyCompanyChart.java index 6b9e8513..1cc3f4f0 100644 --- a/src/com/engine/organization/entity/jingyou/JyCompanyChart.java +++ b/src/com/engine/organization/entity/jingyou/JyCompanyChart.java @@ -1,9 +1,49 @@ package com.engine.organization.entity.jingyou; +import cn.hutool.core.convert.Convert; +import weaver.conn.RecordSet; + /** * @author:dxfeng * @createTime: 2024/07/19 * @version: 1.0 */ -public class JyCompanyChart extends JyChart{ +public class JyCompanyChart extends JyChart { + + @Override + public String getFleadername() { + return ""; + } + + @Override + public String getFplan() { + RecordSet rs = getRecordSet(); + rs.executeQuery("select sum(staff_num) as num from jcl_org_staff"); + if(rs.next()){ + return String.valueOf(Convert.toInt(rs.getString("num"),0)); + } + + return "0"; + } + + @Override + public String getFonjob() { + RecordSet rs = getRecordSet(); + // 查询在岗数 + rs.executeQuery("select count(id) as fonjob from hrmresource where status <4 "); + if(rs.next()){ + return rs.getString("fonjob"); + } + return "0"; + } + + @Override + public boolean equals(Object o) { + return super.equals(o); + } + + @Override + public int hashCode() { + return super.hashCode(); + } } diff --git a/src/com/engine/organization/entity/jingyou/JyDepartmentChart.java b/src/com/engine/organization/entity/jingyou/JyDepartmentChart.java index 1d9efc2a..a9c96c0b 100644 --- a/src/com/engine/organization/entity/jingyou/JyDepartmentChart.java +++ b/src/com/engine/organization/entity/jingyou/JyDepartmentChart.java @@ -1,9 +1,65 @@ package com.engine.organization.entity.jingyou; +import cn.hutool.core.convert.Convert; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.hrm.company.DepartmentComInfo; + +import java.util.ArrayList; + /** * @author:dxfeng * @createTime: 2024/07/19 * @version: 1.0 */ -public class JyDepartmentChart extends JyChart{ +public class JyDepartmentChart extends JyChart { + @Override + public String getFplan() { + RecordSet rs = getRecordSet(); + String fecid = super.getFecid(); + ArrayList ids = new ArrayList<>(); + new DepartmentComInfo().getAllChildDeptByDepId(ids,fecid); + ids.add(fecid); + String idsStr = StringUtils.join(ids, ","); + rs.executeQuery("select sum(staff_num) as num from jcl_org_staff where dept_id in(" + idsStr + ")"); + if (rs.next()) { + return String.valueOf(Convert.toInt(rs.getString("num"),0)); + } + + return "0"; + } + + @Override + public String getFonjob() { + RecordSet rs = getRecordSet(); + String fecid = super.getFecid(); + if (StringUtils.isNotBlank(fecid)) { + ArrayList ids = new ArrayList<>(); + new DepartmentComInfo().getAllChildDeptByDepId(ids,fecid); + ids.add(fecid); + String idsStr = StringUtils.join(ids, ","); + + // 查询在岗数 + rs.executeQuery("select count(id) as fonjob from hrmresource where status <4 and departmentid in (" + idsStr + ")"); + if (rs.next()) { + return rs.getString("fonjob"); + } + } + return "0"; + } + + @Override + public String getFleadername() { + return ""; + } + + @Override + public boolean equals(Object o) { + return super.equals(o); + } + + @Override + public int hashCode() { + return super.hashCode(); + } } diff --git a/src/com/engine/organization/entity/jingyou/JyJobChart.java b/src/com/engine/organization/entity/jingyou/JyJobChart.java index 6509a5c1..1fa3580b 100644 --- a/src/com/engine/organization/entity/jingyou/JyJobChart.java +++ b/src/com/engine/organization/entity/jingyou/JyJobChart.java @@ -1,9 +1,47 @@ package com.engine.organization.entity.jingyou; +import cn.hutool.core.convert.Convert; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; + /** * @author:dxfeng * @createTime: 2024/07/19 * @version: 1.0 */ -public class JyJobChart extends JyChart{ +public class JyJobChart extends JyChart { + @Override + public String getFplan() { + RecordSet rs = getRecordSet(); + rs.executeQuery("select sum(staff_num) as num from jcl_org_staff where job_id = ?",getFecid()); + if(rs.next()){ + return String.valueOf(Convert.toInt(rs.getString("num"),0)); + } + + return "0"; + } + + @Override + public String getFonjob() { + RecordSet rs = getRecordSet(); + String fecid = super.getFecid(); + if (StringUtils.isNotBlank(fecid)) { + // 查询在岗数 + rs.executeQuery("select count(a.id) as fonjob from hrmresource a inner join cus_fielddata b on a.id = b.id and b.scope ='hrmcustomfieldbyinfotype' and b.scopeid ='-1' where a.status <4 and b.field100002 = ?", fecid); + if (rs.next()) { + return rs.getString("fonjob"); + } + } + return "0"; + } + + @Override + public boolean equals(Object o) { + return super.equals(o); + } + + @Override + public int hashCode() { + return super.hashCode(); + } } diff --git a/src/com/engine/organization/entity/jingyou/JyResourceChart.java b/src/com/engine/organization/entity/jingyou/JyResourceChart.java index f45ae713..6976c5c1 100644 --- a/src/com/engine/organization/entity/jingyou/JyResourceChart.java +++ b/src/com/engine/organization/entity/jingyou/JyResourceChart.java @@ -1,9 +1,38 @@ package com.engine.organization.entity.jingyou; +import com.engine.organization.service.impl.JyChartServiceImpl; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; + /** * @author:dxfeng * @createTime: 2024/07/19 * @version: 1.0 */ -public class JyResourceChart extends JyChart{ +public class JyResourceChart extends JyChart { + @Override + public String getFleaderjob() { + String parentId = getParentId(); + if (StringUtils.isNotBlank(parentId)) { + String chartId = JyChartServiceImpl.getChartId(parentId); + if (StringUtils.isNotBlank(chartId)) { + RecordSet rs = getRecordSet(); + rs.executeQuery("select job_name from jcl_org_job where id = ?", chartId); + if (rs.next()) { + return rs.getString("job_name"); + } + } + } + return ""; + } + + @Override + public boolean equals(Object o) { + return super.equals(o); + } + + @Override + public int hashCode() { + return super.hashCode(); + } } diff --git a/src/com/engine/organization/entity/jingyou/JySubCompanyChart.java b/src/com/engine/organization/entity/jingyou/JySubCompanyChart.java index 77ed43e7..efcb4e16 100644 --- a/src/com/engine/organization/entity/jingyou/JySubCompanyChart.java +++ b/src/com/engine/organization/entity/jingyou/JySubCompanyChart.java @@ -1,9 +1,66 @@ package com.engine.organization.entity.jingyou; +import cn.hutool.core.convert.Convert; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.hrm.company.SubCompanyComInfo; + +import java.util.ArrayList; + /** * @author:dxfeng * @createTime: 2024/07/19 * @version: 1.0 */ -public class JySubCompanyChart extends JyChart{ +public class JySubCompanyChart extends JyChart { + + @Override + public String getFplan() { + RecordSet rs = getRecordSet(); + ArrayList ids = new ArrayList<>(); + String fecid = super.getFecid(); + new SubCompanyComInfo().getSubCompanyLists(fecid, ids); + ids.add(fecid); + String idsStr = StringUtils.join(ids, ","); + rs.executeQuery("select sum(staff_num) as num from jcl_org_staff where comp_id in(" + idsStr + ")"); + if (rs.next()) { + return String.valueOf(Convert.toInt(rs.getString("num"),0)); + } + + return "0"; + } + + @Override + public String getFonjob() { + String fecid = super.getFecid(); + if (StringUtils.isNotBlank(fecid)) { + RecordSet rs = getRecordSet(); + ArrayList ids = new ArrayList<>(); + new SubCompanyComInfo().getSubCompanyLists(fecid,ids); + ids.add(fecid); + String idsStr = StringUtils.join(ids, ","); + + // 查询在岗数 + rs.executeQuery("select count(id) as fonjob from hrmresource where status <4 and subcompanyid1 in (" + idsStr + ")"); + if (rs.next()) { + return rs.getString("fonjob"); + } + } + return "0"; + } + + @Override + public String getFleadername() { + return ""; + } + + @Override + public boolean equals(Object o) { + return super.equals(o); + } + + @Override + public int hashCode() { + return super.hashCode(); + } } diff --git a/src/com/engine/organization/service/impl/JyChartServiceImpl.java b/src/com/engine/organization/service/impl/JyChartServiceImpl.java index 3b0551b0..63ddc798 100644 --- a/src/com/engine/organization/service/impl/JyChartServiceImpl.java +++ b/src/com/engine/organization/service/impl/JyChartServiceImpl.java @@ -2,8 +2,8 @@ package com.engine.organization.service.impl; import cn.hutool.core.convert.Convert; import com.engine.core.impl.Service; -import com.engine.organization.entity.jingyou.JyChart; -import com.engine.organization.entity.jingyou.JyOrgSelectItem; +import com.engine.organization.entity.jingyou.*; +import com.engine.organization.service.OrgChartService; import com.engine.organization.util.HasRightUtil; import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; @@ -17,14 +17,13 @@ import java.util.*; * @date: 2022/7/7 * @description: 组织架构图ServiceImpl **/ -public class JyChartServiceImpl extends Service { - - private RecordSet grs = new RecordSet(); +public class JyChartServiceImpl extends Service implements OrgChartService { private static final String COMPANY_RIGHT = "OrgChart:All"; private static final String USER_RIGHT = "OrgPerspective:All"; RecordSet rs = new RecordSet(); + @Override public Map getOptionCondition(Map request2Map, User user) { Map result = new HashMap<>(); @@ -69,7 +68,7 @@ public class JyChartServiceImpl extends Service { return result; } - + @Override public Map getCompanyData(Map request2Map, User user) { Map result = new HashMap<>(); boolean hasRight = HasRightUtil.hasRight(user, COMPANY_RIGHT, true); @@ -108,11 +107,11 @@ public class JyChartServiceImpl extends Service { item.setFname(rs.getString("companyname")); item.setFtype("0"); item.setFnumber(rs.getString("companycode")); - item.setFobjid(rs.getString("id")); + item.setFecid(rs.getString("id")); item.setFisvitual("0"); item.setExpand("1"); chartList.add(item); - buildSubCompanyData(item.getFobjid(), "0", item.getId(), currentLevel, chartList); + buildSubCompanyData(item.getFecid(), "0", item.getId(), currentLevel, chartList); } } else if (root.startsWith("s_")) { // 分部 @@ -124,12 +123,12 @@ public class JyChartServiceImpl extends Service { item.setFname(rs.getString("subcompanyname")); item.setFtype("1"); item.setFnumber(rs.getString("subcompanycode")); - item.setFobjid(rs.getString("id")); + item.setFecid(rs.getString("id")); item.setFisvitual("0"); item.setExpand("1"); chartList.add(item); - buildSubCompanyData(rs.getString("companyid"), item.getFobjid(), item.getId(), currentLevel, chartList); - buildDepartmentData(item.getFobjid(), "0", item.getId(), currentLevel, chartList); + buildSubCompanyData(rs.getString("companyid"), item.getFecid(), item.getId(), currentLevel, chartList); + buildDepartmentData(item.getFecid(), "0", item.getId(), currentLevel, chartList); } } } @@ -140,6 +139,7 @@ public class JyChartServiceImpl extends Service { return result; } + @Override public Map asyncCompanyData(Map request2Map, User user) { String ids = (String) request2Map.get("ids"); Set chartList = new LinkedHashSet<>(); @@ -157,12 +157,12 @@ public class JyChartServiceImpl extends Service { item.setFname(rs.getString("subcompanyname")); item.setFtype("1"); item.setFnumber(rs.getString("subcompanycode")); - item.setFobjid(rs.getString("id")); + item.setFecid(rs.getString("id")); item.setFisvitual("0"); item.setExpand("0"); chartList.add(item); - buildSubCompanyData(rs.getString("companyid"), item.getFobjid(), item.getId(), 0, chartList); - buildDepartmentData(item.getFobjid(), "0", item.getId(), 0, chartList); + buildSubCompanyData(rs.getString("companyid"), item.getFecid(), item.getId(), 0, chartList); + buildDepartmentData(item.getFecid(), "0", item.getId(), 0, chartList); } } else if (splitId.startsWith("d_")) { // 分部 @@ -175,12 +175,149 @@ public class JyChartServiceImpl extends Service { jyChart.setFname(rs.getString("departmentmark")); jyChart.setFtype("2"); jyChart.setFnumber(rs.getString("departmentcode")); - jyChart.setFobjid(rs.getString("id")); + jyChart.setFecid(rs.getString("id")); jyChart.setFisvitual("0"); jyChart.setExpand("0"); chartList.add(jyChart); String subCompanyId = rs.getString("subcompanyid1"); - buildDepartmentData(subCompanyId, jyChart.getFobjid(), jyChart.getId(), 0, chartList); + buildDepartmentData(subCompanyId, jyChart.getFecid(), jyChart.getId(), 0, chartList); + } + } + } + } + + Map result = new HashMap<>(); + result.put("api_status", true); + result.put("data", chartList); + return result; + } + + @Override + public Map getUserData(Map request2Map, User user) { + Map result = new HashMap<>(); + boolean hasRight = HasRightUtil.hasRight(user, USER_RIGHT, true); + result.put("hasRight", hasRight); + if (!hasRight) { + return result; + } + String root = (String) request2Map.get("root"); // 根节点 + String level = (String) request2Map.get("level"); // 显示层级 + int currentLevel = Convert.toInt(level, 3); + // 维度 + String fclass = (String) request2Map.get("fclass"); + + // 当前维度 + boolean currentDimension = "0".equals(fclass); + + String fisvitual = (String) request2Map.get("fisvitual"); // 是否显示虚拟组织 + if (StringUtils.isBlank(fisvitual)) { + fisvitual = "0"; + } + + + Set chartList = new LinkedHashSet<>(); + if (currentDimension) { + if ("0".equals(root)) { + // 集团 + rs.executeQuery("select * from hrmcompany"); + if (rs.next()) { + JyCompanyChart item = new JyCompanyChart(); + item.setId("0"); + item.setFname(rs.getString("companyname")); + item.setFtype("0"); + item.setFnumber(rs.getString("companycode")); + item.setFecid(rs.getString("id")); + item.setFisvitual("0"); + item.setExpand("1"); + chartList.add(item); + buildSubCompanyUserData(item.getFecid(), "0", item.getId(), currentLevel, chartList); + } + } else if (root.startsWith("s_")) { + // 分部 + String chartId = getChartId(root); + rs.executeQuery("select * from hrmsubcompany where id = ?", chartId); + if (rs.next()) { + JySubCompanyChart item = new JySubCompanyChart(); + item.setId("s_" + rs.getString("id")); + item.setFname(rs.getString("subcompanyname")); + item.setFtype("1"); + item.setFnumber(rs.getString("subcompanycode")); + item.setFecid(rs.getString("id")); + item.setFisvitual("0"); + item.setExpand("1"); + chartList.add(item); + buildSubCompanyUserData(rs.getString("companyid"), item.getFecid(), item.getId(), currentLevel, chartList); + buildDepartmentUserData(item.getFecid(), "0", item.getId(), currentLevel, chartList); + } + } + } + + + result.put("api_status", true); + result.put("data", chartList); + return result; + } + + @Override + public Map asyncUserData(Map request2Map, User user) { + String ids = (String) request2Map.get("ids"); + Set chartList = new LinkedHashSet<>(); + if (StringUtils.isNotBlank(ids)) { + String[] splitIds = ids.split(","); + for (String splitId : splitIds) { + if (splitId.startsWith("s_")) { + // 分部 + String chartId = getChartId(splitId); + rs.executeQuery("select * from hrmsubcompany where id = ?", chartId); + if (rs.next()) { + JySubCompanyChart item = new JySubCompanyChart(); + item.setId("s_" + rs.getString("id")); + item.setParentId(splitId); + item.setFname(rs.getString("subcompanyname")); + item.setFtype("1"); + item.setFnumber(rs.getString("subcompanycode")); + item.setFecid(rs.getString("id")); + item.setFisvitual("0"); + item.setExpand("0"); + chartList.add(item); + buildSubCompanyUserData(rs.getString("companyid"), item.getFecid(), item.getId(), 0, chartList); + buildDepartmentUserData(item.getFecid(), "0", item.getId(), 0, chartList); + } + } else if (splitId.startsWith("d_")) { + // 部门 + String chartId = getChartId(splitId); + rs.executeQuery("select * from hrmdepartment where id = ?", chartId); + if (rs.next()) { + JyDepartmentChart jyChart = new JyDepartmentChart(); + jyChart.setId("d_" + rs.getString("id")); + jyChart.setParentId(splitId); + jyChart.setFname(rs.getString("departmentmark")); + jyChart.setFtype("2"); + jyChart.setFnumber(rs.getString("departmentcode")); + jyChart.setFecid(rs.getString("id")); + jyChart.setFisvitual("0"); + jyChart.setExpand("0"); + chartList.add(jyChart); + String subCompanyId = rs.getString("subcompanyid1"); + buildDepartmentUserData(subCompanyId, jyChart.getFecid(), jyChart.getId(), 0, chartList); + buildJobUserData(jyChart.getFecid(), jyChart.getId(), 0, chartList); + } + }else if (splitId.startsWith("j_")) { + // 岗位 + String chartId = getChartId(splitId); + rs.executeQuery("select * from jcl_org_job where id = ?", chartId); + if (rs.next()) { + JyJobChart jyChart = new JyJobChart(); + jyChart.setId("j_" + rs.getString("id")); + jyChart.setParentId(splitId); + jyChart.setFname(rs.getString("job_name")); + jyChart.setFtype("3"); + jyChart.setFnumber(rs.getString("job_no")); + jyChart.setFecid(rs.getString("id")); + jyChart.setFisvitual("0"); + jyChart.setExpand("0"); + chartList.add(jyChart); + buildResourceUserData(jyChart.getFecid(), jyChart.getId(), 0, chartList); } } } @@ -205,20 +342,17 @@ public class JyChartServiceImpl extends Service { item.setFname(rs.getString("subcompanyname")); item.setFtype("1"); item.setFnumber(rs.getString("subcompanycode")); - item.setFobjid(rs.getString("id")); + item.setFecid(rs.getString("id")); item.setFisvitual("0"); item.setExpand(currentLevel > 0 ? "1" : "0"); - chartList.add(item); subCompanyList.add(item); } chartList.addAll(subCompanyList); for (JyChart jyChart : subCompanyList) { - buildSubCompanyData(companyId, jyChart.getFobjid(), jyChart.getId(), currentLevel - 1, chartList); - buildDepartmentData(jyChart.getFobjid(), "0", jyChart.getId(), currentLevel - 1, chartList); + buildSubCompanyData(companyId, jyChart.getFecid(), jyChart.getId(), currentLevel - 1, chartList); + buildDepartmentData(jyChart.getFecid(), "0", jyChart.getId(), currentLevel - 1, chartList); } - - } void buildDepartmentData(String subCompanyId, String parentId, String chartPid, int currentLevel, Set chartList) { @@ -234,22 +368,118 @@ public class JyChartServiceImpl extends Service { item.setFname(rs.getString("departmentmark")); item.setFtype("2"); item.setFnumber(rs.getString("departmentcode")); - item.setFobjid(rs.getString("id")); + item.setFecid(rs.getString("id")); item.setFisvitual("0"); item.setExpand(currentLevel > 0 ? "1" : "0"); - chartList.add(item); departmentList.add(item); } chartList.addAll(departmentList); for (JyChart jyChart : departmentList) { - buildDepartmentData(subCompanyId, jyChart.getFobjid(), jyChart.getId(), currentLevel - 1, chartList); + buildDepartmentData(subCompanyId, jyChart.getFecid(), jyChart.getId(), currentLevel - 1, chartList); } + } + void buildSubCompanyUserData(String companyId, String parentId, String chartPid, int currentLevel, Set chartList) { + if (currentLevel < 0) { + return; + } + rs.executeQuery("select * from hrmsubcompany where companyid = " + companyId + " and ifnull(supsubcomid,0) = " + parentId + " and ifnull(canceled,0) = 0 order by showorder ,showOrderOfTree"); + List subCompanyList = new ArrayList<>(); + while (rs.next()) { + JySubCompanyChart item = new JySubCompanyChart(); + item.setId("s_" + rs.getString("id")); + item.setParentId(chartPid); + item.setFname(rs.getString("subcompanyname")); + item.setFtype("1"); + item.setFnumber(rs.getString("subcompanycode")); + item.setFecid(rs.getString("id")); + item.setFisvitual("0"); + item.setExpand(currentLevel > 0 ? "1" : "0"); + subCompanyList.add(item); + } + chartList.addAll(subCompanyList); + for (JySubCompanyChart jyChart : subCompanyList) { + buildSubCompanyUserData(companyId, jyChart.getFecid(), jyChart.getId(), currentLevel - 1, chartList); + buildDepartmentUserData(jyChart.getFecid(), "0", jyChart.getId(), currentLevel - 1, chartList); + } + } + + void buildDepartmentUserData(String subCompanyId, String parentId, String chartPid, int currentLevel, Set chartList) { + if (currentLevel < 0) { + return; + } + String sql = "select * from hrmdepartment where subcompanyid1 = " + subCompanyId + " and ifnull(supdepid,0) = " + parentId + " and ifnull(canceled,0) = 0 order by showorder ,showorderoftree"; + rs.executeQuery(sql); + List departmentList = new ArrayList<>(); + while (rs.next()) { + JyDepartmentChart item = new JyDepartmentChart(); + item.setId("d_" + rs.getString("id")); + item.setParentId(chartPid); + item.setFname(rs.getString("departmentmark")); + item.setFtype("2"); + item.setFnumber(rs.getString("departmentcode")); + item.setFecid(rs.getString("id")); + item.setFisvitual("0"); + item.setExpand(currentLevel > 0 ? "1" : "0"); + departmentList.add(item); + } + chartList.addAll(departmentList); + for (JyDepartmentChart jyChart : departmentList) { + buildDepartmentUserData(subCompanyId, jyChart.getFecid(), jyChart.getId(), currentLevel - 1, chartList); + buildJobUserData(jyChart.getFecid(), jyChart.getId(), currentLevel - 1, chartList); + } + } + + void buildJobUserData(String departmentId, String chartPid, int currentLevel, Set chartList) { + if (currentLevel < 0) { + return; + } + rs.executeQuery("select * from jcl_org_job where ec_department = ? and ifnull(forbidden_tag,0)=0 order by show_order ", departmentId); + List jobList = new ArrayList<>(); + while (rs.next()) { + JyJobChart item = new JyJobChart(); + item.setId("j_" + rs.getString("id")); + item.setParentId(chartPid); + item.setFname(rs.getString("job_name")); + item.setFtype("3"); + item.setFnumber(rs.getString("job_no")); + item.setFecid(rs.getString("id")); + item.setFisvitual("0"); + item.setExpand(currentLevel > 0 ? "1" : "0"); + jobList.add(item); + } + chartList.addAll(jobList); + for (JyJobChart jyChart : jobList) { + // 查询人员 + buildResourceUserData(jyChart.getFecid(), jyChart.getId(), currentLevel - 1, chartList); + } } - private String getChartId(String id) { + void buildResourceUserData(String jobId, String chartPid, int currentLevel, Set chartList) { + if (currentLevel < 0) { + return; + } + rs.executeQuery("select a.id,a.lastname from hrmresource a inner join cus_fielddata b on a.id = b.id and b.scope ='hrmcustomfieldbyinfotype' and b.scopeid ='-1' where b.field100002 = ?", jobId); + List resourceList = new ArrayList<>(); + while (rs.next()) { + JyResourceChart item = new JyResourceChart(); + item.setId("r_" + rs.getString("id")); + item.setParentId(chartPid); + item.setFname(rs.getString("lastname")); + item.setFtype("4"); + item.setFnumber(rs.getString("hrmresource")); + item.setFecid(rs.getString("id")); + item.setFisvitual("0"); + item.setExpand(currentLevel > 0 ? "1" : "0"); + resourceList.add(item); + } + chartList.addAll(resourceList); + } + + + public static String getChartId(String id) { if (StringUtils.isNotBlank(id)) { String[] split = id.split("_"); if (split.length == 2) {