|
|
@@ -54,32 +54,36 @@ public class ADSyncService {
|
|
|
//判断是否需要更新组织
|
|
|
if("离职".equals(employee.getEm_class())){
|
|
|
disableUser(employee.getEm_adid(),connection);
|
|
|
- baseDao.updateByCondition("employee","em_adid=null","em_code='"+employee.getEm_code()+"'");
|
|
|
- }
|
|
|
- Optional<HrOrg> orgOptional = orgList.stream().filter(org -> org.getOr_code().equals(employee.getOrcode())).findFirst();
|
|
|
- logger.info("同步用户更新:{}",employee.getEm_name());
|
|
|
- updateUserDescription(employee.getEm_adid(),employee.getEmjob());
|
|
|
- if(orgOptional.isPresent()){
|
|
|
- String newOUPath = getOUPath(orgOptional.get().getOr_path());
|
|
|
- logger.info("同步用户更新:oldpath{},newpath{}",getUserOUPath(employee.getEm_adid()),newOUPath);
|
|
|
- if(!getUserOUPath(employee.getEm_adid()).equals(newOUPath)){
|
|
|
- moveUser(employee.getEm_adid(),"CN="+employee.getEm_name()+","+newOUPath,connection);
|
|
|
- baseDao.updateByCondition("employee","em_adid='CN="+employee.getEm_name()+","+newOUPath+"'","em_code='"+employee.getEm_code()+"'");
|
|
|
- }
|
|
|
+ //baseDao.updateByCondition("employee","em_adid=null","em_code='"+employee.getEm_code()+"'");
|
|
|
+ }else {
|
|
|
+ Optional<HrOrg> orgOptional = orgList.stream().filter(org -> org.getOr_code().equals(employee.getOrcode())).findFirst();
|
|
|
+ logger.info("同步用户更新:{}",employee.getEm_name());
|
|
|
+ updateUserDescription(employee.getEm_adid(),employee.getEmjob());
|
|
|
+ if(orgOptional.isPresent()){
|
|
|
+ String newOUPath = getOUPath(orgOptional.get().getOr_path());
|
|
|
+ logger.info("同步用户更新:oldpath{},newpath{}",getUserOUPath(employee.getEm_adid()),newOUPath);
|
|
|
+ if(!getUserOUPath(employee.getEm_adid()).equals(newOUPath)){
|
|
|
+ moveUser(employee.getEm_adid(),"CN="+employee.getEm_name()+","+newOUPath,connection);
|
|
|
+ baseDao.updateByCondition("employee","em_adid='CN="+employee.getEm_name()+","+newOUPath+"'","em_code='"+employee.getEm_code()+"'");
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- }else if (!"生产序列--普工".equals(employee.getEm_emptype()) && !"其它人员".equals(employee.getEm_emptype())) {
|
|
|
+
|
|
|
+ }else if (!"其它人员".equals(employee.getEm_emptype()) && !"离职".equals(employee.getEm_class())) {
|
|
|
Optional<HrOrg> orgOptional = orgList.stream().filter(org -> org.getOr_code().equals(employee.getOrcode())).findFirst();
|
|
|
if(orgOptional.isPresent()){
|
|
|
String ouPath = getOUPath(orgOptional.get().getOr_path());
|
|
|
- addUser(PinyinUtils.getCustomPinyin(employee.getEm_name()),employee.getEm_name(),ouPath,employee.getEm_password());
|
|
|
- baseDao.updateByCondition("employee","em_adid='CN="+employee.getEm_name()+","+ouPath+"'","em_code='"+employee.getEm_code()+"'");
|
|
|
+ String adid = addUser(employee.getEm_code(),PinyinUtils.getCustomPinyin(employee.getEm_name()),employee.getEm_name(),ouPath,employee.getEm_password(), employee.getEmjob());
|
|
|
+ if(adid!=null){
|
|
|
+ baseDao.updateByCondition("employee","em_adid='"+adid+"'","em_code='"+employee.getEm_code()+"'");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
- public void addUser(String userName,String displayName, String ouName, String password) {
|
|
|
+ public String addUser(String userCode,String userName,String displayName, String ouName, String password,String job) {
|
|
|
LdapConnection connection = ldapConnectionManager.getConnection();
|
|
|
Dn dn = null;
|
|
|
logger.info("添加用户:{},displayName:{},ouName:{},password{}",userName,displayName,ouName,password);
|
|
|
@@ -91,7 +95,6 @@ public class ADSyncService {
|
|
|
"objectClass: person",
|
|
|
"objectClass: organizationalPerson",
|
|
|
"objectClass: user",
|
|
|
- "userAccountControl: 512",
|
|
|
"sAMAccountName: " + userName,
|
|
|
"userPrincipalName: " + userName + "@" + adConfig.getBaseDn().replace("DC=", "").replace(",", "."),
|
|
|
"userPassword: " + password
|
|
|
@@ -101,9 +104,18 @@ public class ADSyncService {
|
|
|
entry.add("displayName",displayName);
|
|
|
entry.add("givenName", displayName.substring(0, 1));
|
|
|
entry.add("sn", displayName.substring(1));
|
|
|
+ entry.add("description", job);
|
|
|
+ entry.add("userAccountControl", "544");
|
|
|
connection.add(entry);
|
|
|
+ return "CN="+displayName+"," + ouName;
|
|
|
} catch (Exception e) {
|
|
|
+ if(e.getMessage().contains("(ENTRY_EXISTS)")){
|
|
|
+ return "CN="+displayName+"," + ouName;
|
|
|
+ }else if(e.getMessage().contains("problem 1005 (CONSTRAINT_ATT_TYPE), data 0, Att 90290 (userPrincipalName)")) {
|
|
|
+ return addUser(userCode,userName+""+userCode,displayName,ouName,password,job);
|
|
|
+ }
|
|
|
logger.error("添加用户失败:{},错误{}",userName,e.getMessage());
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@@ -144,7 +156,7 @@ public class ADSyncService {
|
|
|
);
|
|
|
connection.modify(dn, new DefaultModification(ModificationOperation.REPLACE_ATTRIBUTE, "userAccountControl", "2"));
|
|
|
} catch (Exception e) {
|
|
|
- logger.info("updateOrgDescription 禁用账号失败:{}",e.getMessage());
|
|
|
+ logger.info("disableUser 禁用账号失败:{}",e.getMessage());
|
|
|
}finally {
|
|
|
if (connection != null) {
|
|
|
try {
|
|
|
@@ -187,13 +199,36 @@ public class ADSyncService {
|
|
|
LdapConnection connection = ldapConnectionManager.getConnection();
|
|
|
List<Employee> employeeList = uasSyncService.getADUserList();
|
|
|
List<ADUser> adUserList = getUsers(connection);
|
|
|
- for (ADUser adUser : adUserList) {
|
|
|
+ List<HrOrg> orgList = uasSyncService.getADOrgList();
|
|
|
+ /* for (ADUser adUser : adUserList) {
|
|
|
+ System.out.println(adUser.getUserCn());
|
|
|
for (Employee employee : employeeList) {
|
|
|
- if(employee.getEm_name().equals(adUser.getUserCn())){
|
|
|
+ if(employee.getEm_name().equals(adUser.getUserCn()) && !StringUtil.hasText(employee.getEm_adid()) ){
|
|
|
baseDao.updateByCondition("employee","em_adid='"+adUser.getUserDn()+"'", "em_code ='"+employee.getEm_code()+"'");
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+ }*/
|
|
|
+
|
|
|
+ for(Employee employee:employeeList){
|
|
|
+ if(!StringUtil.hasText(employee.getEm_adid())){
|
|
|
+ Optional<ADUser> adUserOptional = adUserList.stream().filter(adUser -> adUser.getUserDn().equals(employee.getEm_adid())).findFirst();
|
|
|
+ if(!adUserOptional.isPresent()){
|
|
|
+ //System.out.println("用户不存在:"+employee.getEm_adid()+"-"+employee.getEm_name());
|
|
|
+ //baseDao.updateByCondition("employee","em_adid=null", "em_code ='"+employee.getEm_code()+"'");
|
|
|
+ if(!"其它人员".equals(employee.getEm_emptype()) && !"离职".equals(employee.getEm_class())) {
|
|
|
+ Optional<HrOrg> orgOptional = orgList.stream().filter(org -> org.getOr_code().equals(employee.getOrcode())).findFirst();
|
|
|
+ if(orgOptional.isPresent()){
|
|
|
+ String ouPath = getOUPath(orgOptional.get().getOr_path());
|
|
|
+ String adid = addUser(employee.getEm_code(),PinyinUtils.getCustomPinyin(employee.getEm_name()),employee.getEm_name(),ouPath,employee.getEm_password(), employee.getEmjob());
|
|
|
+ if(adid!=null){
|
|
|
+ baseDao.updateByCondition("employee","em_adid='"+adid+"'","em_code='"+employee.getEm_code()+"'");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
//移动人员组织
|
|
|
}
|
|
|
@@ -330,7 +365,6 @@ public class ADSyncService {
|
|
|
"dn"
|
|
|
);
|
|
|
if (result.next()) {
|
|
|
- System.out.println(result.get().toString());
|
|
|
logger.info("组织下存在下级,无法删除{}",ouName);
|
|
|
}else {
|
|
|
connection.delete(dn);
|