diff --git a/src/com/engine/sship/service/impl/OrgChartServiceImpl.java b/src/com/engine/sship/service/impl/OrgChartServiceImpl.java index ba6c37b..4e89ade 100644 --- a/src/com/engine/sship/service/impl/OrgChartServiceImpl.java +++ b/src/com/engine/sship/service/impl/OrgChartServiceImpl.java @@ -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 getSubCompanyBase(String companyId) { + RecordSet rs = new RecordSet(); + List 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 getSubDeptBase(String id) { + RecordSet rs = new RecordSet(); + List 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 getSubDeptChildrenBase(String id) { + RecordSet rs = new RecordSet(); + List 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 getVirtualSubDept(String supdepid,String virtualType) { - RecordSet rs = new RecordSet(); - List 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 getVirtualSub(String supdepid,String virtualType) { RecordSet rs = new RecordSet(); List voList = new ArrayList<>(); @@ -275,23 +343,6 @@ public class OrgChartServiceImpl extends Service implements OrgChartService { } return voList; } - private List getVirtualSubDeptData(String supdepid,String virtualType) { - RecordSet rs = new RecordSet(); - List 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 selectVirtualTop() { List 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 selectVirtualTopTwo(String virtualType) { RecordSet rs = new RecordSet(); - BaseBean bb = new BaseBean(); List 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 getSubCompany(String companyId) { + RecordSet rs = new RecordSet(); + List 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 getSubDept(String id) { + RecordSet rs = new RecordSet(); + List 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 getSubDeptChildren(String id) { + RecordSet rs = new RecordSet(); + List 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 selectVirtualTopThree(VirtualTopParam virtualTopParam) { RecordSet rs = new RecordSet(); List voList = assembleSelectVOList(); TreeDataVO build; + String root = virtualTopParam.getId(); + String virtualType = virtualTopParam.getVirtualType(); + String id; int num = 1; List 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 selectVirtualTopTwo(String virtualType) { voList.remove(i); } } - //MAP.entrySet().removeIf(entry -> Integer.parseInt(entry.getKey()) > build.getNum()); return voList; }