晶优组织架构图重写

feature/jingyou
dxfeng 9 months ago
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 "";
}
}

@ -2,6 +2,7 @@ package com.engine.organization.service.impl;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.organization.entity.scheme.po.GradePO;
import com.engine.organization.entity.scheme.po.LevelPO;
@ -32,8 +33,18 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
private static final String COMPANY_RIGHT = "OrgChart:All";
private static final String USER_RIGHT = "OrgPerspective:All";
boolean isCustom = true;
private JyChartServiceImpl getJyChartService(User user) {
return ServiceUtil.getService(JyChartServiceImpl.class, user);
}
@Override
public Map<String, Object> getOptionCondition(Map<String, Object> request2Map, User user) {
if(isCustom){
return getJyChartService(user).getOptionCondition(request2Map, user);
}
Map<String, Object> result = new HashMap<>();
RecordSet rs = new RecordSet();
@ -100,6 +111,9 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
@Override
public Map<String, Object> getCompanyData(Map<String, Object> request2Map, User user) {
if(isCustom){
return getJyChartService(user).getCompanyData(request2Map, user);
}
Map<String, Object> result = new HashMap<>();
boolean hasRight = HasRightUtil.hasRight(user, COMPANY_RIGHT, true);
result.put("hasRight", hasRight);
@ -326,6 +340,9 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
@Override
public Map<String, Object> asyncCompanyData(Map<String, Object> request2Map, User user) {
if(true){
return getJyChartService(user).asyncCompanyData(request2Map, user);
}
String ids = (String) request2Map.get("ids");
String whereSql = companyDateWhereSql(request2Map);

Loading…
Cancel
Save