فهرست منبع

批量同步时,考虑已禁用部门

yingp 6 سال پیش
والد
کامیت
ea24a40d04

+ 28 - 3
uas-office-dingtalk/src/main/java/com/usoftchina/uas/office/dingtalk/service/UasEmployeeService.java

@@ -135,6 +135,7 @@ public class UasEmployeeService extends AbstractService {
             if ("离职".equals(employee.getEm_class())) {
             if ("离职".equals(employee.getEm_class())) {
                 addrBookSdk.deleteUser("Uas", user.getUserid());
                 addrBookSdk.deleteUser("Uas", user.getUserid());
                 logger.debug("delete dingtalk user " + JSON.toJSONString(user));
                 logger.debug("delete dingtalk user " + JSON.toJSONString(user));
+                userFactory.remove(user);
                 employee.setEm_ding(null);
                 employee.setEm_ding(null);
                 setDingUserId(employee);
                 setDingUserId(employee);
             } else {
             } else {
@@ -145,9 +146,11 @@ public class UasEmployeeService extends AbstractService {
                 }
                 }
             }
             }
         } else {
         } else {
-            createUser(employee, orgList);
-            employee.setEm_ding(employee.getEm_code());
-            setDingUserId(employee);
+            if (!"离职".equals(employee.getEm_class())) {
+                createUser(employee, orgList);
+                employee.setEm_ding(employee.getEm_code());
+                setDingUserId(employee);
+            }
         }
         }
     }
     }
 
 
@@ -305,5 +308,27 @@ public class UasEmployeeService extends AbstractService {
             }
             }
             return user;
             return user;
         }
         }
+
+        public void remove(OapiUserListbypageResponse.Userlist user) {
+            idMap.remove(user.getUserid());
+            if (mobileGroup.containsKey(user.getMobile())) {
+                mobileGroup.get(user.getMobile()).remove(user);
+                if (mobileGroup.get(user.getMobile()).size() == 0) {
+                    mobileGroup.remove(user.getMobile());
+                }
+            }
+            if (emailGroup.containsKey(user.getEmail())) {
+                emailGroup.get(user.getEmail()).remove(user);
+                if (emailGroup.get(user.getEmail()).size() == 0) {
+                    emailGroup.remove(user.getEmail());
+                }
+            }
+            if (nameGroup.containsKey(user.getName())) {
+                nameGroup.get(user.getName()).remove(user);
+                if (nameGroup.get(user.getName()).size() == 0) {
+                    nameGroup.remove(user.getName());
+                }
+            }
+        }
     }
     }
 }
 }

+ 1 - 1
uas-office-dingtalk/src/main/java/com/usoftchina/uas/office/dingtalk/service/UasOrgService.java

@@ -232,7 +232,7 @@ public class UasOrgService extends AbstractService {
                 OapiDepartmentListResponse.Department department = iterator.next();
                 OapiDepartmentListResponse.Department department = iterator.next();
                 // 必须先删末级部门
                 // 必须先删末级部门
                 if (!group.containsKey(department.getId())) {
                 if (!group.containsKey(department.getId())) {
-                    int count = queryForObject("select count(1) from HrOrg where or_ding = ? and (exists (select 1 from employee where em_defaultorid=or_id) or exists (select 1 from empsjobs where org_id=or_id))", Integer.class, department.getId());
+                    int count = queryForObject("select count(1) from HrOrg where or_ding = ? and (exists (select 1 from employee where em_class<>'离职' and em_defaultorid=or_id) or exists (select 1 from empsjobs where org_id=or_id))", Integer.class, department.getId());
                     if (count == 0) {
                     if (count == 0) {
                         List<String> users = addrBookSdk.getUserIdList("Uas", department.getId());
                         List<String> users = addrBookSdk.getUserIdList("Uas", department.getId());
                         if (CollectionUtils.isEmpty(users)) {
                         if (CollectionUtils.isEmpty(users)) {