组织架构demo

18880demo环境
Administrator 1 year ago
parent ceefda492e
commit caafa04769

@ -17,7 +17,6 @@ import weaver.hrm.resource.ResourceComInfo;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* @Author liang.cheng * @Author liang.cheng
* @Date 2023/9/26 5:52 PM * @Date 2023/9/26 5:52 PM
@ -94,34 +93,58 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
@Override @Override
public TreeDataVO selectOrganizationChart(OrgTreeParam orgTreeParam) { public TreeDataVO selectOrganizationChart(OrgTreeParam orgTreeParam) {
RecordSet rs = new RecordSet(); RecordSet rs = new RecordSet();
BaseBean bb = new BaseBean();
String virtualType = orgTreeParam.getVirtualType(); String virtualType = orgTreeParam.getVirtualType();
String root = orgTreeParam.getRoot(); String root = orgTreeParam.getRoot();
String level = orgTreeParam.getLevel(); String level = orgTreeParam.getLevel();
TreeDataVO build; TreeDataVO build;
String roleId = bb.getPropValue("sship", "roleId"); String id;
String rolelevel = bb.getPropValue("sship", "rolelevel"); //判断参数是总部、分部、部门id
boolean isExsit = selectIdsByRole(roleId, rolelevel); if (StringUtils.isBlank(root)) {
String id = ""; build = getBaseTree(virtualType);
if (isExsit || (user.getUID() == 1)) { } else {
//ShareHolder唯一 //判断入参类型
if (StringUtils.isBlank(root)) { int judgeId = judgeId(virtualType, root);
rs.executeQuery("select a.id,departmentmark,bmfzrid from hrmdepartmentvirtual a " + switch(judgeId){
"left join uf_xnbmfzr on a.id =xnzzid where supdepid = 0 and virtualtype = ? order by showorder", virtualType); case 1:
rs.next(); rs.executeQuery("select id,subcompanyname from hrmsubcompany where id = ? and SUPSUBCOMID = '0' ", root.substring(3));
id = rs.getString("id"); rs.next();
} else { id = rs.getString("id");
rs.executeQuery("select departmentmark from hrmdepartmentvirtual where id = ? and virtualtype = ? order by showorder", root.substring(3),virtualType); build = TreeDataVO.builder()
rs.next(); .id(id)
id = root.substring(3); .label(Util.null2String(rs.getString("subcompanyname")))
} .build();
build = TreeDataVO.builder() if (isSubDepartment(id)) {
.id(id) build.setChildrens(getSubDeptBase(id));
.label(Util.null2String(rs.getString("departmentmark"))+"("+Util.null2String(rs.getString("bmfzrid"))+")") }
.build(); break;
if (isVirtualSubDepartment(id,virtualType)) { case 2:
build.setChildrens(getVirtualSubDept(id,virtualType)); rs.executeQuery("select id,departmentmark from hrmdepartment where id = ? and SUPDEPID = 0 ", root.substring(3));
rs.next();
id = rs.getString("id");
build = TreeDataVO.builder()
.id(id)
.label(Util.null2String(rs.getString("departmentmark")))
.build();
if (isSubDepartmentChildren(id)) {
build.setChildrens(getSubDeptChildrenBase(id));
}
break;
case 3:
rs.executeQuery("select id,departmentmark from hrmdepartment where id = ? ", root.substring(3));
rs.next();
id = rs.getString("id");
build = TreeDataVO.builder()
.id(id)
.label(Util.null2String(rs.getString("departmentmark")))
.build();
if (isSubDepartmentChildren(id)) {
build.setChildrens(getSubDeptChildrenBase(id));
}
break;
default:
build = getBaseTree(virtualType);
} }
}
//level等于1 //level等于1
if(StringUtils.isNotBlank(level)){ if(StringUtils.isNotBlank(level)){
if(Integer.parseInt(level)==1){ if(Integer.parseInt(level)==1){
@ -130,36 +153,100 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
build.setChildrens(setTreeStructure(build.getChildrens(),Integer.parseInt(level))); build.setChildrens(setTreeStructure(build.getChildrens(),Integer.parseInt(level)));
} }
} }
} else { return build;
String departmentId = ""; }
//获取当前部门 private TreeDataVO getBaseTree(String virtualType){
if(StringUtils.isBlank(root)){ RecordSet rs = new RecordSet();
rs.executeQuery("select departmentid from hrmresourcevirtual where resourceid = ? and virtualtype = ?",user.getUID(),virtualType); rs.executeQuery("select id,companyname from hrmcompany where id =? ", virtualType);
rs.next(); rs.next();
departmentId = rs.getString("departmentid"); String id = rs.getString("id");
}else{ TreeDataVO build = TreeDataVO.builder()
departmentId = root.substring(3); .id(id)
.label(Util.null2String(rs.getString("companyname")))
.build();
if (isSubCompany(id)) {
build.setChildrens(getSubCompanyBase(id));
}
return build;
}
private int judgeId(String virtualType,String root){
RecordSet rs = new RecordSet();
int id = 0;
if(virtualType.equals(root)){
return 0;
}
//root为分部
rs.executeQuery("select count(1) from hrmsubcompany where id = ?",root.substring(3));
if (rs.next()) {
id = 1;
}
//root为上级部门
rs.executeQuery("select count(1) from hrmdepartment where id = ? and SUPDEPID = '0'",root.substring(3));
if (rs.next()) {
id = 2;
}
//root为下级部门
rs.executeQuery("select count(1) from hrmdepartment where id = ?",root.substring(3));
if (rs.next()) {
id = 3;
}
return id;
}
private List<ChartChildrensVO> getSubCompanyBase(String companyId) {
RecordSet rs = new RecordSet();
List<ChartChildrensVO> voList = new ArrayList<>();
rs.executeQuery("select id,subcompanyname from hrmsubcompany where COMPANYID = ? and SUPSUBCOMID = '0' order by showorder",companyId);
while (rs.next()) {
String id = Util.null2String(rs.getString("id"));
ChartChildrensVO build = ChartChildrensVO.builder()
.id(getRandomData()+id)
.pid(companyId)
.label(Util.null2String(rs.getString("subcompanyname")))
.build();
if (isSubDepartment(id)) {
build.setChildrens(getSubDeptBase(id));
} }
rs.executeQuery("select departmentmark,bmfzrid from hrmdepartmentvirtual a left join uf_xnbmfzr on a.id =xnzzid where a.id = ? and virtualtype = ? order by showorder",departmentId,virtualType); voList.add(build);
rs.next(); }
build = TreeDataVO.builder() return voList;
.id(departmentId)
.label(Util.null2String(rs.getString("departmentmark"))+"("+Util.null2String(rs.getString("bmfzrid"))+")") }
private List<ChartChildrensVO> getSubDeptBase(String id) {
RecordSet rs = new RecordSet();
List<ChartChildrensVO> voList = new ArrayList<>();
rs.executeQuery("select id,departmentmark from hrmdepartment where subcompanyid1 = ? and SUPDEPID = 0 order by showorder",id);
while (rs.next()) {
String deptId = Util.null2String(rs.getString("id"));
ChartChildrensVO build = ChartChildrensVO.builder()
.id(getRandomData()+deptId)
.pid(id)
.label(Util.null2String(rs.getString("departmentmark")))
.build(); .build();
if (isVirtualSubDepartment(departmentId,virtualType)) { if (isSubDepartmentChildren(id)) {
build.setChildrens(getVirtualSubDept(departmentId,virtualType)); build.setChildrens(getSubDeptChildrenBase(id));
} }
//level等于1 voList.add(build);
if(StringUtils.isNotBlank(level)){ }
if(Integer.parseInt(level)==1){ return voList;
build.setChildrens(null); }
}else { private List<ChartChildrensVO> getSubDeptChildrenBase(String id) {
build.setChildrens(setTreeStructure(build.getChildrens(),Integer.parseInt(level))); RecordSet rs = new RecordSet();
} List<ChartChildrensVO> voList = new ArrayList<>();
rs.executeQuery("select id,departmentmark from hrmdepartment where SUPDEPID = ? order by showorder",id);
while (rs.next()) {
String deptId = Util.null2String(rs.getString("id"));
ChartChildrensVO build = ChartChildrensVO.builder()
.id(getRandomData()+deptId)
.pid(id)
.label(Util.null2String(rs.getString("departmentmark")))
.build();
if (isSubDepartmentChildren(id)) {
build.setChildrens(getSubDeptChildrenBase(id));
} }
voList.add(build);
} }
return build; return voList;
} }
/** /**
@ -238,25 +325,6 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
return num; return num;
} }
private List<ChartChildrensVO> getVirtualSubDept(String supdepid,String virtualType) {
RecordSet rs = new RecordSet();
List<ChartChildrensVO> voList = new ArrayList<>();
rs.executeQuery("select a.id,departmentmark,bmfzrid from hrmdepartmentvirtual a left join uf_xnbmfzr on a.id =xnzzid where supdepid <> '' and supdepid = ? and virtualtype = ? order by showorder",supdepid,virtualType);
while (rs.next()) {
String id = Util.null2String(rs.getString("id"));
ChartChildrensVO build = ChartChildrensVO.builder()
.pid(supdepid)
.id(id)
.label(Util.null2String(rs.getString("departmentmark"))+"("+Util.null2String(rs.getString("bmfzrid"))+")")
.build();
if (isVirtualSubDepartment(id,virtualType)) {
build.setChildrens(getVirtualSubDept(id,virtualType));
}
voList.add(build);
}
return voList;
}
private List<ChartChildrensVO> getVirtualSub(String supdepid,String virtualType) { private List<ChartChildrensVO> getVirtualSub(String supdepid,String virtualType) {
RecordSet rs = new RecordSet(); RecordSet rs = new RecordSet();
List<ChartChildrensVO> voList = new ArrayList<>(); List<ChartChildrensVO> voList = new ArrayList<>();
@ -275,23 +343,6 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
} }
return voList; return voList;
} }
private List<DropTreeDataVO> getVirtualSubDeptData(String supdepid,String virtualType) {
RecordSet rs = new RecordSet();
List<DropTreeDataVO> voList = new ArrayList<>();
rs.executeQuery("select id,departmentmark from hrmdepartmentvirtual where supdepid <> '' and supdepid = ? and virtualtype = ? order by showorder",supdepid,virtualType);
while (rs.next()) {
String id = Util.null2String(rs.getString("id"));
DropTreeDataVO build = DropTreeDataVO.builder()
.value(getRandomData()+id)
.label(Util.null2String(rs.getString("departmentmark")))
.build();
if (isVirtualSubDepartment(id,virtualType)) {
build.setChildren(getVirtualSubDeptData(id,virtualType));
}
voList.add(build);
}
return voList;
}
private String getRandomData() { private String getRandomData() {
String name="";//先定义空字符串 String name="";//先定义空字符串
@ -355,7 +406,7 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
public List<SelectVO> selectVirtualTop() { public List<SelectVO> selectVirtualTop() {
List<SelectVO> voList = new ArrayList<>(); List<SelectVO> voList = new ArrayList<>();
RecordSet rs = new RecordSet(); RecordSet rs = new RecordSet();
rs.executeQuery("select id,companyname from hrmcompanyvirtual"); rs.executeQuery("select id,companyname from hrmcompany");
while (rs.next()) { while (rs.next()) {
voList.add(SelectVO.builder() voList.add(SelectVO.builder()
.value(Util.null2String(rs.getString("id"))) .value(Util.null2String(rs.getString("id")))
@ -367,63 +418,154 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
@Override @Override
public List<DropTreeDataVO> selectVirtualTopTwo(String virtualType) { public List<DropTreeDataVO> selectVirtualTopTwo(String virtualType) {
RecordSet rs = new RecordSet(); RecordSet rs = new RecordSet();
BaseBean bb = new BaseBean();
List<DropTreeDataVO> dataVOS = new ArrayList<>(); List<DropTreeDataVO> dataVOS = new ArrayList<>();
DropTreeDataVO build; DropTreeDataVO build;
String roleId = bb.getPropValue("sship", "roleId"); rs.executeQuery("select id,companyname from hrmcompany where id = ?",virtualType);
String rolelevel = bb.getPropValue("sship", "rolelevel");
boolean isExsit = selectIdsByRole(roleId, rolelevel);
if (isExsit || (user.getUID() == 1)) {
//ShareHolder唯一
rs.executeQuery("select id,departmentmark from hrmdepartmentvirtual where supdepid = 0 and virtualtype = ? order by showorder",virtualType);
rs.next(); rs.next();
String id = Util.null2String(rs.getString("id")); String id = Util.null2String(rs.getString("id"));
build = DropTreeDataVO.builder() build = DropTreeDataVO.builder()
.value(getRandomData()+id) .value(getRandomData()+id)
.label(Util.null2String(rs.getString("departmentmark"))) .label(Util.null2String(rs.getString("companyname")))
.build(); .build();
if (isVirtualSubDepartment(id,virtualType)) { if (isSubCompany(id)) {
build.setChildren(getVirtualSubDeptData(id,virtualType)); build.setChildren(getSubCompany(id));
} }
dataVOS.add(build); dataVOS.add(build);
return dataVOS;
}
} else { private List<DropTreeDataVO> getSubCompany(String companyId) {
//获取当前部门 RecordSet rs = new RecordSet();
rs.executeQuery("select departmentid from hrmresourcevirtual where resourceid = ? and virtualtype = ?",user.getUID(),virtualType); List<DropTreeDataVO> voList = new ArrayList<>();
rs.next(); rs.executeQuery("select id,subcompanyname from hrmsubcompany where COMPANYID = ? and SUPSUBCOMID = '0' order by showorder",companyId);
String departmentId = Util.null2String(rs.getString("departmentid")); while (rs.next()) {
rs.executeQuery("select departmentmark from hrmdepartmentvirtual where id = ? and virtualtype = ? order by showorder",departmentId,virtualType); String id = Util.null2String(rs.getString("id"));
rs.next(); DropTreeDataVO build = DropTreeDataVO.builder()
build = DropTreeDataVO.builder() .value(getRandomData()+id)
.value(getRandomData()+departmentId) .label(Util.null2String(rs.getString("subcompanyname")))
.label(Util.null2String(rs.getString("departmentmark"))) .build();
.build(); if (isSubDepartment(id)) {
if (isVirtualSubDepartment(departmentId,virtualType)) { build.setChildren(getSubDept(id));
build.setChildren(getVirtualSubDeptData(departmentId,virtualType)); }
voList.add(build);
} }
dataVOS.add(build); return voList;
} }
return dataVOS; public boolean isSubCompany(String id) {
} RecordSet rs = new RecordSet();
boolean isSubCompanyid = false;
rs.executeQuery("select count(1) from hrmsubcompany where COMPANYID = ? and SUPSUBCOMID = '0' ",id);
if (rs.next()) {
isSubCompanyid = rs.getInt(1) > 0;
}
return isSubCompanyid;
}
public boolean isSubDepartment(String id) {
RecordSet rs = new RecordSet();
boolean isSubDepartment = false;
rs.executeQuery("select count(1) from hrmdepartment where subcompanyid1 = ? and SUPDEPID = '0' ",id);
if (rs.next()) {
isSubDepartment = rs.getInt(1) > 0;
}
return isSubDepartment;
}
public boolean isSubDepartmentChildren(String id) {
RecordSet rs = new RecordSet();
boolean isSubDepartmentChildren = false;
rs.executeQuery("select count(1) from hrmdepartment where SUPDEPID = ? ",id);
if (rs.next()) {
isSubDepartmentChildren = rs.getInt(1) > 0;
}
return isSubDepartmentChildren;
}
private List<DropTreeDataVO> getSubDept(String id) {
RecordSet rs = new RecordSet();
List<DropTreeDataVO> voList = new ArrayList<>();
rs.executeQuery("select id,departmentmark from hrmdepartment where subcompanyid1 = ? and SUPDEPID = 0 order by showorder",id);
while (rs.next()) {
String deptId = Util.null2String(rs.getString("id"));
DropTreeDataVO build = DropTreeDataVO.builder()
.value(getRandomData()+deptId)
.label(Util.null2String(rs.getString("departmentmark")))
.build();
if (isSubDepartmentChildren(id)) {
build.setChildren(getSubDeptChildren(id));
}
voList.add(build);
}
return voList;
}
private List<DropTreeDataVO> getSubDeptChildren(String id) {
RecordSet rs = new RecordSet();
List<DropTreeDataVO> voList = new ArrayList<>();
rs.executeQuery("select id,departmentmark from hrmdepartment where SUPDEPID = ? order by showorder",id);
while (rs.next()) {
String deptId = Util.null2String(rs.getString("id"));
DropTreeDataVO build = DropTreeDataVO.builder()
.value(getRandomData()+deptId)
.label(Util.null2String(rs.getString("departmentmark")))
.build();
if (isSubDepartmentChildren(id)) {
build.setChildren(getSubDeptChildren(id));
}
voList.add(build);
}
return voList;
}
@Override @Override
public List<SelectVO> selectVirtualTopThree(VirtualTopParam virtualTopParam) { public List<SelectVO> selectVirtualTopThree(VirtualTopParam virtualTopParam) {
RecordSet rs = new RecordSet(); RecordSet rs = new RecordSet();
List<SelectVO> voList = assembleSelectVOList(); List<SelectVO> voList = assembleSelectVOList();
TreeDataVO build; TreeDataVO build;
String root = virtualTopParam.getId();
String virtualType = virtualTopParam.getVirtualType();
String id;
int num = 1; int num = 1;
List<Integer> list = new ArrayList<>(); List<Integer> list = new ArrayList<>();
list.add(num); list.add(num);
rs.executeQuery("select departmentmark from hrmdepartmentvirtual where id = ? and virtualtype = ? order by showorder",virtualTopParam.getId(),virtualTopParam.getVirtualType()); //判断入参类型
rs.next(); switch(judgeId(virtualType, root)){
build = TreeDataVO.builder() case 1:
.id(virtualTopParam.getId()) rs.executeQuery("select id,subcompanyname from hrmsubcompany where id = ? and SUPSUBCOMID = '0' ", root.substring(3));
.label(Util.null2String(rs.getString("departmentmark"))) rs.next();
.build(); id = rs.getString("id");
if (isVirtualSubDepartment(virtualTopParam.getId(),virtualTopParam.getVirtualType())) { build = TreeDataVO.builder()
build.setChildrens(getVirtualSub(virtualTopParam.getId(),virtualTopParam.getVirtualType())); .id(id)
} .label(Util.null2String(rs.getString("subcompanyname")))
.build();
if (isSubDepartment(id)) {
build.setChildrens(getSubDeptBase(id));
}
break;
case 2:
rs.executeQuery("select id,departmentmark from hrmdepartment where id = ? and SUPDEPID = 0 ", root.substring(3));
rs.next();
id = rs.getString("id");
build = TreeDataVO.builder()
.id(id)
.label(Util.null2String(rs.getString("departmentmark")))
.build();
if (isSubDepartmentChildren(id)) {
build.setChildrens(getSubDeptChildrenBase(id));
}
break;
case 3:
rs.executeQuery("select id,departmentmark from hrmdepartment where id = ? ", root.substring(3));
rs.next();
id = rs.getString("id");
build = TreeDataVO.builder()
.id(id)
.label(Util.null2String(rs.getString("departmentmark")))
.build();
if (isSubDepartmentChildren(id)) {
build.setChildrens(getSubDeptChildrenBase(id));
}
break;
default:
build = getBaseTree(virtualType);
}
if(null!=build.getChildrens()&&build.getChildrens().size()>0){ if(null!=build.getChildrens()&&build.getChildrens().size()>0){
for (ChartChildrensVO children : build.getChildrens()) { for (ChartChildrensVO children : build.getChildrens()) {
num = maxDepth(children)+1; num = maxDepth(children)+1;
@ -439,7 +581,6 @@ public List<DropTreeDataVO> selectVirtualTopTwo(String virtualType) {
voList.remove(i); voList.remove(i);
} }
} }
//MAP.entrySet().removeIf(entry -> Integer.parseInt(entry.getKey()) > build.getNum());
return voList; return voList;
} }

Loading…
Cancel
Save