晶优组织架构图重写
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