diff --git a/src/com/engine/organization/service/impl/ChartServiceImpl.java b/src/com/engine/organization/service/impl/ChartServiceImpl.java index e8b32363..26e3438c 100644 --- a/src/com/engine/organization/service/impl/ChartServiceImpl.java +++ b/src/com/engine/organization/service/impl/ChartServiceImpl.java @@ -15,7 +15,6 @@ import weaver.general.Util; import weaver.hrm.resource.ResourceComInfo; import java.util.*; -import java.util.stream.Collectors; /** * @author:dxfeng @@ -182,52 +181,49 @@ public class ChartServiceImpl extends Service implements ChartService { String dimension = Util.null2String(params.get("fclass")); dimension = StringUtils.isBlank(dimension) ? "0" : dimension; + // 是否显示岗位 + String showJobStr = Util.null2String(params.get("showJob")); + boolean showJob = "1".equals(showJobStr); + // 初始化表名 initTableNameByClass(dimension); List dataList = new ArrayList<>(); - List resourceList = new ArrayList<>(); - Set jobTitleSet = new HashSet<>(); + List jobTitleList = new ArrayList<>(); int departmentOnJob = 0; + int resourceNum; RecordSet rs = new RecordSet(); // TODO 查询当前实际的数据 String sql; - // 查询当当前部门下的人员 - if ("0".equals(dimension)) { - sql = "select a.id,a.lastname as 'name' ,a.jobtitle ,a.belongto ,a.companyworkyear from hrmresource a where a.departmentid = '" + departmentId + "'"; - } else { - sql = "select a.id,a.lastname as 'name' ,a.jobtitle ,a.belongto ,a.companyworkyear from hrmresource a inner join hrmresourcevirtual b on a.id = b.resourceid where b.departmentid = '" + departmentId + "'"; + // 查询部门本身 + if(hasVirtualFields){ + sql = "select a.id,a.departmentname as 'name',b.bmfzr,b.bmlx as 'isvitual' from " + DEPARTMENT_TABLE + " a left join hrmdepartmentdefined b on a.id = b.deptid where a.id = '" + departmentId + "'"; + }else { + sql = "select a.id,a.departmentname as 'name',b.bmfzr from " + DEPARTMENT_TABLE + " a left join hrmdepartmentdefined b on a.id = b.deptid where a.id = '" + departmentId + "'"; } rs.executeQuery(sql); - while (rs.next()){ - String jobTitle = Util.null2String(rs.getString("jobtitle")); - ChartPO chartPO = new ChartPO(); - chartPO.setFtype("4"); - chartPO.setFobjid(rs.getString("id")); - chartPO.setId(chartPO.getFobjid()); - chartPO.setFname(rs.getString("name")); + ChartPO departmentChartPO = new ChartPO(); + if(rs.next()){ + String fLeader = Util.null2String(rs.getString("bmfzr")); + departmentChartPO.setFtype("2"); + departmentChartPO.setFobjid(departmentId); + departmentChartPO.setId(rootId); + departmentChartPO.setFname(rs.getString("name")); // 岗位处理后的ID - chartPO.setParentId(departmentId + "_" + jobTitle); - chartPO.setExpand("0"); - chartPO.setHasChildren("0"); - chartPO.setBelongto(Util.null2String(rs.getString("belongto"))); - chartPO.setCompanyWorkYear(rs.getString("companyworkyear")); - try { - chartPO.setFleaderimg(new ResourceComInfo().getMessagerUrls(chartPO.getId())); - } catch (Exception e) { - throw new RuntimeException(e); - } - resourceList.add(chartPO); + departmentChartPO.setExpand("1"); + departmentChartPO.setFisvitual(rs.getString("isvitual")); - jobTitleSet.add(jobTitle); + // 部门负责人 + departmentChartPO.setFleader(getDepartmentLeader(fLeader)); + dataList.add(departmentChartPO); } - Map> resourceMap = resourceList.stream().collect(Collectors.groupingBy(ChartPO::getParentId)); - // 查询人员的岗位 - if(CollectionUtils.isNotEmpty(jobTitleSet)) { - sql = "select a.id,a.jobtitlename as 'name' from hrmjobtitles a where a.id in(" + StringUtils.join(jobTitleSet, ",") + ")"; + + if (showJob) { + // 查询部门下的岗位 + sql = "select a.id,a.jobtitlename as 'name' from hrmjobtitles a inner join jcl_org_job b on a.id = b.ec_jobtitle where b.ec_department = '" + departmentId + "'"; rs.executeQuery(sql); - while (rs.next()){ + while (rs.next()) { ChartPO chartPO = new ChartPO(); chartPO.setFtype("3"); chartPO.setFobjid(rs.getString("id")); @@ -237,41 +233,70 @@ public class ChartServiceImpl extends Service implements ChartService { chartPO.setParentId(rootId); chartPO.setExpand("1"); chartPO.setHasChildren("1"); - dataList.add(chartPO); + jobTitleList.add(chartPO); + } - // 避免出现人员没有上级岗位的情况 - List chartPOS = resourceMap.get(chartPO.getId()); - if (CollectionUtils.isNotEmpty(chartPOS)) { - dataList.addAll(chartPOS); - chartPO.setFonjob(chartPOS.size()); - departmentOnJob += chartPO.getFonjob(); + if ("0".equals(dimension)) { + sql = "select a.id,a.lastname as 'name' ,a.jobtitle ,a.belongto ,a.companyworkyear from hrmresource a where a.status < 4 and a.departmentid = ? and a.jobtitle = ?"; + } else { + sql = "select a.id,a.lastname as 'name' ,a.jobtitle ,a.belongto ,a.companyworkyear from hrmresource a inner join hrmresourcevirtual b on a.id = b.resourceid where a.status < 4 and b.departmentid = ? and a.jobtitle = ?"; + } + // 遍历岗位、查询对应岗位下的人员 + for (ChartPO jobTitlePO : jobTitleList) { + resourceNum = 0; + rs.executeQuery(sql, departmentId, jobTitlePO.getFobjid()); + while (rs.next()) { + String jobTitle = Util.null2String(rs.getString("jobtitle")); + ChartPO chartPO = new ChartPO(); + chartPO.setFtype("4"); + chartPO.setFobjid(rs.getString("id")); + chartPO.setId(chartPO.getFobjid()); + chartPO.setFname(rs.getString("name")); + // 岗位处理后的ID + chartPO.setParentId(departmentId + "_" + jobTitle); + chartPO.setExpand("0"); + chartPO.setHasChildren("0"); + chartPO.setBelongto(Util.null2String(rs.getString("belongto"))); + chartPO.setCompanyWorkYear(rs.getString("companyworkyear")); + try { + chartPO.setFleaderimg(new ResourceComInfo().getMessagerUrls(chartPO.getId())); + } catch (Exception e) { + throw new RuntimeException(e); + } + resourceNum++; + dataList.add(chartPO); } + jobTitlePO.setFonjob(resourceNum); + departmentOnJob += resourceNum; + dataList.add(jobTitlePO); } - } - // 查询部门本身 - if(hasVirtualFields){ - sql = "select a.id,a.departmentname as 'name',b.bmfzr,b.bmlx as 'isvitual' from " + DEPARTMENT_TABLE + " a left join hrmdepartmentdefined b on a.id = b.deptid where a.id = '" + departmentId + "'"; + departmentChartPO.setHasChildren(CollectionUtils.isNotEmpty(jobTitleList) ? "1" : "0"); }else { - sql = "select a.id,a.departmentname as 'name',b.bmfzr from " + DEPARTMENT_TABLE + " a left join hrmdepartmentdefined b on a.id = b.deptid where a.id = '" + departmentId + "'"; - } - rs.executeQuery(sql); - if(rs.next()){ - String fLeader = Util.null2String(rs.getString("bmfzr")); - ChartPO chartPO = new ChartPO(); - chartPO.setFtype("2"); - chartPO.setFobjid(departmentId); - chartPO.setId(rootId); - chartPO.setFname(rs.getString("name")); - // 岗位处理后的ID - chartPO.setExpand("1"); - chartPO.setHasChildren(CollectionUtils.isNotEmpty(dataList) ? "1" : "0"); - chartPO.setFonjob(departmentOnJob); - chartPO.setFisvitual(rs.getString("isvitual")); - - // 部门负责人 - chartPO.setFleader(getDepartmentLeader(fLeader)); - dataList.add(chartPO); + // 直接查询岗位下的人员 + sql = "select a.id,a.lastname as 'name' ,a.jobtitle ,a.belongto ,a.companyworkyear from hrmresource a where a.status < 4 and a.departmentid = ? "; + rs.executeQuery(sql, departmentId); + while (rs.next()) { + ChartPO chartPO = new ChartPO(); + chartPO.setFtype("4"); + chartPO.setFobjid(rs.getString("id")); + chartPO.setId(chartPO.getFobjid()); + chartPO.setFname(rs.getString("name")); + // 岗位处理后的ID + chartPO.setParentId(rootId); + chartPO.setExpand("0"); + chartPO.setHasChildren("0"); + chartPO.setBelongto(Util.null2String(rs.getString("belongto"))); + chartPO.setCompanyWorkYear(rs.getString("companyworkyear")); + try { + chartPO.setFleaderimg(new ResourceComInfo().getMessagerUrls(chartPO.getId())); + } catch (Exception e) { + throw new RuntimeException(e); + } + dataList.add(chartPO); + departmentOnJob++; + } } + departmentChartPO.setFonjob(departmentOnJob); Map result = new HashMap<>();