@ -6,6 +6,7 @@ import com.engine.kr.entity.sync.KqResourceData;
import com.engine.kr.exception.CustomizeRunTimeException ;
import org.apache.commons.collections.CollectionUtils ;
import org.apache.commons.lang3.StringUtils ;
import weaver.common.DateUtil ;
import weaver.conn.RecordSet ;
import weaver.formmode.IgnoreCaseHashMap ;
import weaver.general.Util ;
@ -29,15 +30,15 @@ import java.util.stream.Collectors;
* /
public class SyncKqOrgDataJob extends BaseCronJob {
private static final String COMPANY_TABLE = "hrmcompany" ;
private static final String SUB_COMPANY_TABLE = "uf_hrmsubcompany" ;
private static final String DEPARTMENT_TABLE = "uf_hrmdepartment" ;
private static final String RESOURCE_TABLE = "uf_hrmresource" ;
private static final boolean IS_DEV = false ;
private static final String SUB_COMPANY_TABLE = "hrmsubcompany" ;
private static final String DEPARTMENT_TABLE = "hrmdepartment" ;
private static final String RESOURCE_TABLE = "hrmresource" ;
// 组织唯一代码
Map < String , KqOrgData > sysIdMap = new HashMap < > ( ) ;
private String syncType ;
@Override
public void execute ( ) {
RecordSet rs = new RecordSet ( ) ;
@ -88,45 +89,49 @@ public class SyncKqOrgDataJob extends BaseCronJob {
}
}
if ( IS_DEV ) {
// 查询人员数据
rs . executeSqlWithDataSource ( "select empno,empname,empsexid,empstatusid,dptsysid,empbirthday,empidno,empgrpdate,empnormaldate,empleavedate,empmobile,emplocaladdr,emphomeaddr from rs_emp " , "KAOQIN" ) ;
List < KqResourceData > resourceList = new ArrayList < > ( ) ;
while ( rs . next ( ) ) {
KqResourceData resourceData = new KqResourceData ( ) ;
resourceData . setEmpno ( rs . getString ( "empno" ) ) ;
resourceData . setEmpname ( rs . getString ( "empname" ) ) ;
resourceData . setEmpsexid ( rs . getString ( "empsexid" ) ) ;
resourceData . setEmpstatusid ( rs . getString ( "empstatusid" ) ) ;
resourceData . setDptsysid ( rs . getString ( "dptsysid" ) ) ;
resourceData . setEmpbirthday ( rs . getString ( "empbirthday" ) ) ;
resourceData . setEmpidno ( rs . getString ( "empidno" ) ) ;
resourceData . setEmpgrpdate ( rs . getString ( "empgrpdate" ) ) ;
resourceData . setEmpnormaldate ( rs . getString ( "empnormaldate" ) ) ;
resourceData . setEmpleavedate ( rs . getString ( "empleavedate" ) ) ;
resourceData . setEmpmobile ( rs . getString ( "empmobile" ) ) ;
resourceData . setEmplocaladdr ( rs . getString ( "emplocaladdr" ) ) ;
resourceData . setEmphomeaddr ( rs . getString ( "emphomeaddr" ) ) ;
resourceList . add ( resourceData ) ;
}
//TODO 按照指定时间 查询人员数据
String sql = "select empno,empname,empsexid,empstatusid,dptsysid,empbirthday,empidno,empgrpdate,empnormaldate,empleavedate,empmobile,emplocaladdr,emphomeaddr from rs_emp " ;
if ( ! "all" . equals ( syncType ) ) {
String currentDate = DateUtil . getCurrentDate ( ) ;
sql + = "where empgrpdate = '" + currentDate + "' or empleavedate = '" + currentDate + "'" ;
}
rs . executeSqlWithDataSource ( sql , "KAOQIN" ) ;
List < KqResourceData > resourceList = new ArrayList < > ( ) ;
while ( rs . next ( ) ) {
KqResourceData resourceData = new KqResourceData ( ) ;
resourceData . setEmpno ( rs . getString ( "empno" ) ) ;
resourceData . setEmpname ( rs . getString ( "empname" ) ) ;
resourceData . setEmpsexid ( rs . getString ( "empsexid" ) ) ;
resourceData . setEmpstatusid ( rs . getString ( "empstatusid" ) ) ;
resourceData . setDptsysid ( rs . getString ( "dptsysid" ) ) ;
resourceData . setEmpbirthday ( rs . getString ( "empbirthday" ) ) ;
resourceData . setEmpidno ( rs . getString ( "empidno" ) ) ;
resourceData . setEmpgrpdate ( rs . getString ( "empgrpdate" ) ) ;
resourceData . setEmpnormaldate ( rs . getString ( "empnormaldate" ) ) ;
resourceData . setEmpleavedate ( rs . getString ( "empleavedate" ) ) ;
resourceData . setEmpmobile ( rs . getString ( "empmobile" ) ) ;
resourceData . setEmplocaladdr ( rs . getString ( "emplocaladdr" ) ) ;
resourceData . setEmphomeaddr ( rs . getString ( "emphomeaddr" ) ) ;
resourceList . add ( resourceData ) ;
}
// 处理人员数据
for ( KqResourceData resourceData : resourceList ) {
KqOrgData kqOrgData = sysIdMap . get ( resourceData . getDptsysid ( ) ) ;
if ( null = = kqOrgData | | StringUtils . isBlank ( kqOrgData . getOaId ( ) ) | | StringUtils . isBlank ( kqOrgData . getSubCompanyId ( ) ) ) {
// 上级部门不存在的,或者非部门下的人员,该组织下的人员跳过处理
continue ;
}
String departmentId = kqOrgData . getOaId ( ) ;
String subCompanyId = kqOrgData . getSubCompanyId ( ) ;
// 处理人员数据
for ( KqResourceData resourceData : resourceList ) {
KqOrgData kqOrgData = sysIdMap . get ( resourceData . getDptsysid ( ) ) ;
if ( null = = kqOrgData | | StringUtils . isBlank ( kqOrgData . getOaId ( ) ) | | StringUtils . isBlank ( kqOrgData . getSubCompanyId ( ) ) ) {
// 上级部门不存在的,或者非部门下的人员,该组织下的人员跳过处理
continue ;
}
String departmentId = kqOrgData . getOaId ( ) ;
String subCompanyId = kqOrgData . getSubCompanyId ( ) ;
// 只做更新,不新增
syncResourceData ( rs , resourceData , subCompanyId , departmentId ) ;
// 只做更新,不新增
syncResourceData ( rs , resourceData , subCompanyId , departmentId ) ;
}
}
rs . writeLog ( "考勤组织信息同步任务结束" ) ;
} catch ( Exception e ) {
@ -135,7 +140,7 @@ public class SyncKqOrgDataJob extends BaseCronJob {
}
private void dealDepartmentData ( RecordSet rs , KqOrgData departmentData , Map < String , List < KqOrgData > > parentMap , String subCompanyId , String supDepId ) {
// TODO 同步部门数据
// 同步部门数据
syncDepartmentData ( rs , departmentData , subCompanyId , supDepId ) ;
List < KqOrgData > departmentList = parentMap . get ( departmentData . getDptprcno ( ) ) ;
@ -155,7 +160,7 @@ public class SyncKqOrgDataJob extends BaseCronJob {
}
if ( StringUtils . isBlank ( id ) ) {
// rs.writeLog("当前人员未在OA中查询到, "+JSON.toJSONString(resourceData));
rs . writeLog ( "当前人员未在OA中查询到, " + JSON . toJSONString ( resourceData ) ) ;
return ;
}
@ -180,6 +185,7 @@ public class SyncKqOrgDataJob extends BaseCronJob {
// 更新离职日期
rs . executeUpdate ( "update cus_fielddata set field16 = ? where `SCOPE` ='HrmCustomFieldByInfoType' and SCOPEID =3 and id = ?" , resourceData . getEmpleavedate ( ) , id ) ;
new ResourceComInfo ( ) . updateCache ( id ) ;
}
@ -196,12 +202,12 @@ public class SyncKqOrgDataJob extends BaseCronJob {
IgnoreCaseHashMap < String , Object > dataMap = new IgnoreCaseHashMap < > ( ) ;
dataMap . put ( "departmentmark" , departmentData . getDptname ( ) ) ;
dataMap . put ( "departmentname" , departmentData . getDptname ( ) ) ;
dataMap . put ( "departmentcode" , departmentData . getDpt prc no( ) ) ;
dataMap . put ( "departmentcode" , departmentData . getDpt no( ) ) ;
dataMap . put ( "subcompanyid1" , subCompanyId ) ;
dataMap . put ( "supdepid" , supDepId ) ;
dataMap . put ( "canceled" , departmentData . getIsdelete ( ) ) ;
// 判断有无当前分部数据
rs . executeQuery ( "select id from " + DEPARTMENT_TABLE + " where departmentcode = ? " , departmentData . getDpt prc no( ) ) ;
rs . executeQuery ( "select id from " + DEPARTMENT_TABLE + " where departmentcode = ? " , departmentData . getDpt no( ) ) ;
if ( rs . next ( ) ) {
// 更新
dataMap . put ( "id" , rs . getString ( "id" ) ) ;
@ -210,21 +216,21 @@ public class SyncKqOrgDataJob extends BaseCronJob {
// 新增
insertData ( dataMap , DEPARTMENT_TABLE ) ;
}
rs . executeQuery ( "select id from " + DEPARTMENT_TABLE + " where departmentcode = ? " , departmentData . getDpt prc no( ) ) ;
rs . executeQuery ( "select id from " + DEPARTMENT_TABLE + " where departmentcode = ? " , departmentData . getDpt no( ) ) ;
if ( rs . next ( ) ) {
// 赋值OA中的ID
departmentData . setOaId ( rs . getString ( "id" ) ) ;
departmentData . setSubCompanyId ( subCompanyId ) ;
sysIdMap . put ( departmentData . getDptsysid ( ) , departmentData ) ;
if ( IS_DEV ) {
DepartmentComInfo dci = new DepartmentComInfo ( ) ;
dci . removeCompanyCache ( ) ;
dci . addCache ( departmentData . getOaId ( ) ) ;
HrmServiceManager hrmServiceManager = new HrmServiceManager ( ) ;
hrmServiceManager . SynInstantDepartment ( departmentData . getOaId ( ) , "2" ) ;
MatrixUtil . updateDepartmentData ( departmentData . getOaId ( ) ) ;
}
DepartmentComInfo dci = new DepartmentComInfo ( ) ;
dci . removeCompanyCache ( ) ;
dci . addCache ( departmentData . getOaId ( ) ) ;
HrmServiceManager hrmServiceManager = new HrmServiceManager ( ) ;
hrmServiceManager . SynInstantDepartment ( departmentData . getOaId ( ) , "2" ) ;
MatrixUtil . updateDepartmentData ( departmentData . getOaId ( ) ) ;
} else {
throw new CustomizeRunTimeException ( "当前部门同步失败," + JSON . toJSONString ( departmentData ) ) ;
}
@ -243,12 +249,12 @@ public class SyncKqOrgDataJob extends BaseCronJob {
IgnoreCaseHashMap < String , Object > dataMap = new IgnoreCaseHashMap < > ( ) ;
dataMap . put ( "subcompanyname" , subCompany . getDptname ( ) ) ;
dataMap . put ( "subcompanydesc" , subCompany . getDptname ( ) ) ;
dataMap . put ( "subcompanycode" , subCompany . getDpt prc no( ) ) ;
dataMap . put ( "subcompanycode" , subCompany . getDpt no( ) ) ;
dataMap . put ( "companyid" , companyId ) ;
dataMap . put ( "supsubcomid" , "0" ) ;
dataMap . put ( "canceled" , subCompany . getIsdelete ( ) ) ;
// 判断有无当前分部数据
rs . executeQuery ( "select id from " + SUB_COMPANY_TABLE + " where subcompanycode = ? " , subCompany . getDpt prc no( ) ) ;
rs . executeQuery ( "select id from " + SUB_COMPANY_TABLE + " where subcompanycode = ? " , subCompany . getDpt no( ) ) ;
if ( rs . next ( ) ) {
// 更新
dataMap . put ( "id" , rs . getString ( "id" ) ) ;
@ -257,20 +263,18 @@ public class SyncKqOrgDataJob extends BaseCronJob {
// 新增
insertData ( dataMap , SUB_COMPANY_TABLE ) ;
}
rs . executeQuery ( "select id from " + SUB_COMPANY_TABLE + " where subcompanycode = ? " , subCompany . getDpt prc no( ) ) ;
rs . executeQuery ( "select id from " + SUB_COMPANY_TABLE + " where subcompanycode = ? " , subCompany . getDpt no( ) ) ;
if ( rs . next ( ) ) {
// 赋值OA中的ID
subCompany . setOaId ( rs . getString ( "id" ) ) ;
sysIdMap . put ( subCompany . getDptsysid ( ) , subCompany ) ;
// 刷新缓存
if ( IS_DEV ) {
SubCompanyComInfo sci = new SubCompanyComInfo ( ) ;
sci . removeCompanyCache ( ) ;
sci . addCache ( subCompany . getOaId ( ) ) ;
MatrixUtil . updateSubcompayData ( subCompany . getOaId ( ) ) ;
new weaver . hrm . appdetach . AppDetachComInfo ( ) . initSubDepAppData ( ) ;
}
SubCompanyComInfo sci = new SubCompanyComInfo ( ) ;
sci . removeCompanyCache ( ) ;
sci . addCache ( subCompany . getOaId ( ) ) ;
MatrixUtil . updateSubcompayData ( subCompany . getOaId ( ) ) ;
new weaver . hrm . appdetach . AppDetachComInfo ( ) . initSubDepAppData ( ) ;
} else {
throw new CustomizeRunTimeException ( "当前分部同步失败," + JSON . toJSONString ( subCompany ) ) ;
}
@ -370,5 +374,11 @@ public class SyncKqOrgDataJob extends BaseCronJob {
}
}
public String getSyncType ( ) {
return syncType ;
}
public void setSyncType ( String syncType ) {
this . syncType = syncType ;
}
}