Browse Source

钉钉同步

seyason 2 years ago
parent
commit
e035f60f52

+ 23 - 6
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DingDingServiceImpl.java

@@ -634,7 +634,7 @@ public class DingDingServiceImpl implements DingDingService {
                 //同步部门数据
                 adjustDepartment(dingding);
                 //从temp表调整人员到user表
-                adjustUserFromTemp(dingding);
+                adjustUserFromTemp(dingding, dingding.getCorpid().equals("dinga36903d5ec45afca"));
             } else {
                 System.err.println("获取通讯录范围出错:" + json.toJSONString());
             }
@@ -676,6 +676,7 @@ public class DingDingServiceImpl implements DingDingService {
             if (dept.getDdDeptid() != null) {
                 Optional<DepartmentDingding> first = dingdingDeptList.stream().filter(ddpt -> ddpt.getDdDeptid().equals(dept.getDdDeptid())).findFirst();
                 if (first.isPresent()) {
+
                     boolean changed = false;
                     DepartmentDingding departmentDingding = first.get();
                     if (departmentDingding.getDdParentid() == 1) {
@@ -711,7 +712,7 @@ public class DingDingServiceImpl implements DingDingService {
         }
     }
 
-    private void adjustUserFromTemp(CompanyDingding dingding) {
+    private void adjustUserFromTemp(CompanyDingding dingding, boolean syncUserDept) {
         SysRole defaultRole = null;
         List<SysRole> droleList = sysRoleMapper.selectList(new QueryWrapper<SysRole>().eq("company_id", dingding.getCompanyId()).eq("is_default", 1));
         if (droleList.size() > 0) {
@@ -761,10 +762,22 @@ public class DingDingServiceImpl implements DingDingService {
                     upUser.setJobNumber(duser.getJobNumber());
                     changed = true;
                 }
+                if (syncUserDept) {
+                    //同步所属部门
+                    int dpid = duser.getDdDeptid();
+                    if (dpid != 1) {
+                        Optional<Department> first = allDeptList.stream().filter(item -> item.getDdDeptid() != null && item.getDdDeptid().equals(dpid)).findFirst();
+                        if (first.isPresent()) {
+                            Department department = first.get();
+                            upUser.setDepartmentId(department.getDepartmentId());
+                            upUser.setDepartmentCascade(convertDepartmentIdToCascade(department.getDepartmentId()));
+                            changed = true;
+                        }
+                    }
+                }
                 if (changed) {
-                    updateUserList.add(oldUser);
+                    updateUserList.add(upUser);
                 }
-                //TODO: 所属部门的变更,需要用户自行确认
             }
         }
         if (newUserList.size() > 0) {
@@ -1304,7 +1317,9 @@ public class DingDingServiceImpl implements DingDingService {
                 departmentDingding.setName(dept.getString("name"));
                 departmentDingding.setDdParentid(dept.getInteger("parent_id"));
                 Department department = new Department();
-
+                if (departmentDingding.getDdDeptid() == 661842181) {
+                    System.out.println("=========zfind 661842181"+departmentDingding.getName());
+                }
                 department.setCompanyId(companyId);
                 //检查,根部门是公司名称,不需要创建部门
                 if (departmentDingding.getDdDeptid() != 1) {
@@ -1358,7 +1373,9 @@ public class DingDingServiceImpl implements DingDingService {
                 departmentDingding.setDdDeptid(dept.getInteger("dept_id"));
                 departmentDingding.setName(dept.getString("name"));
                 departmentDingding.setDdParentid(dept.getInteger("parent_id"));
-
+                if (departmentDingding.getDdDeptid() == 661842181) {
+                    System.out.println("=========zfind 661842181"+departmentDingding.getName());
+                }
                 synchronized (deptLock) {
                     List<DepartmentDingding> departmentDingdings = departmentDingdingMapper.selectList(new QueryWrapper<DepartmentDingding>()
                             .eq("corpid", corpid)