@ -15,7 +15,6 @@ import weaver.general.Util;
import weaver.hrm.resource.ResourceComInfo ;
import java.util.* ;
import java.util.stream.Collectors ;
/ * *
* @author : dxfeng
@ -182,25 +181,71 @@ 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 < ChartPO > dataList = new ArrayList < > ( ) ;
List < ChartPO > resourceList = new ArrayList < > ( ) ;
Set < String > jobTitleSet = new HashSet < > ( ) ;
List < ChartPO > jobTitleList = new ArrayList < > ( ) ;
int departmentOnJob = 0 ;
int resourceNum ;
RecordSet rs = new RecordSet ( ) ;
// TODO 查询当前实际的数据
String sql ;
// 查询当当前部门下的人员
// 查询部门本身
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 ) ;
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
departmentChartPO . setExpand ( "1" ) ;
departmentChartPO . setFisvitual ( rs . getString ( "isvitual" ) ) ;
// 部门负责人
departmentChartPO . setFleader ( getDepartmentLeader ( fLeader ) ) ;
dataList . add ( departmentChartPO ) ;
}
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 ( ) ) {
ChartPO chartPO = new ChartPO ( ) ;
chartPO . setFtype ( "3" ) ;
chartPO . setFobjid ( rs . getString ( "id" ) ) ;
chartPO . setId ( departmentId + "_" + chartPO . getFobjid ( ) ) ;
chartPO . setFname ( rs . getString ( "name" ) ) ;
// 岗位处理后的ID
chartPO . setParentId ( rootId ) ;
chartPO . setExpand ( "1" ) ;
chartPO . setHasChildren ( "1" ) ;
jobTitleList . add ( chartPO ) ;
}
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 + "'" ;
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 b.departmentid = '" + departmentId + "'" ;
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 = ? ";
}
rs . executeQuery ( sql ) ;
while ( rs . next ( ) ) {
// 遍历岗位、查询对应岗位下的人员
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" ) ;
@ -218,60 +263,40 @@ public class ChartServiceImpl extends Service implements ChartService {
} catch ( Exception e ) {
throw new RuntimeException ( e ) ;
}
resourceList . add ( chartPO ) ;
jobTitleSet . add ( jobTitle ) ;
}
Map < String , List < ChartPO > > 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 , "," ) + ")" ;
rs . executeQuery ( sql ) ;
while ( rs . next ( ) ) {
ChartPO chartPO = new ChartPO ( ) ;
chartPO . setFtype ( "3" ) ;
chartPO . setFobjid ( rs . getString ( "id" ) ) ;
chartPO . setId ( departmentId + "_" + chartPO . getFobjid ( ) ) ;
chartPO . setFname ( rs . getString ( "name" ) ) ;
// 岗位处理后的ID
chartPO . setParentId ( rootId ) ;
chartPO . setExpand ( "1" ) ;
chartPO . setHasChildren ( "1" ) ;
resourceNum + + ;
dataList . add ( chartPO ) ;
// 避免出现人员没有上级岗位的情况
List < ChartPO > chartPOS = resourceMap . get ( chartPO . getId ( ) ) ;
if ( CollectionUtils . isNotEmpty ( chartPOS ) ) {
dataList . addAll ( chartPOS ) ;
chartPO . setFonjob ( chartPOS . size ( ) ) ;
departmentOnJob + = chartPO . getFonjob ( ) ;
}
}
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" ) ) ;
// 直接查询岗位下的人员
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 ( " 2 ") ;
chartPO . setFobjid ( departmentId ) ;
chartPO . setId ( rootId ) ;
chartPO . setFtype ( "4" ) ;
chartPO . setFobjid ( rs . getString ( "id" ) ) ;
chartPO . setId ( chartPO . getFobjid ( ) ) ;
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 ) ) ;
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 < String , Object > result = new HashMap < > ( ) ;