zhouy 3 сар өмнө
parent
commit
abdc8b6fd7

+ 5 - 0
pom.xml

@@ -116,6 +116,11 @@
 			<artifactId>api-all</artifactId>
 			<version>2.0.0</version> <!-- 请使用最新版本 -->
 		</dependency>
+		<dependency>
+			<groupId>com.belerweb</groupId>
+			<artifactId>pinyin4j</artifactId>
+			<version>2.5.1</version>
+		</dependency>
 		<dependency>
 			<groupId>org.oracle</groupId>
 			<artifactId>oracle</artifactId>

+ 40 - 0
src/main/java/com/uas/eis/entity/ADUser.java

@@ -0,0 +1,40 @@
+package com.uas.eis.entity;
+
+public class ADUser {
+    private String userDn;
+    private String userCn;
+    private String accountName;
+    private String userPrincipalName;
+
+    public String getUserDn() {
+        return userDn;
+    }
+
+    public void setUserDn(String userDn) {
+        this.userDn = userDn;
+    }
+
+    public String getUserCn() {
+        return userCn;
+    }
+
+    public void setUserCn(String userCn) {
+        this.userCn = userCn;
+    }
+
+    public String getAccountName() {
+        return accountName;
+    }
+
+    public void setAccountName(String accountName) {
+        this.accountName = accountName;
+    }
+
+    public String getUserPrincipalName() {
+        return userPrincipalName;
+    }
+
+    public void setUserPrincipalName(String userPrincipalName) {
+        this.userPrincipalName = userPrincipalName;
+    }
+}

+ 67 - 0
src/main/java/com/uas/eis/entity/Employee.java

@@ -0,0 +1,67 @@
+package com.uas.eis.entity;
+
+public class Employee {
+    private String em_code;
+    private String em_name;
+    private String em_class;
+    private String em_adid;
+    private String orcode;
+    private String em_emptype;
+    private String em_password;
+
+    public String getEm_code() {
+        return em_code;
+    }
+
+    public void setEm_code(String em_code) {
+        this.em_code = em_code;
+    }
+
+    public String getEm_name() {
+        return em_name;
+    }
+
+    public void setEm_name(String em_name) {
+        this.em_name = em_name;
+    }
+
+    public String getEm_adid() {
+        return em_adid;
+    }
+
+    public void setEm_adid(String em_adid) {
+        this.em_adid = em_adid;
+    }
+
+    public String getOrcode() {
+        return orcode;
+    }
+
+    public void setOrcode(String orcode) {
+        this.orcode = orcode;
+    }
+
+    public String getEm_class() {
+        return em_class;
+    }
+
+    public void setEm_class(String em_class) {
+        this.em_class = em_class;
+    }
+
+    public String getEm_emptype() {
+        return em_emptype;
+    }
+
+    public void setEm_emptype(String em_emptype) {
+        this.em_emptype = em_emptype;
+    }
+
+    public String getEm_password() {
+        return em_password;
+    }
+
+    public void setEm_password(String em_password) {
+        this.em_password = em_password;
+    }
+}

+ 197 - 87
src/main/java/com/uas/eis/serviceImpl/ADSyncService.java

@@ -3,17 +3,19 @@ package com.uas.eis.serviceImpl;
 import com.uas.eis.core.LdapConnectionManager;
 import com.uas.eis.core.config.ADConfig;
 import com.uas.eis.dao.BaseDao;
+import com.uas.eis.entity.ADUser;
+import com.uas.eis.entity.Employee;
 import com.uas.eis.entity.HrOrg;
+import com.uas.eis.utils.PinyinUtils;
 import com.uas.eis.utils.StringUtil;
 import org.apache.directory.api.ldap.model.cursor.CursorException;
 import org.apache.directory.api.ldap.model.cursor.EntryCursor;
 import org.apache.directory.api.ldap.model.entry.*;
 import org.apache.directory.api.ldap.model.exception.LdapException;
 import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
-import org.apache.directory.api.ldap.model.message.SearchResultEntry;
+import org.apache.directory.api.ldap.model.message.ModifyDnRequest;
 import org.apache.directory.api.ldap.model.message.SearchScope;
 import org.apache.directory.api.ldap.model.name.Rdn;
-import org.apache.directory.api.util.Strings;
 import org.apache.directory.ldap.client.api.LdapConnection;
 import org.apache.directory.api.ldap.model.name.Dn;
 import org.slf4j.Logger;
@@ -21,7 +23,6 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
-
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.util.*;
@@ -41,97 +42,155 @@ public class ADSyncService {
     @Autowired
     private BaseDao baseDao;
     @Autowired
-    private OrgService orgService;
+    private UasSyncService uasSyncService;
 
-    public void addOrg(HrOrg org, LdapConnection connection) {
-        if(connection==null || !connection.isConnected()){
-            connection=ldapConnectionManager.getConnection();
+    public void syncUser() throws IOException {
+        LdapConnection connection = ldapConnectionManager.getConnection();
+        List<Employee> employeeList = uasSyncService.getADUserList();
+        List<ADUser> adUserList = getUsers(connection);
+        List<HrOrg> orgList =  uasSyncService.getADOrgList();
+        for (Employee employee : employeeList) {
+            if(employee.getEm_adid()!=null){
+               //判断是否需要更新组织
+                if("离职".equals(employee.getEm_class())){
+                    deleteUser(employee.getEm_adid(),connection);
+                }
+                Optional<HrOrg> orgOptional = orgList.stream().filter(org -> org.getOr_code().equals(employee.getOrcode())).findFirst();
+               logger.info("同步用户更新:{}",employee.getEm_name());
+                if(orgOptional.isPresent()){
+                   String newOUPath = getOUPath(orgOptional.get().getOr_path());
+                    logger.info("同步用户更新:oldpath{},newpath{}",getUserOUPath(employee.getEm_adid()),newOUPath);
+                   if(employee.getEm_code().equals("ADMIN") && !getUserOUPath(employee.getEm_adid()).equals(newOUPath)){
+                       moveUser(employee.getEm_adid(),"CN="+employee.getEm_name()+","+newOUPath,connection);
+                   }
+                }
+
+            }else if (!"生产序列--普工".equals(employee.getEm_emptype()) && !"其它人员".equals(employee.getEm_emptype())) {
+                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()+"'");
+                }
+
+            }
         }
+
+    }
+
+    public void addUser(String userName,String displayName, String ouName, String password)  {
+        LdapConnection connection = ldapConnectionManager.getConnection();
+        Dn dn = null;
+        logger.info("添加用户:{},displayName:{},ouName:{},password{}",userName,displayName,ouName,password);
         try {
-            logger.info("添加组织{}",org.getOr_path());
-            Dn dn = new Dn(getOUPath(org.getOr_path()));
+            dn = new Dn("CN="+displayName+"," + ouName);
             Entry entry = new DefaultEntry(
                     dn,
                     "objectClass: top",
-                    "objectClass: organizationalUnit"
+                    "objectClass: person",
+                    "objectClass: organizationalPerson",
+                    "objectClass: user",
+                    "sAMAccountName: " + userName,
+                    "userPrincipalName: " + userName + "@" + adConfig.getBaseDn().replace("DC=", "").replace(",", "."),
+                    "userPassword: " + password
             );
-            entry.add("description", org.getOr_code());
+            //处理中文写入异常问题
+            entry.add("cn",displayName);
+            entry.add("displayName",displayName);
+            entry.add("givenName", displayName.substring(0, 1));
+            entry.add("sn", displayName.substring(1));
             connection.add(entry);
-            logger.info("添加组织{}成功",org.getOr_path());
         } catch (Exception e) {
-            logger.error("添加组织失败",e);
+            logger.error("添加用户失败:{},错误{}",userName,e.getMessage());
         }
 
     }
-    public void deleteOrg(String ouName, LdapConnection connection) {
-        Dn dn = null;
-        logger.info("删除组织{}",ouName);
+   public void deleteUser(String userDn, LdapConnection connection) {
+       if(connection==null || !connection.isConnected()){
+           connection = ldapConnectionManager.getConnection();
+       }
+       try {
+           logger.info("删除用户:{}",userDn);
+           Dn dn = new Dn(userDn);
+           connection.delete(dn);
+           logger.info("删除用户成功:{}",userDn);
+       } catch (LdapException e) {
+          logger.error("删除用户失败:{}",userDn);
+       }
+   }
+    public void moveUser(String oldUserDnStr, String newRdnStr, LdapConnection connection) {
+        logger.info("用户 {} 移动组织 {}", oldUserDnStr, newRdnStr);
+        if (connection == null || !connection.isConnected()) {
+            connection = ldapConnectionManager.getConnection();
+        }
         try {
-            dn = new Dn( ouName + ",OU=" + adConfig.getBaseDn());
-            String filter = "(objectClass=organizationalUnit)||(objectClass=user)";
-            EntryCursor result = connection.search(
-                    ouName,
-                    filter,
-                    SearchScope.SUBTREE,  // 搜索所有子节点
-                    "dn"
-            );
-            if (result.iterator().hasNext()) {
-                logger.info("组织下存在下级,无法删除{}",ouName);
-            }else {
-                connection.delete(dn);
-            }
+            connection.moveAndRename(oldUserDnStr, newRdnStr,true);
+
+            logger.info("用户 {} 已成功移动到组织 {}", oldUserDnStr, newRdnStr);
         } catch (Exception e) {
-            throw new RuntimeException(e);
+            logger.error("移动用户失败: {}", oldUserDnStr, e);
+            throw new RuntimeException("移动用户失败: " + e.getMessage());
         }
-        logger.info("删除组织{}成功",ouName);
-
     }
-    public void updateOrg(String oldOUName,String newOuName, LdapConnection connection)  {
+   //初始化用户
+    public void initUser() throws IOException {
+        LdapConnection connection = ldapConnectionManager.getConnection();
+        List<Employee> employeeList = uasSyncService.getADUserList();
+        List<ADUser> adUserList = getUsers(connection);
+        for (ADUser adUser : adUserList) {
+            for (Employee employee : employeeList) {
+                if(employee.getEm_name().equals(adUser.getUserCn())){
+                    baseDao.updateByCondition("employee","em_adid='"+adUser.getUserDn()+"'", "em_code ='"+employee.getEm_code()+"'");
+                    break;
+                }
+            }
+        }
+    }
+    public List<ADUser> getUsers(LdapConnection connection) throws  IOException {
+        List<ADUser> userList = new ArrayList<>();
         if(connection==null || !connection.isConnected()){
-            connection=ldapConnectionManager.getConnection();
+            connection = ldapConnectionManager.getConnection();
         }
-        logger.info("更新组织{}为{}",oldOUName,newOuName);
         try {
-            Dn dn = new Dn(oldOUName);
-            Rdn newRdn = new Rdn( newOuName);
-            connection.rename(dn, newRdn, true);
-        } catch (Exception e) {
-            logger.error(e.getMessage());
+            // 搜索所有用户
+            String filter = "(objectClass=organizationalPerson)";
+            EntryCursor result = connection.search(
+                    "OU=User,"+adConfig.getBaseDn(),  // AD基础DN,从配置文件获取
+                    filter,
+                    SearchScope.SUBTREE
+            );
+            Entry entry;
+            while (result.next()) {
+                try {
+                    entry =result.get();
+                    ADUser adUser = new ADUser();
+                    adUser.setUserDn(entry.getDn().toString());
+                    adUser.setUserCn(entry.get("cn").get().getString());
+                    adUser.setAccountName(entry.get("sAMAccountName").get().getString());
+                    adUser.setUserPrincipalName(entry.get("userPrincipalName").get().getString());
+                    userList.add(adUser);
+
+                } catch (CursorException e) {
+                    e.printStackTrace();
+                }
+            }
+            return userList;
+        } catch (LdapException e) {
             e.printStackTrace();
+        } catch (CursorException e) {
+           e.printStackTrace();
+        } finally {
+            if (connection != null) {
+                connection.close();
+            }
         }
-        logger.info("更新组织{}为{} 成功",oldOUName,newOuName);
 
+        return null;
     }
 
-    public void addUser(String userName,String displayName, String ouName, String password) throws LdapException, UnsupportedEncodingException {
-        LdapConnection connection = ldapConnectionManager.getConnection();
-        Dn dn = new Dn("CN="+displayName+"," + ouName + "," + adConfig.getBaseDn());
-        Entry entry = new DefaultEntry(
-                dn,
-                "objectClass: top",
-                "objectClass: person",
-                "objectClass: organizationalPerson",
-                "objectClass: user",
-                "sAMAccountName: " + userName,
-                "userPrincipalName: " + userName + "@" + adConfig.getBaseDn().replace("DC=", "").replace(",", "."),
-                "userPassword: " + password
-        );
-        //处理中文写入异常问题
-        entry.add("cn",displayName);
-        entry.add("displayName",displayName);
-        entry.add("givenName", displayName.substring(0, 1));
-        entry.add("sn", displayName.substring(1));
-        connection.add(entry);
-    }
-   public void deleteUser(String userName, String ouName) throws Exception {
-       LdapConnection connection = ldapConnectionManager.getConnection();
-       Dn dn = new Dn("CN=测试,OU=人力资源部,OU=经营班子,OU=董事会,OU=User,DC=si,DC=ad");
-       connection.delete(dn);
-   }
-
    public void syncOrg() throws IOException {
        LdapConnection connection = ldapConnectionManager.getConnection();
-       List<HrOrg> orgList = orgService.getOrgList();
+       List<HrOrg> orgList = uasSyncService.getADOrgList();
        logger.info("同步组织数量:{}",orgList.size());
        List<String> orgDns = getOrganizations(connection);
        //判断组织是否存在
@@ -145,8 +204,9 @@ public class ADSyncService {
                       // 组织编号匹配成功
                       if(StringUtil.hasText(orgDescription) && orgDescription.equals(org.getOr_code())){
                         //组织编号一致
-                        if(! orgPath.startsWith(org.getOr_path())){
+                        if(! orgPath.startsWith(getOUPath(org.getOr_path()))){
                             //组织路径不一致,则更新组织层级信息
+                            logger.info("updateOrg 更新组织信息:old{},new{},orgCode{}",orgPath,getOUPath(org.getOr_path()) , orgDescription);
                             updateOrg(orgPath, getOUPath(org.getOr_path()), connection);
                         }
                         isExist  =true;
@@ -176,13 +236,74 @@ public class ADSyncService {
        for(String orgDn : orgDns){
            String  orgDescription = orgDn.substring(orgDn.indexOf(";")+1);
            if(StringUtil.hasText(orgDescription)){
-              if(!orgList.stream().anyMatch(org -> org.getOr_code().equals(orgDescription))){
+              if(!orgList.stream().anyMatch(org -> !"已禁用".equals(org.getOr_status()) && org.getOr_code().equals(orgDescription))){
                   //删除AD域组织
-                  deleteOrg(orgDn, connection);
+                  deleteOrg(orgDn.split(";")[0], connection);
               }
            }
        }
    }
+    public void addOrg(HrOrg org, LdapConnection connection) {
+        if(connection==null || !connection.isConnected()){
+            connection=ldapConnectionManager.getConnection();
+        }
+        try {
+            logger.info("添加组织{}",org.getOr_path());
+            Dn dn = new Dn(getOUPath(org.getOr_path()));
+            Entry entry = new DefaultEntry(
+                    dn,
+                    "objectClass: top",
+                    "objectClass: organizationalUnit"
+            );
+            entry.add("description", org.getOr_code());
+            connection.add(entry);
+            logger.info("添加组织{}成功",org.getOr_path());
+        } catch (Exception e) {
+            logger.error("添加组织失败",e);
+        }
+
+    }
+    public void deleteOrg(String ouName, LdapConnection connection) {
+        if(connection==null || !connection.isConnected()){
+            connection=ldapConnectionManager.getConnection();
+        }
+        Dn dn = null;
+        logger.info("删除组织{}",ouName);
+        try {
+            dn = new Dn( ouName );
+            String filter = "(objectClass=organizationalUnit)||(objectClass=user)";
+            EntryCursor result = connection.search(
+                    ouName,
+                    filter,
+                    SearchScope.ONELEVEL,  // 搜索所有子节点
+                    "dn"
+            );
+            if (result.next()) {
+                System.out.println(result.get().toString());
+                logger.info("组织下存在下级,无法删除{}",ouName);
+            }else {
+                connection.delete(dn);
+            }
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        logger.info("删除组织{}成功",ouName);
+
+    }
+    public void updateOrg(String oldOUName,String newOuName, LdapConnection connection)  {
+        if(connection==null || !connection.isConnected()){
+            connection=ldapConnectionManager.getConnection();
+        }
+        logger.info("更新组织{}为{}",oldOUName,newOuName);
+        try {
+            connection.moveAndRename(oldOUName,newOuName,true);
+        } catch (Exception e) {
+            logger.error(e.getMessage());
+            e.printStackTrace();
+        }
+        logger.info("更新组织{}为{} 成功",oldOUName,newOuName);
+
+    }
     /**
      * 修改自定义description属性
      * */
@@ -223,7 +344,6 @@ public class ADSyncService {
             );
 
             List<String> orgDns = new ArrayList<>();
-          System.out.println(result.iterator().hasNext());
             return orgDns;
         } catch (Exception e) {
             e.printStackTrace();
@@ -244,6 +364,10 @@ public class ADSyncService {
        return ouPath.substring(0,ouPath.length()-1)+",OU=User,"+adConfig.getBaseDn();
    }
 
+    private String getUserOUPath(String userPath){
+        return userPath.substring(userPath.indexOf(",")+1);
+    }
+
     public List<String> getOrganizations(LdapConnection connection) throws  IOException {
         if(connection==null || !connection.isConnected()){
             connection = ldapConnectionManager.getConnection();
@@ -265,7 +389,7 @@ public class ADSyncService {
                     //排除掉根目录
                     if(!entry.getDn().toString().startsWith("OU=User")){
                         orgDns.add(String.format("%s;%s", entry.getDn().toString(),
-                                StringUtil.hasText(entry.get("description"))?entry.get("description").toString():""));
+                                StringUtil.hasText(entry.get("description"))?entry.get("description").get():""));
 
                     }
 
@@ -286,19 +410,5 @@ public class ADSyncService {
 
         return null;
     }
-    public  void deleteOrgs() {
-        LdapConnection connection = null;
-        try {
-            connection = ldapConnectionManager.getConnection();
-            List<HrOrg> orgList = orgService.getOrgList();
-            for(HrOrg org : orgList){
-                deleteOrg(getOUPath(org.getOr_path()), connection);
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-
-        }
-    }
 
 }

+ 10 - 2
src/main/java/com/uas/eis/serviceImpl/OrgService.java → src/main/java/com/uas/eis/serviceImpl/UasSyncService.java

@@ -1,6 +1,7 @@
 package com.uas.eis.serviceImpl;
 
 import com.uas.eis.dao.BaseDao;
+import com.uas.eis.entity.Employee;
 import com.uas.eis.entity.HrOrg;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -8,15 +9,22 @@ import org.springframework.stereotype.Service;
 import java.util.List;
 
 @Service
-public class OrgService {
+public class UasSyncService {
 
     @Autowired
     private BaseDao baseDao;
 
-    public List<HrOrg> getOrgList() {
+    public List<Employee> getADUserList() {
+        return  baseDao.query("select em_code,em_name,or_code orcode,em_class,em_adid,em_emptype  from employee  left join hrorg on em_defaultorid=or_id"+
+                " where em_adid is not  null or em_class<>'离职' order by em_id asc"
+                ,
+                Employee.class);
+    }
+    public List<HrOrg> getADOrgList() {
        return  baseDao.query("select * from (select or_code,or_name,or_status,substr(sys_connect_by_path( or_name,'-'),instr(sys_connect_by_path( or_name,'-'),'-',1,2)+1) or_path,level as or_level " +
                         "from hrorg where or_needsync=-1 start with or_PCODE is null connect by prior  or_CODE= or_PCODE) order by or_level asc"
                 ,
                 HrOrg.class);
     }
+
 }

+ 53 - 0
src/main/java/com/uas/eis/utils/PinyinUtils.java

@@ -0,0 +1,53 @@
+package com.uas.eis.utils;
+
+import net.sourceforge.pinyin4j.PinyinHelper;
+import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
+import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
+import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
+
+
+public class PinyinUtils {
+    private static final HanyuPinyinOutputFormat FORMAT = new HanyuPinyinOutputFormat();
+
+    static {
+        FORMAT.setCaseType(HanyuPinyinCaseType.LOWERCASE);
+        FORMAT.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+    }
+
+    /**
+     * 中文姓名转拼音缩写(首字符全拼+后续字符首字母)
+     * @param chineseName 中文姓名
+     * @return 拼音缩写(小写)
+     */
+    public static String getCustomPinyin(String chineseName) {
+        if (chineseName == null || chineseName.trim().isEmpty()) {
+            return "";
+        }
+
+        StringBuilder pinyin = new StringBuilder();
+        char[] chars = chineseName.trim().toCharArray();
+
+        try {
+            // 处理第一个字符:全拼
+            if (chars.length > 0) {
+                String[] firstCharPinyin = PinyinHelper.toHanyuPinyinStringArray(chars[0], FORMAT);
+                if (firstCharPinyin != null && firstCharPinyin.length > 0) {
+                    pinyin.append(firstCharPinyin[0]);
+                }
+            }
+
+            // 处理后续字符:首字母
+            for (int i = chars.length > 0 ? 1 : 0; i < chars.length; i++) {
+                String[] charPinyin = PinyinHelper.toHanyuPinyinStringArray(chars[i], FORMAT);
+                if (charPinyin != null && charPinyin.length > 0) {
+                    pinyin.append(charPinyin[0].charAt(0));
+                }
+            }
+        } catch (BadHanyuPinyinOutputFormatCombination e) {
+            e.printStackTrace();
+        }
+
+        return pinyin.toString();
+    }
+}

+ 1 - 1
src/main/resources/application.yml

@@ -6,7 +6,7 @@ spring:
         driverClassName: oracle.jdbc.OracleDriver
         username: SZSI_P
         password: select!#%*(
-        url: jdbc:oracle:thin:@10.1.81.208:11522:orcl
+        url: jdbc:oracle:thin:@172.16.0.22:1521:orcl
         initialSize: 10
         maxActive: 80
         minIdle: 10

+ 18 - 124
src/test/java/com/uas/eis/UasEisApplicationTests.java

@@ -1,10 +1,8 @@
 package com.uas.eis;
 
 
-import com.uas.eis.dao.BaseDao;
-import com.uas.eis.entity.HrOrg;
 import com.uas.eis.serviceImpl.ADSyncService;
-import com.uas.eis.serviceImpl.OrgService;
+import com.uas.eis.serviceImpl.UasSyncService;
 import org.apache.directory.api.ldap.model.exception.LdapException;
 import org.apache.directory.api.util.Strings;
 import org.apache.directory.ldap.client.api.LdapConnection;
@@ -28,124 +26,8 @@ public class UasEisApplicationTests {
 	@Autowired
 	private ADSyncService adSyncService;
 	@Autowired
-	private OrgService orgService;
-
-	//@Test
-/*	public void contextLoads() {
-		Date date = new Date();
-		List<DataChip> dataChips = baseDao.getJdbcTemplate().query("select id_,chipcode_,counterpath_,datapath_,testdate_ from (select id_,chipcode_,counterpath_,datapath_,testdate_ from datacenter$chip where chipcode_='F20025075#04' and  nvl(readstatus_,0)=0 and testdate_ is  not null order by testdate_  desc) where rownum<=50",
-				new BeanPropertyRowMapper<DataChip>(DataChip.class));
-		if(dataChips.size()>0){
-			List<Integer> IDS = dataChips.stream().map(DataChip::getId_).collect(Collectors.toList());
-			final CountDownLatch countDownLatch = new CountDownLatch(IDS.size());
-			baseDao.execute("UPDATE DATACENTER$CHIP SET READSTATUS_=-90 WHERE ID_ IN ("+String.join(",", IDS.stream().map(String::valueOf).collect(Collectors.toList()))+")");
-			try {
-				dataChips.stream().forEach(dataChip -> {
-					dataDealService.EDCDataDeal(dataChip,countDownLatch);
-				});
-				countDownLatch.await();
-			} catch (InterruptedException e) {
-				e.printStackTrace();
-			}
-		}
-		logger.info("Data文件解析执行结束:用时"+((new Date().getTime()-date.getTime())/1000));
-	}
-	//@Test
-	public void EDCBak(){
-		logger.info("文件归档开始");
-		Date date = new Date();
-		baseDao.callProcedure("DATACENTER_SYNC",new Object[]{""});
-		//所有设备
-		List<EquipConfig> EquipConfigs = baseDao.getJdbcTemplate().query("select ec_ip,ec_counterpath,ec_datapath,ec_counterbak,ec_databak,ed_devcode,ed_teststep from EQUIPCONFIGDETAIL LEFT JOIN EQUIPCONFIG ON ED_ECID=EC_ID where ec_databak is not null and ec_ip='172.24.3.155' order by ec_ip",
-				new BeanPropertyRowMapper<EquipConfig>(EquipConfig.class));
-		Map<String,List<EquipConfig>> ecMap = CollectionUtil.groupBy(EquipConfigs,EquipConfig::getEc_ip);
-		final CountDownLatch countDownLatch = new CountDownLatch(EquipConfigs.size());
-		try {
-			for(String key : ecMap.keySet()){
-				edcBakService.EDCBak(ecMap.get(key),countDownLatch);
-			}
-			countDownLatch.await();
-		}catch (Exception e){
-			e.printStackTrace();
-		}
-		logger.info("文件归档结束:用时"+((new Date().getTime()-date.getTime())/1000));
-	}
-	@Test
-	public void test(){
-		String ip = "172.16.3.17";
-		SmbFile sb = SmbUtil.getRootFile(ip,"c$");
-		try {
-			System.out.println(ip+"测试连接");
-			sb.exists();
-			System.out.println(ip+"测试ok连接");
-		} catch (SmbException e) {
-			System.out.println(ip+"连接失败");
-			e.printStackTrace();
-		}
+	private UasSyncService uasSyncService;
 
-	}*/
-	/*@Test
-	public void test2(){
-		NtlmPasswordAuthentication npa =  new NtlmPasswordAuthentication(null,"administrator","0DlbAdmin0");
-
-
-		try {
-			SmbFile sf = new SmbFile(SmbUtil.getSmbRootUrl("172.16.3.22","c$"),npa);
-			sf.connect();
-		} catch (MalformedURLException e) {
-			e.printStackTrace();
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-	}*/
-/*	//@Test
-	public void test3 (){
-		Properties ps = new Properties();
-		ps.setProperty("jcifs.smb.client.domain", "172.16.3.22");
-		ps.setProperty("jcifs.smb.client.username", "administrator");
-		ps.setProperty("jcifs.smb.client.password", "0DlbAdmin0");
-		// 这个 disable 属性默认为 false , 不设置为 true 的话读取共享文件会比较慢
-		ps.setProperty("jcifs.smb.client.dfs.disabled", "true");
-		CIFSContext cifs = null;
-		try {
-			cifs = new BaseContext(new PropertyConfiguration(ps));
-		} catch (CIFSException e) {
-			e.printStackTrace();
-		}
-		for (int i =0 ;i<100;i++){
-			//SmbFile sb = SmbUtil.getCurrentFile("172.16.3.22","c$/c"+i);
-			SmbFile sb = null;
-			try {
-				//sb = SmbUtil.getCurrentFile("172.16.3.22","c$/c"+i);
-				sb = new SmbFile(SmbUtil.getSmbRootUrl("172.16.3.22","c$/c"+i),cifs);
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
-			try {
-				sb.exists();
-				System.out.println("-----"+i);
-
-			} catch (SmbException e) {
-				e.printStackTrace();
-			}
-		};
-	}
-	//@Test
-	public void test4(){
-		List<EquipConfig> EquipConfigs = baseDao.getJdbcTemplate().query("select ec_ip,ec_counterpath,ec_datapath,ec_counterbak,ec_databak,ed_devcode,ed_teststep from EQUIPCONFIGDETAIL LEFT JOIN EQUIPCONFIG ON ED_ECID=EC_ID where ec_databak is not null order by ec_ip",
-				new BeanPropertyRowMapper<EquipConfig>(EquipConfig.class));
-		for(EquipConfig ec : EquipConfigs ){
-			SmbFile dataFile = SmbUtil.getCurrentFile(ec.getEc_ip(),"c$");
-			try {
-				dataFile.connect();
-				System.out.println(ec.getEc_ip()+"连接通过");
-			} catch (Exception e) {
-				System.out.println(ec.getEc_ip()+"连接失败,"+e.getMessage());
-				e.printStackTrace();
-			}
-		}
-
-	}*/
 	@Test
 	public void test5(){
         try {
@@ -167,16 +49,16 @@ public class UasEisApplicationTests {
 		System.out.println(displayName.substring(1));
 		System.out.println(displayName.substring(0, 1));
 		System.out.println(Strings.utf8ToString(displayName.getBytes("UTF-8")));
-		adSyncService.addUser("abcd", displayName, "OU=人力资源部,OU=经营班子,OU=董事会,OU=User", "password123");
+		adSyncService.addUser("abcd", displayName, "OU=人力资源部,OU=经营班子,OU=董事会,OU=User,DC=si,DC=ad", "password123");
 	}
 
 	@Test
 	public void deleteuser() throws Exception {
-	  adSyncService.deleteUser("abc", "OU=人力资源部,OU=经营班子,OU=董事会,OU=User");
+	 // adSyncService.deleteUser("abc", "OU=人力资源部,OU=经营班子,OU=董事会,OU=User");
 	}
 	@Test
-	public void addOrg() throws Exception {
-		//adSyncService.addOrg("测试2部;OU=人力资源部;OU=经营班子;OU=董事会;OU=User",null);
+	public void deleteOrg() throws Exception {
+		adSyncService.deleteOrg("OU=测试部,OU=人力资源部,OU=经营班子,OU=董事会,OU=User,DC=si,DC=ad", null);
 	}
 
 	@Test
@@ -202,4 +84,16 @@ public class UasEisApplicationTests {
 		adSyncService.syncOrg();
 	}
 
+	@Test
+	public void SyncUser() throws Exception {
+
+		adSyncService.syncUser();
+	}
+
+	@Test
+	public void initUser() throws Exception {
+
+		adSyncService.initUser();
+	}
+
 }