晶优组织架构图重写

feature/jingyou
dxfeng 10 months ago
parent 28884f06a9
commit 8d9303f07c

@ -1,5 +1,8 @@
package com.engine.organization.entity.jingyou; package com.engine.organization.entity.jingyou;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import java.util.Objects; import java.util.Objects;
/** /**
@ -28,6 +31,13 @@ public class JyChart {
private String fleaderlv; private String fleaderlv;
private String fleaderst; private String fleaderst;
protected static final RecordSet rs = new RecordSet();
// 提供静态方法来获取 RecordSet 实例
public static RecordSet getRecordSet() {
return rs;
}
public String getId() { public String getId() {
return id; return id;
} }
@ -69,6 +79,22 @@ public class JyChart {
} }
public String getFobjid() { 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; return fobjid;
} }

@ -1,9 +1,49 @@
package com.engine.organization.entity.jingyou; package com.engine.organization.entity.jingyou;
import cn.hutool.core.convert.Convert;
import weaver.conn.RecordSet;
/** /**
* @author:dxfeng * @author:dxfeng
* @createTime: 2024/07/19 * @createTime: 2024/07/19
* @version: 1.0 * @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();
}
} }

@ -1,9 +1,65 @@
package com.engine.organization.entity.jingyou; 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 * @author:dxfeng
* @createTime: 2024/07/19 * @createTime: 2024/07/19
* @version: 1.0 * @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<String> 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<String> 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();
}
} }

@ -1,9 +1,47 @@
package com.engine.organization.entity.jingyou; package com.engine.organization.entity.jingyou;
import cn.hutool.core.convert.Convert;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
/** /**
* @author:dxfeng * @author:dxfeng
* @createTime: 2024/07/19 * @createTime: 2024/07/19
* @version: 1.0 * @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();
}
} }

@ -1,9 +1,38 @@
package com.engine.organization.entity.jingyou; 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 * @author:dxfeng
* @createTime: 2024/07/19 * @createTime: 2024/07/19
* @version: 1.0 * @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();
}
} }

@ -1,9 +1,66 @@
package com.engine.organization.entity.jingyou; 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 * @author:dxfeng
* @createTime: 2024/07/19 * @createTime: 2024/07/19
* @version: 1.0 * @version: 1.0
*/ */
public class JySubCompanyChart extends JyChart{ public class JySubCompanyChart extends JyChart {
@Override
public String getFplan() {
RecordSet rs = getRecordSet();
ArrayList<String> 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<String> 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();
}
} }

@ -2,8 +2,8 @@ package com.engine.organization.service.impl;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import com.engine.core.impl.Service; import com.engine.core.impl.Service;
import com.engine.organization.entity.jingyou.JyChart; import com.engine.organization.entity.jingyou.*;
import com.engine.organization.entity.jingyou.JyOrgSelectItem; import com.engine.organization.service.OrgChartService;
import com.engine.organization.util.HasRightUtil; import com.engine.organization.util.HasRightUtil;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet; import weaver.conn.RecordSet;
@ -17,14 +17,13 @@ import java.util.*;
* @date: 2022/7/7 * @date: 2022/7/7
* @description: ServiceImpl * @description: ServiceImpl
**/ **/
public class JyChartServiceImpl extends Service { public class JyChartServiceImpl extends Service implements OrgChartService {
private RecordSet grs = new RecordSet();
private static final String COMPANY_RIGHT = "OrgChart:All"; private static final String COMPANY_RIGHT = "OrgChart:All";
private static final String USER_RIGHT = "OrgPerspective:All"; private static final String USER_RIGHT = "OrgPerspective:All";
RecordSet rs = new RecordSet(); RecordSet rs = new RecordSet();
@Override
public Map<String, Object> getOptionCondition(Map<String, Object> request2Map, User user) { public Map<String, Object> getOptionCondition(Map<String, Object> request2Map, User user) {
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
@ -69,7 +68,7 @@ public class JyChartServiceImpl extends Service {
return result; return result;
} }
@Override
public Map<String, Object> getCompanyData(Map<String, Object> request2Map, User user) { public Map<String, Object> getCompanyData(Map<String, Object> request2Map, User user) {
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
boolean hasRight = HasRightUtil.hasRight(user, COMPANY_RIGHT, true); boolean hasRight = HasRightUtil.hasRight(user, COMPANY_RIGHT, true);
@ -108,11 +107,11 @@ public class JyChartServiceImpl extends Service {
item.setFname(rs.getString("companyname")); item.setFname(rs.getString("companyname"));
item.setFtype("0"); item.setFtype("0");
item.setFnumber(rs.getString("companycode")); item.setFnumber(rs.getString("companycode"));
item.setFobjid(rs.getString("id")); item.setFecid(rs.getString("id"));
item.setFisvitual("0"); item.setFisvitual("0");
item.setExpand("1"); item.setExpand("1");
chartList.add(item); chartList.add(item);
buildSubCompanyData(item.getFobjid(), "0", item.getId(), currentLevel, chartList); buildSubCompanyData(item.getFecid(), "0", item.getId(), currentLevel, chartList);
} }
} else if (root.startsWith("s_")) { } else if (root.startsWith("s_")) {
// 分部 // 分部
@ -124,12 +123,12 @@ public class JyChartServiceImpl extends Service {
item.setFname(rs.getString("subcompanyname")); item.setFname(rs.getString("subcompanyname"));
item.setFtype("1"); item.setFtype("1");
item.setFnumber(rs.getString("subcompanycode")); item.setFnumber(rs.getString("subcompanycode"));
item.setFobjid(rs.getString("id")); item.setFecid(rs.getString("id"));
item.setFisvitual("0"); item.setFisvitual("0");
item.setExpand("1"); item.setExpand("1");
chartList.add(item); chartList.add(item);
buildSubCompanyData(rs.getString("companyid"), item.getFobjid(), item.getId(), currentLevel, chartList); buildSubCompanyData(rs.getString("companyid"), item.getFecid(), item.getId(), currentLevel, chartList);
buildDepartmentData(item.getFobjid(), "0", item.getId(), currentLevel, chartList); buildDepartmentData(item.getFecid(), "0", item.getId(), currentLevel, chartList);
} }
} }
} }
@ -140,6 +139,7 @@ public class JyChartServiceImpl extends Service {
return result; return result;
} }
@Override
public Map<String, Object> asyncCompanyData(Map<String, Object> request2Map, User user) { public Map<String, Object> asyncCompanyData(Map<String, Object> request2Map, User user) {
String ids = (String) request2Map.get("ids"); String ids = (String) request2Map.get("ids");
Set<JyChart> chartList = new LinkedHashSet<>(); Set<JyChart> chartList = new LinkedHashSet<>();
@ -157,12 +157,12 @@ public class JyChartServiceImpl extends Service {
item.setFname(rs.getString("subcompanyname")); item.setFname(rs.getString("subcompanyname"));
item.setFtype("1"); item.setFtype("1");
item.setFnumber(rs.getString("subcompanycode")); item.setFnumber(rs.getString("subcompanycode"));
item.setFobjid(rs.getString("id")); item.setFecid(rs.getString("id"));
item.setFisvitual("0"); item.setFisvitual("0");
item.setExpand("0"); item.setExpand("0");
chartList.add(item); chartList.add(item);
buildSubCompanyData(rs.getString("companyid"), item.getFobjid(), item.getId(), 0, chartList); buildSubCompanyData(rs.getString("companyid"), item.getFecid(), item.getId(), 0, chartList);
buildDepartmentData(item.getFobjid(), "0", item.getId(), 0, chartList); buildDepartmentData(item.getFecid(), "0", item.getId(), 0, chartList);
} }
} else if (splitId.startsWith("d_")) { } else if (splitId.startsWith("d_")) {
// 分部 // 分部
@ -175,12 +175,149 @@ public class JyChartServiceImpl extends Service {
jyChart.setFname(rs.getString("departmentmark")); jyChart.setFname(rs.getString("departmentmark"));
jyChart.setFtype("2"); jyChart.setFtype("2");
jyChart.setFnumber(rs.getString("departmentcode")); jyChart.setFnumber(rs.getString("departmentcode"));
jyChart.setFobjid(rs.getString("id")); jyChart.setFecid(rs.getString("id"));
jyChart.setFisvitual("0"); jyChart.setFisvitual("0");
jyChart.setExpand("0"); jyChart.setExpand("0");
chartList.add(jyChart); chartList.add(jyChart);
String subCompanyId = rs.getString("subcompanyid1"); String subCompanyId = rs.getString("subcompanyid1");
buildDepartmentData(subCompanyId, jyChart.getFobjid(), jyChart.getId(), 0, chartList); buildDepartmentData(subCompanyId, jyChart.getFecid(), jyChart.getId(), 0, chartList);
}
}
}
}
Map<String, Object> result = new HashMap<>();
result.put("api_status", true);
result.put("data", chartList);
return result;
}
@Override
public Map<String, Object> getUserData(Map<String, Object> request2Map, User user) {
Map<String, Object> 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<JyChart> 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<String, Object> asyncUserData(Map<String, Object> request2Map, User user) {
String ids = (String) request2Map.get("ids");
Set<JyChart> 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.setFname(rs.getString("subcompanyname"));
item.setFtype("1"); item.setFtype("1");
item.setFnumber(rs.getString("subcompanycode")); item.setFnumber(rs.getString("subcompanycode"));
item.setFobjid(rs.getString("id")); item.setFecid(rs.getString("id"));
item.setFisvitual("0"); item.setFisvitual("0");
item.setExpand(currentLevel > 0 ? "1" : "0"); item.setExpand(currentLevel > 0 ? "1" : "0");
chartList.add(item);
subCompanyList.add(item); subCompanyList.add(item);
} }
chartList.addAll(subCompanyList); chartList.addAll(subCompanyList);
for (JyChart jyChart : subCompanyList) { for (JyChart jyChart : subCompanyList) {
buildSubCompanyData(companyId, jyChart.getFobjid(), jyChart.getId(), currentLevel - 1, chartList); buildSubCompanyData(companyId, jyChart.getFecid(), jyChart.getId(), currentLevel - 1, chartList);
buildDepartmentData(jyChart.getFobjid(), "0", 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<JyChart> chartList) { void buildDepartmentData(String subCompanyId, String parentId, String chartPid, int currentLevel, Set<JyChart> chartList) {
@ -234,22 +368,118 @@ public class JyChartServiceImpl extends Service {
item.setFname(rs.getString("departmentmark")); item.setFname(rs.getString("departmentmark"));
item.setFtype("2"); item.setFtype("2");
item.setFnumber(rs.getString("departmentcode")); item.setFnumber(rs.getString("departmentcode"));
item.setFobjid(rs.getString("id")); item.setFecid(rs.getString("id"));
item.setFisvitual("0"); item.setFisvitual("0");
item.setExpand(currentLevel > 0 ? "1" : "0"); item.setExpand(currentLevel > 0 ? "1" : "0");
chartList.add(item);
departmentList.add(item); departmentList.add(item);
} }
chartList.addAll(departmentList); chartList.addAll(departmentList);
for (JyChart jyChart : 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<JyChart> 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<JySubCompanyChart> 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<JyChart> 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<JyDepartmentChart> 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<JyChart> 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<JyJobChart> 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);
}
}
void buildResourceUserData(String jobId, String chartPid, int currentLevel, Set<JyChart> 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<JyResourceChart> 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);
} }
private String getChartId(String id) { public static String getChartId(String id) {
if (StringUtils.isNotBlank(id)) { if (StringUtils.isNotBlank(id)) {
String[] split = id.split("_"); String[] split = id.split("_");
if (split.length == 2) { if (split.length == 2) {

Loading…
Cancel
Save