@ -11,11 +11,14 @@ import com.engine.organization.service.OrgChartService;
import com.engine.organization.util.HasRightUtil ;
import com.engine.organization.util.db.DBType ;
import com.engine.organization.util.db.MapperProxyFactory ;
import com.engine.organization.util.detach.DetachUtil ;
import org.apache.commons.lang3.StringUtils ;
import weaver.conn.RecordSet ;
import weaver.general.Util ;
import weaver.hrm.User ;
import java.util.* ;
import java.util.stream.Collectors ;
/ * *
* @className : OrgChartServiceImpl
@ -47,8 +50,14 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
item . put ( "companyname" , rs . getString ( "companyname" ) ) ;
fclasslist . add ( item ) ;
}
String sql = "select distinct id, fnumber, fname, ftype from jcl_org_map where ftype in (0, 1) order by ftype , id " ;
rs . executeQuery ( "select distinct id, fnumber, fname, ftype from jcl_org_map where ftype in (0, 1) order by ftype , id " ) ;
// 分部分权过滤
DetachUtil detachUtil = new DetachUtil ( user . getUID ( ) ) ;
if ( detachUtil . isDETACH ( ) ) {
sql = "select distinct id, fnumber, fname, ftype from jcl_org_map where (ftype = 0 or (ftype = 1 and fobjid in(" + detachUtil . getJclRoleLevels ( ) + "))) order by ftype , id" ;
}
rs . executeQuery ( sql ) ;
List < Map < String , Object > > companylist = new ArrayList < > ( ) ;
while ( rs . next ( ) ) {
Map < String , Object > item = new HashMap < > ( ) ;
@ -130,7 +139,7 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
item . put ( "fname" , rs . getString ( "fname" ) ) ;
item . put ( "ftype" , rs . getString ( "ftype" ) ) ;
item . put ( "fnumber" , rs . getString ( "fnumber" ) ) ;
item . put ( "fobjid" , rs . getString ( "fobjid" ) ) ;
item . put ( "fobjid" , rs . getString ( "fobjid" ) ) ;
item . put ( "parentId" , null ) ;
item . put ( "expand" , "1" ) ;
item . put ( "hasChildren" , hasChildren ( rs . getString ( "id" ) , true ) ) ;
@ -138,11 +147,10 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
}
int currentLevel = 1 ;
if ( currentLevel + 1 < = Integer . parseInt ( level ) ) {
findCompanyItemByParantId ( id , currentLevel + 1 , level , rs , list , whereSql , true ) ;
} else {
findCompanyItemByParantId ( id , currentLevel + 1 , level , rs , list , whereSql , false ) ;
}
findCompanyItemByParantId ( id , currentLevel + 1 , level , rs , list , whereSql , currentLevel + 1 < = Integer . parseInt ( level ) ) ;
// 分部数据,构建层级关系
reBuildTreeList ( list ) ;
result . put ( "api_status" , true ) ;
result . put ( "data" , list ) ;
@ -150,7 +158,14 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
}
private void findCompanyItemByParantId ( String id , int currentLevel , String level , RecordSet rs , List < Map < String , Object > > list , String whereSql , boolean expand ) {
rs . executeQuery ( "select id, fname, ftype, fparentid,fobjid,fecid,fnumber from jcl_org_map " + whereSql + " and fparentid = " + id ) ;
String sql = "select id, fname, ftype, fparentid,fobjid,fecid,fnumber from jcl_org_map " + whereSql ;
DetachUtil detachUtil = new DetachUtil ( user . getUID ( ) ) ;
if ( detachUtil . isDETACH ( ) & & "0" . equals ( id ) ) {
sql + = " and ftype = 1 and fobjid in(" + detachUtil . getJclRoleLevels ( ) + ")" ;
} else {
sql + = " and fparentid = " + id ;
}
rs . executeQuery ( sql ) ;
List < Map < String , Object > > currentList = new ArrayList < > ( ) ;
while ( rs . next ( ) ) {
Map < String , Object > item = new HashMap < > ( ) ;
@ -210,7 +225,7 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
@Override
public Map < String , Object > getUserData ( Map < String , Object > request2Map , User user ) {
Map < String , Object > result = new HashMap < > ( ) ;
boolean hasRight = HasRightUtil . hasRight ( user , USER_RIGHT , true ) ;
boolean hasRight = HasRightUtil . hasRight ( user , USER_RIGHT , true ) ;
result . put ( "hasRight" , hasRight ) ;
if ( ! hasRight ) {
return result ;
@ -251,19 +266,18 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
item . put ( "expand" , "1" ) ;
item . put ( "fnumber" , rs . getString ( "fnumber" ) ) ;
item . put ( "fleader" , rs . getString ( "fleader" ) ) ;
item . put ( "fobjid" , rs . getString ( "fobjid" ) ) ;
item . put ( "fleaderlv" , convertLevel ( rs . getString ( "fleaderlv" ) ) ) ;
item . put ( "fleaderst" , convertGrade ( rs . getString ( "fleaderst" ) ) ) ;
item . put ( "fecid" , rs . getString ( "fecid" ) ) ;
item . put ( "fobjid" , rs . getString ( "fobjid" ) ) ;
item . put ( "fleaderlv" , convertLevel ( rs . getString ( "fleaderlv" ) ) ) ;
item . put ( "fleaderst" , convertGrade ( rs . getString ( "fleaderst" ) ) ) ;
item . put ( "fecid" , rs . getString ( "fecid" ) ) ;
list . add ( item ) ;
}
int currentLevel = 1 ;
if ( currentLevel + 1 < = Integer . parseInt ( level ) ) {
findUserItemByParantId ( id , currentLevel + 1 , level , rs , list , whereSql , true ) ;
} else {
findUserItemByParantId ( id , currentLevel + 1 , level , rs , list , whereSql , false ) ;
}
findUserItemByParantId ( id , currentLevel + 1 , level , rs , list , whereSql , currentLevel + 1 < = Integer . parseInt ( level ) ) ;
// 分部数据,构建层级关系
reBuildTreeList ( list ) ;
result . put ( "api_status" , true ) ;
result . put ( "data" , list ) ;
@ -294,9 +308,9 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
item . put ( "fnumber" , rs . getString ( "fnumber" ) ) ;
item . put ( "hasChildren" , hasChildren ( rs . getString ( "id" ) , false ) ) ;
item . put ( "fleader" , rs . getString ( "fleader" ) ) ;
item . put ( "fleaderlv" , convertLevel ( rs . getString ( "fleaderlv" ) ) ) ;
item . put ( "fleaderst" , convertGrade ( rs . getString ( "fleaderst" ) ) ) ;
item . put ( "fobjid" , rs . getString ( "fobjid" ) ) ;
item . put ( "fleaderlv" , convertLevel ( rs . getString ( "fleaderlv" ) ) ) ;
item . put ( "fleaderst" , convertGrade ( rs . getString ( "fleaderst" ) ) ) ;
item . put ( "fobjid" , rs . getString ( "fobjid" ) ) ;
currentList . add ( item ) ;
}
@ -354,7 +368,14 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
private void findUserItemByParantId ( String id , int currentLevel , String level , RecordSet rs , List < Map < String , Object > > list , String whereSql , boolean expand ) {
rs . executeQuery ( "select t.id, t.fname, t.ftype, t.fparentid,t.fobjparentid,t.fleader, t.fleadername, t.fleaderimg, t.fleaderjob, t.fplan, t.fonjob, t.fnumber,t.fobjid,t.fecid,t.fleaderlv, t.fleaderst from jcl_org_map t " + whereSql + " and t.fparentid = " + id ) ;
String sql = "select t.id, t.fname, t.ftype, t.fparentid,t.fobjparentid,t.fleader, t.fleadername, t.fleaderimg, t.fleaderjob, t.fplan, t.fonjob, t.fnumber,t.fobjid,t.fecid,t.fleaderlv, t.fleaderst from jcl_org_map t " + whereSql ;
DetachUtil detachUtil = new DetachUtil ( user . getUID ( ) ) ;
if ( detachUtil . isDETACH ( ) & & "0" . equals ( id ) ) {
sql + = " and ftype = 1 and fobjid in(" + detachUtil . getJclRoleLevels ( ) + ")" ;
} else {
sql + = " and t.fparentid = " + id ;
}
rs . executeQuery ( sql ) ;
List < Map < String , Object > > currentList = new ArrayList < > ( ) ;
while ( rs . next ( ) ) {
Map < String , Object > item = new HashMap < > ( ) ;
@ -418,34 +439,52 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
}
private String convertLevel ( String fLeaderLv ) {
String jobLevelName = "" ;
String Builder jobLevelName = new StringBuilder ( ) ;
if ( StringUtils . isNotBlank ( fLeaderLv ) ) {
try {
long parseLong = Long . parseLong ( fLeaderLv ) ;
LevelPO levelByID = MapperProxyFactory . getProxy ( LevelMapper . class ) . getLevelByID ( parseLong ) ;
if ( null ! = levelByID ) {
jobLevelName = levelByID . getLevelName ( ) ;
String [ ] split = fLeaderLv . split ( "," ) ;
for ( String s : split ) {
long parseLong = Long . parseLong ( s ) ;
LevelPO levelByID = MapperProxyFactory . getProxy ( LevelMapper . class ) . getLevelByID ( parseLong ) ;
if ( null ! = levelByID ) {
jobLevelName . append ( levelByID . getLevelName ( ) ) ;
}
}
} catch ( NumberFormatException exception ) {
jobLevelName = fLeaderLv ;
jobLevelName = new StringBuilder ( fLeaderLv ) ;
}
}
return jobLevelName ;
return jobLevelName .toString ( ) ;
}
private String convertGrade ( String fLeaderSt ) {
String jobGradeName = "" ;
String Builder jobGradeName = new StringBuilder ( ) ;
if ( StringUtils . isNotBlank ( fLeaderSt ) ) {
try {
long parseLong = Long . parseLong ( fLeaderSt ) ;
GradePO gradeByID = MapperProxyFactory . getProxy ( GradeMapper . class ) . getGradeByID ( parseLong ) ;
if ( null ! = gradeByID ) {
jobGradeName = gradeByID . getGradeName ( ) ;
String [ ] split = fLeaderSt . split ( "," ) ;
for ( String s : split ) {
long parseLong = Long . parseLong ( s ) ;
GradePO gradeByID = MapperProxyFactory . getProxy ( GradeMapper . class ) . getGradeByID ( parseLong ) ;
if ( null ! = gradeByID ) {
jobGradeName . append ( gradeByID . getGradeName ( ) ) ;
}
}
} catch ( NumberFormatException exception ) {
jobGradeName = fLeaderSt ;
jobGradeName = new StringBuilder ( fLeaderSt ) ;
}
}
return jobGradeName ;
return jobGradeName . toString ( ) ;
}
private void reBuildTreeList ( List < Map < String , Object > > list ) {
// 分部数据,构建层级关系
Set < String > idSet = list . stream ( ) . filter ( item - > "1" . equals ( Util . null2String ( item . get ( "ftype" ) ) ) ) . map ( item - > Util . null2String ( item . get ( "id" ) ) ) . collect ( Collectors . toSet ( ) ) ;
list . forEach ( item - > {
if ( "1" . equals ( Util . null2String ( item . get ( "ftype" ) ) ) & & ! idSet . contains ( Util . null2String ( item . get ( "parentId" ) ) ) ) {
item . put ( "parentId" , "0" ) ;
item . put ( "fobjparentId" , "0" ) ;
}
} ) ;
}
}