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

Loading…
Cancel
Save