晶优组织架构图重写
parent
ffc9a89cd1
commit
28884f06a9
@ -0,0 +1,188 @@
|
|||||||
|
package com.engine.organization.entity.jingyou;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author:dxfeng
|
||||||
|
* @createTime: 2024/07/19
|
||||||
|
* @version: 1.0
|
||||||
|
*/
|
||||||
|
public class JyChart {
|
||||||
|
private String id;
|
||||||
|
private String fname;
|
||||||
|
private String ftype;
|
||||||
|
private String parentId;
|
||||||
|
private String fnumber;
|
||||||
|
private String fobjid;
|
||||||
|
private String fecid;
|
||||||
|
private String fisvitual;
|
||||||
|
private String expand;
|
||||||
|
private boolean hasChildren;
|
||||||
|
|
||||||
|
private String fleadername;
|
||||||
|
private String fleaderimg;
|
||||||
|
private String fleaderjob;
|
||||||
|
private String fleader;
|
||||||
|
private String fplan;
|
||||||
|
private String fonjob;
|
||||||
|
private String fleaderlv;
|
||||||
|
private String fleaderst;
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFname() {
|
||||||
|
return fname;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFname(String fname) {
|
||||||
|
this.fname = fname;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFtype() {
|
||||||
|
return ftype;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFtype(String ftype) {
|
||||||
|
this.ftype = ftype;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getParentId() {
|
||||||
|
return parentId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setParentId(String parentId) {
|
||||||
|
this.parentId = parentId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFnumber() {
|
||||||
|
return fnumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFnumber(String fnumber) {
|
||||||
|
this.fnumber = fnumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFobjid() {
|
||||||
|
return fobjid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFobjid(String fobjid) {
|
||||||
|
this.fobjid = fobjid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFecid() {
|
||||||
|
return fecid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFecid(String fecid) {
|
||||||
|
this.fecid = fecid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFisvitual() {
|
||||||
|
return fisvitual;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFisvitual(String fisvitual) {
|
||||||
|
this.fisvitual = fisvitual;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getExpand() {
|
||||||
|
return expand;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setExpand(String expand) {
|
||||||
|
this.expand = expand;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isHasChildren() {
|
||||||
|
// 都置为true
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHasChildren(boolean hasChildren) {
|
||||||
|
this.hasChildren = hasChildren;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFleadername() {
|
||||||
|
return fleadername;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFleadername(String fleadername) {
|
||||||
|
this.fleadername = fleadername;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFleaderimg() {
|
||||||
|
return fleaderimg;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFleaderimg(String fleaderimg) {
|
||||||
|
this.fleaderimg = fleaderimg;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFleaderjob() {
|
||||||
|
return fleaderjob;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFleaderjob(String fleaderjob) {
|
||||||
|
this.fleaderjob = fleaderjob;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFleader() {
|
||||||
|
return fleader;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFleader(String fleader) {
|
||||||
|
this.fleader = fleader;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFplan() {
|
||||||
|
return fplan;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFplan(String fplan) {
|
||||||
|
this.fplan = fplan;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFonjob() {
|
||||||
|
return fonjob;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFonjob(String fonjob) {
|
||||||
|
this.fonjob = fonjob;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFleaderlv() {
|
||||||
|
return fleaderlv;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFleaderlv(String fleaderlv) {
|
||||||
|
this.fleaderlv = fleaderlv;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFleaderst() {
|
||||||
|
return fleaderst;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFleaderst(String fleaderst) {
|
||||||
|
this.fleaderst = fleaderst;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o) return true;
|
||||||
|
if (o == null || getClass() != o.getClass()) return false;
|
||||||
|
JyChart jyChart = (JyChart) o;
|
||||||
|
return id.equals(jyChart.id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(id);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package com.engine.organization.entity.jingyou;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author:dxfeng
|
||||||
|
* @createTime: 2024/07/19
|
||||||
|
* @version: 1.0
|
||||||
|
*/
|
||||||
|
public class JyCompanyChart extends JyChart{
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package com.engine.organization.entity.jingyou;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author:dxfeng
|
||||||
|
* @createTime: 2024/07/19
|
||||||
|
* @version: 1.0
|
||||||
|
*/
|
||||||
|
public class JyDepartmentChart extends JyChart{
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package com.engine.organization.entity.jingyou;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author:dxfeng
|
||||||
|
* @createTime: 2024/07/19
|
||||||
|
* @version: 1.0
|
||||||
|
*/
|
||||||
|
public class JyJobChart extends JyChart{
|
||||||
|
}
|
@ -0,0 +1,50 @@
|
|||||||
|
package com.engine.organization.entity.jingyou;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author:dxfeng
|
||||||
|
* @createTime: 2024/07/19
|
||||||
|
* @version: 1.0
|
||||||
|
*/
|
||||||
|
public class JyOrgSelectItem {
|
||||||
|
private String id;
|
||||||
|
private String fnumber;
|
||||||
|
private String fname;
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFnumber() {
|
||||||
|
return fnumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFnumber(String fnumber) {
|
||||||
|
this.fnumber = fnumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFname() {
|
||||||
|
return fname;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFname(String fname) {
|
||||||
|
this.fname = fname;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (obj instanceof JyOrgSelectItem) {
|
||||||
|
JyOrgSelectItem item = (JyOrgSelectItem) obj;
|
||||||
|
return this.getId().equals(item.getId());
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return this.getId().hashCode();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package com.engine.organization.entity.jingyou;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author:dxfeng
|
||||||
|
* @createTime: 2024/07/19
|
||||||
|
* @version: 1.0
|
||||||
|
*/
|
||||||
|
public class JyResourceChart extends JyChart{
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package com.engine.organization.entity.jingyou;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author:dxfeng
|
||||||
|
* @createTime: 2024/07/19
|
||||||
|
* @version: 1.0
|
||||||
|
*/
|
||||||
|
public class JySubCompanyChart extends JyChart{
|
||||||
|
}
|
@ -0,0 +1,262 @@
|
|||||||
|
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.util.HasRightUtil;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import weaver.conn.RecordSet;
|
||||||
|
import weaver.hrm.User;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @className: OrgChartServiceImpl
|
||||||
|
* @author: dengjp
|
||||||
|
* @date: 2022/7/7
|
||||||
|
* @description: 组织架构图ServiceImpl
|
||||||
|
**/
|
||||||
|
public class JyChartServiceImpl extends Service {
|
||||||
|
|
||||||
|
private RecordSet grs = new RecordSet();
|
||||||
|
|
||||||
|
private static final String COMPANY_RIGHT = "OrgChart:All";
|
||||||
|
private static final String USER_RIGHT = "OrgPerspective:All";
|
||||||
|
RecordSet rs = new RecordSet();
|
||||||
|
|
||||||
|
public Map<String, Object> getOptionCondition(Map<String, Object> request2Map, User user) {
|
||||||
|
Map<String, Object> result = new HashMap<>();
|
||||||
|
|
||||||
|
rs.executeQuery("select id, companyname from HrmCompanyVirtual order by id");
|
||||||
|
List<Map<String, Object>> fclasslist = new ArrayList<>();
|
||||||
|
Map<String, Object> defaultItem = new HashMap<>();
|
||||||
|
defaultItem.put("id", "0");
|
||||||
|
defaultItem.put("companyname", "行政维度");
|
||||||
|
fclasslist.add(defaultItem);
|
||||||
|
while (rs.next()) {
|
||||||
|
Map<String, Object> item = new HashMap<>();
|
||||||
|
item.put("id", rs.getString("id"));
|
||||||
|
item.put("companyname", rs.getString("companyname"));
|
||||||
|
fclasslist.add(item);
|
||||||
|
}
|
||||||
|
// 集团数据
|
||||||
|
String sql = "select concat('c_',id) as id, companyname as fname from hrmcompany";
|
||||||
|
rs.executeQuery(sql);
|
||||||
|
Set<JyOrgSelectItem> companySet = new HashSet<>();
|
||||||
|
while (rs.next()) {
|
||||||
|
JyOrgSelectItem item = new JyOrgSelectItem();
|
||||||
|
item.setId("0");
|
||||||
|
//item.setFnumber(rs.getString("fnumber"));
|
||||||
|
item.setFname(rs.getString("fname"));
|
||||||
|
companySet.add(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 分部数据
|
||||||
|
sql = "select concat('s_',id) as id,subcompanyname as fname, subcompanycode as fnumber from hrmsubcompany where ifnull(canceled,'0')='0' order by showorder ,showOrderOfTree";
|
||||||
|
rs.executeQuery(sql);
|
||||||
|
while (rs.next()) {
|
||||||
|
JyOrgSelectItem item = new JyOrgSelectItem();
|
||||||
|
item.setId(rs.getString("id"));
|
||||||
|
item.setFnumber(rs.getString("fnumber"));
|
||||||
|
item.setFname(rs.getString("fname"));
|
||||||
|
companySet.add(item);
|
||||||
|
}
|
||||||
|
result.put("api_status", true);
|
||||||
|
result.put("fclasslist", fclasslist);
|
||||||
|
result.put("companylist", companySet);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Map<String, Object> getCompanyData(Map<String, Object> request2Map, User user) {
|
||||||
|
Map<String, Object> result = new HashMap<>();
|
||||||
|
boolean hasRight = HasRightUtil.hasRight(user, COMPANY_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()) {
|
||||||
|
JyChart item = new JyChart();
|
||||||
|
item.setId("0");
|
||||||
|
item.setFname(rs.getString("companyname"));
|
||||||
|
item.setFtype("0");
|
||||||
|
item.setFnumber(rs.getString("companycode"));
|
||||||
|
item.setFobjid(rs.getString("id"));
|
||||||
|
item.setFisvitual("0");
|
||||||
|
item.setExpand("1");
|
||||||
|
chartList.add(item);
|
||||||
|
buildSubCompanyData(item.getFobjid(), "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()) {
|
||||||
|
JyChart item = new JyChart();
|
||||||
|
item.setId("s_" + rs.getString("id"));
|
||||||
|
item.setFname(rs.getString("subcompanyname"));
|
||||||
|
item.setFtype("1");
|
||||||
|
item.setFnumber(rs.getString("subcompanycode"));
|
||||||
|
item.setFobjid(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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
result.put("api_status", true);
|
||||||
|
result.put("data", chartList);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, Object> asyncCompanyData(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()) {
|
||||||
|
JyChart item = new JyChart();
|
||||||
|
item.setId("s_" + rs.getString("id"));
|
||||||
|
item.setParentId(splitId);
|
||||||
|
item.setFname(rs.getString("subcompanyname"));
|
||||||
|
item.setFtype("1");
|
||||||
|
item.setFnumber(rs.getString("subcompanycode"));
|
||||||
|
item.setFobjid(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);
|
||||||
|
}
|
||||||
|
} else if (splitId.startsWith("d_")) {
|
||||||
|
// 分部
|
||||||
|
String chartId = getChartId(splitId);
|
||||||
|
rs.executeQuery("select * from hrmdepartment where id = ?", chartId);
|
||||||
|
if (rs.next()) {
|
||||||
|
JyChart jyChart = new JyChart();
|
||||||
|
jyChart.setId("d_" + rs.getString("id"));
|
||||||
|
jyChart.setParentId(splitId);
|
||||||
|
jyChart.setFname(rs.getString("departmentmark"));
|
||||||
|
jyChart.setFtype("2");
|
||||||
|
jyChart.setFnumber(rs.getString("departmentcode"));
|
||||||
|
jyChart.setFobjid(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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, Object> result = new HashMap<>();
|
||||||
|
result.put("api_status", true);
|
||||||
|
result.put("data", chartList);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
void buildSubCompanyData(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<JyChart> subCompanyList = new ArrayList<>();
|
||||||
|
while (rs.next()) {
|
||||||
|
JyChart item = new JyChart();
|
||||||
|
item.setId("s_" + rs.getString("id"));
|
||||||
|
item.setParentId(chartPid);
|
||||||
|
item.setFname(rs.getString("subcompanyname"));
|
||||||
|
item.setFtype("1");
|
||||||
|
item.setFnumber(rs.getString("subcompanycode"));
|
||||||
|
item.setFobjid(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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void buildDepartmentData(String subCompanyId, String parentId, String chartPid, int currentLevel, Set<JyChart> chartList) {
|
||||||
|
if (currentLevel < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
rs.executeQuery("select * from hrmdepartment where subcompanyid1 = " + subCompanyId + " and ifnull(supdepid,0) = " + parentId + " and ifnull(canceled,0) = 0 order by showorder ,showorderoftree");
|
||||||
|
List<JyChart> departmentList = new ArrayList<>();
|
||||||
|
while (rs.next()) {
|
||||||
|
JyChart item = new JyChart();
|
||||||
|
item.setId("d_" + rs.getString("id"));
|
||||||
|
item.setParentId(chartPid);
|
||||||
|
item.setFname(rs.getString("departmentmark"));
|
||||||
|
item.setFtype("2");
|
||||||
|
item.setFnumber(rs.getString("departmentcode"));
|
||||||
|
item.setFobjid(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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private String getChartId(String id) {
|
||||||
|
if (StringUtils.isNotBlank(id)) {
|
||||||
|
String[] split = id.split("_");
|
||||||
|
if (split.length == 2) {
|
||||||
|
return split[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue